最終更新日:
2022年12月にリリースされたChatGPTに興味をもったTomich氏は、同AIにソフトウェア開発に関する質問をしたり、簡単なメモアプリの開発について尋ねたりして同AIの有効性を検証しました。その結果、同AIはソフトウェアエンジニアを代替するものではないが、開発業務を支援して労力を削減する助けにはなるだろう、という見解にいたります。
ChatGPTライクなAIツールがソフトウェア開発を効率化すると確信したTomich氏はさらに考察を進め、AIツールはソフトウェア開発初級者や低スキルなエンジニアから仕事を奪う可能性がある、と指摘します。そして、同氏はAIから仕事を奪われないためにはコンピュータ全般に関する工学的知識のような「エンジニアリングに関する教養」を学ぶ重要性を力説します。こうした教養は、AIツールが苦手とする高度な論理的思考が要求される開発案件を解決する能力の土台となると考えられます。
ChatGPTをはじめとするコード生成AIについては、AINOWで関連する記事を公開しています。以下のような記事も参照するとよいでしょう。
『AIはプログラマーを代替するのか?』
『ソフトウェア開発はもっと楽になる?普及が進むコード生成AIレポート』
なお、以下の記事本文はChristopher Tomich氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。また、翻訳記事の内容は同氏の見解であり、特定の国や地域ならびに組織や団体を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
以下の翻訳記事を作成するにあたっては、日本語の文章として読み易くするために、意訳やコンテクストを明確にするための補足を行っています。
目次
適応すれば、未来は明るい
私は、AIやML(Machine Learning:機械学習)の開発に関して、ソーシャルであろうとメインストリームであろうとおよそメディアが作り上げる主張に対して、常に疑念を抱いている。過去10年間の多くの誇大広告について、多くの人が私のように疑っていた。
私はAIやMLモデルの応用について深い知識を持っているわけではないが、この技術の基本的な部分については大多数の人よりもよく理解している。この分野での技術的、数学的成果を理解しているからこそ、多くの主張が(完全にではないにしても)少し誇張されているように感じるのだ。
そんなわけで先日からChatGPTのコメントを見かけると、これもまた大げさな話だと感じた。DALL-E 2のために開設したOpenAIのアカウントを持っているので、ChatGPTを試してみて、「すごさ」を自分で体験してみようかと思った。
実際にChatGPTを使ってみて、皮肉な「驚き」がすぐに消えて、本当の「驚き」になったとは私は認めたくはない。ChatGPTは本当にすごいもので、将来のソフトウェアエンジニアリングのあり方を垣間見せてくれるのだが、私が思うにこのAIは一部の人が考えているようには未来を変えない。
実際、ChatGPTによる生産性の向上が大きすぎて、実際に職を失ってしまう人もいることだろう。
その前にDALL-E 2についてだが…
私はDALL-E 2についてのYouTube動画(※訳註1)を視聴したのだが、その動画はデザイナーとアーティストの視点から、このAIが彼らの仕事のやり方をどのように変かえられるかを示していた。要約すると、デザイナーやアーティストの代わりにはならないということであった。
むしろDALL-E 2は生産性を向上させるアシストツールになり、ユーザにとってのバーチャルミューズ(※訳註2)として助けになってくれるかも知れない。
DALL-E 2に関する動画を視聴した後、私はそれを自分で体験する必要があり、動画が技術を誇張していないかどうかを確かめてみたくなった。実際にアクセスしてみると、感動したことを認めざるを得なかった。
同時に、自分が入力したものから生み出される画像が自分の想像していたものに近くはないこともわかり、デザイナーやアーティストの代わりにはならないが、彼らを助けられるという動画の指摘を理解できた。
DALL-E 2を体験したものも、この技術がアーティストやデザイナーの働き方を変えてしまうかも知れないということの重大さを、私は完全には理解できていなかった。私はアートやデザインの分野で仕事をしたことがないので、彼らがどのように働いているのか、全くもって知らない。私がDALL-E 2と接した時には物語にもとづくシーンを生成するために使っていただけなので、そのユースケースは極めて作為的であった。
ChatGPTと会話型ソフトウェア開発
DALL-E 2を使った時点で、OpenAIのチームがソフトウェア開発用に同じようなものを作っているのではないかとすぐに私はいぶかしんだ。そして、DALL-E 2のようなAIベースのツールを、私が使い慣れたユースケースで体験してみたくなった。
ChatGPTの最新リリースで、OpenAIのチームは明らかにソフトウェア開発版DALL-E 2の開発を実行した。率直に言うと、これは本当にソフトウェア開発者としての仕事のやり方を変えるだろうし、ある人たちにとっては、ソフトウェア開発キャリアの終わりの始まりになるかも知れない。
最初にChatGPTを使った時は、ネットでみんながやっているのを見て、よく知られたアルゴリズムを構築させたり、コードに関する質問をしたりと、ソフトウェア開発に関する作為的な質問をしただけだった。
ChatGPTの出力は印象的な部類のものだったが、経験豊富なソフトウェアエンジニアである私なら、おそらく同じように素早く解答を書くことができ、その正しさについてもより確信が持てるだろう。すべてのAIツールを動かす主要なアルゴリズムは、合理や論理ではなくパターンにもとづいているため、実行に際して誤りがあるのは当然だ。
次の試みは、別の角度からアプローチすることを選んだ。現在、私はFlutterで簡単なメモアプリを作っているのだが、ChatGPTを使うとどうなるのか見てみたくなった。そこで「Flutterで簡単なメモアプリを作るにはどうしたらいいのか」と質問してみた。OpenAIのAPIがレート制限されているため、アプリケーションの半分しかできなかったと推測されるのが、ChatGPTがやったことは、基本的なメモアプリ開発としては良いスタートとなった。最も重要なのは、このAIによって私がやるべきだった多くの基本的なタスクを完了したことだ。そうしたタスクとは、
- 私のアプリケーションのための基本的な開始アーキテクチャに関する提案。
- 私のアプリケーションのための定型的なコードの提案。
- 私のクラス名に関する提案。
以上のようなChatGPTが実行したタスクの価値は大きくはないし、大きいとも期待していなかった。これらのタスクはすべて私自身が行えたものだが、ChatGPTに実行してもらうことで多くの時間を節約できた。さらに私はそれと「チャット」を続け、より多くの機能を構築させ、生成されたコードをさらに洗練させられた。こうした体験は、私のために退屈なコーディングをしてくれる、少し愚かな人間のアシスタントを持つようなものだった。
前述したメモアプリ開発の基本的な作業に加え、デザイナー向けのDALL-E 2のようにChatGPTと対話することで、まだ考えていなかったメモアプリの他の部分についてもインスピレーションを得られた。ChatGPTがバーチャルミューズのような役割を果たすことの威力は、過小評価されるべきではないだろう。このコンセプトはとても強力で、IBMで働いていた昔の仕事仲間は、初日にテディベアを渡され、「これはテッドで、素晴らしい問題解決者だよ」と言われたと話してくれたのを思い出した(※訳註3)。
仕事仲間が続けて「問題に行き詰まったらテッドに言って、それでも解決しないなら他の人に助けを求めなさい」とも言われたと話してくれた。この話は、初心者に「他人に迷惑をかけるな」と諭す回りくどい試みではない。問題を語り言葉にすることで、解決策が見えてくることもある、という大切な教訓を教えてくれている。ChatGPTはさながらストロイド強化されたテッドなのだ!(※訳註4)
ソフトウェア開発の未来と「私は必要とされるのか」という実存的な問いかけを垣間見る
以上のようなChatGPTとの最初のインタラクションだけで、今後の展開に大きな期待が持てる。AIモデルが単純な比較のif文(GitHub Co-pilotで見せてもらった「すごい」ことのひとつ)を書く以上に、日々のワークフローの一部として、より重要なプラスの価値を実際に提供しつつあることが私にはわかり始めている。
こうしたわけで次のような疑問が生じる。ソフトウェア開発者は未来においても必要とされるのだろうか、と。この質問に対する「間違いなく必要とされる」という答えは、驚くべきものではない。この答えを延長したら導き出せる落胆させられることとして、ChatGPTライクなツールの価格が、初級以下のソフトウェア開発者の仕事の報酬額になることがある。
ソフトウェア開発コミュニティのあいだでは、ほとんどの人たちがGoogle、Stack Overflow、そして「コピー&ペースト」を使ってコードを書いているというジョークが絶えない。古い慣用句がそうであるように、どんなジョークにも一抹の真実があるものだ。インターネットからコードをコピー&ペーストすることが日常業務になっている人たちがいることを私は知っている。
NPMの「left-pad」のような悪名高い出来事(※訳註5)は、多くの人がしばしば基本的な思考を外部委託するのを選択することを示している。この場合、危険なのは思考の外部委託を行うという行為ではなく、その理由である。時間の節約になるからやるという人も多いだろう。また、「やり方がわからないから」という理由も多いだろう。最近のAIの進化を心配しなければならないのは、この後者のグループである。
AIの進歩に伴い、定型クラスの作成、アルゴリズムの実装、簡単なウェブフォームの構築、簡単なデータ処理など最も基本的なプログラミング作業は、ますますコンピュータの助けを借りて行われるようになるだろう。現時点ではこれらの作業の一部は時間がかかるため、企業はこうした作業を行うために、初級以下のソフトウェア開発者を雇うことになる。こうした状況は必然的に変わっていくだろう。
ChatGPTのようなツールの急速な進歩により、ビジネスアナリストやデザイナーのような技術経験のない人たちが基本的な開発業務を自分で行うようになるだろう。IDE、SDK、コンパイラなどの支援ツールは視界から隠れてしまうほどにまで進化し、誰でもすぐにセットアップができ、使用するのに訓練がほとんど必要なく、既存のビジネスドメインの知識だけでできるExcelに近いものになるのではないだろうか。
このような未来が必然的に近づいていると仮定すると、エンジニアはどこへ向かうのだろうか。基本的な繰り返しの作業がAIによってますます実行されるようになると、残された仕事は高度に技術的で環境に特化したものになるだろう。このような問題は、論理的・合理的思考への依存度が高いという仕事の特殊性から、パターンベースのAIでは手に負えなくなるだろう。
例えば、私が本業で行っている仕事の大半は、定型的な仕事ではない。私の仕事とはビジネスニーズを理解し、そのビジネス要件を達成するために、信頼性と拡張性のある方法で複数の無関係なシステムを使用する方法を考え出すことである。
私の日常業務では、ネットワーク、分散システム、データレイヤーの技術を理解し、これらの技術を活用して、自分で調査し定義しなければならないことが多いビジネス上の問題に対するソリューションを構築することが求められる。仕事でGoogleやStack Overflowを使うことはほとんどないのだが、その理由は私が扱う問題のほとんどがオーダーメイドで既製のソリューションが存在しないからである。
この事件はleft-padに相当するモジュールを自力で実装できるが、労力の節約から外部に委託することを選択した結果、モジュールの削除という不測の事態が生じた時に混乱に陥ることを示している。
未来でも生き残る人材になる方法とは?
(「AIツールが台頭する未来を生き残るには」という)質問で最も興味深いのは、その答えがDALL-E 2やChatGPTのようなものが私のレーダーに映る以前の10年前に私が誰かに言ったであろうこととあまり変わらないように思えることだ。そんな質問に対するアドバイスの核心とは、以下のような2つの主要な原則にまとめられる。
- 顧客と彼らが直面している問題を理解するために時間をかけること。
- 技術的なことに時間を費やすなら、基本的なことを理解して、その基本をよりよく理解すべき。
2つ目の原則については、ソフトウェア開発の初心者であれば、主要なツールであるコンピュータについて理解することを意味する。ここで言う「コンピュータ」とは、携帯電話、PC、サーバ、OS、ブラウザ、ネットワーク、ソフトウェア・アーキテクチャ、分散アルゴリズムなどコンピュータに関するあらゆるものを指す。百科事典のような知識は必要ないが、少なくともさまざまな側面について知っている必要がある。こうした「基本的な知識」を問うのにうってつけのテストがある。例えば「ブラウザにgoogle.comと入力するとどうなるか」という質問をされたとき、あなたの答えはこうだろうか、それともこうだろうか(※訳註6)。
もし、あなたが後者なら、何も心配することはない。あなたの答えが前者のように見えるなら、ChatGPTとその仲間はあなたの仕事を奪いに来るので、後者になるように努力しよう。
もしあなたがソフトウェア開発に数年携わっていたとしても、以上のアドバイスはソフトウェア開発初心者と同様に当てはまる。日々使っているツールについて学ぶのに、遅すぎるということはない。しかし、もし基本的知識を深く理解していることがあなたの強みではないのなら、あるいはもしあなたの強みがコミュニケーション能力や人と一緒に働くことにあるのなら、そちらのほうに力を注ぐようにしよう。
人の問題と技術的な問題の交差点には、常に人が必要である。ノーコードコミュニティの爆発的な成長は、このことを証明している。優れたビジネスアナリストと優れたプロジェクトマネージャーは、常に必要とされる存在だ。「優れた」と強調したのは、平凡なビジネスアナリストや平凡なプロジェクトマネージャーはすでにたくさんいて、彼らは何十年も苦労しているからである。
適応する者には明るい未来が待っている
ChatGPTやその他のツールが近い将来普及するかも知れないが、そのことはソフトウェア開発にとっては非常にポジティブなことである。ソフトウェア開発スキルの低い人たちは、別の役割を見つける必要があるだろう。
もしスキルの低い開発者がスキルアップを望むなら、より大きく、より高い報酬を得る機会が待っていることだろう。ChatGPTをはじめとするAIベースのテクノロジーは、知識のあるソフトウェア開発者の生産性を大幅に向上させるだろう。
いずれにしろ(ChatGPTのような)AIソフトウェア開発者がやってきて、あなたの仕事を奪っていくだろう。しかしありがたいことに、そうした奪われる仕事はかなりつまらないものなので、仕事が奪われたとしてももっと面白いことを見つけられるだろう。
原文
『ChatGPT Will Change Software Engineering — But Not in the Way You’re Hoping』
著者
Chris Tomich
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん