読売新聞寄稿連載「ドキ★ワク先端科学」から~

第52回:情報科学研究科 飯田元教授  〔2017年9月20日〕
「プログラム追跡 バグに活用」

飯田元教授
飯田元教授

 コンピューターに処理を指示するプログラムは、私たちの身の回りの様々な物事を自動化するのに役立っています。大抵の場合、プログラムを書くのは、人間(プログラマー)ですが、現在は作業の大半が、既存のものの書き換えや組み合わせになってきています。

 では、プログラマーの仕事は、昔に比べて簡単になったのかというと、実はそうではありません。

 元のプログラムに機能を追加する場合などは、構造や動作を正しく理解し、必要な部分だけを変更するように注意しなければなりません。しかし、作成の基となる仕様書や設計書がきちんと書かれていなかったり、当初の設計とかけ離れていたりすると、とても難しい作業となります。プログラムから初期設計に戻す研究もありますが、十分ではないのが現状です。

 このため、「いつ、誰が、どのように書き換えたか」という記録が大事になります。例えば、推理小説に登場する名探偵は、現場に残されたかすかな痕跡から犯人の行動を探ります。でも、現場をビデオでずっと撮影してあれば、探偵の力を借りなくとも、犯人を容易に捕まえられますね。プログラムの開発過程でも、作業を逐一記録し、事後検索できれば、誤り(バグ)を見つけるのに便利なわけです。

図1
プログラム追跡のイメージ図。複数のプログラマーが並行して作業することで起きる「枝分かれ」の追跡が可能だ

 私たちは開発で使われる様々なツールが残す動作記録(ログ)を分析し、活用する方法を探っています。

 様々な場所にいるプログラムの開発メンバーがインターネットを介してシステムを作り上げる時、多様なログが、リポジトリーという情報の貯蔵庫に保管されます。例えば、「Git(ギット)」という管理ツールでは、複数のメンバーが別々に行った編集作業が全て記録されています。これを活用すれば、プログラムの理解や修正に役立つだけでなく、バグが発生する条件や、隠れたバグが潜んでいる場所を予測することもできます。

 人工知能(AI)を利用することで今後、蓄積されたデータを自動的に解析し、見つかったバグの修正方法を推定することも可能になりそうです。