先日、社内でマーケティング関連の打ち合わせをしていた時に、マーケティングの担当者から
「たまにはもっとキャッチーなネタでブログ書いてくださいよ。生成 AI とか。」(超訳)
と言われたので、仕方なく(嘘)書いてみる事にしました。
最近やった事
とあるプロジェクトのシステム構成図を作る必要がありました。今までであれば draw.io などの作画ツールを使うのですが、今回は生成 AI に作らせる事にしました。具体的にどのようなツールを使ったかなどは、本題ではないので省略します(気が向いたらエンジニアブログに書きます)。
当該システムは比較的単純・典型的なもので、課金があるスマートフォンアプリであり、バックエンドは AWS 上に構築されています。最終的なシステム構成図をここに載せてしまうのはお客様との契約上問題なので、作成途中のものを以下に載せます。
![](https://i0.wp.com/blog.mobalab.net/wp-content/uploads/2024/07/system-diagram-by-claude-1.png?resize=676%2C882&ssl=1)
(上に載せた途中経過では無く最終版の)図の作成にかかった時間は、
- どの方法で作成するかの調査
- 途中で担当者にチャットで構成のヒアリング
などの時間も含め、約2.5時間でした。なお、普通に作画ツールを使って手動で描いていたら、多分2時間しないくらいで作れたのかなとは思いますが、今回で勘所がある程度分かったので、次からは手動で描くのと同じくらいの時間で出来るかと思います。
これだけだと「○○やってみた」系の記事となってしまいますので、もう少し書いてみます。
ソフトウェア開発における生成 AI の活用
まず、現時点で、ソフトウェア開発の現場にて生成 AI がどのように活用されているのかについて書いてみます。
コード自動生成
まずはコード自動生成です。GitHub Copilot が一番有名かと思います。ソフトウェア開発者であれば、どのようなツールかはご存知かと思いますが、ご存じない方、あるいは非開発者の方は、以下のページを見れば大体どのようなものかが分かると思います。
GitHub Copilot · Your AI pair programmer
これは本当に便利です。今までであればやりたい事は頭の中にあるのに、言語・ライブラリーの細かい文法・作法を知らない時に、検索してドキュメントを読んだりする必要があったのですが、今では自然言語で指示するとコードが生成されます。
また、新規にコードを作成するだけで無くて、コードの改善やレビューなどにも生成 AI は活用できます。
調査・問題解決
開発をしていて分からない事があれば、ドキュメントを調べたり、エラーメッセージで検索して解決策を探したり、というのは一般的な作業です。
今までであれば Google で検索するというのが主要な方法でした。今でも Google 検索は引き続き有用ですが、現在は ChatGPT などの生成 AI に日本語や英語で質問するという方法もかなり一般的になっています。
エンジニアに求められるもの、キャリアパスの変化
前述の通りエンジニアの仕事のやり方が大きく変わってきた事により、エンジニアに求められるものも今後大きく変わっていくものと思われます。それに対する意見を書いていきます。
初〜中級エンジニアの需要が減ってエンジニアの待遇が二極化する
まず「初〜中級エンジニア」の定義ですが、例えばWebシステムであれば
- 使えるプログラム言語・フレームワークは主に1つ(例えば Ruby on Rails)
- 基本的な処理の実装は出来る(例えば、データの登録・参照・更新・削除、など)
といった人達です。
話の流れでお分かりの通り、こうした人達が出来る作業のうち、生成 AI を適切に使う事で実現可能なものは徐々に増えていくはずです。それによって「初〜中級エンジニア」の需要は(すぐに0になる訳では無いとは思いますが、)徐々に減っていくと思います。
初〜中級エンジニアに対する需要が減る事により、市場原理として値下げ圧力がかかりますので、初〜中級エンジニアの賃金は今後は横ばいか下がる事が予想されます。
一方、中上級〜上級のエンジニアに対する需要は引き続き高止まりし、結果としてエンジニアの待遇は二極化するものと思われます。
中上級〜上級のエンジニアに対する需要は高止まり
中上級〜上級のエンジニアが行う主な作業は大雑把に言うと
- システム全体のアーキテクチャを設計
- システム固有の難しい処理を実装
だと思います。ただ、今までと違う点としては、こうした作業も生成 AI の力を借りつつ行うようになるという点です。
アーキテクチャの設計に関しては、現時点でも生成 AI と対話しつつある程度選択肢を絞る事が出来ます。ただ、プロジェクト固有の状況などを考慮して最適なものを選択するのは、まだ人間が行うしかありませんので、上級エンジニアの出番となります。
ここで言うプロジェクト固有の状況とは
- 予算
- 人的リソースの質・量
- 連携するのシステムの状況
- 世間のトレンド
- 会社の方針
等々、多岐にわたります。こうした様々な状況が同じプロジェクトというのは世の中に殆ど存在しないため、生成 AI で最適解を出すのは現時点では難しいです。
「難しい処理を実装」についても、ある程度は生成 AI によって行う事が出来ますが、出来上がったコードを現時点のプロジェクトの状況などに合わせて最適な形に修正していくのは、まだまだ人間が行うしかありません。
上級エンジニアへのパスが限定される
現時点ではまだまだ初〜中級エンジニアに対する需要もあるため、初級・中級・上級の人数はピラミッド構造となっています。初級エンジニアのうち才能があり・努力した人が中級になり、中級から上級に対しても同じようにふるいにかけられている、という状況だと思います。
ただ、今後は初〜中級エンジニアに対する需要が減るにつれて、初級 -> 中級 -> 上級というキャリアパスがだんだん難しくなっていくように思います。これに関してはあまり確証は持てないのですが、軍隊や国家公務員のようにキャリア・ノンキャリアみたいにキャリアパスが2つに分かれるのかもしれません。
日本では所謂文系卒の開発者が比較的多いと言われますが(※)、そういう人達は今後減っていくかもしれません。あるいは、そういう人達は、需要が少なくなる初〜中級エンジニアにとどまらざるを得なくなるかもしれません。そして、上級エンジニアになるためには、大学や大学院でコンピューターサイエンスを専攻するのがほぼ必須となり、現在と比べると少数精鋭で育てられていく人が多くなるかもしれません。
※: ちなみに海外でも、コンピューターサイエンス専攻では無い人が、卒業後にプログラミングのコースなどを受けてソフトウェア開発者となる場合もありますが、日本ほど多くはない気がします。
その他、業界の変化
低単価のみが売りのオフショア開発の減少
前述の通り初〜中級エンジニアの需要が減る事により、主にそうしたエンジニアを低単価で供給する事を目的としていたオフショア開発は減るものと思われます。
弊社でも昨年フィリピンに開発拠点を作りましたが、そのような理由により初〜中級エンジニアはあまり雇っていません。
これに少し関連する話ですが、以前(もう8年前ですが)以下のような記事を書きました。
この記事の最後の方で、Upwork の比較的安価で豊富な人材プールを利用して、
- 自分自身では使った事の無い技術を必要とする開発作業を外注する
- 出来上がった成果物を勉強して、短期間でその技術の技術力を一定レベルまで引き上げる
という方法を提案していますが、今では生成 AI で同じ事が出来ます。
プログラミングスクールの内容に変化
前項と同様の話ですが、未経験者を対象としたプログラミングスクールは、現在のように、まずは1つの言語・フレームワークを覚える、というような形のものは少なくなると思います。一方、AI ツールをうまく使いこなすためのコースなどは増えると思います。ただ、それはもはやプログラミングスクールというよりは、現在の Microsoft Office のスクールとかに近いものなのでは無いかと思います。
まとめ
生成 AI は世の中に大きな影響を及ぼしています。ソフトウェア開発に関しても大きな影響があり、個人的な考えとしては、初〜中級エンジニアと中上級〜上級のエンジニアに二極化し、キャリアパスも二分していくと思います。現在エンジニア職にいる人は、生成 AI が本格的に普及する前にできれば中級エンジニアになっておきたいところです。
ちなみに、このブログ記事を書いている途中に、自分の考えを生成 AI に投げてフィードバックをもらって、本文を手直ししたりしました。エンジニア以外の仕事の仕方も大きく変わらざるを得ないなと思いました。
もばらぶでは、生成 AI を取り入れたりしつつ常に業務フローの改善を行って、効率的なソフトウェア開発を目指しています。弊社に対するお仕事のご相談などは、以下のフォームよりお気軽にお問い合わせください。
最近のコメント