2026-01-31

ここ数日はかなり忙しかったため、記録を残していませんでした。しかし記録を止めるわけにはいかないので、今から再開してまとめて記録します。

忙しかった以外に、なぜ記録していなかったのか。

  1. 心の中で、記録するには最低30分以上かけて一日をまとめなければならないという恐怖があったためです。これは日々の記録に対して負担や恐れを感じてしまい、良くない傾向です。
  2. 普段は一日が完全に終わってからその日の記録を始めるようにしていますが、よく考えるとこれは少し人間らしくありません。なぜなら今の私は、寝る時間になったらすぐに布団に潜り込むからで、やりたいことを本当に全て終えてから寝るわけではないからです(そんな時が果たしてあるでしょうか?)。その結果、時間がある時に記録せず、本当に記録すべき時にはすぐに布団に入らなければならなくなります。そこに1の問題も加わります。

この二つが重なって、記録がどんどん溜まっていきました。

  1. 今日やったこと:

    正確には、ここ数日やったこと

    1. scの勧めでneovimを使い始めました。なぜ使うのか?nvim-orgmodeが本当に実用的なorg-modeになったようで、同時にemacsに飽きてきたからです。

      • 延々と続くアップデートの失敗
      • 理解不能なデバッグとエラーメッセージ
      • 私にとっては負担が増えるだけで役に立たない柔軟性
      • Emacs Lispは理解できないし、理解したいとも思わない

      長年、orgmodeを使うために上記の点に耐えてきましたが、他の場所ではorg-modeをうまく使えませんでした。今、nvim陣営に代替案が出てきたのですから、試さない手はありません。

      もともと私は長年のvimユーザーで、emacsでもevil-mode(vimモード)を使っていました。そのため、vimを使うことが大きな負担だと感じたことは一度もなく、VSCodeやIntelliJ IDEAではvimがないと生きていけません。ですから、nvimに直接移行することは全く問題ありませんでした。

      障害がなくなったので、nvimのエコシステムを調べてみました。nvimはvimscriptという過去の負の遺産がなく、設定言語やプラグイン言語として直接Luaを使用しています。そのため軽量に始められ、コミュニティも非常に活発です。現在、neovimのプラグインシステムは lazy.vim というシステムに統一されています。nvimはプラグインと設定システムの設計において、vimが抱えていた問題点を大胆に革新したようです。vimやemacsには似たような統一を目指す試みが数多くありましたが、コミュニティが分散しすぎて、成功したものはなかったように思います。

      そこで早速lazyVimを試してみました。すると、なんとまるでVSCodeを手に入れたかのような感覚で、しかもそれがターミナル内で動作するのです。これがどれほど快適か、お分かりいただけるでしょうか?

      今や、真新しい基盤の上に構築された強力な旧支配者を手に入れました。設定も驚くほど簡単で、柔軟性と利便性が絶妙なバランスで収束しており、以前の悩みはほぼすべて解決されました。

      ほとんど時間をかけずに、かなりの数のワークフローをこれに移行しました。現在はtmuxで5つのウィンドウを開き、各ウィンドウで特定のフォルダ配下にnvimを起動しています。nvimの左側にはディレクトリツリー、中央にはコード、右側にはopencodeとターミナルを配置しています。

    2. legionをバージョンアップしました。legionmindスキルのテキスト量を大幅に削減しました(約4,000行削減)。現在のところ、私が気を配るべき箇所が減ったように感じますが、最近比較的賢いモデルを使っているからなのか、それともこのバージョンのlegionmindが本当に賢くなったのかはわかりません。

    3. openclawを構築しました。minimax 2.1はまだ少し賢くありませんが、個人アシスタントとしてはopenclawで十分だと思います。なぜなら、基本的には記憶機能付きのChatGPTに手足(私のPCを操作できる機能)が加わったようなものだからです。

    4. Yuanにhttp-proxy機能を追加し、メトリクスなどを追加しました。

  2. 何か考えていること

    AIに文章を書かせることは、あまり原理が分かっていないコードをデバッグするのに似ていると感じることがあります。動作を繰り返しテストしたり、ログを出力してデバッグを補助し、あちこちを修正して、最終的に満足のいく結果が得られるまで試行錯誤します。この感覚の由来を探ってみます。

    AIを使ってコードを書くプロセスは、人間がプロンプト(具体的な指示を含む)を入力し、AIがその指示の背後にある暗黙の指示や情報を理解し、正しく作業を完了してくれることを期待するものです。

    AIに伝えたい指示を階層化できます。最上位は今回のタスクの指示です。その下には、このソフトウェアプロジェクトで行われたいくつかの技術的決定、トレードオフを検討した上でこのプロジェクトの一部に適用されるベストプラクティスがあります。さらにその下には、プロジェクトが解決しようとしている問題領域の背景情報があります。さらにその下には、AIを使うソフトウェアエンジニアリング自体の専門的な背景知識、個人の好み、技術的嗜好、スタイルの好み、過去の経験、思考方法の蓄積があります。最下層には、この世界の背景知識があります。

    AIとの対話の中でAIに明確に伝えられるのは、実際には今回のタスクの指示だけで、あとはAIが十分な世界背景知識と問題解決に必要な背景情報を持っていることを期待するしかありません。

    したがって、タスクのコンテキストが十分に小さく、指示が極めて明確で、過去の制約がなければ、AIは簡単に高品質なタスクを完了できるはずです。大量の暗黙的な背景情報があると、意味不明な結果を生み出しやすくなります。

    Legionmindが目指すのは、AI自身にこのプロジェクトと問題領域に関する背景知識とベストプラクティスを蓄積させることです。そのためには、AIが優れた論理的思考力と記憶力(コンテキスト容量)を持つか、あるいはAI自体が豊富な世界背景知識を持っている必要があります。これらを超えるものは、AIではどうにもなりません。

    それから、nvimにもっと早く出会っていればよかったと強く感じています。

  3. 明日やること

    明日はscの新居を見学に行き、一緒にボードゲームをします。ついでにsyにスキー用品を見せてもらいます。