使い倒し研究所
AIコーディング

CLAUDE.mdに書くべきなのは「コードの説明」ではない|実際に運用中のファイルを分解する

PR本記事にはプロモーション(アフィリエイト広告)が含まれます。

技術構成やコーディング規約を丁寧に書いても、作業はあまり速くなりませんでした。実際に運用している187行のCLAUDE.mdを見直したら、有効に効いていた部分は4種類だけでした。

結論:書くべきは「毎回同じことを説明している内容」

CLAUDE.mdの書き方を調べると、たいてい「プロジェクトの概要、技術構成、コーディング規約を書きましょう」と出てきます。

その通りに書いても、作業はあまり速くなりませんでした。

実際に運用している187行のCLAUDE.mdを見直したところ、効いていたのは次の4種類だけでした。

書くべきもの なぜ効くか
毎回同じ手順の作業 手順を思い出す時間がゼロになる
どのファイルを触るべきか 探す時間と、間違った場所を触る事故が消える
知らないと壊れる落とし穴 一度やった失敗を二度やらなくなる
作業前に確認すること 情報が足りないまま始めるのを防ぐ

共通しているのは、「自分が毎回説明している内容」である点です。逆に言うと、説明しなくても伝わることを書いても効果がありません。

効いた書き方1:毎回同じ手順は、そのまま貼る

実際のファイルに、こう書いてあります。

#### デプロイ手順(毎回同じ)
```bash
git add persona/goods_config.yaml src/static/goods/
git commit -m "商品名を追加"
git push -u origin claude/homepage-payment-spreadsheet-DD1ly
# → GitHub MCP で PR作成 → マージ → Render が自動デプロイ
```

ポイントは「毎回同じ」と明記していることです。

手順を書くだけなら普通のメモですが、「毎回同じ」と書いてあると、判断が不要な作業だと分かります。 考える対象から外れるので、そのぶん速くなります。

ブランチ名まで書いているのも意図的です。思い出す必要のあるものを1つも残さないのが目的です。

効いた書き方2:「コードは触らない」と明記する

これが一番効いた1行でした。

**設定ファイル:** `persona/goods_config.yaml`
**画像置き場:** `src/static/goods/`
**コード変更は不要** — YAMLを編集してコミットするだけ。

商品を追加するとき、設定ファイルを書き換えるだけで済む設計になっています。しかしこれは、コードを読んだだけでは分かりません。

書いていない場合に何が起きるかというと、設定ファイルで済む作業なのに、コード側を読みに行きます。 読んだ結果、正しくても遠回りですし、悪くするとコードを書き換えてしまいます。

「触らなくていい場所」を明示するのは、「触る場所」を書くのと同じくらい重要です。

効いた書き方3:落とし穴を、結果とセットで書く

同じファイルから、そのまま引きます。

- **応募データの永続化には `DATABASE_URL` が必須**。Renderの無料プランは
  ファイルが再デプロイ・スリープ復帰で消えるため、未設定だと応募が消える。

注目してほしいのは「未設定だと応募が消える」の部分です。

これがなく「DATABASE_URL を設定すること」とだけ書いてあったら、優先度が伝わりません。 設定項目はいくつもあるので、その1つとして流されます。

「やらないとどうなるか」を書くと、優先度が伝わります。 データが消えると書いてあれば、後回しにはなりません。

もう1つ、判断の材料も添えてあります。

- `/audition/admin` の下部に保存先のステータスが表示される。
  「⚠️ データベース未設定」と出ていたらRenderの環境変数を確認する。

確認方法まで書いてあるので、疑わしいときに調べ方で迷いません。

効いた書き方4:作業前の確認事項をリストにする

#### 商品を追加するときに確認すること
1. 商品名
2. 本体価格(税込)
3. サイズ展開(S/M/L/XL/XXL など)& XXLだけ値段が違うか
4. カラー展開
5. デザイン展開(複数デザインがあるか)
6. 商品写真(添付してもらう → `src/static/goods/` に保存)

これがあると、作業を始める前に足りない情報が分かります。

書いていないと、半分作ってから「サイズ展開は何ですか」と聞くことになります。 手戻りが発生し、そこまでの作業がやり直しになります。

「XXLだけ値段が違うか」のような細かい条件が入っているのが実務的です。過去に一度つまずいた項目が、そのままリストになっています。

書かなくてよかったもの

逆に、書いても効果が薄かったものを挙げます。

① 技術構成の一般的な説明

「FlaskはPythonのWebフレームワークで……」といった説明は不要でした。一般的に知られている内容は、書かなくても通じます。

書く価値があるのは「このプロジェクト特有の事情」だけです。

② コーディング規約の詳細

インデント幅や命名規則を細かく書くより、既存のコードに合わせるという方針が1行あれば足りました。 実際のコードが最も正確な規約だからです。

③ ファイル一覧

ディレクトリ構成を書き写しても、すぐ古くなります。 更新を忘れた瞬間に、間違った情報として害になります。

変わりやすいものは書かない。 これは重要な線引きです。CLAUDE.mdは手で更新するファイルなので、更新されない前提で内容を選ぶべきです。

複数のツールを使うなら、中身は1か所に置く

別のプロジェクトでは、CLAUDE.mdの中身が1行だけです。

@AGENTS.md

@ に続けてファイル名を書くと、その内容が読み込まれます。

なぜこうしているかというと、AIツールごとに読むファイル名が違うからです。同じ内容を複数のファイルに書くと、片方だけ更新して食い違います。

中身は1つのファイルに置き、他はそこを指すだけにする。 これで食い違いが原理的に起きなくなります。

分量の目安

長さより、更新できるかどうかで決めてください。

私のファイルは187行ですが、そのほとんどが、後から追加した落とし穴と手順です。最初から187行書いたわけではありません。

実際の増やし方はこうです。

同じ説明を2回した → CLAUDE.mdに書く
同じ失敗を2回した → 落とし穴として書く

1回目では書きません。 1回きりのことを書き始めると、更新されない情報でファイルが埋まります。2回目が「繰り返す」の証拠です。

つまずきやすい点

書いた内容と実際がずれると、害になる

間違った情報は、書いていないより悪いです。

設定ファイルの名前を変えたのにCLAUDE.mdを直さないと、存在しないファイルを探しに行きます。 そのぶん時間がかかり、しかも原因が分かりにくくなります。

ファイル名やパスを書くときは、変更したら直す対象が増えることを意識してください。 頻繁に変わるものは、そもそも書かないほうが安全です。

「丁寧に書く」と逆効果になることがある

説明が長いと、重要な行が埋もれます。

前述の「未設定だと応募が消える」のような絶対に外せない1行は、周りに一般論が多いほど目立たなくなります。一般論を削るのは、重要な情報を目立たせるためです。

よくある質問

CLAUDE.mdは最初にどれくらい書けばいいですか?

最初は数行で十分です。同じ説明を2回した時点、同じ失敗を2回した時点で書き足していく形が実際的です。最初から網羅しようとすると、使われない情報でファイルが埋まります。

技術構成やディレクトリ構成は書くべきですか?

一般的に知られている技術の説明は不要です。ディレクトリ構成は変わりやすく、更新を忘れると間違った情報として害になるため、書かないほうが安全でした。書く価値があるのはプロジェクト特有の事情だけです。

落とし穴はどう書けばいいですか?

「やらないとどうなるか」を必ずセットで書いてください。「環境変数を設定すること」だけでは優先度が伝わらず、他の設定項目に埋もれます。「未設定だとデータが消える」と書けば後回しになりません。

他のAIツールも使っている場合はどうしますか?

中身を1つのファイルに置き、CLAUDE.mdからは @ファイル名 で読み込む形にしてください。同じ内容を複数ファイルに書くと、片方だけ更新して食い違いが起きます。

CLAUDE.mdとスキルはどう使い分けますか?

CLAUDE.mdは常に読まれる前提の情報、スキルは特定の作業のときだけ必要な手順に向いています。作業ごとの長い手順書はスキルに移すと、CLAUDE.mdが短く保てます。

まとめ

作業ごとの長い手順書は、CLAUDE.mdではなくスキルに移すとファイルが短く保てます。役割ごとの権限分けについてはサブエージェントの記事にまとめました。

この記事を書いた人
カズト(ETERNAL d.c.t)

ETERNAL d.c.t 代表。Web制作・生成AI導入支援・ライバー事務所運営を手がける。Claude Code / Codex CLI / n8n / Google Apps Script を実務で毎日使い、自社サイト・学習アプリ・業務自動化を内製している。このサイトでは、実際に自分が金を払って使ったツールだけを扱う。