AI時代のエンジニアに求められる技術×ドメイン知識のトップ画像

AI時代のエンジニアに求められる技術×ドメイン知識

投稿日時:
山本 正喜のアイコン

株式会社kubell / 代表取締役CEO

山本 正喜

Xアカウントリンク

はじめまして、株式会社kubell代表取締役CEOの山本と申します。「CTOからCEOの経験から語る AI時代のエンジニアに求められる技術×ドメイン知識」というテーマでお話します。昨今AIの技術の激変が起こっていると思います。私自身、エンジニアからCTOになり、CTOからCEOになったというキャリアを歩んできましたので、その視点からこれからのエンジニアキャリアについてお伝えできればと思っています。

AIが巻き起こす開発現場の変化

AIコーディングが主流へ

先日Googleのサンダー・ピチャイCEOが「現在Googleでは、すべての新しいコードの25%以上をAIが生成している」と発言しました。また少し前には、Salesforceのマーク・ベニオフCEOが「AIにより開発生産性が30%向上したため、今年はエンジニアの新規採用を行わない」と宣言し、大きな話題になりました。そしてMicrosoftのケヴィン・スコットCTOは「5年後にはコードの95%がAIによって生成される」と示しています。
このようにAIによるコード生成、いわゆるAIコーディングは、かつてCopilot、副操縦士として人間をサポートする存在と呼ばれていましたが、その域を超え、開発生産性を大きく向上させなくてはならない存在になりつつあります。数年後にはほとんどのコードをAIが書くようになることは、確実な未来と言えるでしょう。

自動開発レベル別ロードマップ

そこで「自動開発」のレベル分けをつくってみました。自動運転で言うレベル3やレベル4に倣い、AIコーディングの文脈で整理すると以下のようになります。

レベル1:開発支援
コード補完レベル。GitHubCopilotが登場したとき、多くの人が衝撃を受けた「コード補完以上のコード生成」がここにあたります。これがスタート地点でした。

レベル2:特定条件下での自動開発
自動運転の「特定条件下での自動運転」に近い言葉ですが、現在はこれが主流になりつつあると思います。プロンプト駆動でのコード生成ですね。「こういうシステムをつくりたい」「このクラスをつくってください」と指示すると、コードを書いてくれるイメージです。
その出力を人が確認し、「ここはマージ」「ここは修正」「ここはアクセプトしない」と操作してマージしていきます。CursorやClineのようなUXで、プロンプト駆動でコードをどんどんつくっていく形です。レベル2はかなり実用的になってきたと感じます。

レベル3:条件付きで自動開発
ここではAIがドライバーとなり、人間は一定の要求仕様を書くだけで、モジュールレベル、場合によってはシステムレベルに近い形でコードを生成してくれます。難しい部分や例外事項が出てくると、適切に人へハンドオーバーしながら進める世界観です。Devinはこのレベルを目指していると思いますが、まだ実用レベルではないと言われつつも、ポテンシャルは非常に高いと見られています。

レベル4:特定条件下での完全自動開発
これは「勝手に運転している」ようなイメージで、限定ドメインにおいてほぼ放任で任せられる状態です。人は登るべき山(ゴール)を決めて「やってください」と指示し、AIが一気に走り切り、最後に「これでいいね」と確認するだけになるのではないかと思います。まさに最終調整だけを人が担う段階で、これがおそらくMicrosoftのCTOが言及していた世界観で、5年ほどで到達するのではないかと考えています。

レベル5:完全自動開発
ここではノータッチで結果を監査するのみです。人はビジネスゴールを立て、倫理ガイドラインの様な「こういうことはやってはだめ」というガードレールだけを敷き、あとはAIが進めるイメージです。
この自動運転のレベルを参考に、AIと対話しながら「こういうことだよね」とまとめたものです。

image1.png

プログラマーの役割は本当に消えるのか

このような時代がきたときプログラマーは不要になるのかというと、これは車の運転においてドライバーが不要になるのかという議論とほとんど同じです。プログラムを書くという作業の大部分は、AIが生成するのが当たり前になるでしょう。ただ、ごく一部の専門的な部分やチューニング、趣味の領域では残ると思います。これは運転の世界観とかなり近いものになるでしょう。
プログラマーの仕事がなくなるのかというと、そうは思っていません。近い例として「計算」があります。昔はそろばんを使っていましたが、やがて電卓になり、表計算ソフトになりました。ツールは進化しましたが、経理という仕事はなくなっていません。計算という作業はコンピューターに代替されながら、経理という職種は残り続けています。
同様に、コードを書くプログラマーという職種は大幅に減るかもしれませんが、プロダクトをつくるエンジニアという職種はこれからもなくならないと思います。

AI時代のエンジニア像(AIの指揮者)

人にしかできない2つの役割──問いを立てる&意思決定

AI時代のエンジニアはコードを書く人ではなく、AIの指揮者と呼ばれるような存在になっていくのではないかと思っています。これからAI時代に求められるエンジニアのスキルや役割を整理してみたいのですが、AI時代においては「何でもAIができてしまい、人はやることがなくなるのではないか」と言われたりします。しかし、人にしかできないことは2つあると言われています。
それがこの2つです。1つ目が問いを立てること、2つ目が意思決定をすること。この2つは人にしかできないと言われています。問いを立てるとは、AIに解くべき課題を与えることです。これはプロンプトを書くこととほぼ同義ですが、結局AIは勝手には動きません。「こういうことをやってください」と人がプロンプトを書くから動いてくれるわけで、何をAIに解かせるかは人が考えなければなりません。
質の高い問いを立てるということが、人にしかできない難しいポイントです。もちろんAIがアシストしますが、そのAIに対して問いを立てるのは人間の役割です。

2つ目は意思決定をすることです。AIが高いクオリティでアウトプットを出しますが、世の中は複雑なので、たとえばパターンAを選べばこういうメリット・デメリットがあり、パターンBを選べばこういうメリット・デメリットがある。どちらが良いかは実際にやってみないと分からない、ということがビジネスではよくあります。しかし、どれか1つを決めなければならないときに、AIに「決めてくれ」と頼めば決めてくれるかもしれませんが、その決断を実行し、責任を取るのは人間しかできません。結局、AIのアウトプットのどれを採用するかを決めるのは人間であり、もしうまくいかなかった場合、その理由を説明し、「こういう理由でこれが良いと思ったが、うまくいかなかったのでこうリカバリーする」と説明責任を果たすのも人間です。「AIが勝手に生成したからです」とは言えません。こういった部分は人間の仕事として残ると思います。

AI指揮者に求められる3本柱スキル

これを踏まえると、この2つの領域は人間の役割として残ります。ではエンジニアはどうなっていくのかというと、AI時代のエンジニアの方向性としてはAIの指揮者という役割が重要になります。
まず、高いドメイン知識。顧客の業界構造や業務理解、個々の状況などを基盤に、「解くべき課題」を特定します。「顧客にとってこれが問題だ」「ここがボトルネックだ」といったポイントを抽出するわけです。
次に、高い技術理解をもとにアプローチを設計します。サーバースペックやネットワークのスループットなど、技術的な制約を踏まえ、「この課題に対してはこんなアプローチができる」「こういう機能があれば良い」と発想します。
そういったものを定めて、それを使ってAIに「こういうものをつくってくれ」と投げるわけです。そしてAIが、複数のさまざまなAIをオーケストレーションしながら実装を行い、最終製品に仕立てていく。これがAIの指揮者としてのエンジニアの姿だと思っています。
必要なことは大きく3つ、技術理解×AI駆動開発×ドメイン知識がAI時代のエンジニアのスキルの柱になるのではないかと感じます。

キャリアデザインと行動指針

AI時代のエンジニアのキャリアデザインと求められる行動指針については、オーケストラの指揮者に非常に近いと思います。オーケストラの指揮者がプロレベルでピアノもヴァイオリンも打楽器もすべて演奏できるかというと、そうではありません。1つ2つ演奏できれば十分で、それが必須というわけでもありません。
しかし指揮者はオーケストラ全体を「楽器」として扱い、指揮を通じて音楽をつくります。そのために必要なのは音楽の知識。音楽史やさまざまな技法などに加え、各楽器への理解です。弦楽器、打楽器、ピアノなど、それぞれどのような特徴や技法があるかを把握していなければなりません。
そのためにはその技術を幅広く習得する必要があると思います。

技術理解×AI駆動開発×ドメイン知識──3本柱を鍛える

AIを指揮するエンジニアも同様のスキルセットが必要です。技術理解×AI駆動開発×ドメイン知識がAI時代のエンジニアの柱だという話をしましたが、技術理解は楽器理解に相当します。AIが生成するコードを修正・指示するにはプログラミングを理解していなければならず、そのためにはフルスタックで幅広い知識を持つ必要があると感じています。フロントエンドだけ、サーバーサイドだけではなく、全領域で一定レベル以上にAIのコードを修正・指示できる技術が求められるでしょう。

2つ目がAI駆動開発、これが指揮法にあたります。AI開発のツールやエージェントは、Cursorだけで完結する世界ではなく、特化型エージェントが多数登場するはずです。たとえばVercelのようにフロントエンドに特化したもの、セキュリティ特化、テスト特化、DevOps特化など、たくさん出てくるでしょう。これらを組み合わせ、どのAIの組み合わせでシステムをつくるかを設計し、オーケストレーションして最終製品へ導く。これがAI時代のエンジニアの役割になると考えています。
最後にドメイン知識、これが音楽知識にあたります。高いユーザー理解、業界理解、顧客解像度を持つことで、1人のエンジニアが相当程度のプロダクトをつくれるようになります。技術だけでなく、価値をどう生み出すかという視点にもエンジニアがフォーカスする必要があると思います。

image2.png

AI時代の行動指針

まとめると、行動指針としてはAIの指揮者としてシステム開発全体を導く存在がエンジニアです。フルスタックに幅広い技術知識を身につけ、自分が指揮できる幅を広げる。この幅の広さがAI時代のエンジニアとしての価値につながります。そして徹底してAI駆動開発の技術を磨くこと。AIの癖やモデルの組み合わせを理解し、AIの力を120%・140%引き出すスキルが求められます。
さらに顧客解像度を高めるため、職種を越えてユーザーと会い、知見を深めることも重要です。よりエンジニアはPdMに近い存在へ変わっていくでしょう。

私のブレイクスルー・ポイント

ご参考までに私のブレイクスルー・ポイントを紹介します。
エンジニアからCTOになった当時、マネジメントや人と話すことが苦手で、マネジメントを人のお世話的な雑用と捉えていました。コードを書く時間が減ることに大きなストレスを感じていましたが、ある日、人がオブジェクトに見えてきたのです。日本語という言語で人のメソッドを呼び、プロパティが変わる。「これは広義のプログラミングだ」と気づき、マネジメントも自分の領域だと開眼しました。

2つ目はCTOから事業責任者に踏み出したタイミングです。
1つ前のプロダクトで大きな失敗をしてしまい、社内向けプロダクトが大失敗して会社が危機に陥ったとき、企画担当の言われるがままにつくっていたCTOの立場では「これではだめだ。このままだと会社が潰れる」と感じました。そこで「自分がビジネスサイドもやる。必要なら何でもやる」と決意し、エンジニア職を超えて事業責任者となり、営業もするしクレーム対応もするしユーザー会も開く。そんな覚悟を持ったことが大きな転換点だったと思います。

最後にCTOからCEOへ。前社長に突然呼び出され退任宣言を受け、CEOをやらざるを得ない状況になりました。これまでCEOからハードルの高い課題を与えられ「どうやって実装しようか」と悩む立場でしたが、CEOになると逆に無茶ぶりする立場になります。無茶ぶりしないと会社は成長しない。自分には向いていないキャラだと苦しみましたが、最終的にはミッション・ビジョン・バリューを「上司」にすれば良いと気づきました。「そこに至るためにはこれをやらなければならない」と腹落ちすれば、自分たちはそこに対してリーダーシップを発揮できると発見しました。

まとめると、マネジメントの道に進むときは「これもエンジニアリングだ」と広義のエンジニアリングとして捉え、自分の領域にしてしまうこと。そしてビジネス側に染み出すときは腹をくくって職種の壁を越え、自分がビジネスをやるという覚悟で挑めば案外できるものです。エンジニアは論理的思考が強みなので、意外とこなせると感じています。
リーダーシップは、はっきり言って苦手な人も多いかもしれません。ただ、「あるべき旗」を立て、「そこに向かってこうすべきだよね」と示すコンセプトドリブンのリーダーシップというスタイルもあるのだと知っていただけると嬉しいです。

AI時代のエンジニアキャリア

AI時代のエンジニアキャリアでは、AIによる開発現場の激変が数年で到来し、プログラミングという作業の大半はAIが担うことが確実です。エンジニアはAIの指揮者になる必要があります。そのためのカギは、技術理解×AI駆動開発×ドメイン知識という3本柱だと考えます。
時代が変わっても、エンジニアリングそのものはなくなりません。ものづくりを通じて世界を変えるチャレンジを、同じエンジニアとして共に走っていきましょう。

kubellでは、AI時代をともに走るエンジニアを絶賛募集中です。私たちは労働人口の約7割を占める中小企業のDXを、ビジネスチャット×BPaaS×AIの掛け算で大きく変革するチャレンジを進めています。興味をお持ちの方はぜひご応募ください。

Loading...Loading...Loading...
Loading...Loading...Loading...

プロフィール