はじめに
業務でAI駆動開発をしています。チームはアジャイルで回していて、実装だけでなく仕様書づくりまでAIに任せる、いわゆるフルAI駆動に近い体制です。
プロダクトは順調にできあがっていきます。スピードも品質も、正直、人だけでやっていた頃よりずっと良いです。
それでも最近、飽きてきたと感じています。
この記事は「AIを使うな」という話ではありません。AI駆動をしばらく続けてみて、自分が今どう感じているか、それが何から来ているのか、どう付き合っていこうとしているのかをまとめたものです。あくまで一人のエンジニアの体験と考えです。
開発の進め方
前提として、今の開発の流れを簡単に紹介します。いわゆる仕様駆動開発(SDD)の形です。
1. 人が「こういうものが欲しい」を書く
2. AIが課題を整理する
3. AIが要件に展開する
4. AIが受け入れシナリオを書く
5. AIが設計する
6. AIがタスクに分解する
7. AIが実装する
各段階の成果物は人がレビューし、OKなら次に進みます。「最後は人が確認する」が、この進め方の安全装置です。
起きたこと:作る人から「読む人」になった
この進め方で、自分の仕事の中身は大きく変わりました。
仕事のほとんどがドキュメントのレビューになりました。
ある1機能(データの登録機能)で、自分が読んだドキュメントを数えてみました。
| ドキュメント | 行数 |
|---|---|
| 課題の整理 | 約160 |
| 要件 | 約210 |
| 受け入れシナリオ | 約480 |
| 設計 | 約470 |
| タスク分解 | 約400 |
| 合計 | 約1,700行(5万字前後) |
これに作業計画も加わります。1機能ごとに、文庫本80ページ分くらいを読んでいる計算です。
コードはあまり見ません。後で書きますが、実装はAIに任せたほうが速くて正確だと思っているからです。
プロダクトはどんどんできていきます。でも自分では何も「作って」いないので、作った感がない。
気づいた瞬間:読む量は増えたのに、考えていない
ある日、疲れているときにレビューをしていて、ふと思いました。
「あれ、いま自分、考えてないかもしれない」
読んではいます。読む量は、AI以前よりむしろ増えています。それなのに、考えている手応えがない。
この違和感を言葉にすると、こうなりました。
- 自分で作るとき:「どうあるべきか」を頭の中で組み立てる
- AIの成果物をレビューするとき:「おかしくないか」を確かめる
前者は生成で、後者は検品です。検品は、疲れていると「それっぽいからOK」に流れやすい。5万字を毎回、同じ集中力で読み続けるのは無理があります。
何が怖いのか
システムの理解が「AIに聞けばいい」になる
今のところ、目に見えて困ったことはありません。ただ、システムを理解しているかには不安があります。
「この機能、どういう仕様だっけ?」と思ったとき、真っ先にAIに聞けばいいかと考えるようになりました。自分の頭の中に仕様がない。あるのは「AIに聞けば分かる」という安心感だけです。
「人が確認する」安全装置が、中身のない形式になる
AI駆動では、人のレビューが品質の最後の砦です。でも人が考えずに承認し始めると、仕組みは回っているのに、安全装置の中身がなくなって形式だけになります。
「飽きた」は個人の気分の問題に見えますが、実は品質の問題にもつながっていると感じています。
ちなみに:実装の品質は問題ない
実装については不安はありません。AIの実装がうまくいかないときは、たいていAIではなくAIに渡す指示が悪いからです。なので指示の中身はしっかり見ています。これはいろいろなところで言われていることなので、ここでは深入りしません。
なぜ飽きるのか:「決める」が「承認する」に変わった
最初は「コーディングしなくなったから飽きたのかな」と思っていました。でも、よく考えると違いました。
個人開発では、今も楽しく開発できています。何が楽しいのかを考えてみると、インフラをどうするか、仕様をどうするか、どんな機能を作るかを決める部分でした。実装そのものではありません。実際、個人開発でも実装はAIに任せたほうが速いし正確なので、そこは譲っています。
つまり、自分にとっての楽しさは「作る」ではなく「決める」にありました。
では、業務のAI駆動で何が起きているのか。
人:「こういうものが欲しい」(Why) ← 短い
AI:仕様に展開(What) ← ここで大量の「小さな決定」が起きる
項目名、入力チェック、エラー時の動き、画面の流れ、データ構造…
人:それを読んで承認 ← 時間のほとんどがここ
AI:実装(How) ← 任せてOK
「なぜ必要か」(Why)は、今も人が書いていて、常に考えています。実装(How)は、喜んで任せています。
問題はその間のWhatです。AI以前、エンジニアの「考える」の多くは、このWhatの小さな決定の積み重ねでした。項目名をどうするか、この入力は必須か、失敗したら画面はどうなるか。一つひとつは小さくても、それを決めること自体が「考える」ことでした。
今は、その小さな決定をAIが下し、人は承認しています。
コーディングを取られたから飽きたのではない。「決める」が「承認する」に変わったから飽きた。
こう考えると、先ほどの不安にも説明がつきます。自分で決めたことは覚えています。承認しただけのことは覚えていません。 だから「AIに聞けばいい」になる。理解は、決定についてくるものなのだと思います。
付き合い方:「承認」を「決定」に戻す
AIを使うのをやめたいわけではありません。やりたいのは、自分の仕事を「承認」から「決定」に戻すことです。
1. 重要な決定はAIとチャットで決める(やっていること)
仕様をAIにまるごと展開させてから読むのではなく、重点的に決めたほうが良い部分は、事前にAIとチャットでやり取りして決めています。
「ここはどうする?」「この場合はどう動くべき?」と対話しながら決めたことは、後から成果物を読んだときも「自分が決めたこと」として頭に入ります。5万字を頭から検品するのではなく、自分が決めたことがちゃんと反映されているかを確認する読み方になります。
当然といえば当然ですが、チャットで決めるのは重要な部分であることが多いので、その部分については理解が残るようになりました。
2. 先に自分で決めてから読む(これから試したいこと)
AIが仕様を展開する前に、自分なら何を決めるかを数行メモしておく。そうすればレビューは「自分の決定とAIの決定の差分を見る作業」になり、検品から生成に近づくはずです。
3. 「決める」側の仕事に寄っていく
今もWhyの場には時々出ていますが、話すのは主に「それは実装する必要があるか」です。
個人開発で楽しいと感じているのは、インフラ・仕様・機能を決める部分でした。AIが実装を担う今、エンジニアの価値は「どう作るか」より「何を作るか・どう決めるか」に移っていくと思っています。
だからこそ、開発に関わり続けながら、設計や企画にも関われるようになりたい。開発・設計・企画を全部できるようになったら、きっとまた楽しくなると思っています。
おわりに
AI駆動で開発していて飽きを感じたら、それはサボりでも向いていないのでもなく、自分の仕事が「決める」から「承認する」に変わったサインなのかもしれません。
AIに任せるものは任せて、決めるべきものは自分で決める。その線引きを意識するだけで、AI駆動との付き合い方は変わると思っています。
これはAI駆動をやってみて、今の自分が感じていることです。同じようなモヤモヤを抱えている人や、これからAI駆動を始める人の参考になればうれしいです。