様々な用途に応じてコンピュータを動かすために、ソフトウェアは作られます。ソフトウェアを作る行為はプログラミングと呼ばれます。竹之内啓太さんは、コンピュータに「○○したい」と指示を出すだけでプログラムを自動的に生成する技術を開発しました。プログラムを勝手に作ってくれる、魔法のような技術です。
「〇〇したい」と指示をするだけでプログラムを自動生成
人に代わってプログラムを自動生成する
ソフトウェアを動かすには、プログラムを作ることが欠かせません。
一般的なプログラミングでは、人間の開発者が手作業でプログラムを作成します。これに対して、コンピュータがプログラムを勝手に作ってくれる。そんな夢のようなソフトウェア研究の話をしたいと思います。
このプログラミング技術をプログラム合成技術といいます。私は、プログラム合成技術を使って「○○したい」という意図を表す入出力データをコンピュータに与えるだけで、それを実現するプログラムを自動的に生成する技術を開発しました。
どうやってプログラムを自動生成するのか?
身近なたとえ話を使って説明しましょう。ここに1、2、3、4という4つの数字が並んだナンバープレートがあります。
皆さんは、このような数字を組み合わせて、答えが10になるような式を作る遊びをしたことはありませんか。今回は、1、2、3、4を入力データ、10を出力データとして、どうやってこの入出力を満たすプログラム(計算式)を自動生成するのか考えてみましょう。
まずは皆さん自身で1、2、3、4のすべての数字と、+、×、(、)を使って、答えが10になる式を考えてみてください。
正解は2つあります。まず1つ目の正解は「1+2+3+4」という式です。1+2で3、3+3で6、6+4で10なので、確かに答えが10になります。そして2つ目の正解として「1×4+2×3」という式があります。1×4で4、2×3で6、4+6で10、確かにこれも答えが10になります。
このように入出力から自動的にプログラムを作る技術では、演算子の組み合わせを網羅的に探索するのが基本的なアプローチになります。
ただし、このようにすべての式の組み合わせを列挙する方法では膨大な数の組み合わせを考慮する必要があり、より複雑なプログラムを作るにはすぐに限界が来ます。探索の仕方をもっと効率的にするための工夫が必要です。
そこで次は「3×( ? )」といったふうに式のなかに不完全な式「?」が含まれている場合を考えてみます。
この式の「?」に何かの式を埋めることで答えが10になるような式を作ることはできるでしょうか。答えはノーです。「3×( ? )=10」という等式を考えたとき、左辺は必ず3の倍数になるので、右辺の10に等しくなることはありません。よって「3×( ? )」という形をもつすべての式は、探索すべき式から除去できます。
このように作りかけの式(不完全なプログラム)を評価することで、プログラムの探索を効率化するアプローチを実現しています。
古いシステムを再生するための、プログラム自動生成技術
最後に、私が取り組んでいるプログラム合成技術を使って、社会課題を解決する話をします。多くの企業で使われているシステムには、何十年も前に作られ、いまもなお動いているものが多く存在します。このようなシステムは、当時開発していた開発者が引退してしまって、もう誰もメンテナンスすることができません。そのため、何か問題が起こった場合にシステムを正しく修正できないことが社会課題として知られています。
この課題に対して私は、先ほど説明したプログラム合成技術を活用することでシステムを新しく作り直す技術を研究しています。まず、今動いているシステムに対して適当な入力値を生成することで出力値を得ることができます。得られた入出力のデータもとにプログラム合成技術を適用することで、プログラムを自動生成することができるのです。
現代的な技術を利用したプログラムを生成することで、今の時代の開発者にもメンテナンスしやすいものとして作り直すことができるーーこのようにIT社会を下支えするような研究に取り組んでいます
◆先生は研究テーマをどのように見つけたのでしょうか。
小さい頃からパソコンを使うのが好きだったのと、算数や数学が好きだったので、大学ではコンピュータサイエンスを専攻しました。その結果、個人でソフトウェアの開発(プログラミング)をする分にはあまり苦労なくできるようになりました。一方で企業に入ってからは、大規模なソフトウェアの開発には数多くの難しさがあると感じるようになりました。研究テーマを決めるときは、具体的な課題感を把握しつつ、自分のアイデアを駆使して大胆にアプローチすることを意識しています。
「数学ガール」シリーズ
結城浩(SBクリエイティブ)
手を動かして楽しむことができるのがソフトウェア開発の魅力ですが、その基礎的な部分は数学的な考え方によって支えられています。『数学ガール』シリーズは、大学で勉強するような数学の内容が高校生にも理解できるように解説されています。内容も面白いですし、何より分かりやすいです。