はじめに
タイトル通りですが、GPTやDALL·Eなどの生成AIによって、テキストや画像などの生成が可能なように、フロントエンド開発に必要なソースコードの生成が行える、GitHub Copilotようなツールの可能性を考えます。
SNSなどで、特にフロントエンドはなくなるだろうと考える人をちらほら見かけて、自分なりにちゃんとした意見を作ろうかと思いましたが、それだと続かなそうだったので、ハードルを下げて居酒屋で議論するような感覚で投稿します。
結論
淘汰される(2) : 淘汰されない(8)
くらいに考えています。AIのみの完璧な仕事はできないと思ってますが、想像を超える時代になるかもという可能性も感じる部分もあります。また、私(AIを少し理解してる平凡な学生)がそこまでAIを万能ツールだと感じてない点が大きく影響してます。
ここでいうフロントエンドエンジニアが淘汰される条件
アイデアがソースコードレベルで完璧に実現され、可読性や保守性、エラーに対する処理など必要だと思われる開発目線での仕様や動作的な仕様が実現でき、厳格なテストを通過できるレベルのものが生成できる機能を持ち、なおかつ人間が直接関与しないで自動的に動作するシステム(生成AIなど)が世界のどこかに生まれること。
ファンタジーのように感じます。ですが、このくらいできないと完全に仕事を奪うことはないのではないかと考えています。
理由をいくつかの観点をそれぞれ独立させてまとめたいと思います。
- プロンプト生成、理解の難しさ
- AIに対して難易度の高いタスク
- どうやったら作れるのか
- 想像を超えるAI領域の可能性
- 情報漏洩リスク
プロンプト生成、理解の難しさ
- 生成AIの説明でされる「できること」
- 実際にやりたいレベルの話
の二つにはギャップがあり、そこでプロンプトエンジニアリングなどの話になりますが、フロントエンド開発を生成AIに委託するとしたら、プロンプトは
「仕様設計」「UI、デザイン設計」
をAIが理解できる形で入力する必要があります。これらの設計というのは非常に複雑でAIが正しく認識できるかどうかのハードルがあります。しかし、言語化可能で視覚化可能な設計であればAIに入力することは可能です。ただ、大きなデータサイズのプロンプトを読み込んでモデルを動かすためには、多くの計算リソースが必要となるのでそこにもハードルがあると感じます。
AIに対して難易度の高いタスク
例えば、
- バグを考慮した生成
- 熟練エンジニアのレビューを通過できるような設計
- 想定外への考慮
- 経験則的な設計の工夫(どこどこを共通化した方がいいことや、こうすると遷移した時にパフォーマンスが下がるとか)
- 最新技術を用いること
上から4つは、要は単純に使用の動作を満たすコードを出力するのでなく、実務レベルでの質を保つコードを生成できるのかという点になります。
「このツールに、このような入力を与えるとこのような出力が可能である」といったその生成AIでできるとの説明と、自分がやりたいレベルの生成にギャップがあるということです。「完璧な仕事」ができるレベルのコード生成には大きなハードルがあります。
どうやったら作れるのか
生成されるコードの質をどのようにアプローチすると良いかを考えると、動的解析(実際に動作させて、osのシステムコールなどを解析して評価する)の結果に対して理想的に報酬を設定した強化学習とかで可能性ありそうかなと思いました。ですが途方もなく難しいアプローチだと思います。
想像を超えるAI領域の可能性
ここまでは、淘汰できるほどのものなんて作れるわけないしドラえもんの世界の話だよ!スタンスで意見してましたが、現実ははるかに進歩する可能性もあるかなと思います。
このポストのようにchatGPTやBardのTransformerだって、少し先の未来では下級呪文に成り下がっているかもです。だとしたらまた、考え方も変わりますしその可能性は低くないかもしれません。
情報漏洩リスク
生成AIが外部ツールだとしたら、情報漏洩リスクなどがあって、そもそもツールをフル活用できないから無理じゃないかということです。実際にそのような問題も発生しているし、保守的な考えを持つ企業では導入が進みにくいのは間違いないと思います。逆に個人レベルでそこまで大規模な影響のない開発だったらフル活用してもいいかもしれません。ですが、仕事をするうえではリスク管理は必須だと思います。
終わりに
私としては、フロントエンドエンジニアが淘汰されるレベルのモデルはちょっと想像できないです。ですが、企業単位でオリジナルの安全な生成ツールを開発することは可能だと思うので、そういった方法で開発力を向上させるのは有効だと思います。(ソースなし)