2021年5月17日 ソフィア・ハーン
長い間AIは神秘主義の独特な雰囲気や大衆文化の中の神秘に覆われてきました。一般的に、人間の知性ならびに注意を要する仕事を遂行できるプロセスや機械を構築する能力をもつ技術は、SF小説やディストピア映画の定番で、しばしば現実よりもむしろお伽話とずっと密接な関係にあるように見えてきました。
しかし、進展する技術は日常生活のほぼあらゆる側面と切り離せないものになりました。実際AIの実用性と効率性は「現実」の一部になりました。このAIの統合は、家庭で使用されるAlexaまたはiPhoneをロック解除する顔認証に留まりません。AI技術はITコミュニティにおけるプロセスを組織化し最適化する主要な戦略になりつつあります。AIで強化されたプログラミングが普及し、開発者に使用され続けるにつれ、その適用及び利点に対する理解が生産性を向上させリスクを軽減させる可能性があります。
AIが開発者の生産性向上を可能に
(とりわけ今日のように)変化の激しい環境でシステムを跨って生産性を維持することは、多くの企業にとって主要な目標です。AI技術の活用は、コーディング及び開発において生産性向上を可能にする効果的な戦略を提示します。例えば、コードを理解するプロセスは、開発者が骨折って分析し、新たな洞察が得られる度に複数回洗練と照会を繰り返さなければならないので、途方もなく時間を消費します。
実際、Phase Changeソフトウェア社の社長スティーブ・ブラザーズ氏は、開発者がバグの修正または変更作業に費やす時間の凡そ75%はコードの照会と理解だと指摘します。AI技術の活用は、開発者がもっと効率的にコードを見つけるのに役に立ちます。何故なら、開発者は特定の振る舞いがどこから来ているかを技術に尋ね、この振る舞いに関連したコードに導いてもらうことができるからです。
ブラザーズ氏は、このタイプの探索の結果は常に包括的であると指摘します。その理由は、それがその振る舞いが生じるすべての場所を見つけ出すからです。「それは推測ではありません。それは予め定められています。基本的にその背後にはすべてを調べるエンジンがあります」と彼は言います。
提案を生産性の高い手段にするためにAIモデルを活用するという応用は、単なるコードの照会以上のものです。ブラザーズ氏は、この開発を開発者と彼らのアプローチ一般に対する支援であると考えています。「それは私達がシステムに望む振る舞いすべてです。どうすればコードをより良いものにできますか?AIは、コードが行っていることがどう反映されるかを開発者が再考し、使用可能な方法でそれをモデル化するのを支援できます」と彼は言います。
AI知識リポジトリ
コードリポジトリはシステムにおける振る舞いの最善かつ最も正確な記述です。開発者にコードベースを調べるための十分な時間を与えれば、彼らは他のいかなる文書も必要としません。しかしそれは費用も時間もかかります。AI技術を使えば、コードリポジトリは開発者が同僚の開発者と同様に、時間的なコストなしにソースコードを理解する知識リポジトリになります。
「AIは開発者がコードを照会するのに役立ちます。プロセスの第1段階は『バグ報告を受け取りました。コードのどこでこれが起きていますか?』と尋ねることです。知識リポジトリがあればその照会時間を短縮できます。AIつまり人間が行うのと同じようにソースコードを理解する知識リポジトリを使うことでこれが可能になります」とブラザーズ氏は言います。
開発者はこの知識リポジトリにコードの振る舞いが何処で起きているかを尋ね、その振る舞いに関連しているコードを迅速に特定できます。「このようにAIを照会に使えば、もっと少ない労力でもっと多くのことができます」とブラザーズ氏は言います。
リスクの軽減
ここで、AI技術の応用はコードの照会に留まりません。それは運用のいくつかの重要な領域でリスクを軽減する主要な要素にもなり得ます。例えば、多くの組織には従業員(特に在職中の上級開発者)の離職という脅威があります。何故なら、これらの各個人はしばしばコードを理解している唯一の人と受け取られているからです。彼らの離職は情報の喪失に繋がり、迅速に対応するという会社の能力を脅かします。
このシナリオにおいて、これらの人々が資産であることは勿論ですが、AI技術を活用することで会社はこうした情報理解のギャップを埋め合わせ、貴重な知識が社外に出て行ってしまうのを防ぐことができます。新しい開発者に見慣れぬコードを学ばせる時間と努力を費やす代わりに、AI技術がソースコードから有用な知識を利用可能にしてくれます。この方法は人間が行うよりもコードの維持管理において非常に時間的効率が高く、おまけにもっと正確です。「このようにAIを使用することで、開発者の離職というリスクを軽減できます」とブラザー氏は言います。
リスクの軽減は、失われた知識のギャップを埋める以上の効果をもたらします。コードに変更を加えるとしたら何が起きるかを、開発者はAI技術に尋ねることもできます。「AIに『この変更を加えようとしていますが、この変更はその振る舞いに限定されていますか?』と尋ねることができるでしょう。そして、あなたは金融サービスの障害またはシステム障害の様な他の極端な結果に陥る可能性があることを絶対にしないでしょう」とブラザー氏は指摘します。
AIを信頼する
AIが手続きを合理化し生産性を向上させられる方法は沢山あるにもかかわらず、この技術を全面的に統合することについていくらかの躊躇いが依然としてあります。最大の障害の1つはAIへの信頼の欠如です。「あなたは、知識をもつAIと達成する必要のあるタスクをもつ開発者との間で起きる協力について話しているのだから大事なことを信用しなさい。あなたはAIを信頼できるようにならなければなりません。もしこのような物を実装しようとしているなら(それを書くか、ツールを買いに行くかのどちらにせよ)結果を信頼できた方が良いです。あなたは、正確であると思われていて、最善のソフトウェア開発者よりもソフトウェアのことをもっと良く知っている知識リポジトリに話しかけています」とブラザーズ氏は言います。
急激な変化を受け容れる人達にとって、結局のところAI技術は、コード照会の時間を削減し、開発の観点でリスクを軽減するのを可能にしながら、その知識リポジトリを使って開発者が自身の才能や能力を伸ばすのに役立つパートナーになります。丁度二人の同僚が各々の強みを発揮するように、AIと開発者は人間が一人で働くよりも多くのことを遂行します。
編集余禄:AIにプログラムを作らせてみた
この記事を翻訳している最中に、「2023年現在のAI技術でプログラムを作らせたらどこまでのことが出来るのだろう?」という興味が湧いてきました。そこで、今話題のChatGPTとBingがどの程度のコーディング能力を持っているかを調べてみることにしました。
結論から言えば、ChatGPT及びBingのいずれも、中々良いコードを作成しますし、それに対する説明も予想以上の丁寧さでした。現在のレベルでもコード作成の支援ツールとして十分に実用に耐えると言えるでしょう。最近これらのAIツールが急速に進化を遂げていることを考えると、コーディング作業が人間の仕事でなくなる日はそう遠くないような気がします。AlexaやSiriなどとのインターフェースを使えば、文字通りAIとの対話で「こんなプログラムを作って」とAIにリクエストし、何回かの会話によるやり取りの結果コードが作成されるという構図は容易に想像できます。
まず、ChatGPTに「1000以下の素数を求めるプログラムをRPGで作成してください。」と入力してみました。RPGで作成する様に指示をしたのは、そもそもChatGPTがRPGというプログラミング言語を知っているか興味があったからです。待つこと凡そ15秒で図1のような応答が帰ってきました。このChatGPTが作成したコードは、プロタイプ(PR)やプロシージャインターフェース(PI)の宣言部に指定桁が明らかに誤っている部分があるものの、プログラミング支援としては十分役立つレベルのものでした。
▲図1. ChatGPTが作成したILE RPGプログラム
作成されたプログラムに対するコメントを読むと、RPGで作成するという指示を最初はRole Playing Gameのことと勘違いしたようですが、最終的にILE RPGでプログラムを作成しています。どうやらChatGPTはRPG言語(しかもILE)を知っているようです。さらに、親切なことにプログラムの後ろにその簡単な説明も付いています。
ChatGPTはFF RPGを知っているか?
ここで、FF RPGでコーディングもできるかも知れないと欲が出て、FF RPGでプログラムを作成する様に指示しましたが、エラーメッセージが返ってくるだけでプログラムは作成されませんでした。ところが、少し質問文を変え「1000以下の素数をリストするプログラムをRPGで作成してください」と質問したところ、前の世代(IBM i 7.1レベル)のFF RPGではあるものの、図2のようなFF RPGによるプログラムを返してきました。
▲図2. ChatGPTが作成したFF RPGプログラム(図3に続く)
▲図3. ChatGPTが作成したFF RPGプログラム(図2の続き)
このプログラムにも、プロトタイプ(PR)、プロシージャインターフェース(PI)及びプロシージャの独立変数の定義の指定桁に誤りがありますが、修正作業はごく簡単に済むものであり、プログラマーの支援機能としては十分使えるレベルといえます。
どうやらChatGPTは完全自由形式ではないもののFF RPG言語を知っているようです。ただ、何故突然FF RPGによるコードを返してきたのか理由は分からないままです。これはどうやったら確実にFF RPGによるプログラムを作成させられるか不明であることを意味しますが、少なくともChatGPTがFF RPGのコードを生成する能力を持つのは確かなようです。しかも簡単なプログラムの解説まで付いている点は図1のケースと同様です。
驚いたことに、上記(図2と図3)のプログラムを作成させてから数日後にChatGPTに再度同じ質問をしたところ、図4のような更に洗練されたFF RPGのプログラムを作り出し、そのプログラムには「エラトステネスの篩」というアルゴリズムが利用されていることまで解説しています。これは推測に過ぎませんが、ChatGPTは文字通り日々学習し進化しているのかも知れません。
▲図4. ChatGPTが作成したFF RPGプログラム
BingはRPGを知っているか?
ChatGPTの場合と同様にBingにも同じプログラム作成を指示してみた結果を以下に示します。
▲図5. BingにRPGプログラムの作成を指示
図5にあるように、RPGが何を意味するのかをBingが尋ねてきており、選択肢として「Role Playing Gameのこと」か「プログラミング言語のこと」のどちらかを選ぶよう要求されています。ここではプログラミング言語を選択しました。
待つこと約15秒で図6のようにILE RPGを使ったプログラムが提示されました。
▲図6. Bingが作成したILE RPGプログラム
ChatGPTが作成したRPGプログラムに比べると、コード行が適当な空白行で区切られておらず、コードの可読性がやや劣る感があります。また、BEGSR命令の指定桁に誤りが見られます。とは言うものの、プログラミング支援という観点では十分実用に耐えるレベルのコードが生成されていると言えるでしょう。
更にBingの場合、作成したプログラムを表示した後、そのプログラムの動かし方を知りたいかと尋ねてきました。表示された選択肢の中の「RPGコードの実行方法」を選ぶと図7のような実行手順が表示されました。
▲図7. Bingによる作成プログラムの使用法説明
ここまで細かな情報提供があることまでは予想していなかったので、これには正直本当に驚きました。
BingはFF RPGを知っているか?
次に、ChatGPTの時と同様に、FF RPGを使って同じプログラムを作成するようBingに指示してみました。するとFF RPGの意味が理解できないようで(というより、いくつかの可能性が考えられるので迷ったと考えるほうがフェアかも知れません)、FF RPGについてもう少し情報を提供するように求められました(図8)。
▲図8. BingからFF RPGに関する追加説明を求められる
ここで、FF RPGとはFree Form RPGの略のことだと答えると、これまた15秒程で図9のように完全自由形式のRPGでコーディングされたプログラムが提示されました。
▲図9. Bingが作成した完全自由形式のRPG
まとめ
このレポートを執筆している時点でのChatGPTやBingは、同じ指示に対して毎回異なるRPGプログラムを生成したり、生成されたプログラムに些細ではあるものの誤りが含まれていたりしたため、安定性、信頼性、正確性という点でその完成度にはまだ不満が残ります。しかしながら、プログラミングの補助・支援ツールとして考えた場合、どちらも現時点で既に十分利用できるレベルにあると言えます。また、FF RPGの学習支援に利用するという使い方も現実的なように思われます。印象的にはBingの方がChatGPTよりも若干新しいRPGの知識を利用している感があり、FF RPGをメインに考えるのであればBingを使うのが良さそうです。ただし、これはあくまで現時点での話であり、今後状況が大きく変わる可能性はあります。
今後、AIは更に急速に進化するものと予想されます。皆さんもどのようなAIの使い方ができるか、是非色々探ってみてください。きっともっと素早く、品質の高いプログラム開発を行う方法が見つかると思います。
AI技術を活用することで、ソフトウェア開発、維持管理の生産性が大幅に向上でき、さらに技術者の流出による社内スキルの喪失リスクも軽減できると筆者は主張しますが、そのためにはAIに対する信頼感が不可欠だと言います。また、この記事の余禄として、今話題のChatGPTとBingによるプログラム作成の可能性を探ってみたところ、驚くべき現実も見えてきました。ご一読のうえ、IT分野での開発や運用にAIを活かすことを考えてみてはいかがでしょうか。(編集部)