ここでも何度も取り上げている(その1、その2、その3)O'Reilly Mediaのコンテンツ戦略担当副社長マイク・ルキダスが、また AI とプログラミングについて興味深い文章を書いている。
AI による開発支援というと「AI 支援付き開発」を謳うマイクロソフトの Visual Studio IntelliCode が浮かぶが、それよりさらに進んで AI とのペアプログラミングは可能かという話である。
ルキダスがまず指摘するのは、多くの AI システムについて、我々が AI を「神託(oracle)」みたいに見ていること。つまり、人間が入力を入れたら、AI が答えを出力してくれる、みたいな。しかし、そうした片方向の情報モデルには問題が多く、例えば医療分野で AI の導入が進まないのも、医師はメンツを AI に潰されることを恐れるからという側面がある。
我々に必要なのは機械と対話する機能なのだけど、そのユーザインタフェースがまだないとルキダスは書く。別に完璧なインタフェースが必要なのではない。すべての情報を把握しているわけではない環境下において、インテリジェントな(人工知能の)パートナーとその解決策を探求する機能があればよいのだ。何か試してみて、それでダメなら第二、第三のソリューションを試してみるような。
エクストリーム・プログラミングやその他のアジャイルな方法論で最も重要なのは片方向でないことだった。これらの方法論は、何か作ったら顧客からのフィードバックを取り込んで改良するイテレーションを重視した。
ルキダスは、ソフトウェア開発者と顧客の共同作業に、上に書いた「神託としての AI」の先にあるものを見ている。つまり、我々に必要なのは AI にコーディングの指図をされることじゃなくて、AI の提案を人間のプログラマが磨きをかけ、両者が解決策に向けて協力するような双方向の情報モデルである。
そのソリューションはおそらく IDE に組み込まれるだろう。プログラマがやりたいことを、不正確で曖昧な英語でざっと記述することで始める。AI はその解決策がどんなものになるか、おそらくは疑似コードみたいなスケッチでそれに応える。それを受けてプログラマは、豊富なコード補完機能(つまりそう、GitHub とかそうしたものにあるすべてのコードを学習したモデルに基づく)を使って実際のコードを埋めて書き継ぐわけだ。
こうして訳してみると、Visual Studio IntelliCode が GitHub にあるコードを機械学習している話も連想するわけだが、重要なのは人間のプログラマと AI の双方向的な共同作業、つまりはペアプログラミングの可能性である。AI はまだバグを検知して修正するのはあまり得意ではないが、何かおかしいときにプログラマに注意を促すのはとても得意とルキダスは見ている。
これは機械とのペアプログラミングだろうか? たぶんそうだろう。代理人よりも共同作業者に近い形で機械と協力している。プログラマにとってかわることじゃなくて、プログラマをより良いものにし、より迅速で効果的なやり方で仕事をするのが目的になる。
これはうまくいくだろうか? 私には分からないが、我々はこういうものをまだ作っていない。今こそそれにトライするときだ。
これは少なくともコーディングの自動化より面白そうな試みに思えるが、果たしてプログラマと AI のペアプログラミングは実現するのだろうか?
- 作者:ベック,ケント,アンドレス,シンシア
- 発売日: 2015/06/26
- メディア: 単行本