はじめに
本記事はAI-DLCを用いてAI駆動開発を行っている筆者が、AI駆動開発時代にエンジニアに求められるスキルについて自身の考えを整理したものです。
あくまで個人の見解です。
AI-DLCとは
AI-DLC(AI-Driven Development Lifecycle) の略称。
要件定義、計画策定、影響調査、設計など、これまで人間が実施してきた作業を含め、開発全般をAI主導(AI-Driven)で進める手法を指します。
人間がAIを操作するのではなく、AIが自ら策定した計画や方針を人間が判断・承認しながら開発を進めていくのが特徴です。
参考記事
AI駆動開発時代に必要なエンジニアスキルとは
AI-DLCを通してAI駆動開発を体感し、以下を強く感じました。
- 今後、人がコードを書くことは限りなくゼロに近くなること
- AIに正確な情報を伝えられるか否かで、成果物の精度が大きく左右されること
AI駆動開発時代、エンジニアに求められるスキルは大きく変わるのではないでしょうか。
もちろん、JavaやPython等のプログラミング言語、アーキテクチャ、インフラといった技術スキルも重要ですが、今後はそれ以上に次の3つのスキルが求められると筆者は感じています。
- ドメイン知識とシステム仕様に関する理解
- 実現したいことを言語化できるスキル
- AIのアウトプットに対する適切な評価とフィードバック
1. ドメイン知識とシステム仕様に関する理解
AI駆動開発、とりわけAI-DLCにおいては常にAIとの対話が発生します。
そこでは仕様確認や選択肢の提示、方針の承認依頼が頻繁に行われます。
各場面において適切にAIへ指示を出すためには、ドメイン知識とシステム仕様の深い理解が必要不可欠です。
例1. (AIの問い)仕様確認の場合
ソースコードを分析し、Aという機能の利用用途は以下だと判断しました。
分析内容が正しいか確認してください。正しければこのまま計画を進めます。
・XXXXX
・YYYYY
・ZZZZZ
この問いに対して、システム仕様を正しく理解していないと、分析内容の正誤判断ができないだけでなく、その分析の網羅性や妥当性の判断もできません。
最適な回答ができないことにより、以下のリスクが高まります。
- 対話の長期化による消費トークンの増加
- 期待する成果物と作成された成果物の乖離
- ハルシネーションの受容による後続工程の品質低下
例2. (AIの問い)選択肢の提示の場合
B要件に対して作成する機能を提案します。
適切なものを教えてください。
A. AAという機能を作成するために既存クラス(BB)に新規メソッドを追加する。
B. BBという機能を作成するために新規クラス(CC)を作成する。
C. CCという機能を作成するために既存クラス(BB)と新規クラス(CC)にそれぞれ定義作成する。
D. 上記にいずれにも該当しない
この問いに対しては、システム仕様に加えてドメイン知識も必要になります。
要件実現において、 その機能が本当に必要なのか という観点で判断するためには、システム仕様の理解だけでは不十分であり、業務やビジネスにも精通している必要があるためです。
ドメイン知識とは
そのシステムが解決しようとしている業務・ビジネス領域に関する専門知識のこと
2. 実現したいことを言語化できるスキル
これはAIに対して、実現したいことや作りたいものを適切に伝える能力のことです。
当たり前のように聞こえるかもしれませんが、AI-DLCでの開発を通して、意外と難しい部分だと感じました。
例. AAシステムとBBシステムの関連がわかるフロー図を作成したい
その依頼をAIに出した際、AIから以下のような問いがありました。
関連性の説明は以下のどの切り口で行いたいですか?(最も近い1つを選んでください)
A. 呼び出し関係(誰が/何を呼ぶのか)
B. 状態・イベント関係(XXX状態、YYY状態の対応表)
C. データの流れ(API通信→結果受信→画面描画/印字、等)
D. 運用・調査(表出ログ内容、アラート通知に焦点を当てる、等)
んっ??
あー、この辺あんま考えてなかったな、どうしよう(困惑)
みたいなことが何度かありました。
AIからの問いによって、自分でも作りたいものが曖昧な状態 になっていることに気づかされました。
曖昧な表現では、こちらが意図した通りにAIは動いてくれません。
AI駆動開発においては、曖昧・抽象的な表現を徹底的に排除し、具体化することが重要になります。
そのため、 何を実現したいのか事前に整理し、言語化しておくこと が非常に重要です。
思考の整理や言語化する上で生成AIをうまく活用していきましょう。
3. AIのアウトプットに対する適切な評価とフィードバック
AI駆動開発では、短時間で大量のドキュメントやコードが生成されるため、短いサイクルで次々と成果物の承認を求められます。
絶え間なく続く承認地獄において、人間が適切に評価し、AIに的確にフィードバックできることが重要です。
例. AI-DLCにおける承認地獄
Intent(意図)フェーズでは設計内容の承認を求められ、
このIntentの内容でよろしいでしょうか?
承認いただければ、ストーリー・Unit定義に進みます。
ストーリー・Unit定義書の承認を求められ
この内容で承認いただければInception完了処理(履歴記録・コミット)に進みます。
いかがでしょうか?
Construction(構築)フェーズでは計画書の承認を求められ、
計画ファイル: .aidlc/cycles/v1.1.0/plans/unit-001-plan.md
この計画で進めてよろしいですか?
正直、かなりキツイです(笑)
しかし、ここでサボって 脳死で承認 を連発するのは絶対に避けましょう。
後工程で不整合やバグが大量発生し、期待にそぐわない物が出来上がることになりかねません。
大変ですが、爆速生成される成果物を一つひとつ人間が適切に評価し、AIにフィードバックしていくことこそが、AI駆動開発時代における最短の開発ルートなんだと思います。
さいごに
AI駆動開発を自ら体感してエンジニアの仕事は
コードを書く →→→→→→ システム全体像を俯瞰し本質的な価値を創造する
にシフトしていくと感じました。
AIが進化すればするほど、人間にしかできない 意思決定 の重要性はますます高まり、今後のエンジニアの仕事の中心になると感じています。
今回挙げた3つのスキルは、人間にしかできない 意思決定 を高める上で重要な要素ではないでしょうか。
- ドメイン知識とシステム仕様に関する理解
- 実現したいことを言語化できるスキル
- AIのアウトプットに対する適切な評価とフィードバック
今後は 重要な意思決定を迅速に下せるエンジニア こそが、理想のエンジニア像になっていくのではないか。そんな未来が来ると筆者は予想しています。
