
2026/03/09 4:58
「エージェント時代にリテラトープログラミングを見直すべきです。」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本稿は、コードと説明文を組み合わせたリテラトープログラミングが、AI エージェント(例:Claude や Kimi)が Org‑Mode ファイルを単一の真実源として扱う場合に実用化できることを主張しています。
Org の構文を解析することで、これらのエージェントはランブックを生成し、埋め込みコードブロックを実行し、Jupyter ノートブックのように結果を保存し、プローズとコードを同期して自動的に更新できるため、ナラティブと実行可能なスクリプトを分離する手作業「タンギング」ステップが排除されます。
著者は、Org Mode を設定管理に個人的に使用した例でこれを示しています:エディタ内で直接コマンドを書き込み、それらを実行し、メモを自動的に取得します。
コードとプローズの2つの並列文書を維持することは採用への一般的な障壁ですが、AI 主導のワークフローは
ファイルに記載された指示(実行前のタンギング、常にステップを説明するプローズ、両側を同期させる)に従うことでそのオーバーヘッドを排除します。AGENTS.mdこのアプローチはワークフローを合理化し、コードベースを複数の読みやすいフォーマットへエクスポートしやすくし、「コードを書く」から「コードを読む」へのシフトを促進します。また、大規模プロジェクトにおける Org‑Mode の Emacs 統合の限界を浮き彫りにし、リテラトープログラミングの普及を広げるために Markdown などの類似フォーマットを推奨することも示唆しています。
本文
リテラート・プログラミングとは、コードと散文を混在させることで、情報不足の読者でもコードベースを物語として読み取り、その動作や目的を理解できるようにする考え方です。
このアイデアには長らく魅了されており、いくつかのケースで活用してきましたが、実際にリテラート・プログラミングを行うと、コード自体と散文という二重のナラティブを維持する手間が増えるため、採用が限定的になってしまいます。
歴史的には、データサイエンスコミュニティで最も一般的に見られる形は Jupyter Notebook です。説明と計算結果・その出力がウェブブラウザ上で並列して表示されます。
このブログを頻繁に読んでいる方なら、Emacs Org‑Mode が org‑babel パッケージを通じて多言語リテラート・プログラミングをサポートし、任意の言語を実行して結果をドキュメントに戻すことができるとご存知でしょう。しかし、これは私のようなエンスージアスト向けのニッチパターンでしかありません。
Org を「真理の源」として大規模ソフトウェアプロジェクトに適用する場合は面倒です。ソースコードはコンパイルされた出力になり、Org ファイルを編集するたびにコードを再抽出し(Org では「tangle」と呼ばれる)目的地へ配置する必要があります。自動化できるものの、実際にエディタで本当のソースを変更してしまい、次の tangle 時に上書きされてしまうという苛立ちが生じやすいです。
それでも、私はリテラート・プログラミングを個人設定の管理に利用し続けるほど成功体験があります。LLM が登場する前からです。
例えば:コードエージェント以前は、Org‑Mode を手動テストとメモ取りに使うパターンを導入しました。コマンドラインで作業する代わりに、エディタ内でコマンドを書き込み、その場で実行・修正しながらステップごとに完了させます。終わったら、何も余分な手順やメモを取ることなく、実行した手順そのものを説明するドキュメントが完成します。テストの実行とノート作成を同時に行うことで、テスト完了時に自動的にノートが生成されます。
現在はコードエージェントが登場し、Claude、Kimi など Org‑Mode の構文をよく理解しているエージェントも増えました。Org‑Mode は forgiving なマークアップ言語で、トレーニングデータに含まれているため、言語モデルには問題なく扱えるのです。
今では機能テストを行いたいとき、私はエージェントに Org 形式のランブックを書いてもらいます。レビュー後、散文は各ステップの意図を解説し、コードブロックはインタラクティブに実行可能です。Jupyter Notebook のように結果がコード下に保存されます。
散文を編集してエージェントにコード更新を求めたり、逆にコードを変更してテキストの意味反映を依頼したり、同時に両方を変えることも可能です。これで並行管理の問題は消えます。
エージェントには tangle を担当させ、抽出の問題も解決します。AGENTS.md ファイルで Org‑Mode ファイルを真理源とし、常に散文で説明し、実行前に tangle するよう指示できます。エージェントはこれら全てが得意で、コード修正後でも散文の再解説を飽きることなく行います。
リテラート・プログラミングの追加労力――それが普及しない主因――をエージェントが排除し、翻訳と要約という大規模言語モデルの得意分野を活用します。
結果として、コードベースは様々な形式にエクスポートでき、読みやすくなります。これはエンジニアの主な役割が「書く」から「読む」に移行する場合に特に重要です。
データはまだありませんが、リテラート・プログラミングは生成コードの品質向上にも寄与すると推測します。各コードブロックの意図を説明する散文がコンテキストとともに提示されるためです。
私はまだ大規模で本格的なコードベースでこのパターンを試した経験はありません。このワークフローは主に手動プロセスのテスト・ドキュメント化に使っており、そこで非常に満足しています。
Org 形式が Emacs に密接に結びついている点も制約です。私は Org が Emacs を離れるべきだと長く信じてきました。Markdown のような代替を推進したいですが、Markdown はメタデータを含める機能がありません。私の Emacs に関する投稿では常に、特定の実装よりも「アイデア自体」に興奮しています―ここでは Org がリテラート・プログラミングを実現している実装です。
エージェントとともに、大規模コードベースを物語として読み、散文が無限の機械によってコード変更と同期されることは実用的になるのでしょうか? それこそ魅力的な問いだと思います。