言語モデル/AIによるITエンジニアリング論点
AIによってITエンジニアの業務がどのように変わるのでしょうか。
「仕事がなくなる!単価が一気に下がる!」といった意見もありますが、裏付けがやや大雑把な印象です。もう少し具体的な影響を短期、中期、長期で検討してみます。
*プロンプトインジェクション含め、セキュリティ関係は除いて考えます。セキュリティだけでかなりの分量になるため。
短期目線
採用:単純なコーディング、技術試験は不要に
まず、AIを使えば問題をすぐ解ける以上、試験として成り立ってないため避けるべきです。
そして、そもそも機械のほうが得意なことを測定する意味がなくなりました。採石場から石材を運ぶ人員を採用するために、個人の腕力や脚力を測定するようなもの。今必要なのは大型ダンプを扱う技能です。
*AI以前に選考方式としては効果もエビデンスも弱く無意味という指摘もあります。
乗り換えられるようにする
AIを使ったサービスが大量に生まれ始めました。オープンソースのツールも多数あります。自社で基盤を作成することもあるでしょう。
今は1ヶ月単位で進歩があるほど進化が激しい状態です。何を使うにせよ、乗り換え可能なのが重要です。すぐ捨てられるようにしましょう。手のひらを返す速度で勝ちましょう
中期目線
可読性のあるコードは不要になるのでは
毎回AIがコードを生成し、AIがドキュメントを書き、AIがコードの要点と影響範囲、変更点を抽出するなら、ソースコードに人間が介在する余地がありません。さよならリーダブルコード…
保守性、再利用性も不要になるのでは
毎回ソースコードを生成すれば保守性や再利用性も不要です。
コードのリファクタリングもいらない
可読性や保守性の観点では不要に
プログラミング言語選択の基準が変わる
可読性や書きやすさは考慮不要となりそうです。一方、実績が豊富と有利です。過去データが大量に溜まっているため。
新しいプログラミング言語は不要になるか
要求がなければ無理に新しい言語を作る動機はなくなります。新しい言語には当然過去コードが存在しないのでAIが使えなくなります。
一方、新しい時代、AIに最適化した、AIネイティブの言語が出てきてもおかしくありません。学習用コードもある程度の量が生まれれば十分です。
(Web)フレームワークは不要になるか
Webフレームワークを織り込んだ学習モデルが前提になることから、しばらくは必須でしょう。
Webフレームワークの目的である開発効率周りをほぼAIで達成できるとすると不要になりかねません。
最新の構文、書き方、イディオムに追随できるか
あくまで過去パターンなので、新しい書き方を誰かが書いて訓練する必要があります。
パフォーマンスのオートチューニングが可能に
すでにプロンプトをもとに簡単なタスク分解、タスク実行までできる状態です。
目標値を指定すれば、自動的に負荷試験環境を作成し、負荷試験実行、評価、変更のフィードバックサイクルを回すまでが視野に入ります。
RDBの設定レベルでは数年前から存在するのですが(資料を参照)、コーディングレベル、アプリケーションレベルで可能になります。
形式手法による一部機能のバグゼロ達成
TLA+やAlloyといった形式手法は著名事例を除きほぼ開発に使われていませんが、AIが「仕様」を書くようになれば、一気に標準になる可能性があります。それにより形式手法を適用しやすい部分に関して、欠陥がないことを証明できるようになります。
品質の向上(事前欠陥検出)
UTのテストケースがテスト技法にそってないことがよくありますが、AIが書いたりレビューすることでケース自体の品質向上が期待できます。
テストのメンテナンスコストも話題になりますが、AIが生成すればメンテナンスコストを考えなくてすむため、大量のテストケースを実行し続けることが可能です。
Mutation TestやProperty-based testingといったあまり使われてない手法も容易に利用できそうです。
パフォーマンスと同様、これもフィードバックループによるオートチューニングが期待できます。
オートチューニングのための実験できる環境が必要
オートチューニングの話が何回か出てきました。本番ワークロードをもとにフィードバックループを回すためには、本番環境で安全に実験できる仕組みが不可欠です。
カナリアやリリースコントロールが必須になるでしょう。
*実際はSaaSビジネスなら現時点で必須です。
ローカル開発環境は必要か
AIを使うにはサーバと通信する必要があります。光の速度が有限である以上、ローカル環境からサーバに毎回通信すると時間がかかりストレスが溜まります。
GitHub Codespacesのような、リモート開発による脱ローカル環境が浸透しつつありますが、AIの面からも背中を押す可能性があります。
いわゆる開発のしやすさはいらなくなるか
機械が読めれば良いとすると、Developer Experienceは不要になるかもしれません。LLM Experience(仮)を向上させる必要があります。
AIさんがスムーズに開発できるよう、いろいろしてあげるイメージです。
IaC(Infrastructure as Code)は必要なのか
インフラをコードにするメリットはプロンプトで代用できます。プロンプトを通して指示すれば十分になりそうです。
IaCの仕組み自体は残るかもしれませんが、人間がなにかする必要はなくなりそうです。
CI/CDはさらに重要になりそう
フィードバックループを回すための基盤です。
テレメトリや各種データを集約した、AIが使うプラットフォームとなりそうです。
(データ分析での)SQLの重要性が減る
SQLで数値を問い合わせるより、プロンプトからAIに説明してもらったほうが的確でしょう。さようならHaving句。
より少人数の開発に。フルスタック化が進む
今までのシステム開発の流れを鑑みると、生産性が上がるにつれ少人数化、多能工化が進んできました。今が1チームでPdM:エンジニアが1:4から1:10ぐらいだとすると、1:3ぐらいになるかもしれません。
EM(Engineering Manager)のポジションが減る
組織の中でエンジニアの割合が高いことから、EMが生まれてきた面があると思います。エンジニアの割合が減少すればEMのポジションが減りそうです。
組織内での分散化が進む
重複開発を避け、共通部分を作成しリソース最適化として効率化するか、重複開発を許容してでも開発の依存関係をなくしフロー最適化するか。
永遠のジレンマです。
生産性が高まるに連れ、リソースよりフローを重視し、分散化に天秤が傾くでしょう。スピードのほうが大事になります。
社内プラットフォームの価値が低下するか?
重複開発大いに結構とすると、あえてプラットフォームを保有する価値が減ります。
一方、プラットフォームも爆速かつ低コストで作れるようになるとすれば、価値は変わらないとも考えられます。
日本のレガシーIT企業が壊滅する
日本では古い技術、古いアプリケーションを大事に長く使う傾向があります。特にIT企業であっても創業から10年20年経つとそうなります。
今まではそれでも問題ありませんでした。世界中の攻撃者は日本語が読めず、日本をあえて狙う組織はアジア拠点がほとんどでした。
AIにより日本語の壁がなくなり、今まで以上に攻撃が低コストになり、無差別で攻撃されるようになると、レガシープロダクトがすべて乗っ取られ、既存IT企業が壊滅する可能性があります。
日本は犯罪者の狩場になりそうです。
*セキュリティの話ですが日本特有と思われるので書いておきます。
長期目線
むしろソースコードは不要で機械語でよいのでは?
これは飛躍しすぎですね。AIといってもソースコードのオートコンプリートなので。とはいえ誰かが学習モデルを作れば可能かもしれません
タイピング力は必要か
いよいよConversational Programmingが主流になるということで、画面の前で話すだけでプログラムが作成できるようになります。スマホでもOK。
キーボードといえばHHKBやREALFORCEではなくYAMAHAの話が主流になりそうです(?)
ITエンジニアとAI、どちらが勝つか
もちろん勝者は資本家です。歴史的にもよくあることでした。ホワイトカラーが壊滅するとなると、農家も勝つかもしれません。コモディティ強い。現物持ちましょう。大混乱に備え食料も備蓄しておきましょう
さいごに
IT開発関係としては10年に一度の激動の時代になりました。特に今回の波は、今までの波を乗り越えてきたBigTechも終わりになりえる時代だと思います。2023年4月現在、AIの進化が速いので月1でよいのでLLM関係の情報を追いたいですね。