要点

プログラミング自動化ツールMISIMは、コードの意味を抽出し、コードの書き方を提案し、修正したり、より速く、より効率的にするための方法を提案する。将来人間が自然言語で説明したことをプログラムに変換できるモデルが生まれると期待されている。


コンピュータプログラミングは決して簡単なものではない。今日では、コーダーは、入力中のエラーの検出から、デプロイ前のコードのテストまで、仕事の大部分を自動化する強力なツールの数々を使用している。しかし、1つの愚かなミスがソフトウェア全体をクラッシュさせてしまうことがある。また、システムがますます複雑になるにつれ、バグを追跡することはますます難しくなっている。

だから機械に自動プログラミングさせればいいんじゃないかという意見もある。コード生成の自動化は、ここ数年、ホットな研究テーマとなっている。マイクロソフトは広く使われているソフトウェア開発ツールに基本的なコード生成を組み込んでいるし、フェイスブックはAromaと呼ばれる小さなプログラムを自動補完するシステムを作っているし、ディープマインドは人間が考案したものよりも簡単なアルゴリズムの効率的なバージョンを考え出すことができるニューラルネットワークを開発している。OpenAIのGPT-3言語モデルでさえも、自然言語のプロンプトからウェブページのレイアウトなどの簡単なコードを作り出すことができる。

インテルのマシンプログラミング研究グループのディレクターであるジャスティン・ゴットリッチらはこれを「マシンプログラミング」と呼んでいる。Intel、MIT、アトランタのジョージア工科大学のチームと協力して、ゴットリッチは、自然言語処理(NLP)システムが英語で書かれた段落を読むのと同じように、コードの意味、つまりコードがコンピュータに何をするように指示しているのかを抽出できる「Machine Inferred Code Similarity」(MISIM)と呼ばれるシステムを開発した。

そして、MISIMはコードの書き方を提案し、修正したり、より速く、より効率的にするための方法を提案する。プログラムが何をしようとしているのかを理解するツールの能力により、似たようなことをする他のプログラムを識別することができる。理論的には、このアプローチは、人間の監視や入力を最小限に抑えて、既存のプログラムのパッチワークを利用して、独自のソフトウェアを書いた機械が使用することができる。

MISIMは、多数のオンラインリポジトリから収集したコードの断片を、すでに見た何百万もの他のプログラムと比較することで動作する。なぜなら、非常に異なる方法で書かれた2つのプログラムが同じことをすることがあるからだ。次に、MISIMはニューラルネットワークを使って、似たような意味を持つ他のコードを見つける。ゴットリッチと彼の同僚たちはプレプリント論文で、MISIMはAromaを含め、これを試みた以前のシステムと比較して40倍の精度を持っていると報告している。

しかし、機械学習では、何かがバグであるかどうかを予測することはできない側面がある。それは、何がエラーであるか、エラーではないかをニューラルネットワークに教えるのは、人間がそのようなラベルを付けない限り難しいからだ。

ディープニューラルネットワークとバグ修正に関する興味深い研究がたくさん行われているが、実際にはまだそこには到達していない。一般的なAIバグ検出ツールは、多くの偽陽性を生み出しているという。

MISIMは、バグを直接特定するのではなく、機械学習を利用してプログラム間の類似点を発見することで、この問題を回避している。新しいプログラムを、正しいことがわかっている既存のソフトウェアと比較することで、エラーである可能性のある重要な違いをコーダーに警告することができる。

インテルは、このツールを社内の開発者にコード推薦システムとして使用し、より高速で効率的なコードを書くための代替方法を提案することを計画している。しかし、MISIMは特定のプログラムの構文に縛られていないため、潜在的にできることはもっとたくさんある。例えば、COBOLのような古い言語で書かれたコードをPythonのようなより現代的な言語に翻訳するために使用することができる。これは、米国政府を含む多くの機関が、いまだに保守や更新の方法を知っているコーダーがほとんどいない言語で書かれたソフトウェアに依存しているため、重要なことだ。

最終的に、ゴットリッチは、このアイデアは自然言語にも応用できると考えている。NLPと組み合わせることで、コードの意味をテキスト表現から切り離して扱うことができるようになるので、いつの日か、やりたいことを言葉で記述するだけでソフトウェアを書くことができるようになるだろう、と彼は言う

Photo by Ryan Quintal on Unsplash