Skip to content

Claude Codeが苦手なこと正直まとめ

Claude Codeの素晴らしさを語る記事は多いです。私たちもそれを書いています。でもここでは逆に、「苦手なこと」「向いていない場面」を正直に書きます。

「期待しすぎて失望する」よりも「適切な期待値を持って活用する」ほうが、長期的にうまく使えると思うからです。

1. コードベース全体の「意図」を理解すること

Section titled “1. コードベース全体の「意図」を理解すること”

大規模なコードベースで「なぜこういう設計になっているか」「このコードが存在する歴史的な背景」を理解することが苦手です。

こういう場面で失敗する:

  • 「このarchitectureはなぜこうなっているか教えて」→ コードを読んで表面的な答えは返ってくるが、本当の理由(ビジネス判断・技術的制約の歴史)はわからない
  • レガシーコードの「触っていい部分」「触ってはいけない部分」の判断が難しい

対策: CLAUDE.mdに「このコードが存在する理由」「触ってはいけない理由」を明記する

2. パフォーマンスのプロファイリング・最適化

Section titled “2. パフォーマンスのプロファイリング・最適化”

「このコードが遅い」という問題に対して、原因を特定することが苦手です。

こういう場面で失敗する:

  • 「このAPIが遅い」と言っても、実際のプロファイリングデータなしには適切な最適化提案ができない
  • 「N+1クエリがある」という明らかな問題は指摘できるが、「キャッシュのミスが起きている」という実行時の問題は見つけられない

対策: プロファイリングツールで実測データを取り、それをClaudeに渡してから最適化を依頼する

3. ビジネスロジックの「正しさ」の判断

Section titled “3. ビジネスロジックの「正しさ」の判断”

技術的に正しいコードを書くことはできますが、「ビジネスルールが正しく実装されているか」の判断は苦手です。

具体例:

  • 「送料計算のロジックが正しいか確認して」→ コードは読めるが、「この商品カテゴリは特別料金」という業務知識はない
  • 「税計算の実装を確認して」→ コードの整合性は確認できるが、税法の解釈は判断できない

対策: ドメイン知識を含む仕様書を見せながら確認を依頼する

4. 複数ファイルにわたる複雑な依存関係の把握

Section titled “4. 複数ファイルにわたる複雑な依存関係の把握”

大きなリファクタリングで、変更が波及する先を完全に追うことが苦手です。

具体例:

  • 型定義を変更したとき、「全部のファイルを更新した」と言うが、実は見落としがある
  • 「このクラスを削除して」→ 削除はするが、間接的に依存しているコードを見落とすことがある

対策: リファクタリングは小さな単位に分けて、各ステップでビルドとテストを確認する

タイミングや競合状態(race condition)に関係するバグを見つけることが苦手です。

具体例:

  • 「たまに失敗するテストがある」→ コードを読んでも再現条件が掴めない
  • マルチスレッド・非同期処理のデッドロックリスクを見抜くのが難しい

対策: 並行処理に関するコードは特に丁寧にレビューする。テストでは非決定論的な部分を最小化する。

6. 会話のつながりをまたぐ「記憶」

Section titled “6. 会話のつながりをまたぐ「記憶」”

新しいセッションを始めると、以前の会話内容は覚えていません。

対策: 重要な決定・コンテキストはファイルに残す。CLAUDE.mdや .claude/work-log.md を活用する。

7. 「正しいかどうかわからない」ときに自信を持って答える

Section titled “7. 「正しいかどうかわからない」ときに自信を持って答える”

Claudeは不確かなことでも自信を持って答えることがあります。特にあまり情報がない特定のライブラリや、最新のAPI仕様については注意が必要です。

対策: 重要な実装については公式ドキュメントで確認する。「これについては確実ですか?」と聞いてみる価値がある。

CLAUDE.md: プロジェクトのルートに置くClaude Code専用の設定ファイル。プロジェクト固有のルールやコンテキストを記述する。リファクタリング: 外部から見た動作を変えずに、コードの内部構造を整理・改善すること。コンテキスト: Claudeが一度に記憶・参照できる会話・コードの範囲。上限を超えると古い情報が失われる。キャッシュ: 一度取得したデータを一時的に保存しておき、同じリクエストへの応答を速くする仕組み。非同期処理: 時間のかかる処理(API呼び出し・ファイル読み込みなど)を待機中でも他の処理を続ける方式。JavaScriptでは `async/await` や `Promise` を使う。API: Application Programming Interface の略。外部サービスとプログラム間でデータをやりとりするための接続口。

上記を読んで「Claude Codeは使えない」と感じた人がいるなら、それは誤解です。

これらは「Claudeに任せると危ない場面」であり、「人間が補う場面」です。全てのツールに向き不向きがあります。

  • ハンマーは釘を打つのに向いている。ネジを締めるのには向いていない
  • Claude Codeはコードを書くのに向いている。ビジネス判断をするのには向いていない

「苦手なことは人間がカバーする」——この役割分担が明確になると、Claude Codeは本当に強力なパートナーになります。

私たちが「苦手なこと」を把握したのは、失敗を経験したからです。最初は「なんでも任せられる」と思っていました。

今は「これはClaudeに任せる、これは自分がやる」という判断が自然にできるようになりました。この判断力こそが、Claude Codeを使いこなすスキルだと思っています。

最初は過信するかもしれません。失敗するかもしれません。でもそれが「学び」です。怖がらずに使ってみてください。