🪜

3年間AIを使い倒して見えた、エンジニアAI活用の3段階

に公開

こんにちは、アンドドットの高根沢です。

エンジニアとして AI を本格的に使い始めて、早くも3年が経ちました。これまで色々なツールを試してきましたが、今メインで使っているのは Claude Code です。

またClaude Code を使う中で、自分の仕事の中身が3段階で変わってきた感覚があります。同じツールを使っていても、使い方そのものが変わっていく
本記事ではその「AI活用の3段階」を、実際に何が起きたか・どこで詰まったかを含めて整理していこうと思います。
AI 活用が「なんとなく速くなった」で止まっている人にとって、自分の現在地と次の打ち手が見えるような内容になれば幸いです。

前提:段階は「人」ではなく「業務」につく

3段階といってもこの段階は線形に進むものではありません。「自分は2段階目だ」と一人称で語れるものではなく、業務の性質ごとに今いる段階が違うものだと思うのが良いです。
新規実装では2段階目でも、繰り返し業務では3段階目に到達できますし、その逆もあります。

だから問うべきは「自分は何段階目か」ではなく、「この業務は何段階目か」です。業務単位で現在地を言語化できると、次にどこを引き上げるかが見えます。

1人のエンジニアが抱える業務A/B/Cが、それぞれ異なる段階(1段階目: 対話しながら書く / 2段階目: タスクを丸ごと任せる / 3段階目: ハーネスで自動化)に位置することを示した図
段階は人ではなく業務につく。同じエンジニアでも、業務ごとに今いる段階は違う

第1段階:対話しながら一緒に書く

最初のAIとの関わり方は、Claude Code とチャットしながら 小さな粒度のタスクを対話的に進めるスタイルでした。

たとえばリスト画面のローディング状態を改善したい時、こんな指示を出します。

「このフックのローディング表示を skeleton に変えてほしい。shadcn の <Skeleton /> 使って、カードと同じ高さで3行分」

Claude Code が差分を出してくる → 確認しながら「ここのマージン詰めて」「タイトルのスケルトンは幅 60% にして」「同じパターンを他のリスト系フックにも適用して」と続けていく。

1回の指示は小さく、対話の中でコードの形を整えていく感覚です。1機能をまるごと任せるのではなく、普通に実装はさせるが粒度が小さい。実装の主体は Claude Code ですが、何をどこまで変えるか・次にどこを直すかは人間が握り続けています。

Claude Code がリストコンポーネントの skeleton 化差分を出力し、変更要点と次の候補をまとめている画面
指示は小さく、対話の中で形を整えていく。差分の要点を Claude 側がまとめてくれるので、次の指示にすぐ移れる

この段階で生産性が上がる実感は強いです。タイピング量が減り、定型コード(ループ、エラーハンドリング、API レスポンスのマッピング等)を書く時間がほぼゼロになります。

ただし、設計判断と意思決定はすべて握ったままです。Claude Code は手を貸してくれているだけで、何を変えるか・どう設計するか・どこから手をつけるかは全部人間が決めている。

「AIで生産性が上がった」と最初に実感する段階で、多くのエンジニアがここで止まっています。理由は単純で、これだけでも十分速くなるからです。

第2段階:単体タスクをまるごと任せる

ある日、もっと粒度の大きい指示を出してみました。

「マルチテナント SaaS の AI チャット機能に、過去5件の会話履歴をプロンプトに含めるロジックを追加して。Prisma の ChatMessage モデルから tenantId でスコープして取得、ユニットテストも書いて、PR まで作って。チケット元のNotionページはhttps://notion.so/xxxx です。」

要件の解釈、対象ファイルの特定、実装、テスト、コミット、PR 作成。1段階目では自分が逐次やっていた工程を、Claude Code に 丸ごと任せる。人間は出てきた PR を確認するだけです。

Claude Code が schema.prisma の変更を計画し、複数ステップのタスクリストを自分で組み立てて実行している画面
大粒度のタスクを投げると、Claude Code 側が「現状調査 → schema 編集 → 実装 → テスト追加」と自分でタスクを切ってから進む

最初に手を出した時の体感は、「実装作業を時間単位で外注できるようになった」でした。1段階目は手が速くなる感覚、2段階目はそもそも自分の手を動かさない感覚です。

「N+1 を直して PR まで」「テナント切り替えメニューに検索欄追加して PR まで」「このバリデーション全画面に伝播させて PR まで」のような、やることが明確で範囲が限定された仕事は、ほぼ Claude Code に任せられます。レビューだけでマージできる。

ただしこの段階にも限界があります。「毎回人間が指示を出す」工程が積み重なることです。仕事を任せるたびに、

  • どのチケットをやるか選ぶ
  • 関連情報を集める(Slack の議論、Notion の仕様)
  • どのリポジトリのどこを触るかの大枠を伝える
  • 完了後に状態を更新する(Notion / Slack)

を毎回やる。1回1回は数分でも、1日に20回30回と積み重なると 結局そこが新しいボトルネックになります。

「Claude Code に任せれば速い」は正しい。しかし「任せるための前後処理」が次の課題として立ち上がってくる。多くの人がここで頭打ちになります。

第3段階:ハーネスで業務全体を自動化

ある日、Notion で管理しているフィードバックチケットを処理しながら気づきました。

「これ、毎回同じ流れだな」と。

  1. Notion でチケットを開く
  2. 内容を読んで Claude Code に説明する
  3. 実装方針を相談する
  4. 書かせる
  5. レビューしてコミット
  6. PR を作って Notion に戻ってきて状態を更新する

この 1〜6 がまるごと自動化できるんじゃないか、という仮説が立ちました。

実際にやってみたのが、Claude Code の /loop と skills を使ったハーネス構築です。
ハーネス​とは、Claude Codeを賢く動かすための設定ファイル群のことです。

設定 役割 たとえるなら
CLAUDE.md AIへのルールや前提知識 「仕事の引き継ぎ書」
Skills よく使う指示をまとめたもの 「業務マニュアル」
hooks 特定のタイミングで自動実行される処理 「自動チェックリスト」

具体的には feedback-ticket.md という slash command を1つ書きました。中身はざっくりこういう流れです。

エージェントは Notion から優先度順にチケットを取り、Slack で過去の議論を確認し、実装可能なら実装→PR→Notion 更新までやる。情報不足なら Slack に自動でヒアリング投稿し、Notion 側にも記録を残します。

/loop で回し続けるので、自分が他の仕事をしている間にも開発が前に進みます。緑色のコントリビューショングラフが、自分が手を動かしていない時間も埋まっていきました。

直近1年分の GitHub Contributions グラフ。20,259 contributions
直近1年で 20,259 コントリビューション。自分が手を動かしていない時間も、ハーネスが回し続けて緑が濃くなっていく

ここでは主役が完全に AI です。人間は環境設計者と意思決定者になります。何のツールにアクセスさせるか、どんな手順で動かすか、どこで人間に判断を仰ぐか。プロンプトを書くというより、業務システムを設計している感覚に近いです。

ハーネスエンジニアリングの定義

ここで言う「ハーネスエンジニアリング」について、先に定義しておきます。

AIエージェントが自律的に業務を回せる「枠組み(harness)」を設計する仕事。
単発のプロンプトではなく、ツール権限・ワークフロー・失敗時の安全網・外部システム連携(Notion / Slack / GitHub 等) を組み立て、エージェントの実行環境そのものを構築する。

ハーネスエンジニアリングでは、コードを書く対象がプロダクトのコードから「AIが働く環境のコード」に変わる、と言ってもいいかもしれません。

学び①: 段階2と段階3の境界条件

2段階目から3段階目に進む過程で、最大の学びがこれでした。

インプットが構造化されていないと、AIは情報不足のまま実装に進んで事故ります。

2段階目までは、人間が都度指示を出すので 情報整理の責任は人間にありました。指示を出す前に Notion を読み込み、不足があれば自分で確認に走る。曖昧さがあっても人間がフィルターとなって事故が起きることはありません。

ただ3段階目では人間が逐一見ていません。 情報判定の責任をエージェントに移す必要があり、そのため曖昧な仕様のまま「なんとなく解釈」して実装を進めてしまうと誤った前提で動くコードが出来上がります。

そこで 3段階目でのfeedback-ticket.md には、以下のようなガードレールを最初から組み込み、情報が揃っていない時には勝手に進めず、確認に回す仕組みにしました。

  • チケットの仕様が曖昧なら静かにスキップしない。Slack に自動でヒアリング投稿する
  • 同じ質問を二重に投げないよう、当日の親メッセージにスレッドで集約する
  • Notion 側にも「ヒアリング送付済」と記録する

これの仕組みが実際に効果を出るようにするためには、もう一つNotion 側にしっかり仕様を書く文化が必要でした。
具体的には、As-Is / To-Be、影響範囲、決定済み事項などの情報です。これがNotion揃っていれば、エージェントは情報不足を判定できますが、揃っていなければ何が不足しているかすら判定できません。

3段階目を成立させるのは、インプットの構造化(Notion 側の運用)とガードレール(ハーネス側の判定)、この両輪です。

ハーネスが自動投稿した Slack ヒアリングスレッドの状況サマリ。動作確認待ち・仕様確認待ちチケットが状態別に整理されている
ハーネス自身が「次のアクションは何か」を判定して停止する。情報が揃わない時は勝手に進めず、人間の確認を待つ

学び②:段階によって「速くなる場所」が変わる

3段階で生産性が上がるのは間違いありません。ただし、速くなる場所は段階ごとにまったく違う

3段階それぞれの「速くなる場所」「速くならない場所」「時間軸」を比較した表。1段階目=コードを書く速度(分単位)、2段階目=タスクを終わらせる速度(時間単位)、3段階目=業務全体のスループット(日単位)
段階によって速くなるのは別カテゴリ。1段階目はタイピング、2段階目はタスク処理、3段階目は業務全体のスループット

言い換えるとこんな感じです。

  • 1段階目: 自分の手の速度が上がる(自分の作業時間内で、より多く書ける)
  • 2段階目: 自分の手から仕事が離れる(自分が手を動かさなくても、実装が進む)
  • 3段階目: 自分の時間と仕事が独立する(寝ている間も業務が進む)

「AIで生産性が上がった」という言葉は便利ですが、1段階目の効果と3段階目の効果はカテゴリが違います。自分の業務がどの効果を必要としているかで、投資すべき段階が変わるので、きちんと把握して活用をしていくことが大事になってきます。

たとえば「設計判断のスピード」を上げたいなら、どの段階に進んでも改善しません。
それは AI で解決する話ではなく、別の打ち手(ドメイン知識・組織設計・意思決定プロセス)の問題です。逆に「業務の総量を増やしたい」なら3段階目までいかないと頭打ちになります。

自己診断:あなたはどこにいる?

冒頭のポジションに戻ります。段階は「人」ではなく「業務」につきます。
そこでやってみてほしいのは、日常的にやっている業務を3つ挙げて、それぞれが何段階目か言語化することです。

高根沢の場合だと

  • 新規プロダクトの設計 → 1段階目(議論しながら逐次書かせる)
  • 機能実装 → 2段階目(大粒度のタスクを単発で投げる)
  • フィードバック対応 → 3段階目(ハーネスが回している)

業務によって段階が異なることが普通です。
重要なのは、3段階目に到達できる業務を1つでも持っているかどうかです。
1つ持つと、他の業務も「これも3段階目にできるんじゃないか」という発想で見られるようになり、自然と視野が広がりやすい状態になります。

まとめ

3年間AIを使い続けて見えたのは、エンジニアの仕事が「コードを書くこと」から「AIが働ける環境を設計すること」に移っていく、という感覚です。

3段階目を経験すると、自分の手を動かして1機能作るより、システムが回り続ける仕組みを作るほうが面白くなる。

AIに何を任せるかを考えるフェーズは、もう終わりに近い。次は、AIが働ける環境をどう設計するかです。

あなたの業務のうち、どれを3段階目に引き上げられそうですか?ぜひ考えてみるきっかけになれば幸いです。

アンドドット テックブログ

Discussion