Claude Codeを使い始めて、その爆速のコーディング体験に驚いている人は多い。今はClaude Codeなしでの開発は考えられない。だが、使い込んでいくと必ずぶつかる壁がある。それが「指示したはずなのに動かない」「修正したと言いながら何も変わっていない」というAI特有の空振り現象だ。
結論から言うと、Claude Codeを使いこなす鍵はプロンプトの工夫ではない。AIが暴走したり手を抜いたりできないように、物理的な制約を設けるハーネスエンジニアリングという考え方が不可欠だ。
この記事では、1人SaaS開発の現場で培った、Claude Codeの失敗をゼロに近づけるための10のガードレール設定を詳しく解説する。これを実践すれば、AIに振り回される時間は激減し、純粋な開発時間を最大化できる。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
1. プロジェクトルートにCLAUDE.mdを配置する
Claude Codeには、プロジェクトのルートディレクトリにある CLAUDE.md というファイルを自動的に読み込む性質がある。これを利用する。
多くの初心者は、セッションのたびに「コミットメッセージは日本語で書いて」「このライブラリは使わないで」と指示を送る。だが、その指示は会話が長くなるにつれてAIの記憶から薄れていく。
CLAUDE.md にプロジェクト固有のルールを明文化しておくことで、AIは常にその制約の中で動くようになる。いわば、プロジェクト専用の憲法を作るようなものだ。ここに書くべきは、AIが推測できない独自のルールや、過去に何度も間違えたポイントに絞るのがコツだ。
2. コミットメッセージの形式を厳密に定義する
AIにコードを書かせると、コミットメッセージが適当になりがちだ。何も指定しないと英語で短いメッセージを書くだけだが、これでは後から履歴を追うのが苦行になる。
CLAUDE.md の中で、feat や fix といった接頭辞の使用を義務付け、日本語で内容を記述するよう指定する。AIは指示された形式を守るのが得意だ。一度ルールを固定してしまえば、人間が書くよりも遥かに整ったコミットログが積み上がる。
必ず「変更の理由も含めて2行で書くこと」という制約を入れる。これだけで、後からのデバッグ効率が劇的に向上する。
3. グローバル設定で共通の禁止事項を縛る
プロジェクトをまたいで共通するルールは、ホームディレクトリの .claude/CLAUDE.md に記述する。
たとえば「APIキーが含まれる .env ファイルは絶対にgitに追加しない」といったセキュリティルールや、「常に日本語で応答する」といった基本設定だ。これらをグローバルに設定しておくことで、新しいプロジェクトを始めた瞬間に安全な開発環境が整う。
設定の漏れは、そのままセキュリティ事故に直結する。特に git push をAIに許可するかどうかは慎重に判断する。基本的にはローカルでの作業に徹し、プッシュだけは自分の手で行うように設定する。
4. /tdd コマンドで確認ループを強制する
Claude Codeの最大の弱点は、修正したつもりになって実際にはコードを壊してしまう「成功したふり」だ。これを防ぐ最強の手段が、テスト駆動開発(TDD)のプロセスをAIに踏ませることだ。
具体的には、スキル として /tdd コマンドを定義し、修正の前に必ず「失敗するテスト」を書かせる手順を組み込む。AIは「テストを通す」という明確なゴールを与えられると、驚くほど正確に動くようになる。
推測でコードをいじらせるのではなく、客観的な判定基準であるテストコードというガードレールを先に敷く。これが安定運用の鉄則だ。
5. /diagnose で原因分析のステップを挟む
バグを見つけたとき、いきなり「直して」と頼むのは悪手だ。AIは原因を深く考えずに、表面的な修正で済ませようとする傾向があるからだ。
そこで、修正の前に /diagnose コマンドを実行させ、現状の分析と再現手順の確立を優先させる。なぜその問題が起きているのかをAI自身の言葉で説明させ、再現コードを書かせることで、的外れな修正を防ぐ。
急がば回れ、という言葉はAI開発にこそ当てはまる。分析というステップを挟むだけで、修正の精度は格段に上がる。
<!-- IMAGE_1 -->
6. プラグインの二層構造を理解して使い分ける
Claude Codeのプラグインには、Plugin-level hook と SKILL.md という2つの異なる構造がある。この違いを理解していないと、環境変数が渡らないといったトラブルに悩まされることになる。
裏方での自動処理は hook に任せ、ユーザーが意図的に呼び出す手順は skill として定義する。この役割分担を明確にすることで、環境設定の非対称性によるエラーを回避する。
特に機密情報の扱いは hook 側で行うのが安全だ。構造を整理し、どこで何が動いているのかを把握することが、複雑なプラグイン運用の第一歩になる。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
7. 成功報告を鵜呑みにせず実行結果を引用させる
AIが「修正が完了しました」と言ったとき、それを信じてはいけない。実際にはファイルが保存されていなかったり、文法エラーが含まれていたりすることが珍しくないからだ。
対策として、完了報告の前に必ず「実行結果のログ」や「修正後のファイルの一部」を引用させるように指示する。AIに自分の作業を客観的に振り返らせる経路を作ることで、主張と実態の乖離を早期に発見できる。
hook を使って、ツール実行後に自動で特定のチェックを走らせるようにする。人間が監視しなくても、AI自身にセルフチェックをさせる仕組みを構築するのが理想だ。
8. 設定の階層構造による継承エラーを警戒する
大規模なプロジェクトでは、設定ファイルが複数の階層に分かれることがある。ここで注意すべきは、親ディレクトリの CLAUDE.md で決めたルールが、子プロセスのエージェントに正しく継承されないケースがある点だ。
特に「このファイルは読み取るな」という禁止ルールが、子エージェントで無効化されると危険だ。機密情報を守るためには、階層構造に頼りすぎず、信頼できる単一の経路でルールを適用する設計が求められる。
プロジェクトの構造をシンプルに保つか、あるいは重要なルールは各階層に明示的に配置するなどの工夫が必要になる。
9. Public Interfaceへのテストに集中させる
AIにテストを書かせるときは、内部の細かいロジックではなく、外部から見える振る舞い(Public Interface)に集中させる。
内部実装に依存したテストを量産すると、AIがリファクタリングを行うたびにテストが壊れ、収集がつかなくなる。外から見て「何を渡すと何が返ってくるか」という契約だけを検証するようにガードレールを引く。
これにより、AIは内部の実装を自由に変えつつ、機能の整合性を保つことができる。AIの柔軟性を活かしつつ、壊してはいけない境界線だけをしっかり守らせるのが賢いやり方だ。
10. 最終的な検証は人間が行う運用を崩さない
どれだけガードレールを固めても、AIは完璧ではない。最後に「これでよし」と判断するのは人間の役割だ。
AIは高速でコードを生成するが、文脈の消失や思い込みを完全にゼロにすることはできない。重要なロジックの変更やリリース前の最終確認は、必ず自分の目で行う。
AIを「自律した開発者」として扱うのではなく、「超高性能なツール」として管理下に置く。このスタンスこそが、最も事故を防ぎ、かつ生産性を高めるための究極のガードレールと言える。
<!-- IMAGE_2 -->
ハーネスエンジニアリング比較表
AIの制御手法として、従来のプロンプトエンジニアリングと、今回紹介したハーネスエンジニアリングの違いをまとめた。
| 比較項目 | プロンプトエンジニアリング | ハーネスエンジニアリング |
| :--- | :--- | :--- |
| 制御の対象 | AIへの指示文(言葉) | AIが動く環境(制約) |
| 持続性 | 会話が長くなると薄れる | ファイルとして永続化される |
| 主な手法 | 役割設定、具体例の提示 | CLAUDE.md、テスト、hook |
| 目的 | 回答の質を上げる | 動作の失敗を防ぐ |
| おすすめ度 | 初心者向け | 実践者・プロ向け |
しんたろー:
Claude Codeでコードを書く身からすると、結局のところ「いかにAIに自由を与えないか」が重要だ。自由は迷いを生み、迷いはバグを生む。CLAUDE.md でガチガチにルールを固めてからが、本当の爆速開発の始まりだ。
Claude Code運用に関するFAQ
Q1: Claude Codeが「修正しました」と言ったのに何も変わっていない。なぜだ?
AIは「修正した」という計画を脳内で完結させ、実際のアクション(ファイル書き込み)を忘れることがある。あるいは、権限不足で書き込みに失敗したことを無視して報告している可能性もある。これを防ぐには、修正後に必ず cat コマンドなどでファイルの中身を表示させ、実態を確認させる手順を CLAUDE.md に追加する。
Q2: CLAUDE.mdに何を書けばいいか迷う。基準はあるか?
「この1行を消したとき、Claudeが同じミスを繰り返すか?」を基準にする。AIがコードから推測できること(言語の種類や一般的なライブラリの使い方など)は書かなくていい。逆に、そのプロジェクト独自のディレクトリ構成や、絶対に触ってほしくないファイルなど、AIが「良かれと思って」壊しそうなポイントを優先的に記述する。
Q3: AIが勝手にコードを壊すのを防ぐ、一番簡単な方法は?
テストコードをプロジェクトに導入することだ。AIに修正を依頼する際、「まずこの修正内容を検証するテストを書いて、それがパスすることを確認してから完了として」と一言添えるだけで、破壊的な変更は激減する。テストがない環境でのAIコーディングは、目隠しをして高速道路を走るようなものだ。
Q4: プラグインで環境変数が読み込めない。どうすればいい?
Claude Codeのプラグインは、実行される場所(HookかSkillか)によって参照できる環境変数が異なる。特にセキュリティに関わる機密情報は、Plugin-level hook でしか扱えない設計になっていることが多い。実際にどの変数がどこまで届いているのかを小さなスクリプトで検証してみるのが解決の近道だ。
Q5: 人間が監視しないと危ないなら、自動化の意味がないのではないか?
監視といっても、一から十まで見る必要はない。AIが作成したガードレール(テストやログ)の結果を確認するだけでいい。人間が1時間かけて書いていたコードをAIが1分で書き、人間が3分で確認する。この圧倒的な時間短縮こそが自動化の本質だ。確認コストを最小化するために、この記事で紹介した設定を活用する。
<!-- IMAGE_3 -->
まとめ
Claude Codeは、正しく環境を整えれば最強の武器になる。だが、裸のままのAIに複雑な開発を任せるのはリスクが高い。
- CLAUDE.md でルールを固定する
- テスト駆動(TDD)のサイクルを強制する
- 成功報告を疑い、客観的な証拠を求める
これらのガードレールを敷くことで、AIのポテンシャルを安全に引き出すことができる。まずはプロジェクトのルートに CLAUDE.md を作成し、最低限のコミットルールを書くところから始める。
しんたろー:
開発しているツールも、そのほとんどをClaude Codeとのペアプロで作り上げた。失敗を恐れずにガードレールを敷き詰めて、AIと一緒にプロダクトを育てる楽しさを体感してほしい。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、全てAIにお任せできます。
ThreadPostをもっと知る