生存戦略2025

fof
·
公開:2025/12/21

世はまさに大LLM時代

ヲタク以外も当たり前のようにChatGPT等のLLM(AI)を使うようになってしばらく経ったように感じる。しかしCodex(GPT-3のカスタムモデル、初期のGitHub Copilotの中身)で喜んでいたのが僅か4年前、そこから1年後にはChatGPT(GPT-3.5)がリリースされその翌年にはCursorがリリース、Claude Codeを筆頭とするコーディングエージェントの普及に至っては今年の出来事である。早い。早すぎる。Clineに全部賭けてからまだ1年経っていない。

Claude3.5が出た頃から、非エンジニアでも頑張れば動作するソフトウェアが作れるようになった。今では頑張らなくてもポン出しでまともに動作する(ように見える)ソフトウェアが作れる。私は中学生の頃からパソコンをカタカタする事しかしておらず他にこれと言った能力も無いのでこれは死活問題である。食い扶持の消失と共にアイデンティティまで消失しかねない。とはいえ来年のAIのことすら予想がつかないので真面目に悩んでも仕方がない。現状のコーディングエージェントを触ってみての今の考え方について書いておこうと思う。

プロフェッショナルになるな

生成AIの性質上、出力の質は学習データに依存する。質の高いコードを食わせれば良い回答が返ってくるし、データが少なかったり質が低かったりする分野では、AIは途端に頼りなくなる。となればAIが苦手なニッチな分野に逃げ込むのが正解に思えるが、むしろ逆である。ニッチな分野は往々にして一部の天才によって成り立っており、多少頑張ったところで我々のような凡人には太刀打ちできない。AIによって飽和した領域にこそ勝機がある。

例えば、データ量が膨大なWeb系の領域を見てみるといい。そこにはお世辞にも綺麗とは言えないコードが山のように転がっている。悲しいかな大多数の人間が書くコードは往々にしてクソコードであり、それを学んだAIが吐き出すコードもまた同様の宿命を背負っている。単純な実装の不備やバグならプロンプトの工夫やAIの進化が解決してくれるだろう。しかし、見通しの甘い実装のままでは、ユーザーに提供できる体験にはすぐに限界が来る。

ユーザー体験の分析はAIに関係なく大きな課題の一つである。技術的制約や実装したいことが先行し、ユーザの求める体験が提供できていないことも少なくない。しかし、ユーザにフィードバックを募ったところで適切に言語化した課題点を提示してもらえるなんてことはほとんどない。そこで求められるのは一つの分野を掘り下げる深さよりも、分野横断的な知識の広さである。これからのエンジニアは器用貧乏でいい。むしろ器用貧乏であるべきだ。LLMからは膨大な知識を引き出せるが、その引き金となるキーワードや概念を知らなければAIのポテンシャルを発揮させることはできない。逆に言えば基本的なユーザ側の視点さえわかってしまえば、その詳細についてはAIで補完できる(過信は禁物であるが)。これからの開発では、技術に固執せずビジネスドメインの理解度を高めることが提供できる体験の質に大きく影響する。

プロジェクトを破壊しろ

そもそも、コードベースは資産であると同時に負債でもある。この議論は昔から絶えないが、AIの登場によってコードそのものの価値はさらに薄れていく。極論を言えば、コードそのものに価値はない。AIにより開発が加速した今、ソフトウェアそのものについても同様に価値が薄れていくように思える。どんなに高機能なソフトウェアであっても、機能単位でのクローン作製であれば素人でも可能になってしまう。ならば、何にフォーカスして開発をするべきか。答えはシンプルだ。使用感に全振りすればいい。ソフトウェアが提供したい体験を明確に定義し、如何に気持ちよく目的を実現させるかを考えるべきである。

ではそのためにどうするか。ここで重要になるのが、コードの破棄を前提としたアーキテクチャの採用である。適切に整理されたコードは人間だけでなくAIにとっても理解しやすく、何より書き直しが容易になる。これからの設計思想は保守性についての優先度を下げ、壊しやすく作り直しやすい設計にシフトすべきだ。具体的には、徹底したモジュール化とコンテキストの分離が鍵を握る。具体的にはDDDやModular Monolith、あるいはmicroservicesのようなものだろうか。

先述の通り、コードは負債である。AIでの開発が可能な現代では、リファクタリングに時間をかけるよりも古いモジュールをまるごと捨てて最新の要件で生成し直す方が圧倒的に効率がいい(既存の複雑なシステムについては一概にそうとは言えないが)。少なくとも新規開発においては、長く持たせる設計よりもいつでも作り直せる疎結合を目指すべきである。この疎結合な設計は、AIに与える情報を最小化しトークンを節約することにも直結する。巨大で複雑に絡み合ったコードをAIに理解させるのはコストとリスクを伴う。モジュールが機能ごとに閉じられていれば、コンテキストのノイズを削ぎ落とすことが可能となり、実現したい体験に注力することが可能になる。

まとめ

非常に残念なことだが、大衆にとってはAI製の粗悪なソフトウェアで必要十分であり、美しい実装や適切な設計が評価されることはない。セキュリティ要件やパフォーマンスですら二の次である。中身がどれほど低品質であろうと、表面上の機能が動き、目的の要件が満たされれば彼らは満足して対価を支払う。美しい実装は自己満足の領域に押し込められ、プログラミングという行為そのものがコモディティ化する。あるいは既にイラストレーションや音楽などのクリエイティブな分野と同様、自己ブランディングにより価値を創出する段階に移っているのかもしれない。そういったものが嫌いでプログラミングをしているのでもしそうなればかなり嫌である。とはいっても、時代がこうなってしまったものは仕方がないので少しでも抗ってみたいと思う。