生成AI時代のITエンジニアの生存戦略

## はじめに

直近数年間で生成AIの分野の発展は目覚ましいものがあります。ChatGPTが公開されたときは、全世界に衝撃が走りました。従来のチャットボットはそこまで精度が高いものではなかったのですが、ChatGPTでは非常に滑らかな日本語で対話することでき、多くの人が生成AIの可能性を感じたことでしょう。

ITエンジニアをしていると、新しい技術が出るたびに、私たちの仕事がなくなる、といったことがSNSで話題に出ると思います。今回の生成AIも同じく私たちエンジニアの仕事を奪うのでは？という意見がSNSに上がっているのを見かけます。

では、生成AIの時代に私たちITエンジニアはどうすればいいのでしょうか？生成AIに仕事が奪われるのをただ待っていればいいのでしょうか？それとも、別のスキルを身に着けるべきでしょうか？それとも別の業種に転職するべきでしょうか？

生成AIの時代に私たちITエンジニアがどうキャリアを考えればいいのか、そのテーマについて意見を述べたいと思います。

## 生成AIが私たちの仕事を奪うのか？

そもそも、生成AIが私たちの仕事を奪うのかどうかについて考えてみましょう。私たちITエンジニアの仕事は何でしょうか？ITエンジニアの仕事は突き詰めると「**クライアントが抱える課題をITの力で解決すること**」であると考えます。
ICTやDXなどという言葉が利用されることもありますが、私たちITの専門家が、クライアントがこういうことで困っている、こういうことをしたいという欲にたいして、ITの力でその課題を解決するサポートをする、その対価でお金をもらう、という構図です。

![Snag_6246514.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/c7b083dd-0e1e-0a2f-daa2-c070a18c298a.png)

そもそもの前提として、お金は人に対して発生します。例えば、池の魚のために池を掃除してもお金は発生しませんが、その池を掃除してほしいという依頼があった場合は、その依頼主に対してお金を請求する形になります。そう考えると、私たち人間の欲望は尽きることが無いので、常に課題は存在することになります。私たちが属するITの世界は変化が非常に速いです。提供するツールは時代とともに変化しつつ、しかし、ITの力を使って課題を解決するサポートをする、という本質は時代とともに変化していないと考えています。

前置きが長くなってしまいましたが、「生成AIが私たちの仕事を奪うのか」という問いに対して私の回答は、「本質的な仕事を奪うことはしない、しかし仕事の内容は変化させる」という形になります。
ITエンジニアの仕事の本質は前述した通り、「ITの力でクラアントの課題解決する」ということであり、課題は常に存在するので仕事がなくなることはありません。しかし、生成AIの時代において、私たちの働き方は変わります。この変化についていけないと、ITエンジニアとしてのキャリアが難しくなる可能性はあると考えています。

## 閑話：オンプレからクラウドへの移行

今回の生成AIの登場はオンプレからクラウドへの移行に近いものがあると感じています。もともと、ITシステムを作成するためには、サーバーの調達やデータセンターの管理などが必要でした。しかし、AWS(Amazon Web Service)やGoogle Cloudの登場によって、物理レイヤーを意識せずシステムの作成が可能になりました。
オンプレからクラウドの切り替え時もITエンジニアの仕事がなくなるのでは？といった議論が発生していました。
確かに、オンプレのサーバー構築といった作業は減っていることは事実であり、この作業を専門としていた人の需要が減っていることも事実として存在すると思います。しかし、ITエンジニアの仕事がなくなったわけではなく、仕事の仕方が変化しているだけである、と考えることができます。もちろん、オンプレのサーバー構築を専門としていた人からすると、自分のキャリアに関わることなので非常に重要な問題ですが、IT界隈ではこういった現象が数年のスパンで発生することを意識して自分のキャリアを考える必要があります。

オンプレからクラウドの話で言うと、いわゆる物理レイヤー(サーバー構築、配線、電源管理など)やミドルウェアレイヤー(OSやDBMSなど)と呼ばれる部分はSaaS(Servicce as a Service)やFaaS(Function as a Service)と呼ばれるサービスに代替されつつあると感じます。

![Snag_65d9cf8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/a4401a1b-4889-5bce-f0f3-43c3e4af8f1a.png)

## 生成AIについて

さて、生成AIがITエンジニアの仕事を奪うかもしれない、というテーマについて論じるために、生成AIについても簡単に触れたいと思います。
生成AIといっても何を対象とするのかによって様々な種類があります。
例えば、テキストを生成するのか、画像を生成するのか、音楽を生成するのか、動画を生成するのか、といった具合です。
特に私たちITエンジニアによって脅威と考えられているのが大規模言語モデル(LLM)でしょう。LLMでは、文章を要約したり、文章を作成したり、プログラムを作成したりすることができます。現時点で[GitHub Copilot](https://docs.github.com/ja/copilot/about-github-copilot)などのコーディング支援ツールが提供されており、コーデディング作業が非常に効率化されています。また、要件を伝えるだけで、コーディング、実行、エラーを解消までを全自動で実行するようなサービスも登場しつつあります。
例えば、Cognition社が開発している[Devin](https://www.cognition-labs.com/introducing-devin)は、対話的に指示により、コーディングからデプロイまでを完全に自動化することができます。(正式版のリリースはまだです)
以下の動画が分かりやすいかと思います。英語なので字幕をオンにして確認ください。
https://www.youtube.com/watch?v=G45NKnAWuXc

## 生成AIによって一番影響を受けるのはどこ？

基本的に私たちがシステムを作成する場合、以下のような流れになるかと思います。

![Snag_67b5c34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/c2d781cf-ebba-2c88-699b-7488e90b0acb.png)

その中で、特にクライアントと関係する部分(例えばヒアリングなど)については、なかなかAIに置き換わるまで時間がかかると思います。
直近でAIによって仕事の仕方が変わる部分としては実装の部分でしょう。実装の部分はLLMと相性が良い(ソースコード自体がそもそも言語であるため)ため、近い未来に人がプログラミングする作業は激減すると考えられます。
では、プログラマーはどうしたらいいのでしょうか。私の意見としては「すでにプログラミングのスキルを有している場合、生成AIを最大限活用して高効率でシステムを作成できるようになるべし」だと思います。人がコーディングする作業は減るかもしれませんが、これまでシステム作成に1か月かかっていたのを15日で作成できるとなれば、単純計算で売り上げが2倍になります。
何度も繰り返しますが、ITエンジニアの仕事がなくなるわけではありません、仕事の仕方が変化するだけです。あなたの作業効率を劇的に変えるそんなツールが世に出てきた、と考えて自分のキャリアを考えてください。

## 閑話：自動運転について

今回の生成AIの話で思い出されるのが、自動運転のテーマです。
自動運転の導入については以下のようにレベル分けされています。

![Snag_6870d6d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/d0a790e4-98d1-2404-07e1-22337256edfe.png)

参考) https://www.mlit.go.jp/common/001226541.pdf

自動運転については10年以上前から議論されているテーマですが、まだ公道で完全自動運転の車を見かけません。
それだけAIについての[社会実装](https://kotobank.jp/word/%E7%A4%BE%E4%BC%9A%E5%AE%9F%E8%A3%85-2879325)は難しいテーマなのです。

直近でNDIVIAが[信頼できるAI](https://blogs.nvidia.co.jp/2024/03/11/what-is-trustworthy-ai/)について意見を述べたように、AIを世の中に定着させるためには多大な努力が必要であるとわかるかと思います。

自動運転もしかりで、技術的には完全自動運転ができたとしても、社会に適用するために多大な努力と年月がかかります。
今回の生成AIの件も、AIがシステムの作成を自動的・自律的に行うことが技術的には出来たとしても、社会に定着するまでには多くの年月がかかることでしょう。

## 結局どうしたらいいの？

結論としては、**生成AIが私たちの仕事を奪う、というマイナスの考えではなく、生産性を上げることができるツールであり、私たちがAIを使いこなす側である** という意識で考えてください。
以前、[退屈なことはPythonにやらせよう](https://www.oreilly.co.jp/books/9784873117782/)という書籍が話題になったことがあります。
また、直近で[面倒なことはChatGPTにやらせよう](https://www.kspub.co.jp/book/detail/5342909.html)という書籍も発売されています。

手段と目的を見失わないでください。**私たちはコードを書くことが目的ではなく、クライアントの課題を解決することが目的です。それによってお金が発生しています**。
**AIを私たちの仕事を奪う敵と考えるのではなく、便利なツール**と考えて使いこなしてください。
その先にもし、**自分の作業は素人でも同じクオリティで作業できるほどコモディティ化していると感じたら、その時は転職を考えてください**。

![Snag_6b8da25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/e8ae01c1-44fd-7b69-e915-99bfdf30c11f.png)

## 閑話：IC(Individual Contributor)について

一般的なITエンジニアのキャリアパスとして、開発者やマネージャーといったポジションがあると思います。英語圏だとさらに別の切り口(スタッフエンジニアなど)でポジションが用意されていたりします。
その文脈で、IC(Individual Contributor)について少し紹介したいと思います。
一般的には以下のような体制でチームが構成されていると思います。

* PdM ... Prodact Manager(製品について責任を持つ)
* PM ... Project Manager(プロジェクトについて責任を持つ)
* PL ... Projetc Leader(開発リーダー)
* PG ... Programmer(開発者)

![Snag_6a750f3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/f7e1b93b-ee4f-fa41-2775-6f52ca5738ba.png)

上にいけばいくほど、難易度の高い選択をする必要があるため、役職が上であり、その分給料も上がる傾向にあります。
しかし、システムはPMだけでは作成ができず、全員の協力が必要です。そこで、PGの役職でも専門的なスキルを持った人をPMと同じ待遇で扱うという流れが現在起きているように思います。

[生涯現役のソフトウェアエンジニアでありたい。IC（Individual Contributor）のキャリアパスがあると自覚するまで10年の軌跡](https://findy-code.io/engineer-lab/gfx)

PGに求められるスキルとPMに求められるスキルは違います。人のスキルは後天的に伸ばすことができますが、自分に合っている職種や役割で自分の能力を発揮するほうが、より価値のある仕事をできると思います。もし自分が本当にやりたいことがPMではないなと感じたのであれば、ICという別の選択も世の中には存在しているということを知っておくとよいと思います。
皆さんの一度きりの人生、皆さんのキャリアの可能性は無限に広がっています。

## 最後に

長々と書きましたが、本記事でいいたいことは以下の二つです

* ITエンジニアの本質は「ITの力でクライアントの課題を解決すること」、その観点で考えるとITエンジニアの仕事がなくなることはない
* AIを敵と考えず、自分の作業を効率化してくれるツールであると考え、使いこなす姿勢を大切にする

新しいものについて脅威を感じるのはだれしも理解できるところだと思います。
しかし、新しいからと排除するのではなく、いかにそれを自分にメリットがある形で使いこなすことができるか、という視点で考えて頂ければと思います。
長文を読んでいただきありがとうございました。

なお、本文章すべては個人的な意見ですので、その点ご了承ください。