TechBlog

AIによりシステム開発がどれくらい効率化されたかと、工程と役割の変化について

# 概要

ここ 1 ~ 2 年で生成 AI の精度が爆発的に上がり、それを使用した様々なツールが出てきたことで、システム開発そのものが従来とは全くの別の仕事になってきたと思う。

システムにかかるコストは消費者側への価格転嫁になるため、市場競争においてサービスを提供する事業者も、そこから受注を受けるシステム会社も、AI を使用してシステム開発を効率化させることは避けられない課題となってきていた。(まあ官公庁利権とかある一部の会社とかは別だけど。。。

まだまだ AI による仕事の変化は起きている最中だと思うが、ここで現時点で思うシステム開発における AI によって起きた効率化具合や業務や役割の変化などをざっと書いてみる。

# 工程の変化

# 要件定義~基本設計

顧客の要望する業務要件を実現させるため、様々な技術調査や業務上のリスクなどの調査などを、従来はそれなりの手間暇をかけてやっていたと思う。

AI により、メモ書きレベルのラフなテキストから、機能要件非機能要件限らず AI が最適な内容を提案してくれるし、それら内容をドキュメント化してくれるようになり、手を動かすことはだいぶ減り、人間は PJ 固有のコアな部分のみ頭を使って考えればよくなった。

要件定義で作成したドキュメントをもとに、基本設計をしていくと思うが、DB テーブルや API など、がっちりとした定義が必要なドキュメントも自動でほぼ 100%に近い精度で作成されるし、よほど複雑ではない限りアーキテクチャ設計周りも、構成やフローなど視覚的な情報が必要なものもほぼ AI に任せられるレベルにはなった。

システム会社側だけで完結する領域ではないため、完全 AI 化はまだまだ難しい領域だと思うが、AI により体感的に 5 ~ 6 割くらいはかかるコスト減ったと思う。

# 詳細設計~実装

機能の内容にはよるが、簡単な機能や型のはまったロジックであればコーディング作業はほぼ 100%AI でやれる領域となった。

よほどの尖った PJ や会社でない限り、程度の違いはあれ AI 駆動開発がデファクトになりつつあり、コーディングをやらない代わりに実装したい内容を詳細設計としてドキュメント化(AI に読み込ませるコンテキスト化)し、人間は生成されたコードをレビューやテストをするだけになってきた。

また、開発者の仕事とは少しずれるが、デザイン系の AI ツールもだいぶ普及してきて、従来 figma などデザインツールが出す内容をコードに落とし込む、といったことも近々なくなってきつつある。(そもそもそれエンジニアの仕事か?的な話は置いておいて )

TIP

AI デザインツールの進化が最近すごすぎて、もはや自然言語からデザイナーが作成したレベルのおしゃれなデザインやデザインシステムが出来上がるので、この辺エンジニア以上に AI によって人の手がいらなくなってきそうなところだと思う。

もちろん行動心理とか、業務用途に沿った見た目とか、UI UX はその辺奥が深いので、そういった観点を考える役割は絶対必要だし、AI が作ったものを微調整するスキルは無いと仕事では詰むので、人が全く必要なくなるってことはないけど。

コーディング作業がほぼなくなり、レビューや AI 開発環境整備などがメインの業務となり、ジュニア層がマンパワーでやるところがごっそり必要なくなったため、体感的に 8 ~ 9 割くらいはかかるコスト減ったと思う。

# サーバ構築

コードでの構成管理つまり IaC がやっぱ AI の恩恵受けられまくりだと思っている。 5,6 年前に IaC 流行った時とか、ちょくちょく仕組み変わるし、変なところでデプロイにハマりがちだし、再現性あるコード保つのにメンテがめっちゃ必要だったり、めっちゃ効率悪くね?って思ってすたれた時期あったが、巻き返してきた感がめっちゃする。

とはいえセキュリティ観点やシステム障害リスクの観点から、クラウドのポータルやサーバに入ってやらないといけないことはまだまだ結構ある。

今自分が AI で IaC 使ったインフラ環境整備とかはやってないが、依然として IaC の先ほど書いた問題は存在すると思っていて、それらを AI でどう対応してるか正直よくわからないので、完全に想像だが、2 ~ 3 割くらいのコスト減かな。たぶん。

# テスト

コーディング同様、テストコードもかなり高い精度や観点で AI で自動生成できるので、単体~結合テストまではもうほとんど書かなくてよくなった。

e2e テストもかなりの高い精度で書いてくれるので、実質テストはシステムテストだけやる形になってきたかと思う。

システムテストは業務観点でのチェックや、インフラが絡むと自動化が難しいところなどがあり、まだまだ人の手は必要となるため、体感的には単体~結合が 8 ~ 9 割くらい、システムテストはほぼ変わらずで、全体で 5 割ほどのコスト減、ってところだと思う。

# 運用保守

システム障害が起きた場合やバグが発覚した場合、監視からのアラートや出力されるログを確認し、一次対応やその後の恒久対応などを行うが、内容によってはかなり時間を取られるものがあると思う。

AI により、エラーログ、構成、コードなどを AI が分析し、どういった対応をすべきかある程度の指針は出してくれ、調査工数は爆発的に下がったとは思う。

ただ、例えば DB をリストアとかバッチがこけていたら再実行するとか、そういうのを自動化するのは運用上リスクがありすぎるので、そういった対応や判断は人の手はまだまだ今後もずっと必要だと思う。

バグの修正対応や機能追加などの対応は、自然言語で指示してチケット発行及びコードの変更、PR を出すまでを自立的に行ってくれる環境が作れるようになってきたので、そういったちょっとしたところでの効率化はかなりされてきた。

それら踏まえるとこれも体感レベルだが 5 ~ 6 割くらいコスト下がったかなと思う。

# 今後+α で求められるスキルや役割

# 上流工程層

顧客との各種調整での AI を活用した各種効率化、例えばドキュメントや議事録の自動生成、スケジュール自動登録、資料参照をチャットボット化、とかそういうのはやっていき効率化していく必要あるので、そういったものは必要かと。(あんまりこの辺詳しくはない)

基本設計周りは、いかに AI に正しい情報を渡せるかや、AI が出したアウトプットをレビューしたり改善したりといったことは必要になる。まあこれも結局は自分で考えないといけないことが大半なので、従来の役割とあまり違いはないけど。

また、最新の AI 技術をキャッチアップして、それを導入して PJ の生産性や品質をよりアップさせることができるかといった判断やその PDCA 回したり、といったことは必要なスキルになると思う。

あとは、これ個人的に一番今後重要になると思っているもので、顧客側も AI によりコストや納期が爆発的に減る前提で発注してくるようになってきているので、AI で削減できるところできないところをロジカルに、 IT あまり詳しくない人に説明できる、といったものは必要になる。

# 下流工程層

だいたい以下の 3 つの役割及びそれに必要なスキルが必要になってくる思ってて、これら業務を行うためのスキルはジュニアエンジニアであろうとできなければならないようになりつつある。(そうしないと仕事が回らない)

  1. AI へ実装やテスト作成の指示だしと、AI が出すアウトプットをレビューする
  2. AI が高パフォーマンスで開発を行ってくれるよう、各種 AI ツールの選定やその環境整備、AI に読み込ませるコンテキストのメンテ
  3. AI で解決できないような実装、例えばタイミングの制御が必要な非同期処理、画面の複雑な挙動、特殊事情での一般的な実装をしない処理などの実装

従来はジュニア層に簡単なバグ修正や既存実装を元とした類似機能の横展開、テストなどをやってもらってきたかと思うが、それらがすべて AI で代替されたことで、ジュニア層は「1.」と「2.」のスキルを必ず身につけなければならない。

WARNING

未だに全部手動でコーディングをやっている会社や PJ もあるとたまーに聞くが、それら業務をやっているとエンジニアとして取り残されてしまうので、業務では使用しなくても自己学習や個人開発などでそれら技術やツールに触れておかなければならない。マジで。

# まとめ

AI により特にここ半年~ 1 年くらいで劇的に働き方変わったな、と同時に、アメリカみたいに日本でもこれから IT 人材の大量解雇祭りが始まるかなと思うと、産業革命って残酷だなーと思った。

とはいえそういった競争あってこその社会や国の発展なので、いつの時代でも時代の流れに対応し自己研鑽していくことが大事なのかと改めて思った。

今ジュニア層の人やこれからエンジニアになろうとしてる人にはこんな逆風の中、結構大変だと思うけど頑張ってほしいと思う今日この頃。