見出し画像

with GPT時代にフロントエンドエンジニアが2年後に即死しないためのメソッド

もはやChatGPTの話題がない日はありません。これまでの3回のAIブームとは異なり、AIの冬は来ないとされています。つまり、今のAIの流れを巻き戻すことができる人はいません。

そんな with GPT 時代において、フロントエンドエンジニアは、イマイマにおいては即死することはないけど、うまく振る舞わないと、数年後生き残れないかもしれないという状況は認識すべきです。

この記事ではフロントエンドエンジニアという観点に限定して with GPT 時代にどう生き残るかに焦点を合わせていきます。

ちなみにヘッダ画像は、Stable Diffusionさんに「サバイバル」というプロンプトだけ与えて生成した画像です。サバイバルできてなさそうですが、ちょっと可愛くてシュールです。

僕は「即座にAIが仕事を奪うことは、日本では二年以内にはない」けど、「AIによってアシストされたライバルによって、案件の数と単価が減っていく」という予想を立てています。カエルが茹でられるかの如く、2・3年後、気づいたら少しずつ状況が悪化しているでしょうね。(ちなみにこの2・3年というのもあくまで僕の読みにすぎません。もっと早い可能性も普通にありそうなのが、今のAIの速度の速さの怖いところです)

この記事で言いたい結論は

  • AIは人間をアシストするものです。GitHub CopilotやChatGPTを最大限活用しましょう。

  • 最低でも一つあなたのコアとなる言語・ライブラリを高度なレベルで身につけることが最優先です。特に理由がなければ、最もメジャーな技術を覚えるのが望ましいでしょう。

  • GitHub CopilotやChatGPTを使い倒して、新しいものを学習するサイクルを確立しましょう。

※ChatGPTやGitHub Copilotは、設定によっては入力内容を学習データに使われることがあるので、設定を正しくやりましょう。ChatGPTには本日、その設定が追加されました。

前提

AIの特性について最低限の知識はあった方がいいです。ここでは前提としてそれらを説明していきます。

仕組み

まずGPTは仕組み上、全世界のテキスト、その中でも特にソースコードを収集した上で中央値を出すことに特化しています。ウェブ上に資料が多ければ多いほど有利です。

全世界のウェブのうち、英語は60%くらい、日本語は2%くらいとされているため、日本語よりも英語の方が30倍有利です。

ただし転移学習の能力もあるので、必ずしもドキュメント・ソースコードが少ないからと言って、全く情報が出てこないとかはありません。

GPT-3.5-English 70.1%
GPT-4-English 85.5%
(GPT-4) Japanese 79.9%

https://openai.com/research/gpt-4
GPT-4 3-shot accuracy on MMLU across languages

日本語のテキスト量の少なさの割には、GPT-4ではかなり健闘しています。ただそれでも、プロンプトエンジニアリングをやっていると、やはり日本語よりも英語の方が精度が良いという話は度々聞きますし、筆者の実感としてもそれは確実にあります。

フロントエンドの話題でいうと、他のライブラリ・フレームワークよりもReactの方が文章やソースコードが豊富なため、精度が高いことが期待できます。(ただし本当にそうなのかは真面目に比較したことがないので僕は分からないです。誰かの経験なり研究なりの補足が欲しいところです。)

あまりにもマイナーなライブラリとかだと「ハルシネーション」と呼ばれる現象に遭遇しやすいかもしれません。自信満々に嘘をでっち上げるというアレです。もちろんReact関連でも、ハルシネーションに遭遇する可能性はあります。

AIを使ったアプリケーション

次にAIを使ったアプリケーションの話です。ChatGPTは全世界にユーザーが数億人いるアプリケーションです。同様にAIアプリケーションとして、新しい Bing や、各社がリリースしてるようなものや、オープンソースのライブラリ・アプリなどもあります。

ChatGPTは、既にIT素人も普通に使っていて、「プログラミングのことを何も知らないけど、ChatGPTに聞いて半日でゲーム作った」みたいなエピソードは探せばいくつもでてきます

ChatGPTがリリースされるまでのプログラミングは、ソフトウェアエンジニアの聖域のようなものでしたが、素人でもChatGPTに聞けば、何かしら作ることができるのが with GPT 時代です。

実際にCSS/HTML/React/Tailwindなどウェブ技術について質問すれば、かなりの精度で答えてくれますが、ChatGPTはGPT技術を応用したアプリとしては、精度に特化したものではありません。また、GPTの学習データの収集タイミングである2021年9月より後の情報をほとんど持っていません。

LlamaIndexLangChainなどのOSSライブラリや、あるいはまだ公開されてないけど GitHub Copilot for Docs にMDNや他資料を食わせると、現時点のChatGPTよりも高精度かつ最新の情報に沿った、ウェブ知識についての質問・回答ができます。

GPTの本領は言語処理能力である

また、知っておいて欲しいAIについての重要な前提として、GPTにとっては知識を持っていることはどちらかというおまけにすぎず、GPTの本領は言語処理の能力、たとえば理解、推論、翻訳などにあります。しかも、自然言語だけではなく、形式言語の性質上ソースコードの翻訳の方が精度が高いです。

つまりGPTは、日本語も英語もTypeScriptもHTMLもCSSも、全く区別なく、人間と同等かそれ以上のレベルで「理解」「推論」「翻訳」などの言語処理をする能力があります。

サンプルドキュメントを用意すれば、適切なサンプルコードを生成してくれるみたいなタスクもある程度の精度で可能です。

とはいえ、AIには主体性がないため、1・2年で即座にあなたの仕事を奪うことはありません、たぶん。

何が問題か

これらの前提を踏まえると、単にHTML/CSS/JavaScriptを知ってる程度の人は、ChatGPTや他エコシステムによって、代替できそうですよね。

Webページ制作

たとえばWordPressやNuxtやGatsbyとかで静的ページを作るという一昔前に山ほどあった案件程度なら、素人でもChatGPTアシストで、できるようになりますよね。既に非エンジニア・非デザイナーで、やってる話も聞きます。

筆者も、1月か2月頃にChatGPTにECサイトを作らせる実験をしたんですが、それなりのコードやSVGを吐き出してくれるので、プロトタイピング程度ならデザイン込みで、誰でも簡単にできるという感触を持っています。

ウェブページをAIが作ってくれるみたいなサービスも山ほど登場するでしょう。これはもう間違いなく価格競争になるレベルで登場するはずです。運が良ければ、安直すぎて誰も手を出さない「誰も消防車を呼んでいないのである」現象が起きるかもしれないですが、まずそうはならないです。

そのため、単なるWebページ制作のような仕事の単価や案件数は激烈に下がると予想できます。

AIはさまざまなタスクに対して80点なり90点なりを出せるので、95点以上を出せる優秀なデザイナー向けの一点ものとか、そういう案件なんかは単価が下がらないかもしれません。

マルチモーダル

そもそも、GPT-4はマルチモーダルです。これは言語以外に、映像や音声も処理できることを意味しています。現時点ではOpenAIがわざと機能制限をしているため、ChatGPTで試すことはできませんが、それ用の能力を持っていて、OpenAIやMicrosoftからいくつか論文や情報も出ています。

source: hmmm (Reddit)

この有名なネタ画像を食わせて、何が面白いのか解説してくれというと、大真面目に以下のような解説をしてくれる程度には、映像認識能力を持っています。

The image shows a package for a "Lightning Cable" adapter with three panels.

Panel 1: A smartphone with a VGA connector (a large, blue, 15-pin connector typically used for computer monitors) plugged into its charging port.

Panel 2: The package for the "Lightning Cable" adapter with a picture of a VGA connector on it.

Panel 3: A close-up of the VGA connector with a small Lightning connector (used for charging iPhones and other Apple devices) at the end.

The humor in this image comes from the absurdity of plugging a large, outdated VGA connector into a small, modern smartphone charging port.

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

マルチモーダルの言語モデルは、ウェブデザインも視野に入ってきます。人間と競い合ったときにどれくらいのクォリティになるかはまだ分かりませんが、GPTの論文の中には、ラフ画を与えて、Webページを作らせるというタスクもあったはずです(ソースを失念。。。)

こうなってくると、95点くらいのウェブ制作ができるのも、時間の問題かもしれません。

ウェブアプリケーション

では、ある程度高度なウェブアプリはどうでしょうか?

個人的な読みとしては、短期・中期のレベルで全てを奪うことはないと思っていますが、スタートアップを中心に速度感は変わります。既にそうなってきています。

  • 最新技術のキャッチアップが、とても簡単になる

  • HTMLやCSSの細かい仕様を知らない程度なら不利にならない

  • Reactも……

少人数でもウェブアプリを作りやすくなるので、ビジネスができる人、手が早い人が、AIのアシストを駆使して、大量のプロトタイプを生み出すでしょう。

おそらく大手企業とかも含めて、数年で影響は出るでしょう。使いこなせる人とそうじゃない人の生産性の違いが、残酷なレベルで出るはずです。

中・長期で見ると、市場の競争原理があるので、日本のトラディッショナルな企業ですら、影響を回避することはできないはずです。

どう動くべきか

ChatGPTは誰もが平等に使えます。そしていくつもの活用方法があります。

たとえば、あなたがTailwindCSSを使いこなしているとして、ChatGPTに対して「Tailwindで書かれた以下のコードを、ChakraUIに書き直してください」という質問をすれば一発で答えてくれるはずです。

もっとも、このような雑な質問だと、回答の精度も雑かもしれません。ただしその場合は、質問を分解するなりすれば精度が上がりますし、根気強く効き続ければ大抵のことに答えてくれます。ChatGPTの使いこなしには質問力が重要だと言われています

実際に、Flutterを触ったことなかったけど、ウェブの知識を軸に質問しまくってアプリを作れた、みたいな話も聞くようになりました。

つまり、何か一つメジャーな技術を極めていれば、そこを軸にしてChatGPTに質問しまくって、他の技術に対する橋頭堡を極めて簡単に構築できます。それがモバイルだろうがウェブの瑣末な技術だろうがなんでもです。あなたがウェブエンジニアに固執する必要はどんどんなくなっていきます。

技術のキャッチアップが劇的に簡単になっているということは、誰でも簡単にジェネラリストになれる時代になったと言えるでしょう。向き・不向きとかはあるとしても、知識が足りない程度の話であれば、足枷にはならないはずです。

もはや、人類が React / Vue / Angular とかにこだわっていた時代は終わります。言語モデルはそれら全部の知識を持ってるのですから。あなたのコアとなる技術さえあれば、それを道標として、あらゆる技術にアクセス可能です。

もっとも、マイナー技術からマイナー技術への橋渡しはどれくらいの性能で可能なのかは、試してみないとわかりません。もしかしたらメジャー技術を中間に置いた方がいいかもしれません。

今のメジャー技術はフロントエンドという文脈なら VSCode / TypeScript / React / Next / TailwindCSS / Prisma などです。これらは案件数も多く、ブログ記事や、公開されたソースコードの量が豊富です。特に理由がなければ、こういったメジャーどころばかりをやっていくとAIアシストは効きやすいです。これが、冒頭で「選ぶ理由がなければメジャーな技術を選択するのが望ましい」と書いた理由です。

もちろん、その程度の理由なので、ご自身の好きな技術で、おそらく問題はありません。言語モデルの進化に合わせて、状況も変わるはずです。

とりあえず、色々聞くことから始めてみてはいかがでしょうか?

学習能力と、ChatGPTに根気強く聞き続ける力と、ChatGPTに言われたことをとにかくトライしまくる、ということができれば、学習サイクルを確立できるはずです。ChatGPTは、エラーメッセージなんかも結構な精度で対処してくれます。

with GPT の時代においては、どんな技術であっても、ドキュメントやソースコード例などが十分にありさえすれば、ChatGPT なりに聞けば多くの問題は解決できます。

自分が極めた技術を軸にChatGPTに聞きながら、リアルタイムで技術のキャッチアップをし続けるというのが、今日のブログのテーマである、即死を免れるメソッドです。

何が勝負の分かれ目になるのか

さて、ChatGPT を使って技術の翻訳ができる時代において、フロントエンドエンジニアはどう差別化をすればいいのでしょうか?

2023年4月現時点で、筆者が観測してる範囲では、ウェブ界隈は単価も高く、デキる人の取り合いです。採用担当をやってて、かなり採用厳しいなって感じてました。

そのため、短期的にみれば、AIアシストによって生産性が向上した人材が増えることで、「採用するのが大変」という状況が少しずつ緩和されていくことでしょう。そのため、短期的には多くの人の仕事が少しずつ楽になることすらあるでしょう。

ChatGPTパイセンのおすすめ

しかし、中長期的にはかなり厳しい競争にさらされることになるでしょう。以下にChatGPTが教えてくれた差別化ポイントを挙げてみます。

  1. スペシャリストとしてのスキルアップ: 特定の技術分野やライブラリ(React, Vue, Angularなど)に精通し、そのエキスパートとしての地位を築くけばよいでしょう。

  2. パフォーマンス最適化: ウェブアプリケーションのパフォーマンスを向上させるための知識とスキルを身につけることで、より優れたユーザーエクスペリエンスを提供できます。

  3. アクセシビリティの強化: ウェブアクセシビリティに関する知識を持ち、様々なユーザーのニーズに対応できるウェブサイトやアプリケーションを開発する能力を持つことが求められます。

  4. UI/UXデザインのスキル: デザインの原則を理解し、ユーザーにとって魅力的で使いやすいインターフェースを開発できることが、フロントエンドエンジニアにとって大きな差別化要素となります。

  5. プロジェクトマネジメント能力: 効率的なチームワークとプロジェクトの進行を円滑に進めることができるプロジェクトマネジメントスキルを持つことは、他のエンジニアと差別化を図る上で有益です。

  6. コミュニケーション能力: クライアントやチームメンバーと円滑にコミュニケーションできることは、問題解決やアイデアの共有に役立ち、プロジェクトの成功につながります。

  7. 継続的な学習: 新しい技術やトレンドに常にアンテナを張り、自分自身をアップデートし続けることが、競争力のあるフロントエンドエンジニアであり続けるために重要です。

これらの選択肢を取り入れることで、フロントエンドエンジニアはAIアシストの時代でも、独自の価値を持ち続け、差別化できる… らしいです。おおよそ間違ってない気がします。

個人的には、

  1. ドキュメントもソースも公開されていない技術にベットするという、かなりギャンブルな方法もありかもしれません。失敗すると潰しが効かないという弱点はありますが、既にコア技術を持ってる人なら失敗しても痛くないのでは?

  2. AI自体にベットする。つまりプロンプトエンジニアリングだったり、そういった技術です。

みたいな選択肢もあるんじゃないか?と思っています。

というか僕はLLM無職(実際には無職ではない)という選択肢を選びました。LLM無職についてはまた記事を書いてみようと思います。

結論

  • フロントエンドエンジニアは、何か一つコアとなる技術を極めてください。たぶんどの技術でもいいです。

  • そのコア技術を道標としてAIに聞く学習サイクルを確立してください。その時代に即した最新技術の習得に活かしてください。誰でも簡単にジェネラリストになれる時代です。

  • AIアシストでとにかく生産性をあげてください(GitHub Copilot はわかりやすい生産性向上策です)

これを続けられるなら、きっとあなたは短期的には爆発的に成長するチャンスがあり、中期的にも生き残れる目が増えるでしょう。

長期は知らないです。AGI(汎用AI)やシンギュラリティの到来が、想定よりも早そうなので、まったく予想がつかないです。たぶん長期の予測を精度高くできる人は、いたとしても、世界でもほんの一握りです。

もしかしたら

AIアシストが効きやすい技術や方法論が、今後どんどん有利になるかもしれないです。

全く根拠レスですが、たとえばDDDやClean Architectureみたいなゴテゴテした方法論は、with GPT 時代には、足を引っ張る、みたいな路線もあり得そうです。でも、逆にwith GPTでそれらがより先鋭化されるという可能性もあるかもしれません。

正直、DDDやClean Architectureってオーバーエンジニアリングすぎると感じます(個人の主観です。気を悪くしないでください)

技術に限らず、SCRUMやアジャイル、チーム論、そういったものもAIアシストによって形を変えていきそうな予感がしています。

今後、そこらへんについての思考が深まったら、また記事を書いてみようと思います。


この記事が気に入ったらサポートをしてみませんか?