
2026/09/22 7:47
/src に Markdown
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
要約:本文は、人間による編集されたマークダウンを単なるドキュメントではなく、主要なソースコードとして扱うことを提案している。仕様を実装と並行して
/src/md ディレクトリに保存することで、意図とコードの近接性を確保し、書かれた仕様が一時的なプロンプトや生成された出力ではなく「真実」として機能させようとする。LLM はマークダウンをネイティブとして読み書きするため、プルリクエスト内で専門的なツールを使わずに直接変更を見直すことができる。Linear や Jira、ウィキ、Slack といったツールはプロセス指向または高レベルのデータを処理するが、コアなシステム挙動は /src/md に存在させることで論理の透明性を保ち、不透明でマシン専用のアーティファクトを避ける必要がある。提案された構造には README.md、OVERVIEW.md および機能、データ、API、インフラストラクチャ用のオプションサブディレクトリが含まれる。このディレクトリのマークダウンは人間によって作成・管理され、エージェントがここでほとんどのコンテンツを生成すべきではない。テストは別個に(例:/test)保持され、マークダウン仕様に由来し、その正しさを確認する。/src/md の責任ある管理には「複雑性予算」を導入してドキュメントを清潔で適切にファクタリングし維持することが必要であり、マークダウンの制約とそこから導かれるコードとの同期は、システム整合性を維持するための重要なスキルとなる。本文
マークダウンは新たなソースコード:エージェント型コーディング時代の新しい「真実」の在り方
カーソン・グロス 氏による提言では、マークダウンは単なるドキュメントではなく、ソフトウェアのソースコードそのものへと進化しているとされています。特に「エージェント型コーディング」(LLM を活用した自動コード生成)が普及する中で、以下の転換点が強調されています。
- マインドセットの転換: 開発プロセスにおいて、一時的なプロンプトセッションからではなく、永続化するマークダウンファイルからコードとテストを生成すべきです。
- 保存の原則: LLM が生成したコードはコンパイル後のマシンコードのように扱い捨ててよいという見解ではなく、生成元のマークダウンを
ディレクトリにチェックインし、それがシステム唯一の真実(Source of Truth)となることが重要です。/src
以下に、その考え方や具体的な構成案を整理します。
背景:エージェント型コーディングとコンパイラとの比較
コンパイラとの類似性と相違
- コンパイラのワークフロー:
- オリジナルのソースコードが常に保存される。
- コンパイル後のマシンコードは生成元を参照せずとも動作する。
- LLM(エージェント)の現状:
- 開発者がプロンプトを与え、LLM が直接コードを生成する。
- 問題点: 多くの場合、プロンプト履歴が捨てられ、生成されたコードだけが真実(Ground Truth)になる。しかし、そのコード自体には意図や設計の文脈が含まれていない。
現在の課題
- プロンプトセッションは一時データであり、システムの本質を捉えきれていない。
- 機能の「真実」が Linear や Slack スレッドなどの外部ドキュメントに散らばっている。
結論として: マークダウンファイルを生成されたコードと共に
/src に保存し、それらを正式なソースとして扱う必要がある。
マークダウンをソースコードとして扱うメリット
マークダウンは伝統的なソースコードと同様の優れた特性を備えています。
技術的・実践的利点
- 人間と AI の両者で扱える:
- プレーンテキストであるため、差分表示(Diff)、検索(Grep)、レビューが可能。
- LLM はこれをネイティブに読んだり書いたりできる。
- 人間も特別なツールなしに編集・閲覧可能。
すでに機能している役割
(エージェント指示書)AGENTS.md
(仕様書)SPEC.md
(実装プラン)PLAN.md
(タスク定義)TASK.md
これらは既に事実上のソースコードとして機能しており、標準化された保存場所へ移行すべきです。
具体的な導入案:/src/md
ディレクトリの設定
/src/mdハートリー・ブロディ氏の提案にある
.scratch/ や /tmp/ といった一時的な置き場ではなく、既存のソースコード隣接に永続化する /src/md を作成し、低レベルな設計決定事項を格納します。
キャプチャすべき内容(アーキテクチャレベル)
- アーキテクチャ上の意思決定。
- ソースコードレベルでの実装選択の理由。
- データモデルの構造や意図。
これらは従来の高層な設計ドキュメントよりも低レベルですが、完全な仕様書ではない中間的な位置づけを持ちます。
「近接性の原則(Locality)」の利点
- 意図の共有: コードモジュール自体にその意図を説明するマークダウンが含まれるようになる。
- コンテキストの集中: 論理の「なぜ」が外部ツール(Notion, Confluence, Jira など)に散らばるのを防ぐ。
- エージェントの自律性: エージェントが外部を調べて文脈を取得する必要が減る。
注: より高レベルな設計やプロセスフローについては Linear やウィキなどを併用できますが、システムの静的動作に関する真実の源泉は
に集約するべきです。/src/md
ソースコード、マークダウン、テストの関係性再定義
従来の「コードのみ」か「ドキュメント+コード」とかの二分法ではなく、以下の役割分担を提案します。
推奨される役割分担
- 仕様の代わり(Spec)
- 場所:
/src/md - 内容: システムが何を行うべきか、なぜそうするかという意図と設計決定事項。
- 場所:
- 検証の自動化
- 場所:
(または適宜)/test - 内容:
に記述された仕様に基づいて作成され、正しさを確認するテストコード。/src/md
- 場所:
プロンプトからの脱却
- ❌ 非推奨: プロンプトから直接コードとテストを生成する(文脈が失われるため)。
- ✅ 推奨: 開発者が
に意図を書き込む → そこからエージェントへコードとテストを導き出す。/src/md
/src/md
の運用規約と構造案
/src/md複雑性予算の管理
- ソースコード同様、マークダウンも「複雑性予算」が適用されます。
- ドキュメントはクリーンでファクタリングされ、適切な抽象化レベルを維持するよう厳格に管理する必要があります。
- 開発者は生成されたコードに対して変更を加えたら、その意図をマークダウンにも反映(同期)させるスキルが必要となります。
エージェント生成の制限
の大部分は、人間によって作成・管理されるべきです。/src/md- 完全な自動化は避け、人間の判断による意図の記録を重視します。
提案されたディレクトリ構造
以下の構造案で、モジュールの異なる側面(機能、データ、API、インフラ)を軸に分けて記述することを推奨します。
src/ md/ README.md # すべての md ファイルの目次、エージェントのエントリポイント TODO.md # 未実装項目の一覧 OVERVIEW.md # モジュール技術概要 features/ # 機能固有のドキュメント群(オプション) FEATURE_1.md ... data/ # データモデルの説明(オプション) DATAMODEL_1.md api/ # API の仕様説明(オプション) API_1.md infrastructure/ # 使用インフラストラクチャの説明(オプション) INFRASTRUCTURE_1.md
結論:意図こそが真の価値
LLM の進化によりコード生成のコストは低下していますが、残る価値あるものは「意図」です。
- 何を行うのか
- なぜそれをするのか
- 何をすべきでないのか
これらは一時的なプロンプトや散在するスレッドで失われがちですが、
/src/md としてキャプチャすることで、人間もエージェントも容易に参照できるようになります。
マークダウンはソースコードへと変化しており、これからもそのように扱うべきです。(もちろん、LLM が完璧なコンパイラではないという点は踏まえて運用してください。)