Publickey新野淳一IT羅針盤

AIや機械学習を用いたアプリ開発支援サービス、その現状と展望とは?

AIの発展により自動運転や無人レジなど、さまざまな分野で自動化が進んでいる。それはソフトウェア開発の分野も例外ではなく、すでに少しずつソフトウェア開発の自動化が始まっている。代表的な例を見ていこう。

IT業界の天才が取り組む「Software 2.0」とは?

IT業界における伝説的な人物の一人に、CPUアーキテクトのジム・ケラー氏がいます。ケラー氏は2000年代初頭に、AMD社のサーバー向けプロセッサ「Opteron」の開発に携わり、そこで使われたAMD64アーキテクチャは現在の64ビットプロセッサの事実上の標準となっています。その後、ケラー氏はアップル社へ移籍し、iPhoneやiPadのプロセッサの設計に関わり、昨年発売されて高性能が話題となった「Apple M1」チップへと続いています。

2012年、ケラー氏はアップル社を去って再びAMD社へ戻ります。そして今度は「Zenマイクロアーキテクチャ」の開発に関わり、それが現在の「AMD Ryzen」プロセッサの大躍進につながっています。

このようにケラー氏はIT業界、とくにプロセッサの設計において天才と言われる業績を次々に残してきた人物です。そのケラー氏が2021年1月、AIプロセッサを手がけるカナダの新興企業Tenstorrent社のCTO(最高技術責任者)に就任したことが報じられました。

ケラー氏は次に何をしようとしているのでしょうか。Tenstorrent社はケラー氏のCTO就任にあたり、次のようなコメントを発表しました。

「As CTO, Keller will lead Tenstorrent's efforts to be the hardware solution needed to address Software 2.0, the exciting industry shift towards using machine learning methods to solve problems previously addressed by traditional software.」

要約すれば、「ハードウェアを用いたソリューションでSoftware 2.0の課題に取り組む」ということになります。

ケラー氏が取り組む「Software 2.0」については、2019年3月の本コラム『誰もが「機械学習」を使うようになる世界と「Software 2.0」におけるプログラマーの役割とは?』(https://cn.teldevice.co.jp/column/19709/)で、すでに話題にしています。

簡単に言えば、プログラマーがコードを書くことでつくられる現在のソフトウェアが「Software 1.0」だとすれば、機械学習やAIによってコンピュータ自身が学習することで、能力を獲得して実現されるソフトウェアが「Software 2.0」です。例えば音声認識や画像認識などの分野において、機械学習が登場したことで飛躍的に認識率が向上したことはご存じでしょう。あるいは囲碁や将棋、チェスなどの分野でも、機械学習の登場でコンピュータによる指し手が人間の能力を上回るようになったこともよく知られています。

このように従来は人間によるプログラミングの成果として実現されていた機能が、機械学習によってコンピュータ自身が学習して能力を獲得することで実現されようとしています。

今回はその現状について、まとめてみましょう。

機械学習が先のコードを予測

多くのプログラマーにとって機械学習でプログラムを生成することの可能性を身近に感じたのは、マイクロソフト社が2018年にAIを用いてプログラマーの開発を支援する機能「Visual Studio IntelliCode」を発表したときではないかと思います。

マイクロソフト社の開発ツールである「Visual Studio」には、プログラマーが記述するコードの補完、入力候補の表示、ヒントの表示などによってコーディングを支援する「IntelliSense」と呼ばれる機能がありました。このとき発表された「IntelliCode」は、機械学習を用いることでIntelliSenseをさらに前進させ、範囲を広げたものです。従来のIntelliSenseよりも、より適切なコードの補完候補の提示、ヒントの表示などを実現してくれました。またプログラマーが入力しているコードをその場で分析し、なにか問題がありそうな部分があればコメントしてくれる機能も備えています。

IntelliCodeが登場した1年後の2019年には、さらに機能が進化しました。ある行を数文字入力すると、「続きはこんなコードになるのでは?」とばかりにコンピュータが行の最後までの候補を提案してくれるようになったのです。IntelliCodeの機械学習はGitHubなどの公開されているコードをもとに行われていますので、典型的なコード内容であればどんどん先読みしたコードを生成してくれるでしょう。

Visual Studio IntelliCode
図1●マイクロソフト社が2018年に発表した「Visual Studio IntelliCode」。AIを用いることでプログラマーの開発を支援する

「こんな画面がよいのでは?」とコンピュータが提案

一方、Google社はノーコードツールの「AppSheet」のなかで機械学習を利用しています。AppSheetは生成しようとするアプリケーションのデータベースをまずつくるか、もしくは既存のデータベースに接続することで顧客管理や在庫管理、販売管理など、さまざまな業務アプリケーションを生成できるツールです。

AppSheetは機械学習によってさまざまなアプリケーションのパターンをあらかじめ学んでいるため、「こんなデータを処理するのなら顧客管理のアプリケーション画面が適している」と推測して、「こんな画面がよいのでは? そして、このボタンがあるともっとよいのでは?」といった提案をしてくれます。

AppSheetはもともとプログラミング不要でアプリケーションを開発するツールですが、人間のやりたいことを予測する能力を機械学習によってツールに持たせるというのは、新しいアプローチではないかと思います。

AIによってデバッグ作業がなくなる!?

インテル社もコンピュータによるプログラミング自動化に取り組んでいることを明らかにしています。具体的な製品はまだリリースしていないものの、同社はこの分野を「Machine Programming」(マシンプログラミング)と呼んでおり、その一環として「ControlFlag」と呼ばれるツールに取り組んでいることを2020年12月に明らかにしています。

CntrolFlagはソースコードから自動的にバグを発見することを目指しているツールです。インテルでマシンプログラミングに取り組んでいるJustin Gottschlich氏によると、マシンプログラミングの全体像の中で、現時点ではプログラムの自動生成よりも、デバッグの自動化の方が現実的であると判断しているとのことです。

コードの中からバグを推測する手法は統計的な手法や静的なコード分析などさまざまなものがあります。ControlFlagはそうした既存の手法と機械学習による推測を組み合わせることで、デバッグの自動化を実現しようとしています。

Justin Gottschlich氏はControlFlagが成功すれば、デバッグという行為そのものがプログラミングの世界からなくなるだろうと予言しています。

マシンプログラミングが成功すれば、もはやデバッグという行為は不要になるだろう
図2●インテル社が明らかにした「マシンプログラミングが成功すれば、もはやデバッグという行為は不要になるだろう」というメッセージ

重要なテストのみを機械学習で絞り込む

もう少し現実的な取り組みとして、機械学習を使ったソフトウェアテストの効率化に取り組んでいるのが、ソフトウェア開発におけるテストやビルドなどの作業を自動化するツール「Jenkins」作者の川口耕介氏が立ち上げたLaunchable社という会社です。

ソフトウェアが大規模化あるいは多機能化してくると、テストにかかる時間は飛躍的に増えていきます。テストをきちんと行おうとすると単に1つ1つの機能をテストするだけでなく、組み合わせでのテストも発生するため、網羅するテストを完全に実現しようとするとすぐにテストケース数が爆発的に増えて、現実的な時間内ではテストが終了できなくなってしまいます。

そこでLaunchable社では、機械学習によってさまざまなテストケースの中から重要なテストケースを見つけ出して効率化し、テストにかかる時間を10分の1程度にまで短縮することを実現しようとしています。

2020年にはベータテストとして、いくつかの企業が開発しているアプリケーションで実証実験が行われたとのことです。

プログラミングもやがてはコンピュータに置き換わる

ここで紹介した例の多くは、現在はまだ先進的な取り組みとされています。しかし3年から5年後くらいには、機械学習によるプログラミングの支援や効率化、コード生成といった技術は当たり前のものになっていくでしょう。

そしてやがては、人間がキーボードを何時間も叩いてプログラミングやデバッグを行うという行為のかなりの部分が、コンピュータによるプログラムの自動生成に置き換わるのではないでしょうか。例えばプログラミングで業務アプリケーションを開発する代わりに、業務担当者が新人スタッフに業務の流れやロジックを教えるようにコンピュータに教え込むことで、業務アプリケーションが自動で生成されていくのかもしれません。

機械学習やAIの登場によって、タクシーやトラックの運転手が自動運転にとって代わられ、店舗のレジも無人レジとなり、企業の財務経理などの仕事も自動化されていくなど、多くの職業が影響を受けるとされています。「プログラマーという職業だけは例外」と考える理由はもはやないのかもしれません。

IT羅針盤

※このコラムは不定期連載です。
※会社名および商標名は、それぞれの会社の商標あるいは登録商標です。

新野淳一

新野淳一Junichi Niino

ブログメディア「Publickey」( http://www.publickey1.jp/ )運営者。IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求。