思いつかない日記

思い立ったが吉日

Surface Pro 8を購入

  • VAIO S13を2018/5に購入してちょうど4年が経って(2018年初夏ラップトップ - 思いつかない日記)、前回と同じようにS13のスペックが普段遣いとしては力不足を感じてきたため、そろそろ買い替えたいなと思い、いろいろ探した結果Surface Pro 8がベストだなという結論に至り、購入。
    • ヨドバシの店頭で触った感じでは、VAIO SX14はとても良いとは思ったが、好みの構成にカスタマイズすると25万円を超えてしまうため断念。
  • 後述するように英語配列しか使えない体質なので、英語配列が欲しかったのに店頭在庫がなく、仕方なく手元にあったAppleのMagic Keyboardを使っている図
  • 初回起動して色々と触ってみたところ、普段使っているWindows 11と触り心地に違和感を抱いて、この気持はなんだろう?とふと思い返してみて、初めてiPadに触れた時の感動に似ていると思った。上手く言語化は出来ないが、デバイスとして洗練されてて非常に良いと思う。安いからと言ってLenovoThinkpad E14を買わなくて良かったと思った(きっと確証バイアス)
  • ただ購入にあたって1点困ったことがあって、購入の前日6/10に調べ物をしていたら、MS公式サイトを4月に見た時は英語配列のSignature keyboardが選択できたはず(たぶん)なのに、改めてサイトを確認してみると、英語配列の選択肢が消えてしまっていた(もしかしたら、見たのはSurface Pro 7の方だったのかもしれない)
  • キーボードと同様に、ディスプレイのppiについても、160~170ppiくらいが良いという拘りがある。
    • VAIO S13は、13インチのフルHDなので169ppiで、普段使っているディスプレイは27インチの4Kなので、163ppiある。
    • なぜ160~170に拘るのかというと、表示された文字を読むときにドットが目立つと不愉快になってしまうため(iPhoneRetinaディスプレイに慣れきったのが原因だと思われる)。数値があまりに高すぎると、Windowsの設定で拡大縮小率100%とした時に文字が小さくなりすぎるし、かと言ってppiがこれより小さいとドットが目立ってしまう。いろいろ自分で見て回った結果、160~170ppiがベストだなという結論に至った。
    • Surface Pro 8は267ppiであり、そのままでは見辛すぎるため、拡大縮小を150%(=178ppi)にして使っている

初期設定として真っ先にやったこと

  • Caps LockをCtrlに入れ替え
  •  まず真っ先にやるのが、これ(英語配列が良いというのは、正確にはUNIX配列が良いということ)
    • Ctrl2capっていう昔からあるソフトウェアでも良かったが、流石にWindows11にもなってそれを使うのはどうかなと思って、Powertoysでキーマップの入れかえをやってみた。
    • 最初、入れ替えがうまく行かない。
      • Ctrlの入力が入りっぱなしの判定になってしまう現象に見舞われた。ブラウザでサイトを見ると、マウスのスクロールで拡大縮小の動作になってしまう(Ctrl+スクロールの判定になってしまっている)
      • 管理者として実行してないから?→違った
      • 再起動してみる→だめ
      • そういえば初期セットアップの際にキーレイアウトが日本語にしたのを思い出して、英語に変更→うまく行った
    • Chromeで閉じたタブを開き直すショートカットの”Ctrl+Shidt+T"が、PowerToysでキーの入れ替えをしていると機能しなかった。押す順番が問題なだけであって、順番を「CapsLock(=Ctrl)→Shift→T」にして同時押しすれば問題なかった。普段は「Shift→Ctrl→T」の順で押していたから、癖を治す必要がある。
  • タスクバーの色だけを変える
    • デフォルトのテーマが「ライト」になっており、タスクバーにあるIMEの入力モードがみづらかったため調整した。
    • 設定→個人用設定→色から下記のように設定変更した。
    • この設定でタスクバーが黒になり入力モードの判別がしやすくなった。OK

なにこれ?と思ったところ

  • エクスプローラーで、チェックボックスを表示させないようにしたのに、表示が消えない。
  • システムフォントがおかしい。
    • タスクバーのアプリケーションにマウスオーバーした時に、アプリ名がメイリオ(?)で表示されるのに対して、詳細な情報はMS P ゴシック(?)になるため違和感しかない
    •   
  • Windows Updateの適用画面の違い。
    • 別途デスクトップPCでWindows11を使っいるが、それとSurface Pro 8ではアップデート時のステータス表示などが異なってて気になった(Surface用にカスタマイズされたWindows 11?)

これからやろうと考えていること

  • 何となく以前に買っていたAnkerのUSBハブがUSB PDに対応していて、これさえアレばSurface Pro 8への充電もできるのが分かったので、電源を買おうと考えている

『LINUXシステムの仕組み』感想

評価:★★★☆☆

  • Linuxを運用管理するユーザ向けの本で、なんらかのディストリビューションをある程度触った後に読んだほうがためになる本だと思った。
    • 入門書として、まず手始めに読むのは、少々厳しい気がした。
    • 本当の意味での初心者は、「Linuxの絵本」、「本気で学ぶ Linux実践入門」から入ったほうが良さそう。「新しいLinuxの教科書」は、CLI操作メインなので、ちょっと指向が違う。
    • プロセス管理、メモリ管理などKernelの役割について、動きをより詳しく知りたい場合は、「Linuxのしくみ」を読むと良さそう。
  • ブートローダの説明とinitプロセスの起動が書かれている第5、6章は面白かった。こういう部分をインターネットから調べて学ぼうとすると、大体が断片的な情報かつ正しいのかどうか分からない情報なので、こういう風に整理されているのはありがたい。
  • その他、全体について
    • 原文の書きっぷりが、ちょっと特殊というか、やさしくは書かれていないので、ある程度は仕方ないのかもしれないが、訳出された日本語が読みづらい
    • パーミッションのotherを「アザー」と訳している(p38)が、「他のユーザ」の方が自然じゃないか、resourceを「資源」と訳しているが、そのままリソースと書いたほうが自然じゃないか、authorizationを「権限付与」としているが、認可の方がより定着した日本語ではないかとか、ちょっと気になった。
    • あと気になった細かい所
      • 6.3.5(p155)、Type=forkin => forking
      • 6.6(p172)で原文のステップ7が抜けている
      • p174、サービスの全体的な混乱を経る→極めて多くのサービス
      • 他にもあるけど本質的ではないので省略

2022年目標の上期振り返り

  • 料理
    • 並行して2~3品を作れるようになるため、キッチンを使いやすくする
      • (WIP)調味料入れを買って整理し、場所を確保する
        • 良さげなキッチンラックはあったが、ラックの幅がコンロの幅にマッチしなくて、設置できないタイプだった。その後は特に探しておらず、なにか良さげなアイディアが湧いて出るのを待っている
      • カットした材料をトレイに並べて、置ける場所の確保
        • 重ねられるトレイで横ではなく縦に積んで空間を活かせば良いのでは?と思って重ねられるトレイを買ってみたが、いまいち想像してたほど使い勝手が良くなくて、収納棚に眠っている。なぜ?
    • (WIP)電子レンジで作れる小鉢レシピを20品目見つける
      • もともと小鉢で野菜を食べようと考えていたが、コンビニでカット野菜のサラダを買ってたりして、これで良いのでは?と思ったりもして、進捗があまりない。
      • もやしのナムルは簡単だし、安くて美味しいので結構つくっている。
    • (Done)2020年から記録している献立からレシピをまとめて、献立を立てるときに活用できるようにする
      • Notionにまとめた。追加で、レトルト食品の評価シートを作り上げた。こっちはかなり便利に使えてる。ただ、Notionはスマフォで見るのに最適化されたビューは無いので、外で閲覧するのには多少つらさがあるくらいか。
    • いざレシピを活かそう(献立を考える時に使う)とすると、探す手間があるので、どうにか工夫を考えたい(Todo)。理想としては、適当にピックアップしてくれる仕組みが欲しい。
  • 運動→体脂肪率20%以下にする
    • (Cancel)リングフィットをクリアする
      • まったくプレイできていない。というかプレイが相当しんどいし、全然楽しくないので自転車で代替する。
    • (WIP)毎朝30分歩く → 自転車に乗る(毎週20キロ)
      • 歩くのは1ヶ月ほどで飽きてしまったので、やめた。
      • 自転車を買ったので、こっちは乗っていて楽しいので続けられている。なので、いまは運動として自転車に乗ることにした。最低限、毎週2時間は乗りたいと思っている
  • プログラミング
    • Rust
      • 手を付けられておらず。本は買った。6月からやる予定
    • Python
      • Flask本を読んで楽しかったので、ちょくちょく調べ物しつつWebアプリ作ったりした
  • 見る〇〇
    • 読書、50冊
      • 5月末時点で10冊。目標には程遠い。ただ、手段と目的を履き違えないようにしたい
    • 映画、150本
      • 5月末時点で29本。見たい映画はまだまだたくさんある。たくさん積んでるのに、なかなか気分が乗らずに再生するまで至らない時が多い。リストに追加したときは、そういう気分だったけど、いざ映画を見る時間ができたぞってなったときに、それを見たい気分じゃないとかがある。

下半期に向けて

REALFORCEの話(ぼくのキーボード変遷史)

最近、REALFORCE R3の英語配列が出たっていう記事*1を読んで、欲しいなと思っていろいろ調べ物をしていたら、そういえばREALFORCEとの出会いって何だっけって思い整理してみた。

  • REALFORCEとの出会いは2009年で、その時使っていたDELLBTO(Inspiron 530)に付属していたメンブレンの安いキーボードのCtrlキーがキシキシ音がするようになって、新しいキーボードを買うかあと思ったのがきっかけ。
  • そのキーボードが調子悪くなる前から、別の場所でSolarisを触る機会があって、付属のキーボードが非常に打ちやすく、さらにaキーの横にCtrlキーがあって、こういうキーボードほしいなと思っていた。
    • 2003年ごろにパソコンを買って、ショートカットキーをいろいろ覚えて行った時に、Ctrlキーってここ(キーボードの一番左下)にあるの不便だなって思っていたところに、Solarisのキーボードでは、aキーの横にCtrlがあって、そうだよここにあるべきだよねって使いやすさに感動したを覚えている(記憶が曖昧)。
  • で、買い替えを目論んで、いろいろキーボードを調べていたら高級キーボードっていうのがあるというのを知り、REALFORCEを見つけて、日本語配列のフルサイズを買ったのが最初のREALFORCEキーボード。
  • その後一時期はREALFORCEを使っていたんだけど、途中でHHKB使ってみたり、Macパンタグラフを気に入ったり、Majestouch Minilaで一時期メカニカルスイッチを使ってたりと紆余曲折したように記憶している(記録がないので曖昧)
    • 2015年頃にデスクトップPCを使うようになって、その頃にはコンパクトなキーボードが良いなと思っていたので、Majestouch MINILAを買って2017年くらいまで使っていたように思う。
    • あとマウスに手を伸ばすのが億劫になったので、ThinkPad キーボードを買ってたりした。
  • で、2018年にREALFORCE R2 「PFU Limited Edition」が発売するっていうのを聞いて発売と同時にREALFORCEに乗り換えた。 そこからはずっとREALFORCEを使っていて、とある事情でキーボードが2枚必要になった時も、またREALFORCE(R2TL-USV-IV)を買った(おそらく2020年頃)。アイボリーにしたのは、これまでずっと黒を使っていたのでたまには気分を変えたいなと思ったせい。
    • しかし、そんな軽い気持ちでアイボリーを買ったけど、これまで使ってきたどのREALFORCEよりも、入力がし易く、さらに入力音が心地よくて、過去一番で気に入っている。
  • そしていま、マルチ接続対応のREALFORCE R3のテンキーレス英語版を知って、もう一枚欲しいなと思っている。とはいえ、REALFORCEってそんなにポンポン買い替えるタイプのキーボードではないよなと我ながら呆れ気味。
    • もともとREALFORCE R3が出たのは知ってたが、PFU Limited Edition使っていて満足していたし、英語配列がないんだと一目見て興味を失ってた。

Flaskbook補足

Python FlaskによるWebアプリ開発入門』(以下、Flaskbook)の第15章は、第2部で作った動体検知アプリケーションをまるごとイメージ化して、Flaskに組み込まれたWebサーバを使ったWebアプリケーションの公開方法を説明している。しかしWebサーバは別途用意して、WSGIを使って公開する方が一般的かなと思ったので、そのようにしてみた。

やること

  • Webサーバとして、Nginxを用意する
  • すべてDockerコンテナで準備する
  • WebサーバとWebアプリのコンテナを用意するので、docker composeを使用する

やったこと

  • FlaskbookのDockerfileでは、DBファイルとアプリ本体(appsディレクトリ)もイメージ内に含めてしまっているので、永続化とコンテナを立ち上げた後もアプリを触れるようにDocker Composeのvolumesを使った
  • あとuwsgiを呼び出す時のオプションで、引数を渡せなかったので、app.pyを少し改変した
    • 関数create_appの定義で、config_keyを渡さないように、コードにコンフィグ名を埋め込む形にした。こういう値をコードの埋め込むのって良くないとは思いつつ、ググっても回避方法が分からなかったので、ここに時間をかけるべきじゃないと思って、ハードコーディングした
  • 実際にやった流れ
    • ホストとしてUbuntu 22.04LTSの準備
    • Docker、docker-composeのインストール
    • uwsgiのiniファイル用意
    • Dockerfileの作成
      • nginx用
      • アプリ用
    • docker-compose.ymlの作成
    • app.pyの修正
    • デプロイ
    • 動作確認(終わり)

学び

  • コンテナはrootlessがベターだと思いつつ、妥協した
    • Dockerのベストプラクティスは何度か読んでるのに未だに実践できていない。とはいえ、それが分かったのは学び
    • Dockerはクリティカルなシステムで使ったことなく、個人的にサクッと何かアプリを動かすときに使う程度の日曜大工的な使い方で、”正しい使い方”の理解を先延ばししてる感はある
  • WSGI全然わからん
    • WSGIが何となくどういう風に使うと知ってる状態から、実際に具体的な設定を書いて動くまで持っていくまでが遠かった
    • 今回も何となく動いてはいるが、分かってない
  • docker0わからん
    • VMware WorkstaionでVM作ってUbuntuを準備していて、VMサスペンドから復帰させるとdocker0IPアドレスが吹き飛んでいる。何?
    • dockerを再起動させれば再度割り当てられるが、根本的解決とはいえなさそう
    • そもそもinetの設定が消えているのに気がつくのに時間がかかって、そしてサービス再起動すれば良いと思うに至るまで、ホスト側のresolve.confufwをいろいろ弄ってしまった

BSoDとの闘いの記録

ここ1か月以内の話で、2021年に組み立てた自作PCのWindows10を使っているとBSoDが頻出するようになって、原因を探って試行錯誤してみても、どうしても解決できなかったのに、Windows11にアップデートしたら解決したよ、という記録。

突然のBSoD

  • 3月中旬、Core keeperを丸一日(朝7時から21時まで)やっていたときは、一度もBSoDは出なかった
  • 4/11にFlask本をやるために、WSL2にUbuntu20.04LTSを入れて、Flaskを動かす環境を構築。そして、VS CodeからSSHし、開発を進めていて、BSoDが出るようになった、という印象
    • flask runの実行中で、デバッグモードが動いているときにBSoDが出る?っていう程度の認識だった。このときは、WSL2がホスト側を巻き込んでクラッシュするのはいただけないなと思ってた
    • 信頼性情報では、4/9にもBSoDが出たような表示があるが、そもそも記憶にない。もっとも、Windows Updateで失敗した場合も記録されるので、それかもしれない
  • Windows Terminalを見たときに、WSL2でUbuntuが2つ表示されてしまうという謎の現象があって、BSoDが出る前は特段期にしていなかったが、頻出す量になっててっきりこれが原因では?と思うようになった。
  • WSL2を止めて(機能は有効化のまま、停止状態)、VMware workstationでUbuntuVMを作って開発環境を移してみた(4/13)
  • それ以降は、特に発生しなかったのでやっぱりWSL2が原因だったのでは?と思うようになる
    • Ubuntu上でflask runデバッグモード時にバグが出た時、VS CodeでリモートSSHしていて、そのTerminalが落ちてしまったので、VM側のbashプロセスが死んだと思った。ただし、UbuntuのOSは落ちなかった。なので、やはりWSL2がOSを巻き込んでクラッシュしたのではとこの時点では思った(しかし、Flaskはユーザー空間のプロセスなのに、なぜOSを巻き込んでクラッシュするのかよくわからなかった)
  • しかし、再びホスト側のBSoDが出るようになる(4/25~)
    • WSL2の機能を無効化して試してみるもだめ

あとは切り分け

いい加減、これはもう本格的に原因を切り分けないといけないぞと思って、GWの前半3日を使って切り分けをやってみた。下記の通り、ググって出てくるような解決方法は一通り試しては見たが、冒頭に書いたようにWindows11にアップデートするまでどの方法も根本的な解決にはなからなかった。

  • NVIDIAのドライバアップデート
  • システムの修復コマンドの実行
    • このときエラーを検出して修復したというメッセージが出て、治ったかと思った
  • メモリ診断(標準)
  • UEFIアップデート
    • アップデートしたら、BSoDの画面で表示されるエラーが、DRIVER_IRQL_NOT_LESS_OR_EQUALというものに変わったり、ちょっとだけ変化が見られた
  • USB切替器を外してみる
    • USBドライバー周りの問題?だと思ったので、いったんUSB切替器を経由せず、USBポートにデバイスを直接挿して動かしてみた
  • OSクリーンインストール
    • クリーンインストールして、そして各種ドライバの更新(Gigabiteの公式サイトから関連するものをすべてダウンロードして入れてみた)
  • 再度システムの修復を試してみる(ここでは整合性違反を検出せず
  • メモリ診断(拡張、5回)
    • 標準モードではエラーが出なかったので、拡張に設定を変えてみてメモリ診断を改めてやってみた。回数を5回にしたのは正直ネットの情報を鵜呑みにして設定したので、3回でも良かったように思う。8GBモジュールを2枚指していて、メモリ診断1回が1時間半ほどかかった。5回だと、朝9時から始めて17時過ぎまでかかった
  • メモリ交換
    • メモリ診断ではエラーが見つからなかったにも関わらず、メモリ交換を実施。メモリ診断でエラーが見つからなくても問題があるケースがあるとネットで見かけたため。
  • Windowsは諦めて、Ubuntuデュアルブートを試みる
    • Ubuntuでも同様の問題が生じるなら、もう少し切り分けができるのでは?と思い、デュアルブートをしようと思った
    • しかし、そもそもインストールできない
    • WindowsBIOSレガシーモードでインストールされていたから、UEFIブートのUbuntuをインストールできないという問題
    • これがBSoDの原因じゃないのか?と思った
  • Windows10をUEFIで入れ直した
    • 下記のエラーが。OSインストール時に対象のディスク以外があるとだめだという話(このとき、データ用のディスクが別に接続されていた)。別のディスクが接続されているとインストール出来ないのは初めて知った。
  • やっぱりBSoDが出てしまう

そして、Windows11へ

Ubuntuデュアルブートにしようと思ったのは、そもそもntoskrnl.exe起因のBSoDばかりだったので、カーネルを変えたら回避できるのでは?と考えてて、Windows11にアップデートしようと最初は思ったのだが、なにやらアップデート対象外という表示になっていてアップデートできなかったから。しかし、前述の通りBIOSモードをUEFIにしたら、Windows11へアップデートできるようになったので、Ubuntuデュアルブートは不要になった。

BSoDが出なくなった 🎉 アップデートしたあと3日間で40時間位起動して挙動を確認してみて一度もクラッシュしないので、ようやく解消されたように思う。

「Python FlaskによるWebアプリ開発入門」読了

Python FlaskによるWebアプリ開発入門」を読んだ(実装し終えた)ので、簡単にレビューをば。

内容を一言で

  • Flaskを使ってWebアプリケーション開発というテーマで、物体検知アプリの作成、テスト、Web APIの実装、そしてサーバレスアプリケーションとしてのデプロイ方法まで学べる盛り沢山な入門書
  • さらには、機械学習の概念、モデル選定の考え方、選定したモデルのWeb API開発までも学べる
  • Webアプリの開発工程を学べる優れた入門書だと思う

読む前のバックグラウンド

どういう人間が読んでレビューを書いているのか知ってもらうためのバックグラウンドの軽いサマリ。

  • TCP/IPといったネットワーク周り、仮想環境(VMware, KVM)、Azure, AWSとかのインフラレイヤーをやってきた
  • プログラミングは文法を学ぶ程度で、本格的に開発はしたこと無い
  • Flaskの公式チュートリアルはやったことがある

本の内容について

  • 画像から物体を検知するWebアプリを作ろうというテーマで、Flaskを使ってCRUDなWebアプリを作っていく本。CRUD操作は、DBへのデータの読み書き・修正・削除といった基本的な操作を意味する(Create、Read、Update、Deleteの頭文字)。
    • CRUD操作は、O/R Mapper(ORM)を使った実装なので、SQL文を知らなくても大丈夫。
  • 「入門」とタイトルにあるように、説明は平易に書かれている印象。ただし、Pythonの文法については触れられていないので、一通り文法は学習し終えた人向けではあると思う。また、詳細までは踏み込まず、必要最小限の情報を厳選して書いてくれているように思う。ただ、ちょっと淡々と進んでいく授業のような印象も受ける。それは、本書に内容をたくさん盛り込んだから故だとは思う。説明がサラッと書いてあるのに、詰め込まれている内容は多いので、450ページくらいの本になっている。

感想

  • 自分の手を動かしてプログラミングして、実際にアプリが動くのを見るとやっぱり楽しい。
  • Flaskの公式チュートリアル(ブログを作る話)をやったときは、Djangoと明確に違って、Flaskはなるほど軽量Webフレームワークだなという印象だったけど、そうではなくてDjangoが色々と標準で機能が入っているのに対して、Flaskは必要な機能をライブラリとしてインポートして使えるという意味で軽量って言われているのだなと理解した。
  • 入門書が故に、「この機能を作るためにこのライブラリと使います」という書きっぷりで、エンドポイントやDBテーブルの設計に相当する「なぜこうするか?」といった肝心な部分は書かれていないので、自分が独自のアプリをつくとなると悩みポイントになりそうという印象。
    • 料理で言えば、すでに下ごしらえがされている素材があって、あとはレシピに沿って進めるという感じ。なので、そもそもその下ごしらえとか、なぜそういう形で切るのか?っていう部分が抜けている感じ。
  • 同じく入門書なので、CRUD操作をORMで実装するのは仕方ないと思いつつも、ORMを使うのは移植性が高まるなどのようなメリットはありつつも、複雑なSQL文を作ったり、SQL文の実行時間が長かったりして、結局本格的なアプリを作ろうとするとSQL文を直接操作したほうが良いという話らしいので、そこはFlaskのチュートリアルを参考にしたほうが良さそう。

なんで読んだか?

ちょっと蛇足で、なぜぼくがこの本を読もうとしたかを書いておく。

  • Webアプリケーションについて知りたかったから
    • 過去4年ほどOSやTCP/IP、仮想化技術といった低レイヤー周りばかり触ってきたが行き詰まり感を感じて、より低レイヤーの理解を深めるためにも、アプリケーションレイヤーついても知っておいたほうがいいだろうと漠然と思っていた。というのも、結局低レイヤーを触るにあたってもHTTPなどのプロトコルは知っておく必要があるし、それならばWebアプリ開発に触れておいて、Webアプリがどういう仕組で動くのかを理解するのは今後にも有益だと思った。
    • そして、アプリケーションを知るなら、そもそもプログラミング言語の知識をつけねばと思い、2021年にはPython入門を読んで、基本的な文法やPygameDjangoといったライブラリを使ったプログラミングをちょっとだけやった。ただ、この試みは2021年には途中で挫折をしてしまった。
    • 2022年になってFlask本が新しく出るというのを知って、発売後に一度、この本を本屋でパラパラと立ち読みした時には、文章量が少なそうに見えたため、初心者の自分には説明が足りないかもしれないから微妙かなあと思ってはいた。そうは言ってもFlaskの本は少ない上に、初心者の自分が仕組みを知りたいくらいのモチベーションで、玉石混交な情報があふれるWebでそれらの中から何が正しい情報かを取捨選択するのは難しく、調べながらやるには相当な根気が必要なので、途中で諦めるのは必至と思うし(2021年の二の舞いになるのは容易に想像がつく)、本だと著者と編集者のチェックが入って、体系立って整理されているし、内容もある程度の正確性も担保されているので、そういった意味では貴重だろうなと思って、購入を決めた。
    • ただ、Flaskは公式ガイドが有志によって日本語に翻訳されており、公式情報にアクセスしやすいと思うが、どちらかというと困ったときに参照する情報だと思うので、初学者向けの情報としては、結構細かい枝葉まで含まれており、難しいかなと思った。
  • 自分用のWebアプリが作りたかったから
    • 世の中には非常に優れたWebアプリはたくさんあって、探せば自分がほしいと思うようなアプリは見つかるとは思うが、ローカル環境で完結しつつ、細々とした処理をやるツールを作りたいと思っていた。ただし、これはわざわざWebアプリにするのではなく、CLIでやればいいレベルの話かもしれないとも薄々は感じている。

参考情報