生成AIをITエンジニアとしてどうとらえるか?

とある人からお題が出たので、ざっと書いてみた文章。
内容は大したことではなく、世の中でもう散々言い尽くされたことでもある。
でも、自分が生成AIを仕事で使ってみた後の、率直な感想を残しておくことの意味はあるのではないかな、とも思った。

----------------------------------------------------------
生成AIは、エンジニアの生産性を大きく向上する手段としては大変有効である。
しかし、あくまで作業支援の手段でしかなく、仕事における人間の価値あるいは必要性を根本的になくすものではない、という判断をしている。

私は今の現場で、Chat-GPTやGitHub CopilotなどのAI支援サービスを使用している。
私は主に調査やコーディングで使用しているが、生成AIが非常に高精度なコード生成・コード提案をしてくるのに大変感心している。
その結果、生成AIに対する私の評価は、良い方向へ一変した。

具体例を挙げると、一般的なプログラミングにおけるイディオムを学習・理解しており、多少のヒントを与えたならば、ほぼ正解のコードを提示してくる。
また、一般的なライブラリ(言語組み込み、サードパーティ製問わず)の使用方法も高いレベルで理解しており、適切な使い方を一発で提示してくる。
さらに、自プロジェクトのソースコードも解析・理解しており、プロジェクト内の規約、記述のされ方を分かった上でのコード提案も行ってくる。

こういう状況であるため、生成AIの導入後は、私は中核になる仕組みやロジックの実装に集中できている。
これは、いわゆるボイラーテンプレートのように定型的だったり、実装イメージが自分にとって分かり切ったものや、当たり前になっているもののコーディングは、生成AIにほぼ任せられるのが分かったからである。
言い方を変えるなら、コーディングにおいて、手間だったり面倒くさいことをすべて押し付けられる、もう一人の自分が常に身近にいる、という認識をしているほどである。
そのため、今では私は、これらの生成AIがないコーディングは考えられない。
なお、生産性の向上も大変感じており、それを事例を交えて顧客にレポートした結果、プロジェクト全体での生成AIの導入が決定した。

ただし、当然ながら生成AI側はプロジェクトの要件・要求は理解していないので、その部分はこちらからコードであらかじめ表現しておく必要がある。
それに、チャットでコード例を提示させる時も、こちらから具体的な実現イメージや要求をプロンプトで明確に指示しなければ、生成AIが提示するコード例は一般的なものに留まるため、コピー&ペーストでそのまま使えるというレベルからは程遠い。

また、私の立場では「このプロジェクトはどういうものか、どうあるべきか」を常に考え、それをコードやシステム構成で表現・実現しなければならない。
この「このプロジェクトはどういうものか、どうあるべきか」を考えることは、(現時点での)生成AIでは行ってくれない。

私のエンジニアとしての責務は、顧客へ要求をヒアリングしてまとめ上げ、要求を要件へ変換して顧客と合意し、チームに目的・目標を提示して、その実現に向けチームを導くことである。
私のエンジニアとしての価値は、そういったことを高いレベルで自立して行えることである。
それらは、生成AIには今のところ対応できない領域である。
だから、私にとっては価値実現に活用できる非常に強力な手段が手に入ったという認識でしかなく、脅威はまったく感じない。

逆に、手順書に従った作業しか行えなかったり、コードで実現すべき価値への意識が低いエンジニアには、生成AIは大きな脅威になり得る。
しかし、コーディングは手段でしかなく、価値の実現こそが自身の存在意義であると強く意識しているエンジニアにとっては、生成AIは非常に強力なツールである。
そして、生成AIと向き合うことは、自分の仕事とは本質的に何であるか、さらにその仕事で作り出している価値とは何であるのか、ということを見直すいい機会になるであろう。