GPT-4時代のエンジニアの生存戦略

# GPT-4時代のエンジニアの生存戦略

※ この記事の内容の一部はこちらのイベントでお話したことと重複します。

https://cto-a.connpass.com/event/276977/?fbclid=IwAR2f2Iv8RCGqMCdwQPDxkyGBByB9wbEFGz42FdvPvytcbDVfAgFjHEf0NII

# はじめに

2023年3月1日にOpenAI社よりChatGPTのAPIが公開されました。
さらに14日にはGPT-4が登場し、その翌々日にはMicrosoft 365 CopilotでGPT-4をOffice製品に搭載することが発表されるなど、AI領域で大きな変化が起きています。
変化の速度の速さと変化量の大きさにより、私自身も追いつくのが精一杯な状態です。
個人的には、iPhoneの登場時以上の衝撃を受けています。

https://openai.com/blog/introducing-chatgpt-and-whisper-apis

https://openai.com/research/gpt-4

https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/

人類の歴史上、過去3回AIブームがありました。Generative AIが4回目のブームになります。
そして、特に日本においては顕著なのですが、AIへの過度な期待とそれへの失望の繰り返しがここ数十年にわたって繰り返されてきました。
直近だと数年前のDeep Learningの登場とそれによる第3次AIブームが記憶に新しいです。
GPT-4の登場までは、私も「Generative AIもただの第4次AIブームの可能性は捨てきれないな」と思っていました。

しかし、GPT-4の登場で、これは単なる一過性のAIブームでは無く、シンギュラリティの始まりだと確信するようになりました。
<b> 私に限らず、他社のCTOや学者、有識者の間でもエンジニアを含むホワイトカラーの多くで、仕事内容や働き方に大きな影響が出ることが確実視されています。</b>
その変化にどう立ち向かっていくのかは将来の食い扶持を確保するうえでとても重要な問題です。
範囲が広くなりすぎるので、ここではエンジニアに限定して生存戦略を考えていきます。

まずその前提として、シンギュラリティの始まりだと考えている２つの理由を以下で述べていきます。
なお、この記事は私の個人的な見解であり、弊社の立場を代表するものではありません。

# 1. GPT-4時点で多くの人間の1人分の能力を超えている

シンギュラリティとは、AIなどの技術が、自ら人間より賢い知能を生み出すことが可能になる時点のことであり、その前段階として、プレ・シンギュラリティと呼ばれる「AIが1人の人間の知能を超える時代」が来ると言われています。

そして、GPT-4は、OpenAI社のHPにあるとおり、アメリカ司法試験で上位10%のスコアを出し、SATやGREなど他のテストでも同様に優秀なスコアを記録するなど、GPT-4の時点でほとんどの人間の1人分の能力を超えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/99a5dee4-2449-8a98-84dd-6ab805d3afa8.png)
また、AIの多くのベンチマークでもSOTA(State of the Art)を大幅に更新しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/2659dfe2-61ce-d89a-0e54-097f753f0d36.png)
GPT-3のころは「優秀な小学生」ぐらいの能力で優秀ではあるもののまだまだ改善の余地があるなと思っていたのですが、GPT-4は「非常に優秀な大学院卒の新卒 ~ 社会人数年目」ぐらいの能力は持っているなと感じています。
GPT-3.5(text-davinci-003)ぐらいから飛躍的な性能の向上を感じていました。

アメリカ司法試験を上位10%で合格できるので当然ではありますが、もしいずれかの専門領域でGPT-4と同等のアウトプットを出せる人間がアメリカや中国といったジョブ型雇用の先進国にいた場合、新卒で10万ドル〜30万ドル相当の年収を稼ぐことができるはずです。

GPT-4にコーディングをさせても、ほとんどのエンジニアよりも良いコードを書いてくれます。
弊社のエンジニアの募集にGPT-4のスキルレベルで応募があった場合、シニアクラスのエンジニアとして採用することは間違いないでしょう。

私のコーディングスキルと比較した場合、GPT-4の学習データが2021年の9月までに限定されており、ここ1年半の技術的発展が組み込まれていないこともあって、いくつかのプログラミング言語(フレームワーク)では私のほうがいいコードをかけます。
ただそれでもコーディング速度や、コーディング可能なプログラミング言語数では完敗しています。
私も数日落ち込むぐらいの衝撃を受けました。 

現在、GPT-5の開発も進んでおり、GPT-4の性能をさらに上回ることが予測されています。
なぜなら、今後AIの性能は上昇し続ける(可能性が高い)からです。

# 2. 今後AIの性能は上昇し続ける(可能性が高い)

ここ数年のLLM(大規模言語モデル)の急激な進化とGenerative AIの登場は、2017年にAlphabet(Google)社の研究者により発表されたTransformerがベースとなっています。
専門的な話になるため、詳細は割愛しますが、Transformerによる学習処理の並列化（Multi-Head Attention）によって、自然言語学習の効率が大幅に向上しました。
これがBERT-LargeやGPTなどの高性能なLLMモデル登場の礎になっています。

https://arxiv.org/abs/1706.03762

そして、OpenAI社が2020年に発表したScaling Law(スケーリング則)の論文により、Transformerの性能はパラメータ数、データセットサイズ、計算予測のべき乗に従うことが示されました。

https://arxiv.org/abs/2001.08361

当時そこまでこの論文は注目を集めていなかったのですが、<b>この論文の実験結果から可能性として示唆されていたこととして、以下の２つがあり、これが今非常に大きなインパクトを与えています。</b>

* Scaling Lawの有効範囲には限界がなく、パラメータ数、データセットサイズ、計算予測を向上させれば無限に性能を強化できる
* 文章だけでなく、画像、数式といったあらゆるドメインでもScaling Lawが適用される

<b>簡単にいえば、より多くの計算リソース、データソースを投下すれば、Transformerの性能は文章、画像等のすべての領域で無限に向上させられる可能性があるということです。</b>(計算リソースを利用するためのお金も必要ではあります)。
AI領域が戦略/戦術/プレイヤースキルに左右されるゲームから札束/物量で殴るゲームに変化したイメージです。

このScaling Lawを元にGPT-3,GPT-4が開発され、その理論的な正しさを証明しています。
この記事執筆時点ではScaling LawにMoore's Law(ムーアの法則)と同様の限界があるかどうか誰にもわかっていません。

NVIDIA社のGPUの性能向上もそれに拍車をかけています。
現在、OpenAI社とそこに投資をしているMicrosoft社がかなりリードしていますが、Alphabet(Google)社やBaidu社、Meta社なども自社のLLMモデルに大量のリソースを投入して追いつこうとしてます。(各社リソースの投入の仕方が凄まじくラグナロクの様相を呈しています…。)

これを前提にすると、AIの進化が再び停滞すると考えられる材料がまだ無く、OpenAI社が目指すAGI(汎用人工知能)の実現等も含めたAIの発展は今後も続き、シンギュラリティに向かって進んでいくと考えたほうが自然です。

# 3. これを前提としたエンジニアの生存戦略

GPT-4は適切なプロンプトを与えれば、ほとんどのエンジニアを凌駕するコーディング能力を持っています。
また、人間では真似できないコーディング速度や事務処理速度を併せ持つ非常に優秀な存在です。

全エンジニアに「年収10万ドル以上の市場価値があるスキルを持った優秀なメンター/部下」が常についているイメージです。
そのため、<b>AIとのペアプログラミングは今後、全てのエンジニアにとって必須技能となるでしょう。</b>

また、それに加えて、<b>AIがカバーできる領域が広がったことにより、エンジニアには「コードを書くこと」自体では無く、「ビジネスサイドが実現したいこと」を実現する能力がより強く求められるようになります。</b>

わたしも常々弊社のエンジニアに伝えていますが、最高のエンジニアリングとは「コードを可能な限り書くことなくビジネスサイドが実現したいことを迅速に実現すること」です。
<b>コーディングはあくまでエンジニアリングの目的ではなく実現手段の一つです。</b>
※ 無論「コードを書かない」ことと「コードを書けない」ことは別ですし、テストコードは極力書くべきだと思ってます。

GPT-4の登場により、AIがカバーできる領域が広がった結果、あくまでプログラミングは目的ではなく手段という側面がより強くなると考えています。
「要件定義はビジネスサイドがやるもの」という意識のまま要件どおりにコードを書くだけの仕事をしていると数年以内にAIに仕事を奪われるリスクが高いので、その点を留意しながら仕事を進める必要があります。

ここ数ヶ月の飛躍的なAIの進歩により、どんなに優秀なエンジニアでも、AIを無視して働くとAIを駆使するジュニアクラスのエンジニアに劣るパフォーマンスになる可能性が高いです。
GPT-4を含むAIを敵だと思って排斥するのでは無く、AIをうまく活用して自身の仕事のアウトプットを加速させる方向に舵を切ったほうが建設的です。

3月23日にGitHub Copilot XでGitHub上にもGPT-4が搭載されることがアナウンスされており、もうこのトレンドは止まらないと思っています。

https://github.com/features/preview/copilot-x

これを前提に、エンジニアの生存戦略をベテラン/若手に分けて考えてみます。
なお、GPT-4やChatGPTが業務で利用できない場合にはそこを会社と調整するところからになります。

## (1) ベテランエンジニアの生存戦略

自分と同等以上に優秀なエンジニアとペアプログラミングができると思って、プロンプトによるAIへの指示と適切なレビューを繰り返して自身の開発生産性を向上させることがファーストステップです。
<b>基本的にはAIがドライバー、自身がナビゲーターという形でコーディングをするイメージです。</b>
私もその恩恵に預かっており、めちゃくちゃ優秀な部下が専属で一人ついたと思って常に利用してます。
私もこれによって遥かに開発効率が上昇し、自身のアウトプットの量も数段向上しています。

これに加えてベテランエンジニアはビジネス的な要件をプロンプトに落とし込む技術を磨きつつ、徐々にビジネスサイドとの要件定義も自身で行えるようにしましょう。
後述しますが、ワンストップで要件定義から実装まで行えるようになると、AIに仕事を奪われるリスクが低くなります。

なお、技術的負債が積み重なったレガシーなプログラムの場合、現行のToken数の制限だとプロンプトでドメイン知識を教え込むのが難しいケースがあるので、その場合にはGitHub Copilotをメインに利用して、自身がドライバー、AIがナビゲーター(Codexによるコードのサジェスト)というロールでコーディングをするのをおすすめします。
テストコードの生成に関してはAIにドライバーを任せられます。

弊社にも私の入社前に作られた「ぼくのかんがえたさいきょうのフレームワーク」のようなものを使ったレガシーなプログラムがあり、そのようなプログラムではまだGPT-4はうまく機能させることができていません。
プログラミングにおける定石とは異なったドメイン知識が多いので、当然といえば当然の結果です。
GPT-4で32k tokenが解禁されたら変わるかもしれないので、そのタイミングでまた試してみようと思っています。
現時点だとそのようなプログラムにはリポジトリ内のソースコードから学習したコードをサジェストしてくれるGitHub Copilotに委ねたほうが効果的でした。

## (2) ジュニア/若手エンジニアの生存戦略

優秀なメンターがついたと思ってコードレビューをしてもらったり、コーディングに関して教えてもらったりしましょう。
<b>どんなにあれな質問をしても怒鳴られたり、人事評価が下げられることがないので、ガンガンAIに質問しましょう(笑)。</b>

<b>基本的には自身がドライバー、AIがナビゲーターという形でコーディングをするイメージです。</b>
GPT-4も間違えますが、それは人間のメンターでも同様です。

また、プロンプトによる適切な指示出しができるように、時折GPT-4にコーディングをさせてみると良いでしょう。
コーディングができなくてもプロンプトによる適切な指示出しができるだけで、キャリアの幅が広がります。
<b>ウォーターフォール/アジャイル開発問わず、プロンプトによってAIに適切な指示を出せることは、プロジェクトマネージャーやテックリードとしてキャリアを積んでいくうえで必須技能の一つになる可能性が高いです。</b>

AIへの仕事の指示をより効果的、効率的にするプロンプトエンジニアリング、プロンプトデザインと呼ばれる領域も数年以内にエンジニアに限らずホワイトカラーの必須技能となりそうです。

# 最後に

弊社も日本Microsoft社に取り上げていただけるレベルでGenerative AIに関しては最前線におり、私もCTOとして日々キャッチアップとビジネスへの適用/実証試験をしています。
(時々イベントへの登壇もしています。)

https://news.microsoft.com/ja-jp/2023/03/22/230322-ai-opens-the-door-to-unlimited-possibilities-latest-trends-in-ai-related-services-in-japan/

そして、最前線にいるからかもしれませんが、私のエンジニアとしての10年以上のキャリアでも経験したことのないレベルのスピードでの変化を感じています。

「コーダー」としての働き方しかしていないエンジニアは今後、GPTの発展によってAIに仕事を奪われるリスクが高くなります。
OpenAI社が最近出した論文でもプログラミングやライティングはGPT(LLM)の影響を強く受ける一方、科学的、批判的思考スキルを必要とする職業はあまり影響を受けないことが示唆されています。
※ 調査方法に起因した一定の適用制限も示唆されているので留意は必要です。

https://arxiv.org/abs/2303.10130

これを前提とすると、エンジニアとして、「顧客/ユーザーがほしいと言っているもの」を定義済みの要件からコードを書いて作るのではなく「ビジネスサイドがそれにより実現したいこと」を探り当て、コーディングを手段として扱うことができれば、科学的、批判的思考スキルを必要とする職業となり、GPTは仕事を奪う敵では無く有能な味方として扱えるようになります。

私が上述している <b>最高のエンジニアリングとは「コードを可能な限り書くことなくビジネスサイドが実現したいことを迅速に実現すること」</b>に繋がりますね。

高いハードルかもしれませんが、GPT-4時代のエンジニアとしての生存戦略としてはそこを目指していきましょう。

<b>-- 新時代の幕開けだ！ --</b>

https://www.youtube.com/watch?v=1FliVTcX8bQ