スマホのアプリに代表されるように、私たちの暮らしを豊かにするのが、コンピュータのソフトウェアです。世の中に生み出された数々のソフトウェアの使われ方を見ると、実はその様は自然界の生態系に似ていると言われています。なかでも生きもののように広がり、コンピュータを狂わす大敵が「バグ」です。石尾先生は、このソフトウェアを蝕むバグの自動検出に挑みます。
コンピュータを狂わす脅威の「バグ」食物連鎖を食い止める!ソフトウェアの生態系研究
バグの悪循環を断つため、誰のソフトウェアを修正すべきか分析
コンピュータの上で働き、様々な機能を発揮するソフトウェアは、世界中で毎日のように生み出されています。まず優秀なプログラマーによって独創的なソフトウェアがプログラミングされます。そのソフトウェアはネットで公開され、別の人にダウンロードされ、さらに利用者の好みに応じて改変され、新しいソフトウェアはどんどん広まっていきます。
このようなソフトウェアの利用関係は、生物が別の生物を食べるといった具合にどんどん広がる、生きものの世界の食物連鎖によく似ています。私はこれをソフトウェアの生態系と呼んでいます。
この生態系で一番の脅威は、コンピュータを暴走させ狂わす「バグ」の連鎖です。バグは、まるで生きものに巣食う病原菌のように広まっていきます。たとえ最初に開発された元のソフトウェアに発見されたバグを修正したとしても、既にそのソフトを取り込んだ世界中のたくさんのソフトウェアの中でバグは生き残り続けるのです。
この悪循環と言っていいバグの連鎖を食い止めるにはどうすればいいでしょう。一般的にソフトウェアのバグの8割が2割の場所に集中しているといわれます。私たちはこのようなソフトウェアの利用関係を追跡し、自分たちが利用しているソフトウェアがどこからやってきたのかを探し出し、バグの修正を受けるべきかを明らかにする技術の開発を行いました。この技術は、これまでの技術だと分析に一週間くらいかかっていたものを、わずか数時間程度にまで高速化しています。
ソフトウェアの生態系を見える化
この技術を使って、具体的に約350個のソフトウェアを解析し、ソフトウェアの利用関係図としてこれらのソフトウェアの生態系を可視化しました。これにより、どのソフトがたくさんのソフトを支えているか、つぶさに調べることができるようになりました。
このような利用関係がソフトウェアの間に存在して、ソフトウェアを蝕むバグが連鎖的に広まることは、ソフトウェア開発に携わる技術者は経験的に知っていることでした。しかしそれを数値として迅速に取り出せるようにしたことで、今後、なぜこんな連鎖反応の悪循環が起こるのか、理論的に解明できると期待されます。
ソフトウェアは作れば作るほど、次の新しいソフトウェアのヒントや材料になります。またそのソフトウェアを使えば使うほど、次のソフトウェアへの要求も高まり、ソフトウェアの生態系が広がっていきます。それは1つ間違えればバグの悪連鎖も生み出しもしますが、より新しくて面白いソフトウェアの土台にもなります。
私たちの研究成果をもとにして、世界中のプログラマーが協力しあって、安全なソフトウェアを作る。そんな創造的な活動が展開されることを目指しています。
◆先生は研究テーマをどのように見つけたのかを教えてください。
私自身はプログラミングが大好きで、大学生のときから自分で作ったソフトウェアを公開したり、アルバイトで会社の仕事に使われるようなソフトウェアを作ったりしていました。しかし、新しいソフトウェアを作るというのは、非常に楽しいと同時に大変な作業でもあります。良いソフトウェアを手軽に作る方法を「自分が知らないだけでどこかにはあるのだろう」と探して回った結果、どうやらそんな都合のよいものはないらしい、仕方がないので作っていこう、というのが研究の最初のきっかけです。
サンプリングって何だろう 統計を使って全体を知る方法
廣瀬雅代、稲垣佑典、深谷肇一(岩波科学ライブラリー)
少数のものを調べて全体の傾向を知る「統計」に関する読み物です。完璧な調査をすることが現実的でないときに、調べること自体を諦めるのでなく、工夫して調べる方法が説明されています。難しそうな調査でも、できることをきちんとやっていく姿勢の大切さを学ぶことができます。