ソフトウェア工学

弱いものが自然淘汰されるソフトウェア自動進化への挑戦

肥後芳樹先生

大阪大学 基礎工学部 情報科学科 ソフトウェア科学コース/情報科学研究科 コンピュータサイエンス専攻

誰でもプログラミングしソフトウェアを作ると、バグに悩まされます。肥後先生は遺伝的プログラミングを用いた自動バグ修正という、魔法のような研究をしています。バグのあるソフトウェアに対し、弱いものは淘汰され、正しく動くソフトウェアだけ生き残るという方法です。夢のような話を紹介しましょう。

 

僕はまず皆さんに言いたい。デバックってしんどいですよね。デバックとは、プログラムに潜む欠陥、つまりバグを取り除いてやることです。最近このデバック研究は盛んですが、中でも僕は一番トピックな自動バグ修正を研究しています。

 

自動バグ修正というのは、バグのあるソフトウェアを入力として与えると、バグが取り除かれ、正しく動くソフトウェアが出力されるような技術です。今日は、その1つ、遺伝的プログラミングを用いた自動バグ修正という、魔法のようなやり方を紹介したいと思います。

例えばある行を削除したり、ある行をコピーしてほかのところに貼り付けたりするなど、少しだけ無作為に変更したソフトウェアを数十個用意します。そしてこれらのソフトウェアに対して、テストケースを実行します。そうするとそれぞれのソフトウェアは、何個のテストケースに成功したかがわかります。ここで遺伝的プログラミングを使います。

遺伝的プログラミングとは、一言で言えば生物の進化を模すことにより解に到達するためのアルゴリズムです。バグを含むソフトウェアに対して遺伝的プログラミングを適用することによって、自動的にバグが取り除かれたソフトウェアを生成します。自動バグ修正の過程では、弱いものは淘汰され強いものだけ生き残るということが次々と繰り返されます。最終的にすべてのテストケースをパスするプログラムが生まれ、正しく動くソフトウェアが出力されます。

 

バグの修正だけではなく、新しい機能の追加や、ソフトウェアをメンテナンスするリファクタリングなど、いろんな変更が加えられます。

 

別の言い方でこんなふうにも考えられます。例えばバージョン1.0から2.0にバージョンアップするとは、バグ修正等の細かい変更が繰り返し行われることを意味します。このソフトウェアの変化は、進化と捉えることができます。

このように私は、このソフトウェアの進化を自動的に行うことができる技術を生み出したいと思っています。実現へ向けてはまだまだ研究の第一歩に過ぎません。それでも研究の結果、過去の変更情報を利用して、未来の変更内容を予測することが、ある程度できるようになってきています。

ソフトウェアを作るのは難しいです。でも自動化が実現できれば、その問題はかなり解消されるようになります。さらに、ソフトウェアを完全に自動で生成できるようになれば、欲しいソフトウェアがすぐに手に入るようになるかもしれません。そんな時代にはソフトウェアではなくクイックウエアのような他の名前がついているかもしれません。

 

興味がわいたら

『ずっと受けたかったソフトウェア・エンジニアリングの授業1(増補改訂版)』

鶴保征城、駒谷昇一(翔泳社)

本書は大学生を対象としたソフトウェア工学の教科書ですが、読みやすい語り口調で書かれていますし、導入部が非常に優しく書かれていますので、高校生でも十分に理解できると思います。ソフトウェアを開発するとはどんなことなのか、実際の開発現場ではどんな問題が起こり、それらに対応するためにどんな方法が考えられているのか等を楽しみながら知ることができるのではないかと思います。

[出版社のサイトへ]

『イミテーション・ゲーム/エニグマと天才数学者の秘密』

イギリスの数学者アラン・チューリングを題材にした映画です。チューリングは、チューリングマシンという現在のコンピュータを作る上での重要な理論を考案した人物です。チューリング賞(計算機科学分野のノーベル賞と言われている)は彼の名にちなんでいます。この映画は、彼がエニグマ(第二次世界大戦中にドイツ軍が使用した暗号機)を解読する部分に焦点を当てて描かれています。

『プロジェクトX 挑戦者たち「100万座席への苦闘 ~みどりの窓口・世界初 鉄道システム~」』

NHKのTV番組でDVD化されています。旧国鉄(現在のJR)が開発したオンライン発券システムの開発を紹介したドキュメンタリー番組です。システム開発の苦労や完成したときの感動を知ることができると思います。プロジェクトXの「家電革命 トロンの衝撃」や「国産コンピューター ゼロからの大逆転」もコンピュータを扱っており、オススメです。

 

こちらも中高生におすすめ

『Q.E.D.証明終了』

加藤元浩(講談社)

知的好奇心をくすぐられるコミックです。同じ作家の『C.M.B.森羅博物館の事件目録』もおススメです。

[出版社のサイトへ]

 

『インベスターZ』

三田紀房(講談社)

株式投資学園マンガ。中高生のころからお金の知識もある程度あると良いと思います。

[出版社のサイトへ]

肥後先生インタビュー

「プログラム作成のミスをなくしたい」から研究テーマを発掘

肥後芳樹先生

大阪大学 基礎工学部 情報科学科 ソフトウェア科学コース/情報科学研究科 コンピュータサイエンス専攻

ソフトウェア工学の中の「リポジトリマイニング」でリードする大学・研究者