エージェント時代におけるリテラテプログラミングの再考が必要です
概要
- Literate programmingは、コードと説明文を組み合わせて理解しやすくする手法。
- 実際には、コードと説明文の二重管理が負担となり普及が限定的。
- Emacs Org ModeやJupyter Notebookが代表的な実践例。
- LLM(大規模言語モデル)エージェントの登場で、この負担が大幅に軽減。
- 今後は、物語のように読めるコードベース実現の可能性。
リテラテプログラミングの現状と課題
- Literate programmingは、コードと説明文を並列に記述し、初心者でも理解できる物語的なコードベースの実現を目指す手法。
- 実際には、コード本体と説明文の2つのストーリーを維持する手間が大きく、普及が限定的。
- 歴史的には、Jupyter Notebookがデータサイエンス分野で広く使われており、計算・結果・説明が同じ画面に表示される構成。
- Emacs Org Modeのorg-babelパッケージは、多言語対応のリテラテプログラミングをサポートし、任意の言語を実行し結果を文書に自動挿入可能。
- しかし、Orgファイルを「ソース・オブ・トゥルース」として使うと、編集ごとに「tangle(抽出)」作業が必要となり、実運用では煩雑さが課題。
個人利用での実践例とメリット
- 個人設定や手順書の管理にはリテラテプログラミングが有効で、コマンドライン作業をOrgファイル内でコマンドとして記述・実行・編集し、手順書と実行履歴を同時に作成。
- 手順書作成と実行が一体化することで、追加のメモ作成が不要となる利便性。
- LLMエージェント(Claude、Kimiなど)はOrg Mode構文を高精度で扱え、説明文とコードの同期やtangle処理を自動化可能。
LLMエージェントによる革新
- テストや機能検証時、エージェントにOrg形式のランブック作成を依頼し、説明文で意図を確認、コードブロックは対話的に実行可能。
- 説明文とコードの同時編集や自動反映が可能となり、二重管理の負担が消滅。
- AGENTS.mdファイルで、エージェントに「Orgファイルを唯一の正とし、説明文を必ず記述し、実行前にtangleする」などの運用ルールを指示可能。
- エージェントは何度でも説明文の修正・再生成に対応し、リテラテプログラミングの最大の障壁だった追加労力を排除。
- コードベースを多様な形式にエクスポートでき、読むことが主業務となるエンジニアにも有用。
Org ModeとMarkdownの比較・今後の展望
- Org ModeのEmacs依存が普及の障壁であり、より汎用的なMarkdownへの移行も検討されるが、Markdownにはメタデータ記述機能が不足。
- Org Modeはプロパティやヘッダー引数で、コードブロックの実行先や詳細設定など、プログラム的な制御が可能。
- 過去はEmacs Lispで独自機能を組み込むことで柔軟性を確保していたが、今はLLMが自動で必要なLispコードを生成可能。
- **「物語のように読めるコードベース」**という理想の実現に、エージェントの力で現実味が増している。
- 大規模コードベースでの本格運用は未経験だが、手順書やテスト用途では高い効果を実感。
結論と今後の課題
- リテラテプログラミングの普及を阻んでいた労力が、LLMエージェントにより解消。
- コードと説明文の同期や抽出・実行が自動化され、コードの可読性や品質向上にも寄与する可能性。
- 今後は、エンジニアの主な役割が「読むこと」へ移行する中で、物語的なコードベースの重要性が増すと予測。
- Org Modeの枠を超えた、より汎用的なドキュメント形式の模索と、大規模プロジェクトでの実践検証が今後の課題。