ソフトウェア(ソフトウェア工学)

コンピュータを狂わす脅威の「バグ」食物連鎖を食い止める!ソフトウェアの生態系研究

石尾隆先生 奈良先端科学技術大学院大学 先端科学技術研究科 先端科学技術専攻 情報科学領域

スマホのアプリに代表されるように、私たちの暮らしを豊かにするのが、コンピュータのソフトウェアです。世の中に生み出された数々のソフトウェアの使われ方を見ると、実はその様は自然界の生態系に似ていると言われています。なかでも生きもののように広がり、コンピュータを狂わす大敵が「バグ」です。石尾先生は、このソフトウェアを蝕むバグの自動検出に挑みます。


バグの悪循環を断つため、誰のソフトウェアを修正すべきか分析

コンピュータの上で働き、様々な機能を発揮するソフトウェアは、世界中で毎日のように生み出されています。まず優秀なプログラマーによって独創的なソフトウェアがプログラミングされます。そのソフトウェアはネットで公開され、別の人にダウンロードされ、さらに利用者の好みに応じて改変され、新しいソフトウェアはどんどん広まっていきます。 


このようなソフトウェアの利用関係は、生物が別の生物を食べるといった具合にどんどん広がる、生きものの世界の食物連鎖によく似ています。私はこれをソフトウェアの生態系と呼んでいます。

 

 

この生態系で一番の脅威は、コンピュータを暴走させ狂わす「バグ」の連鎖です。バグは、まるで生きものに巣食う病原菌のように広まっていきます。たとえ最初に開発された元のソフトウェアに発見されたバグを修正したとしても、既にそのソフトを取り込んだ世界中のたくさんのソフトウェアの中でバグは生き残り続けるのです。

 

コンピュータを暴走させるバグは、ソフトウェアからソフトウェアへと連鎖しながら、ソフトウェアを蝕んでいく
コンピュータを暴走させるバグは、ソフトウェアからソフトウェアへと連鎖しながら、ソフトウェアを蝕んでいく

この悪循環と言っていいバグの連鎖を食い止めるにはどうすればいいでしょう。一般的にソフトウェアのバグの8割が2割の場所に集中しているといわれます。私たちはこのようなソフトウェアの利用関係を追跡し、自分たちが利用しているソフトウェアがどこからやってきたのかを探し出し、バグの修正を受けるべきかを明らかにする技術の開発を行いました。この技術は、これまでの技術だと分析に一週間くらいかかっていたものを、わずか数時間程度にまで高速化しています。

 

ソフトウェアの生態系を見える化

この技術を使って、具体的に約350個のソフトウェアを解析し、ソフトウェアの利用関係図としてこれらのソフトウェアの生態系を可視化しました。これにより、どのソフトがたくさんのソフトを支えているか、つぶさに調べることができるようになりました。

 

ネットワークのように複雑につながったソフトウェアの利用関係図。青い点がソフトウェア、つないでいる白い線が利用関係を表す
ネットワークのように複雑につながったソフトウェアの利用関係図。青い点がソフトウェア、つないでいる白い線が利用関係を表す

 

このような利用関係がソフトウェアの間に存在して、ソフトウェアを蝕むバグが連鎖的に広まることは、ソフトウェア開発に携わる技術者は経験的に知っていることでした。しかしそれを数値として迅速に取り出せるようにしたことで、今後、なぜこんな連鎖反応の悪循環が起こるのか、理論的に解明できると期待されます。

 

ソフトウェアは作れば作るほど、次の新しいソフトウェアのヒントや材料になります。またそのソフトウェアを使えば使うほど、次のソフトウェアへの要求も高まり、ソフトウェアの生態系が広がっていきます。それは1つ間違えればバグの悪連鎖も生み出しもしますが、より新しくて面白いソフトウェアの土台にもなります。 

 

私たちの研究成果をもとにして、世界中のプログラマーが協力しあって、安全なソフトウェアを作る。そんな創造的な活動が展開されることを目指しています。

 

石尾先生ミニインタビュー

◆先生は研究テーマをどのように見つけたのかを教えてください。

 

私自身はプログラミングが大好きで、大学生のときから自分で作ったソフトウェアを公開したり、アルバイトで会社の仕事に使われるようなソフトウェアを作ったりしていました。しかし、新しいソフトウェアを作るというのは、非常に楽しいと同時に大変な作業でもあります。良いソフトウェアを手軽に作る方法を「自分が知らないだけでどこかにはあるのだろう」と探して回った結果、どうやらそんな都合のよいものはないらしい、仕方がないので作っていこう、というのが研究の最初のきっかけです。

 

石尾先生の研究室のHPはこちら

 

興味がわいたら

『サンプリングって何だろう――統計を使って全体を知る方法』

廣瀬雅代、稲垣佑典、深谷肇一(岩波科学ライブラリー)

少数のものを調べて全体の傾向を知る「統計」に関する読み物です。完璧な調査をすることが現実的でないときに、調べること自体を諦めるのでなく、工夫して調べる方法が説明されています。難しそうな調査でも、できることをきちんとやっていく姿勢の大切さを学ぶことができます。

[amazonへ]


『宇宙創成』(上・下)

サイモン・シン(新潮文庫)

地球が丸いこと、地球から月までの距離、宇宙の始まりはいつかといった、宇宙のことを人類がどのように考え、また調べてきたか、歴史的な側面を扱う科学読み物です。直接触れたり測ったりできない相手に対しても、しっかり観察し、論理的に仮説を立てて証拠を集めることで、たくさんのことがわかることを紹介しています。論理が科学において非常に重要であることを学ぶことができます。

[amazonへ]


ソフトウェア工学でリードする大学・研究者