想定読者
- AIの進化に対し、自身のキャリアに不安や関心を抱いている現役のWebエンジニア、およびこれからWebエンジニアを目指す学生の方々。
- この大きな変化の中、Webエンジニアの仕事の未来について共に考えるきっかけを探している方。
初めに&背景
CARTA HOLDINGSの事業会社であるサポーターズで、エンジニアマネージャーをやっていますara_ta3です。 タイトルの通りなんですが、AIの登場によりWebエンジニアの仕事はなくなるのかという問いに思いを馳せました。
これはサポーターズの学生ユーザから、
「AIの登場によりWebエンジニアの将来はないのではないか」
という懸念の声があがったという話を聞いたのがきっかけです。個人的にはそうは思わないんだけどなと感じていましたが、うまく言語化できていませんでした。
そんな中、CARTA CTOすずけん(@suzu_v)さんがTim O’Reilly氏(以下、Tim氏)の「The End of Programming as We Know it」の話をしていて、動画がO'Reilly Online Learningにあり、それを見た上で思った個人的な主張というか感想を綴った文章です。
AIの登場によりWebエンジニアの仕事はなくなるのか
まず初めにWebエンジニアの仕事はなくなるのかという問いに対して答えると「なくならない」です。
これはThe End of Programming as We Know itのイントロダクションのTim氏の発表後の、2人のエンジニアの対談における話がベースになります。
そこではAddyさんというGoogle Chromeのエンジニアが以前「The 70% problem: Hard truths about AI-assisted coding」という記事を書いていて、それについて話していました。
70%問題とはざっくりいうと70%くらいまではAIがいい感じにやってくれるが、結局残りの30%の問題は残っているという話です。
残りの30%は、メンテナンス性や堅牢性など実際に運用するとなったときに必要な観点の問題が残っており、結局そこを解決するにはWebエンジニアとしてのスキルが要求されるという話でした。これはなんとなく個人的な感覚としてもあります。非常に簡単に落とし込んだタスクはDevinなどでシュッと終わらせられますが、普段めんどくさいなと思うタスクについては分解してから渡しており、それでも特に情報が少ない中でやろうとすると変な方向にいくことがありました。(これは情報が少ないのが悪いというのもありますが)少なくとも、結局細かいところは自分がやる必要があるなと感じています。
つまり、この「30%の問題」を解くことが結局人間がやらないといけないめんどくさくて(※)重要で本質的な部分であり、この本質的な部分を解くのがWebエンジニアの仕事なのではないかと思いました。
ふとこれは生成AIが出現するよりも前からそうだったのではないかとも感じています。
社内で時折聞こえてくる「後はやるだけ」という言葉があります。これは、複雑な仕事を分解し、誰にでも出来るような形のタスクへと落とし込み、それを「後はやるだけ」にするということだと認識しています。
「後はやるだけ」にするには課題、ドメイン、システムの深い理解が必要で、非常にめんどくさいですが重要なタスクです。これが結局のところ昔からあるWebエンジニアの本質的な仕事であり、それを実現するにあたっては人間が頑張る必要があり、そのようなタスクは今のところなくならず、Webエンジニアの仕事はなくならないのではないかと思いました。
※「めんどくさい」という言葉は宮崎駿氏が「世の中の大事なことはたいていめんどくさいんだよ」と言っていたことをリスペクトしつつ使っています。
技術進化の延長上にいるAIの登場
本当にAIの進化によってWebエンジニアの仕事はなくならないのでしょうか。30%の問題も解決されるのではないでしょうか。
私個人もそれくらいAIの登場は可能性があるものだと感じていました。ですが、The End of Programming as We Know itのTim氏の発表をみて「なるほどな」と思いました。
Tim氏は、プログラムの本質はコンピュータと対話することであり、AIはその進化系であると言っています。その昔アセンブリ言語と高機能なコンパイラの登場によってその段階でのコンピュータとの会話が自然になり、これによって何かを実現するためにプログラムを書くためのハードルが下がったと、生物学に興味のある学生のインターンシップの話を交えて語られています。
この発表を受けて、アセンブリ言語の登場から今に至るまで技術が進化し、その時々でプログラムを書くことのハードルが下がってきた、その延長上にAIの登場があるんだと感じました。
確かに、AWSのクラウドが登場したことにより物理サーバの運用の重要性はさがり、フロントエンドのフレームワークが戦国時代になり、Firebase等が登場したときはバックエンドの重要性が下がったようにも感じます。そしてWebエンジニアのハードルが下がり、サーバーラックを知らずともインフラにアプリケーションをホスティングできたり、create-react-appによってなんとなく動くものが作れるようになりました。
AIもこの延長上にいるのではないでしょうか。Xに「AIで作ってみて動いたアプリ」がよく流れてきているように、AIによってなんとなく動くものが作れるようになりました。ハードルが下がりWebエンジニアリングに興味をもてるきっかけとなり非常に良いことです。
何が言いたいかというと、AIは今までの技術進化と同様に、技術に触れるハードルを下げてくれたに過ぎないのです。create-react-appでなんとなく動くものができたとしても、それがなぜ動くのかを理解しないと30%の本質的な問題を解くには至りません。AIも同様で、何か解決したい課題があり、アプリケーションをAIを利用し作成したとしてもそれがどのように動き、どうしたら運用に足るのかを考えなければ30%の本質的な問題を解くことができません。この下がったハードルをまずは一旦越えて、AIに相談しながら越え方を理解し、自分でハードルを越えられるようにすることで、30%の問題を解くようになっていけるのではないかと思います。
結論として、AIの登場はハードルが下がっただけであり、結局のところ本質的な課題を解決することは今までの歴史の流れ上では起こらないのではないかということです。
もちろん歴史の流れ上起きていないから今後も起きないという論理は弱い主張でしょう。とはいえ出来ることとしては今まで通り技術の進化に対応しながら追従していくことが大事であると思います。
これからWebエンジニアになりたい人は何をすると良いのだろうか
将来が不安であるという話があったのが発端だったので、これからWebエンジニアになりたい人はどうすると良いのかを考えてみます。
結局、Webエンジニアとして大事なことはAIの登場以前と変わっていないと考えています。その前提で私が思う”大事なこと”とは、まず手を動かし、なぜ動くのかを理解し、それを繰り返す。そうして技術力をつけることです。
そこに今のAIを含めるとAIに書いてもらったコード、もしくは自分で書いたコードを、AIに相談しながら原理を理解し、それを繰り返す。そうして技術力をつけるということがやるべきことでしょう。
Webエンジニアの職をするにあたって課題を定義する力や言語化の力も必要になりますが、特に技術力と言った時このフローを愚直に繰り返すことで技術力をつけるということが大事なんだと考えています。
また、個人的にはこの技術を知ることを楽しんで欲しいという思いがあります。私自身の話にはなりますが、技術はそれ自体を知ることが楽しいし、それを使って課題を解くことも楽しいです。
Tim氏の発表で印象的だったこととして「この瞬間を恐怖ではなく、探検家が新しい領域を発見する興奮で迎えましょう」と言っていました。AIの登場により技術が進化しているこの瞬間の風速は凄まじいものです。それによって恐怖を感じるかもしれませんが、この風速を探検家の気持ちになって楽しめると良いなと思います。
私自身はJavaScriptのフレームワークなどが戦国時代になっている頃、変化が早すぎてついていけなかった感覚がありますが、あの頃に似たものを感じます。でもその戦国時代の先の今フロントエンドの技術に触れるのは楽しいです。そうしてAIと共にコードを書きあーだこーだしながら設計について考えたり、デザインに思いを馳せたりして、新しいことを知ったりすると非常に面白いです。
この技術への楽しさを知り、AIと共に30%の本質的な問題を解決できるようなWebエンジニアになってくれる人が増えていくと良いなと思いました。