Skip to main content

ClaudeでのAI駆動開発について学んでいること

6分で読む

はじめに

最近、これまで本気でやったことのなかったことを始めました。AIに日々の開発の大部分を任せることです。

オートコンプリートのことではありません。「チャットボットに質問してコピペする」ことでもありません。ターミナルでClaudeにタスクを渡し、コードベースを読ませ、ファイルを編集させ、コマンドを実行させ、反復させる——そして自分は舵を取る。そういう開発のことです。

謙虚な気持ちにさせられる体験でした。魔法のように感じる日もあれば、ボトルネックはAIではなく自分の使い方だったと気づく日もあります。

なのでこの記事は、ほとんど自分自身へのメモです。学んだことを忘れて、同じ教訓を苦労して学び直す前に、いつでも戻ってこられる場所として。

この分野の専門家ではありません。まだ数週間です。でも、だからこそ今のうちに書き留めておきたいのです。


「AI駆動開発」が今の自分にとって意味すること

始めたばかりの頃、AI駆動開発とはこういうものだと思っていました。

曖昧なお願いを打ち込めば、動くコードが出てくる。終わり。

今は違う見方をしています。

それはロボットに命令するというより、速くて有能で、ちょっと前のめりなジュニアエンジニアと一緒に働くことに近い。彼はあらゆるものを読んでいるけれど、あなたのプロジェクト、あなたの制約、あなたの好みは知りません——伝えない限りは。

得られる成果の質は、ほぼ次の要素で決まります。

  • どれだけコンテキストを与えるか
  • どれだけ明確にタスクを切り出すか
  • どれだけ丁寧に返ってきたものをレビューするか

AIは速い。自分の仕事はコードを打つことから、明確に考え、しっかりレビューすることへと変わりました。

人工知能と大規模言語モデルを表す抽象的な3Dイラスト
打つことは減り、舵取りとレビューが増えた。

まずCLAUDE.mdを用意する

成果を最も大きく改善してくれたのは、たった一つのファイル——**CLAUDE.md**でした。

これはClaudeが自動的に読み込み、プロジェクトの指示として扱うファイルです。自分のものには次を記載しています。

  • コマンド(buildlinttestdev
  • アーキテクチャとフォルダの規約
  • コードスタイルのルール(「データにはinterface、ユニオンにはtype」「デフォルトはServer Components」)
  • 自分のスタックに特有の「やってはいけないこと」
## コードスタイル
- 関数コンポーネントとアロー関数を使う。
- 文字列をハードコードしない——i18n定数を使う。
- デフォルトはServer Components。必要なときだけ 'use client' を使う。

これがないと、Claudeは一般的な慣習をもとに推測します。あると、出力が自分のコードのようになります。自分が繰り返し直していると気づいた指摘は、二度言わずに済むようこのファイルに追記しています。


自分のなかで定着しつつあるベストプラクティス

最も差が出た習慣をいくつか。

小さく、範囲を絞ったタスクで進める。「ブログページにcanonical URLを追加して」はうまくいきます。「SEOを良くして」はうまくいきません。タスクが狭いほど結果も良く、レビューも楽になります。

**作る前に計画する。**少しでも複雑なものは、まず計画を出してもらい、承認する前に読みます。計画の段階で誤った前提に気づけば数秒で済みますが、コードを書いた後だとずっと高くつきます。

**こまめにコミットする。**Claudeに変更させ、差分をレビューし、コミットする。小さなコミットなら、何かおかしくなってもgitが「元に戻す」ボタンになります。バージョン管理の規律なしのAI駆動開発は、火遊びです。

**自分の仕事を自分で検証させる。**変更後にビルドやリンター、テストを実行させると、自分が見る前にほとんどのミスが見つかります。「npm run buildを実行して、壊れたところを直して」は自分の頻出フレーズです。

**すべての差分を、見知らぬ人からのPRのようにレビューする。**実際そうだからです。理解できない速いコードは、勝利ではなく負債です。


やるべきこと・やってはいけないこと

自分に言い聞かせ続けていることです。

やるべきこと:

  • 最初にコンテキストを与える——ファイルパス、例、制約
  • タスクは小さく具体的に切る
  • 複雑なものはまず計画を求める
  • 手動でやらず、ツール(ビルド、テスト、git)を実行させる
  • 指摘をCLAUDE.mdに蓄積し続ける
  • コミット前に全行を読む

やってはいけないこと:

  • 「もっと良くして」と言って満足を期待しない
  • 理解できないコードを受け入れない
  • 確認せずに10ステップも走らせない
  • 「今回だけ」とバージョン管理を飛ばさない
  • プロジェクトを知っていると思い込まない——伝えたことしか知らない
  • 考えることを外注しない。外注するのは打つことだけ

最後のひとつが、自分に一番繰り返し言い聞かせる必要があります。


プロンプトの書き方を学んでいること

プロンプトは小手先の技ではなく、本当のスキルだとわかりました。一貫して役立つことをいくつか。

意図と制約から始める。

ナビバーにダークモードのトグルを追加して。
既存の next-themes のセットアップを使って。
components/ui/Button.tsx の RetroUI ボタンのスタイルに合わせて。
新しい依存関係は追加しないで。

これで一発で使えるものが返ってきます。「ダークモードを追加して」だけだと、当てもの遊びになります。

例を指し示す。BlogCard.tsxみたいにして」は、三段落の説明より多くの情報を運びます。語るより、見せる。

**やらないことを伝える。**制約は目標と同じくらい価値があります。「MDXファイルには触らないで」「無関係なリファクタはしないで」で変更が焦点を保ちます。

質問させる。「曖昧な点があれば、コードを書く前に聞いて」は、自信満々に間違った出力を大きく減らします。

**会話の中で反復する。**一発で完璧になることはほとんどありません。「いいね、次は余白をもっと詰めてアクセントカラーを使って」と続けるのは普通のことで、しかも速い。


自分が実際にやらかした失敗

数週間やってみて、自分が繰り返しやってしまうものたちです。

  • 曖昧なタスクを渡しておいて、出力のせいにする
  • 見た目の良い差分を、ろくに読まずに受け入れる
  • 小さなステップではなく、一気に大きな変更をさせてしまう
  • コミットを忘れて、良い状態を失う
  • 同じ規約を説明し直す代わりにCLAUDE.mdに入れ忘れる
  • 導くべき協力者ではなく、神託のように扱ってしまう

どれも大げさなものではありません。でもこれが、AIが自分を加速させるか、AIがあとで掃除する羽目になる混乱を静かに生むかの分かれ目です。


おわりに

AI駆動開発はエンジニアリングを楽にしたというより、労力のかかる場所を移したのだと思います。

打つ時間は減り、明確に考え、コンテキストを与え、丁寧にレビューする時間が増えました。今いちばん大事なスキルは、古くからのもの——明確なコミュニケーション、良い判断、バージョン管理の規律——を、とても速い協力者に対して適用することです。

この記事は今の自分のスナップショットです。数か月後に読み返して、まだまだ学ぶことだらけだったなと少し恥ずかしくなるはず。それでいい。それが目的なのですから。

読んでくれてありがとうございます。これからも学び、作り、共有し続けます🙏

おすすめの記事