Claude Codeが「丁寧すぎて」作業ペースが落ちる時
Claude Code CLIを1ヶ月以上「使い倒し」、50個のReactクラスコンポーネントをFunctional Hooksに変換するような過酷なタスクをこなす中で、一つのことに気づきました。それは、「AIが安全であればあるほど、時には煩わしくなる」ということです。リファクタリングの真っ最中に、30秒ごとにターミナルに「このファイルを読み込む権限はありますか?」「テストコマンドを実行してもいいですか?」と表示されるのは、まさに忍耐力のテストです。
使い始めは安心感がありましたが、作業フロー(Flow)に乗っている時に y を連打しなければならないのは非常にストレスが溜まります。さらに、新しいセッションを開始するたびに「ES6準拠で書いて」「buildディレクトリは除外して」と同じ指示を繰り返す羽目になります。これは、適切なカスタマイズでパフォーマンスを飛躍的に向上させることができる設定ファイルを無駄にしている証拠です。
なぜ Claude Code はこれほど「慎重」なのか?
Anthropicがこのように設計した理由は非常に現実的です。ソースコードが消失することを恐れているからです。デフォルトでは、Claude Codeは「ゼロトラスト(Zero Trust)」の哲学に基づいて動作します。ユーザーの許可なしにシステムに深く介入する権限を持ちません。このメカニズムは、AIが誤って rm -rf / を実行したり、機密キーを含むファイルを読み取ってしまったりするような悲劇からプロジェクトを守ります。
しかし、デフォルト設定は初心者向けです。プロフェッショナルなワークフローでClaudeを強力なパートナーにするには、暗黙のルールを定義する必要があります。設定ファイルがない場合、Claude Codeは以下のようになります:
- ターミナルを閉じるとコーディングスタイルのルールをすべて忘れる。
lsやcatのような基本的なコマンドでさえ確認を求めてくる。- コード修正後にPrettierやLinterを自動実行できず、手動でクリーンアップする必要がある。
Settings.jsonを使いこなす:価値ある設定項目
深くカスタマイズするには、settings.json ファイルを開きます。LinuxやmacOSでは、~/.claude/settings.json にあります。ターミナルで claude config コマンドを実行すればすぐに開くことができます。
1. Permissionsの設定:利便性と安全性のバランス
ここは「Yesボタンを押す機械」から脱却するためのセクションです。私は通常、以下のように権限を分類しています:
{
"permissions": {
"autoApprove": {
"read": true,
"write": false,
"execute": [
"ls",
"git status",
"npm test",
"jest --onlyChanged"
]
}
}
}
重要な注意点: 私はClaudeがプロジェクトのコンテキストを素早く把握できるように、常に read: true に設定しています。write に関しては、保存前に自分の目で git diff を確認したいので false にしています。execute は、データの読み取りやテストの実行に関するコマンドのみに自動承認を与えます。deploy や push コマンドをこのリストに含めることは絶対に避けてください。
2. Hooks:繰り返しの作業を自動化する
Hooksは、1日あたり少なくとも15〜20分を節約できる「次元の違う」機能です。Claudeが作業を行う前、あるいは後に、コマンドを自動実行できます。例えば、AIが修正した直後にコードが標準通りにフォーマットされている状態にしたい場合などです。
{
"hooks": {
"postEdit": "npx eslint --fix . && npx prettier --write .",
"onSessionStart": "git pull origin main"
}
}
この設定のおかげで、Claudeが修正を終えるとすぐにLintとPrettierが自動で走ります。一言も指示しなくても、コードは常に綺麗に保たれます。大規模なReactプロジェクトでこれを適用した結果、くだらないフォーマットエラーのレビュー時間を大幅に削減できました。
3. Behavior:AIの「振る舞い」を教える
このセクションでは、Claudeにその役割を理解させます。特定のモデルを強制してコストを最適化したり、応答言語を固定したりできます。
{
"behavior": {
"preferredLanguage": "Japanese",
"defaultModel": "claude-3-5-sonnet",
"alwaysIncludeContext": ["architecture.md", "package.json"]
}
}
ヒント:常に package.json をコンテキストに含めることで、Claudeがプロジェクトに存在しないライブラリや間違ったバージョンを提案することを防げます。
開発者向けの標準設定テンプレート
最初から手探りで設定するのが面倒な場合は、私が多くの実戦プロジェクトで磨き上げた以下のテンプレートをコピーして使ってください。開発スピードを確保しつつ、トラブルを起こさない程度の安全性も担保しています。
{
"version": "1.0",
"permissions": {
"autoApprove": {
"read": true,
"write": false,
"execute": ["ls", "grep", "npm test", "vitest"]
}
},
"behavior": {
"style": "concise",
"maxHistoryMessages": 30
},
"hooks": {
"onSessionStart": "npm install --dry-run"
}
}
最後のアドバイス:設定をどれだけ信頼していても、git diff の確認は決して怠らないでください。settings.json はあくまでアシスタントであり、エンジニアの注意深さに取って代わるものではありません。それでは、ワークフローのアップグレードを楽しんでください!

