AIがコードを書く時代、我々ソフトウェアエンジニアのキャリアはどこへ向かうのか

はじめに

ここ数ヶ月、AIコーディングエージェントが驚異的な速度で世の中にコードを生み出し続けています。

僕も日常的に使っていて、その恩恵を強く感じています。
作業内容によって、実装時間が短くなるケースもあれば、速度というより実装の精度や品質が大幅に高まるというケースもありますが、いずれにせよ生産性が大幅に向上していることは間違いありません。

ところが便利になった一方で、困ったことに「ソフトウェアエンジニアがAIに仕事を奪われる」という未来がいよいよ徐々に現実味を帯びてきたようにも感じます。
特に Claude Code を初めて使ったときには、我々の働き方を大きく変える転換点になると感じました。

こういうタイミングは未来について考える良い機会なので、この記事では、AIコーディングエージェントの強みと弱みを分析し、これからの時代に我々ソフトウェアエンジニアが担うべき役割について考察してみたいと思います。

なお巷では Vibe Coding という、明確な指示をせず雰囲気や感覚でAIにプログラムを書かせるスタイルがあります。
が、個人的には、ビジネスで求められる品質のコードを書く上では課題が多いと思うので、この記事ではそういった使い方は想定していません。

また、AI関連の話題は様々な考え方や未来への見解があるかと思いますので、本記事の内容はあくまで一個人の考えとしてお読みいただければ幸いです(ご意見は歓迎です)。

AIコーディングエージェントの強み

というわけで、まずはAIコーディングエージェントが得意なことを言語化するところから始めてみます。

  • 指示された作業は文句一つ言わず驚異的なスピードでこなす
  • インターネット上の集合知にアクセスできるため膨大な知識量を持つ
  • ボイラープレートコードの生成、テストコードの生成、単純なリファクタリングなど、面倒な定型業務を素早く正確にこなす
  • 既存のコードベースやベストプラクティスを読み込ませれば、そのパターンを学んで模倣できる
  • 大量のタスクを並列で処理することができる

これらは人間が真似することが難しい、AIならではの強みと言えそうです。

AIコーディングエージェントの弱み

次にAIコーディングエージェントの弱みについて考えます。

  • 文脈を理解できない
    • 指示された言葉を文字通りにしか解釈できず、チーム内の暗黙のルールや過去の経緯といった「行間」を読むことができない
  • 主体性や目的意識を持たない
    • 目的を理解して自発的に改善提案を行うことはなく、指示された範囲のことしか実行しない
  • 嘘をつくことがある
    • 知らないことを「知らない」と言えず、もっともらしい誤った情報を生成することがある(ハルシネーション)
  • アウトプットに責任を負わない
    • 生成したコードによって何が起きても、AIは一切の責任を負わないので、最終的な確認と責任は常に人間側にある

AIエージェントは自律的に考えて最適な答えを出すわけではなく、あくまで与えられた情報から確率的に最もそれらしい回答を生成しているに過ぎません。
だからこそ嘘もつくし、アウトプットを鵜呑みにするのは非常に危険です。

これからのソフトウェアエンジニアの役割

さて次に、ここまでの強みと弱みを踏まえて、AIコーディングエージェントを「部下」だと見立てて評価をしてみます。

  • 膨大な知識を持ち大量のタスクを正確かつ高速に、しかも並列でこなせる、非常に優秀なメンバー
  • 一方で、指示されたことしかやらず、言葉の裏や文脈を全く読めないので、認識の齟齬が生じないようにこちらが正確に指示を伝える必要がある
  • さらにアウトプットに全く責任を持たないので、すべてチェックする必要があり、仕事を丸投げすることはできない
  • またあくまでメンバーであり、チームやプロジェクト全体の状況を踏まえた最適化といったリーダーレベルの業務は任せられない
  • アーキテクトやプロダクトマネージャーのような、高度な課題解決能力や戦略的思考が求められる役割を担うイメージは湧かない

このように、AIは「ちょっとクセのある、しかし非常に優秀なメンバー」と言えそうです。
そう考えると、この新しいメンバーをうまくマネジメントしてチームとして機能させていくことこそが我々人間のエンジニアに今後求められる役割であると考えられます。

というわけで、ここからはAI時代に人間が担うべき仕事について、もう少し具体的に考えていきます。

人間の仕事その1: 仕様

まず「そもそも何を作るべきか?」を考えるのは依然として人間の仕事です。
そして、その問いの答えを「仕様」という形に落とし込んでいく、いわゆるドメインエキスパートの仕事はこれまでと同様に重要です。

むしろ、AIが理解しやすい仕様を書く必要が増すという意味では、これまで以上に重要になるかもしれません。
前述の通り、AIは仕様の背景を推察したり行間を読んだりすることができません。
そのため正しいものをつくるには、曖昧な表現を排除してしっかり形式化・構造化されたドキュメントを与える必要があります。

また、AIコーディングエージェントにとって仕様書は全ての作業の元となる最初のインプットになるので、ここが曖昧だと当然ながらアウトプットも曖昧になり、意図していない方向性のものになる確率が上がります。
そういう意味でもこのプロセスは今後より重要になりそうです。

ちなみにこのように仕様書を開発プロセスに組み込むことで、常にそれが参照されて更新される「リビング・ドキュメント」として機能することも期待できます。
仕様書の保守はあらゆるプロジェクトで頻繁に課題に挙がり、保守されていない仕様書は人間同士のコミュニケーションコスト(とても高い)あるいはバグ修正コスト(これも高い)などとして顕在化するのが常でした。
リビング・ドキュメントが機能すればこの辺りのコストが削減されるため、結果的にチーム全体のメリットとなり、一石二鳥であると言えます。

構造化されたドキュメントを書くこと、またそれを使うためのワークフローをコンセンサスを取りつつ整えることは難易度が高い仕事ではありますが、それだけ付加価値の高い仕事になっていきそうです。
また、これらの仕事は人間の仕事ではありますが、もちろん人間の力だけで行う必要はなく、AIと協働して進めるのが不可欠になってくると考えられます。

人間の仕事その2: 設計

仕様で「何を作るか」が決まったら、次はそれを「どう作るか」を考える設計のフェーズです。

設計というものはなかなか難しくて、世の中に正解となる設計は存在しません。
プロジェクトの規模、チームメンバーの技術スタック、運用体制、将来の拡張性要件、パフォーマンス要件など、いろんな制約と要求を踏まえて最適な設計を行う必要があります。
無闇に流行りの(または覚えたての)アーキテクチャを採用するような安直な設計は、むしろ混乱と非効率を生み出すことになります。
優秀なアーキテクトほど、プロジェクト固有の文脈を理解し、トレードオフを適切に評価して最適解を導き出しているように思います。

これに対してAIは、指示されたタスクをこなすのは得意ですが、上記のようなプロジェクト固有の文脈を理解した視点で物事を考えることはできません。
したがってこの領域は人間のソフトウェアエンジニアが担うべき領域となります。

また、設計思想は暗黙知として蓄積しがちですが、これをAIに伝えるために形式知として明確に言語化すること、またそのための能力は、今後より重要になりそうです。

さらに、前述の通り、AIコーディングエージェントが並列作業を得意とするため、お互いに依存、コンフリクトしない並列作業が可能になる設計も非常に重要です。
これは今までも、特に大規模なプロジェクトほど重要視されていたことではありますが、今後はよりその価値が高まると予想できます。

なおもちろん設計が人間の仕事であるとはいえ、こちらもAIと一緒に設計作業を進めていくことで効率化できる部分は多々あるとは思います。

人間の仕事その3: 検証

前述の通り、AIは間違えて不正確なコードを書くことがあります。
また、人間の指示が不正確だった場合にはAIによるアウトプットも不正確なものになる可能性が高くなります。
そう考えると、書かれたコードが正しいかどうかを検証することはこれまで以上に重要な作業になると予想できます。

検証の方法としてまず思い浮かぶのが、単体テストをはじめとするテストコードによるテストです。
適切にテストが書かれていれば、AIが生成したコードが仕様通りに動作することを保証できます。
そのため、テストに関する知識や、そもそもテスト可能な設計を行う能力は、これまで以上に価値の高いスキルになりそうです。

また、コーディング規約やバグのチェックなどには静的解析ツールも役立ちます。
静的解析ツールの設定や運用に関する知識も今後より重要になりそうです。

さらにいえば、従来はテストが難しいとされていた領域、例えばUnityではUIのテストが難しいとされていましたが、AIがUI実装まで担うようになってくれば、その検証方法の確立は急務となります。
そう考えると、AIの能力の向上に合わせて新しいテスト手法や検証ツールが生まれてくるかもしれません。

そして上記のような機械的な検証でカバーできない部分については、やはり人間の目によるコードレビューが必要です。
(まともな)コードレビューというものは、往々にして実装よりも難易度が高くなります。
他人が書いたコードの意図を理解し、潜在的な問題を発見し、より良い実装方法を提案する能力が求められるからです。
このようなコードレビューが適切にできることは引き続き欠かせないスキルになりそうです。

人間の仕事その4: 専門性

さて、AIがインターネット上の膨大な集合知にアクセスできるようになった今、AIは専門家レベルの知識を備えていると言えるかもしれません。
では、人間の専門性はもう必要ないのでしょうか?我々が頑張って勉強してきた日々は無に帰すのでしょうか?

幸いにもそんなことはなさそうです。

なぜなら、AIに指示を出すのは結局人間だからです。
複雑で専門的な要求については、その分野の深い知識を持つ人でなければ適切な指示を出すことができません。
また、AIのアウトプットに誤りがないか正しく判断できるのも専門家だけです。

例えば家を作ってくれるAIエージェントができたとして、素人が「私の家を作って」と頼んだ場合、期待通りの家が建つでしょうか。
断熱性能の要求、採光と通風の計画、メンテナンスのしやすさの観点など専門的な指示ができなければ、思い通りの家を建てるのは難しそうです。
運良く見た目的には期待通りの家が建ったとして、それが建築基準法に準拠しているか、耐震性は十分か、その土地の地盤や気候に適しているかといった重要な要素は、建築の専門知識なしには検証できません。

結局、高度なものを作る際には、ここまでで述べてきた「仕様」「設計」「検証」の各項目で高い専門性が求められるということです。
ただし、的確な指示と検証ができれば実装まではできる必要がないとも言えるので、学び方や適切な学習の深度は変わってくる部分もあるかもしれません。

まとめ

以上、AIコーディングエージェントの登場により我々の仕事がどう変化していくのかを考えてみました。

振り返ると、AIに我々の仕事が代替されるというよりは、仕事の質や重要なポイントが変わっていくという捉え方が今のところは正しそうです。

このようなことは過去の技術革新にも学べるかもしれません。
例えばUnityやUnreal Engineのようなゲームエンジンが登場したことにより、ソフトウェアエンジニアはよりゲームの面白さを追求することに集中できるようになりました。
だからといってもう少し低レイヤーの「レンダリングパイプラインをイチから書く」みたいな仕事がなくなったかというとそんなことはなく、むしろ価値のあるスキルとして扱われています。
ただし、ゲームエンジンを使うことによりそのような仕事に実際に従事する人の数は減ったはずです。

AIコーディングエージェントによる革新も俯瞰してみれば、それぞれの仕事の価値と需要が変わりうるという点についてはこの話と変わらないように思います。

この大きな流れの中で、具体的にどういうポジションを取っていくかは人それぞれだと思います。
そういった部分こそ、人間が自分の頭で考えるべきことなのかもしれません。

本記事がそのための一助となれば幸いです。