課題
AIをしばらく試用してみて、十分実用に足ると確信を持った。
今のところAIを「ちょっと強力なIntellisense」ぐらいにしか活用できていないが、この程度で満足すべきでない。徹底的にAIを使い倒すプロセスを編み出したい。
先にまとめ
- AIを使っても開発の基本的な流れは変わらない
- すべてをAI任せにすることはできない。苦手なところはアシストが限界だし、強みを生かせるところでも検収や修正が必要で人間の手がかかる。
メモ
開発の基本は変わらない
- 何を作るのか決めて(設計)
- 決めたことを形にして(開発)
- その出来を確かめる(テスト)
この流れは結局一緒。AI利用だろうが一緒。
一度、「AIすごい!」に意識が向いてしまって、「いかにAIを使うか」すなわち2から発想を始めてしまったが、結局さんざん迷走したあげく行き詰った。
「それはなぜ作らないといけないのか?」「いったい何がしたいのか?」「どこの誰にどのような価値があるのか?」そういったことを考えずにAIと勢い込んで相談を進めても、結局どこかで「で、それは何故作るの?」という疑問にぶち当たり、失速し、墜落する。
「それはなぜ作らないといけないのか?」「いったい何がしたいのか?」「どこの誰にどのような価値があるのか?」これがAI利用の有無に関係なく極めて大事なことだ。
開発の各フェイズにおけるAIの活用
とにかく闇雲にやってみた。結果、以下の結論を得た。
- 何を作るのか決めて(設計)
- なぜ作るのか。なにがしたいのか
- ここは自分が決めるしかない。ただし相談したいことがあればするとよい。
- 消費できる時間とお金の限界はそれぞれいくらか(予算とスケジュール)
- ここも自分が決めるしかない。
- もっとも根拠として投入できるデータがあるなら別だ。AIを使えるだろう。私には(そしておそらくは多くの人も)ないというだけだ。
- 具体的にどのような機能が必要か
- ここは結構AIが強い。いい線いってる回答が返ってくる。どんどん活用していい。
- さらに具体的に、その機能を実現するソリューションは何か
- AIがやたら強い。早いし広い。深くはないが十分。活用しないほうがおかしいレベルでGood。
- 決めたことを形にして(開発)
- AIが最高に強い。まあ完璧ではなくて、全部で10までの工程を行わなければ完成しないとすると、せいぜい7~9くらいで止まる。なので欠けている部分は自分で補うしかない。
- その出来を確かめる(テスト)
- 単体テストはできる。できるが、そもそもの量が多いだけにAIにプロンプトを投げる作業自体が多い。ここも自動化するべきだ。改善の余地が大きい。
- 結合テストやシステムテストになると活用の方法を考えるのが難しい。ただやりようはある気はする。ここも何とかしたい部分。
フェイズごとにまとめると以下のようになる。
要求定義
・・・ ほぼ全部自分でやる要求定義 -> 要件定義
・・・ 大半を自分でやることになるが、AIも相談相手になる。要件定義 -> 基本設計
・・・ AIにドラフトを作成させ、自分は肉付けと仕上げを行う基本設計 -> 詳細設計
・・・ 大半をAIにやらせる前提で行い、足りない部分だけ自分で補うテスト
も単体テストに関してはかなりできる。課題も多いが、徹底活用する方向で考えるべき。
ただテンプレートやライブラリ、フレームワークなど、そもそも作る必要自体がないものもたくさんある。そんなものをAIで生成できるからと言って生成するのはナンセンスだ。大抵の場合、作らないのがコスパ最高のソリューションである。すなわちフレームワークやライブラリは結局今後も活用するべきということになる。
将来、要求定義さえ出せればあとはフルスクラッチで一から完全に最適化された最高のアプリケーションをAIが作ってくれるようになるのかもしれない。しかしそれは今ではない。 今は、AIで生成する部分と、人間が作る部分を組み合わせることになる。
思ったこと
今後は開発者はフルスクラッチで書こうと思えば書ける技術に加えて、AIを使ってより効率的に開発する技術も持つ必要があるだろう。開発者は手間の部分では楽になるが、必要なスキルは今よりさらに高度かつ広範になる。
また、低スキルでも頭数だけ揃っていればいいとする類のプロジェクトマネジメントは、ゼロにはならないとしても、その有効性をだいぶ減じることになろう。今後は低スキルの開発者10人よりもAIを使いこなせる高スキルの開発者1人のほうが品質・速度・コストすべての面で勝ることになるのではないか。分野を限定すれば50人いても勝てるかもしれない。