✉️

1年前の自分へ -- Claude Codeはこう始めろ

に公開

Claude Codeを使い始めた頃の自分へ

あなたは今、Claude Codeに失望しかけています。

この1年で私はGitHub Copilot、Cursor、Claude Code、Codexと渡り歩いてきました。他にもいくつか試しています。どのツールでも最初の2週間は同じパターンにはまりました。「この機能を実装して」と打つ。コードが出てくる。動かしてみる。なんか違う。修正を頼む。また違う。自分で書き直す。気づけば夕方。

いろいろ触った末にClaude Codeに落ち着きましたが、最初はこのツールでも同じでした。1日8時間のうち、生成コードをそのまま使えたのは せいぜい3割 。残り7割は手戻りと「いや、そうじゃなくて...」の繰り返しです。

「AIペアプログラミングの未来が来た」と意気込んでいた割に、素朴にVSCodeで書いていた頃と生産性が変わりません。むしろ「AIに指示を出す」という工程が増えた分だけ遅くなっている気すらします。ツールを変えれば解決すると思って乗り換え続けていた時期が、正直にいうとありました。

でも、違いました。どのツールを使うかではなく、 どう使うか の問題だったんです。Claude Codeに限らない話ですが、私がいちばん長く使っているClaude Codeを例に、3つだけ伝えさせてください。

1. いきなりコードを生成させない

あなたがやっている最大の失敗は、朝一番にClaude Codeを開いてすぐ「この機能を実装して」と打つことです。

これをやめてください。

代わりに Shift+Tab を押します。Plan Modeに切り替わります。このモードではClaude Codeはコードを一切生成しません。ファイルも変更しません。「何をどういう順番でやるか」を対話的に詰めるだけのモードです。

1日の開発フロー -- Plan Modeからレビューまで

朝の 30分 をこれに使ってください。たった30分です。今あなたが午後に食らっている手戻りの大半は、この30分で消えます。

具体的にどうするか

> (Plan Mode) 今日はユーザー認証機能を実装したい。
> メール/パスワード認証、Google OAuth、パスワードリセットの3つ。
> 優先度と実装順を提案して。

Claude Codeは依存関係を分析して実装順を提案してくれます。ここで「JWTの保存先はhttpOnly Cookieで」「メール送信はResend」といった設計方針も合意しておきます。

先週やらかした「午後になってからJWTの保存方式が違うことに気づいて3時間溶かした」事件、覚えていますよね。あれはPlan Modeで30秒で防げた話です。

Plan Modeのもう1つの効果は、 そのあとの実装モードでClaude Codeの出力品質が上がる ことです。コンテキストに「何をどう作るか」の情報がすでに含まれているので、推測で変な方向に走りにくくなります。Anthropic公式ドキュメントでもPlan Modeの活用が推奨されています。

「計画に30分使うのは時間の無駄」とあなたは思っています。3週間後に気づきますが、その30分は午後の手戻りを消すための投資であって浪費ではありません。信じられないなら1週間だけ試してください。

2. セッションを惜しまない、使い捨てる

あなたはClaude Codeのセッションを切るのがもったいないと思っています。「ここまでの文脈がリセットされるのは損だ」と。

逆です。 切らないことが損なんです

午前中に認証機能を実装して、同じセッションのまま午後にダッシュボードUIを触り始めたらどうなるか。Claude Codeは認証機能の議論で蓄積したコンテキスト -- JWT、bcrypt、ミドルウェア -- をダッシュボードの実装に引きずり込みます。結果、意図しないインポートが追加されたり、認証と無関係なファイルにセッション情報の参照が混入したりします。

私はこれを「コンテキスト汚染」と呼んでいます。格好いい名前をつけたかっただけですが、実害は本物です。

/clear のルール

タスクが1つ終わったら /clear 。これだけです。

# タスク1: ユーザー登録
claude
> ユーザー登録機能を実装して
# ... 完了 ...
> /clear

# タスク2: ログイン(クリーンなコンテキストで開始)
> ログイン機能を実装して

「でも、前のタスクの文脈が必要なときもあるのでは?」と思いますよね。ほとんどの場合、必要ありません。Claude Codeはプロジェクトのファイルを毎回読み直します。本当に必要な文脈はコードベースに書かれています。セッション内の会話履歴に残っている文脈は、大半が「試行錯誤の残骸」であって「必要な前提」ではありません。

あなたが3週間後に見る数字を先に教えておきます。 /clear の使用回数を1日0.5回から4.2回に増やしただけで、手戻りのrevert/fixupコミットが 週12件から3件に減ります

/compact という中間地点

1つのタスクが長引いて /clear するほどではないが重くなってきた、という場面があります。そのときは /compact を使ってください。会話履歴を要約して圧縮してくれます。重要な設計判断は残して、試行錯誤の過程だけを刈り取ります。

私が /compact を打つ基準は1つだけです。 エラーの試行錯誤が5回続いたら 打ちます。5回続いたエラーは、小手先の修正では解決しません。コンテキストを整理してアプローチを変えるタイミングです。「もう1回だけ...」と粘りたくなる気持ちはわかります。粘るほど泥沼にはまります。これは人間のデバッグでも同じですね。未来の私はまだときどき粘って後悔しています。

3. 技術スタック単位ではなく機能単位で切る

Plan Modeと通常モードの使い分け

Plan Mode でタスクを分解するとき、あなたはこう切るはずです。

❌ あなたの切り方(技術スタック単位)
- タスク1: 全テーブルのマイグレーション
- タスク2: 全APIエンドポイント実装
- タスク3: 全画面のUI実装

これをやめて、こう切ってください。

✅ こう切る(機能単位)
- タスク1: 商品一覧表示(DB + API + 画面)
- タスク2: カート追加(DB + API + 画面)
- タスク3: 決済処理(DB + API + 画面 + 外部連携)

技術スタック単位で切ると、タスク1(DB全部)が終わっても動作確認ができません。タスク2(API全部)も終わって、タスク3(UI全部)も終わって、ようやく「動くかどうか」がわかります。その頃にはDBスキーマとAPIの型定義がズレていて全部やり直しです。来週これを体験します。

機能単位で切れば、 1セッション1機能 で完結します。タスク1が終わった時点で商品一覧が画面に表示されます。動きます。嬉しいです。次のタスクに進むモチベーションが出ます。小さな達成感は馬鹿にできません。

Claude Codeのセッション管理とも相性が良いです。1セッションで「全テーブルのマイグレーション」を扱うとコンテキストが肥大化してレスポンスが劣化します。1セッション1機能なら、コンテキストは常にコンパクトです。

「結合テストができる最小単位」で切る。これだけ覚えてください。

3つ守ったら何が変わるか

信じないだろうと思うので数字で示します。この3つを守って3週間経った後の私の数字です。

指標 あなたの今 3週間後
1日のコミット数 4.2件 7.8件
手戻りコミット (週) 12件 3件
/clear 使用回数 (日) 0.5回 4.2回
Plan Mode使用時間 (日) 0分 約25分

コミット数が倍近くになったのは、生産性が2倍になったというよりも、 手戻りが消えて前に進む時間が増えた 結果です。1日の作業時間は変わっていません。やっていることは朝30分の計画と、タスクごとの /clear と、機能単位の分解です。魔法は何もありません。ライフハック記事みたいな結論で恐縮ですが、実際に効いたので仕方ありません。

もう1つだけ

3つと言いましたが、もう1つだけ。

「昨日の自分、何やってたっけ」。月曜の朝にこれを思う回数は、年間で数えたくないほどあります。夕方、セッションを閉じる前に「今日の作業を要約して。完了したこと、明日やるべきこと、未解決の課題を docs/daily-log.md に追記して」と頼んでください。このログが翌朝のPlan Modeの入力になります。前日の文脈を持った状態で計画を立てられるので、朝のウォームアップ時間が 15分から5分に縮みます

ただし、Claude Codeが「完了」と書いたタスクを鵜呑みにしないでください。実は中途半端なこともあります。「これ本当に終わった?」と自分の目で確認してから閉じる習慣をつけてください。未来の私はまだときどきこれで痛い目を見ています。完璧な助手ではなく、優秀だが楽観的な後輩だと思ってください。

最後に

あなたは今、Claude Codeに期待しすぎているか、失望しかけているかのどちらかです。どちらも正しくありません。

Claude Codeは あなたの使い方の精度をそのまま返す鏡 です。雑に使えば雑な結果が返ってきます。丁寧に使えば丁寧な結果が返ってきます。そしてその「丁寧さ」は才能ではなく、Plan Mode、/clear、機能単位分解という3つの習慣でほぼカバーできます。

明日の朝、PCを開いたら、まず Shift+Tab を押してください。コードを1行も書かないまま30分が経ちます。それが正解です。

1年後の自分より。まだ完璧にはやれていませんが、少なくともあなたよりは上手くやっています。


関連記事:

本書の要点を11枚のスライドにまとめたデッキも公開しています。

📕 実践Claude Code -- コンテキストエンジニアリングで開発が変わる (Zenn Book)

GitHubで編集を提案

Discussion