なぜAIは「空気を読めない」のか
深夜2時、デッドラインに追われながらAIにコード生成を依頼した経験はないだろうか。期待していたのは洗練されたモジュール設計なのに、返ってきたのはスパゲッティコードの山。あるいは、既存の規約を無視した命名規則の乱立。多くのエンジニアが「Claude Codeは便利だが、結局手直しが必要だ」と嘆くとき、その原因はモデルの知能ではなく、我々が与える「コンテキストの欠如」にあると私は断言する。AIは魔法の杖ではない。文脈という地図を持たないAIに、複雑なプロジェクトの荒野を歩かせれば、迷子になるのは当然の帰結だ。
ここで鍵となるのが『CLAUDE.md』という存在だ。これは単なるドキュメントではない。Claude Codeというエージェントに対する「プロジェクトの憲法」であり、暗黙知を形式知へと変換するインターフェースである。多くの開発者が陥る罠は、このファイルを「あれば良いもの」として軽視し、プロンプトのたびに同じ指示を繰り返すことだ。これは、毎回新しい新人にゼロからプロジェクトの全歴史を口頭で説明するようなもので、極めて非効率的だ。CLAUDE.mdを適切に設計することは、チームの認知負荷を下げ、AIとの対話を「指示」から「協調」へと昇華させるための、現代のシニアエンジニアに必須のスキルセットである。
CLAUDE.mdの真の力は、その階層構造にある。ユーザーグローバル、プロジェクトルート、そしてサブディレクトリという3つのスコープを使い分けることで、AIの「視野」を制御できる。例えば、個人の好みを反映したグローバル設定と、チームで共有すべき厳格なアーキテクチャ方針を分離する。この階層構造を理解せず、すべてをルートに詰め込むのは、巨大なモノリスを1つのファイルで管理しようとする愚行に等しい。我々が目指すべきは、AIが迷いなくコードの海を泳げるよう、適切なコンテキストを適切な粒度で提供する「設計」そのものなのだ。
規模別テンプレートとアンチパターン
プロジェクトの規模に応じて、CLAUDE.mdの書き方は劇的に変わるべきだ。個人スクリプトのような小規模なプロジェクトで、何百行ものドキュメントを書くのはオーバーエンジニアリングであり、AIのコンテキストウィンドウを無駄に消費するだけだ。逆に、5人以上のチームで開発するモノレポ環境において、ルートにすべてを記述すれば、AIは情報の海で溺れ、矛盾した指示に翻弄されることになる。私が推奨するのは、プロジェクトのフェーズに合わせた「テンプレートの使い分け」である。
中規模Webアプリであれば、レイヤードアーキテクチャの境界を明示することが最優先事項となる。特に「依存方向」と「やってはいけないこと」を明記するだけで、AIの出力品質は劇的に向上する。AIは「何をすべきか」というポジティブな指示よりも、「何をしてはいけないか」というネガティブな制約に対して驚くほど忠実だ。これは、コードレビューで「この関数は触るな」と釘を刺すのと同様の効果がある。以下に、プロジェクト規模に応じた設計の指針をまとめた。
| 規模 | 推奨テンプレート | ポイント |
|---|---|---|
| 個人スクリプト | ミニマル型 | 何を作っているか、道具は何か、どう動かすかの3点に絞る |
| 中規模Web | レイヤー分離型 | 依存方向と禁止事項を明記し、責務を明確化する |
| モノレポ | 階層分割型 | ルートに共通方針、各パッケージに固有ルールを配置 |
一方で、絶対に避けるべきアンチパターンも存在する。特に「追記オンリー型」のCLAUDE.mdは、プロジェクトの墓場だ。古いルールと新しいルールが混在し、AIに矛盾した指示を与え続ける。CLAUDE.mdもまたコードの一部であり、技術的負債が溜まればリファクタリングが必要だ。月に一度の棚卸しを怠れば、それはやがてAIを誤った方向へ導く「毒」となる。秘密情報や曖昧な願望を書き連ねることも、AIの推論能力を低下させる要因だ。我々エンジニアは、AIに対して「何を期待するか」を明確に言語化する能力を、今こそ磨く必要があるのではないだろうか。
AI時代のエンジニアに問う「設計」の定義
CLAUDE.mdを整備することは、単なるツール設定ではない。それは、我々が「どのようなコードを美しいと感じ、どのようなアーキテクチャを正義とするか」という哲学を、AIという鏡を通じて再定義するプロセスである。AIが生成するコードの品質が低いと嘆くとき、我々は往々にして「AIの能力不足」を責める。しかし、それは鏡に映った自分の顔が汚れているのを鏡のせいにするようなものだ。AIは、我々が定義した制約の範囲内でしか思考できない。もしAIが期待外れのコードを吐き出すなら、それは我々の「設計」が曖昧であるという何よりの証拠である。
明日から、あなたのプロジェクトのCLAUDE.mdを一度見直してほしい。そこに書かれているのは、本当にAIが迷わないための「地図」になっているだろうか。それとも、ただの「願望リスト」になっていないだろうか。特に「やってはいけないこと」を3つ、具体的に書き出すことから始めてみてほしい。例えば「ドメイン層で外部ライブラリを直接呼ぶな」「エラーは例外を投げずにResult型で返せ」といった、チームの暗黙の了解を明文化するのだ。この小さな一歩が、AIを単なるコード生成機から、あなたの意図を汲み取る「優秀なペアプログラマー」へと変貌させる。
最後に、我々エンジニアに突きつけられた問いを投げかけたい。AIがコードを書く時代において、我々の価値は「コードをタイピングすること」にあるのか、それとも「コードが従うべきルールと構造を定義すること」にあるのか。もし後者であるならば、CLAUDE.mdを記述する行為こそが、これからのエンジニアリングの核心になるのではないか。AIに仕事を奪われることを恐れる前に、AIを使いこなすための「設計図」をどれだけ緻密に描けるか。その能力の差が、これからのエンジニアの市場価値を決定づけることになるだろう。あなたは、AIという強力なエンジンを制御するための「設計図」を、今日書く準備ができているだろうか。


コメント