「そんなに怖いか?「新時代」が!!!」
出典:ワンピース『第1055話 新時代』シャンクス
LLMが普及したことにより、コーディングの敷居が下がりました。
モノを作るだけなら誰でもできる時代が到来。まさに新時代!
しがないソフトウェアエンジニアである私はこう思うわけです。
「職がなくなるんじゃないか?」「自分の価値とは一体?」「この先生きのこるには?」
そんな中、私が所属する株式会社tacomsでは次のようなリリースがありました。
本気でAIに向き合っていく宣言です。
もちろん国内でも周回遅れの状況なので「次の5年におけるグローバル基準のAIスタートアップ」になることは並大抵のことではありません。
この流れについていくために、そして牽引していくために、これからの時代に求められるスキルを真剣に考えなくてはいけなくなりました。
ということでこのAI新時代を乗り越えていくために必要なソフトウェアエンジニアのスキルの整理、そして未来を考えてみました。
これは私個人の意見で、会社を代表する意見ではございません。
プログラミングは高度な抽象化の進化の歴史である
オライリー氏のブログ記事「The End of Programming as We Know It」でも語られていますが、プログラミングは高度な抽象化が度々行われてきました。
物理回路接続→機械語→アセンブリ言語→高級コンパイル言語→インタプリタ言語
あとはOSが登場したり、Web開発フレームワークが登場したり、クラウドになったり。
この度にプログラミングの敷居は下がってきましたが、エンジニアの数はむしろ増えています。
これは高度な抽象化の進化のたびに、実現可能なアイデアが生まれ、現実世界の課題をより多く解決することができるようになったためです。
LLMもこの高度な抽象化の一つに過ぎないということになります。
新時代に求められるエンジニアのスキルとは
LLMによりさらなる抽象化が行われた結果、エンジニアはどのようなスキルを求められるのでしょうか?
私は次のようなスキルが必要だと思いました。
- 言語化スキル
- タスク分解スキル
- 品質保証スキル
- プロダクションレディにするスキル
- 持続性の確保スキル
- ドキュメンテーションスキル
- 技術選定スキル
- セキュリティやコンプライアンスの知識
ざっくりまとめると 「答えのないものに向き合う力」が必要です。
そしてAIネイティブとは、LLMを活用してこれらのスキルを発揮する人材のことだと感じました。
ではどのようなスキルか見ていきましょう!
ドメイン分析スキル
自分の担当するドメインを深く理解することが求められます。
これはステークホルダーとのコミュニケーションする上で必要ですし、AIが理解しやすい適切なコンテキスト分けをするときにも必要なスキルとなっていきます。
言語化スキル
要件定義能力。AIに指示するために必要になります。
ざっくりな指示では精度の高い成果物は生成されません。より精密な指示ができるような言語化スキルを求められます。
タスク分解スキル
要件定義をAIが作業しやすいようにタスク分けをします。AIが作業しやすいとは、コンテキストが狭く、理解が容易なことです。
複雑なタスクをいっぺんに与えると、要求を満たす成果物が生成されなかったり安定しなくなります。
品質保証スキル
タスクの受け入れ条件の策定を正常系・異常系どちらも可能な限り漏れなくできるスキルです。
またユニットテストコードのコーディングスキルも求められます。
AIが生成した成果物が望んでいるものかどうかを保証するための技術です。この保証をAIには任せることはビジネスとして受け入れがたいものだと思っています。
プロダクションレディにするスキル
プロダクションレディとはプロダクトを本番環境で問題なく稼働できる状態のことです。
AIが生成するものは、複雑になればなるほどプロダクションレディとは遠いものです。
データベースに繋いだり、クレデンシャルを外部から注入可能にしたり、ログを永続化したり・・・やることは非常に多いです。
最後まで持っていくというスキルが必要になります。
持続性の確保スキル
プロダクトの持続性を確保するためのスキルです。この中でもスキルは色々あると思います。
- 冗長性や可用性を確保するスキル
- パフォーマンス劣化やインシデント発生時にAIが分析しやすいような情報を仕込むスキル
- 依存サービスやライブラリのEOL対応を行うスキル
障害の原因特定ですが、いまはコーディングスキル(リーディング力)が必要ですが将来的にはいらないと思ってます。
現在でも障害のエラーの分析はエラー文字列を渡せばよしなにやってくれるので、適切な情報出力を意識しておけば良いのではないかと思ってます。
ドキュメンテーションスキル
AIや人間に情報を伝えるためのドキュメンテーションスキルです。
AIがプロダクト理解をしやすいよう CLAUDE.md
を整えたりとか、人間が読みやすいような文章を書くとか、メンテナンスが容易なドキュメント生成とかそういうものです。
技術選定スキル
クラウドやSaasやライブラリなどの妥当性を見極めるスキルです。
これは持続性の確保スキルも関連しますが、ビジネスの要件に合わない技術選定は後々に地獄を見ます。
メンテがされてない・高コストすぎる・スケーラビリティがない・複雑すぎるなどなど。
セキュリティやコンプライアンスの知識
これはスキルというよりは知識程度でいいと思いますが、携わるプロダクトにおいて懸念されるセキュリティやコンプライアンスのリスクに気づくための知識が必要です。
プロダクトが潜在的なリスクを抱えてないか、コンプライアンス違反してないかを見極め、AIに適切な指示を出す必要があります。
コーディングスキルはいらない?
AIが生成するコードはまだ品質はよくありません。Claude Code(Claude 4 Opus)
はとても素晴らしいですが、全幅の信頼をおけるほどではありません。
AIが生成するコードの良し悪しを判断するコーディングスキルは今は必要です。しかし日に日に生成コード自体の品質は向上しているので、近い将来克服する問題だと感じています。
そのため、私は今後コーディングスキルは不要だと感じています。(繰り返しになりますがテストコードのコーディングスキルは必要です)
コーディングには答えがあります。作りたいものが具体的であればそれが答えです。TDDで開発していればなおさらです。AIは答えがあるものにはめっぽう強いのです。
AIネイティブなエンジニアの仕事
AIネイティブなエンジニアの仕事は次のようになると思います。
- エンジニアはプロダクトを実現するために必要な機能をAIと一緒に考える
- AIが理解しやすい粒度でタスク分割しタスク定義する
- 実装の受け入れのための条件をAIと検討しそれが妥当か判断する
- AIが生成したテストコードが妥当かをレビュー
- 受け入れ条件を満たしてるかを目で確認し承認しリリース
運用は次のような感じに
- AIの助言を受けつつプロダクトの実行基盤の選定を行い、設計や実装をAIが行い、人間が承認し進める
- リリース後の運用のための可観測性の確保の指示も人間が行い実装はAIがやる
- 日々の異常検知やインシデント対応の1次対応はAIがやるが、影響調査の裏取りや報告、その後のポストモーテムは人間が行い、恒久対応や再発防止策の検討しAIに指示する。
すべての作業にAIが関わります。そんな世界になるはずです。
ここまでが私が考えた「AI新時代を乗り越えていくためのソフトウェアエンジニア航海術」となります。
考えてはみましたが、自分はまだまだだなぁと痛感しました。引き続きがんばっていきたいと思います・・・!
ここからは私個人の妄想が広がる駄文です。
今後生まれてくるアイデアは?
LLMの活用が進んでいったときにどのようなアイデアが生まれてくるのでしょうか?
スマホがまさにそうですが、現実世界の拡張を果たしました。スマホは日常生活とインターネットを繋げました。それによって発明されたアイデアの数々はみなさんご存知でしょう。
次はメガネ型ウェアラブルデバイスの普及によって、この流れは加速すると思っています。
なぜならLLMは画像や音など、より現実世界に近い領域での課題を解決できるようになってきているからです。
メガネのカメラやマイクを通して現実世界を見たときのデータ量はとても多いはずです。そのデータを使った課題解決のアイデアが次々と浮かんでくるんじゃないかなと思います。私は方向音痴なのでメガネに道順を出してほしいです。
LLMの先
どういう技術が出るかは私では想像できません。
しかし、どんな仕事がなくならないかは想像できなくはないです。
まずなくならないのは、人間の承認作業。人間の介入なくモノを出すのは、ガバナンス上許容できないのではないかと思います。
次にAIと会話するスキル。ビジネスの分析・言語化をした上でAIと会話しアイデアを精緻化していくことは必要だと思います。
プロダクトの課題を見つけるのはAIが自発的にやるには、難しいんじゃないかと思います。
セキュリティやコンプライアンスやプライバシーの保護の観点を持ってレビューすることもAI任せにはしづらい仕事です。
インシデント対応も顧客がいますから、その説明責任を果たすのは人間です。
あれ、なんだか「新時代に求められるエンジニアのスキル」で語ったような内容です。
つまり非機能要件ほど人間の介入が必要になっていき、専門知識を必要とするのではないかと思います。
エンジニアはより専門化していきます。そして実現できるアイデアは山のように出てくるので、エンジニアはいなくならないと思います。
シンギュラリティ
シンギュラリティとは、技術の進歩が異常に加速し、人間の理解や制御を超える転換点のことです。
現実世界の延長で考えると、人間の判断がいらなくなり、自律的にAIが判断し、人類の生み出すアイデアを上回り、人類の課題解決を始めたときがシンギュラリティなんじゃないかと思いました。
そうなるとソフトウェアエンジニアの仕事はなくなる。というかホワイトカラーの仕事がなくなる?
物理コストがよりかかる第一次・第二次産業の重要度が増し、そこのロボット化が進むようになりそう。しかし資源は有限なので、大量生産に向かない原材料の生産・加工が人間の仕事になる。そこに人間が作ったという付加価値が生まれる。「あの店が作ったラーメン」とか。
あとはエンタメも引き続き人間の領域。政治や医療もそう。あとは育児や介護など利益になりづらいものも人間かなぁ。こういうのこそロボットにやってほしいけど。
自分は今年で36歳。定年が65だとしてあと30年くらいは働かないといけない。
効率化が進んでいるのになぜか人間が働かなくて済む未来は来そうにない。
このような未来が待ってるのだとするとこの先なにに投資していくべきだろうか?まだ答えは出てません。
まぁそんな未来のことを気にしてもしょうがない!なるようになる!ということでまだしばらくはソフトウェアエンジニアとしてがんばります!
Views: 0