• 検索結果がありません。

ソフトウェア工学の最前線 〜ソフトウェアが社会のすべてを定義する時代〜:[未来に向かって]11.自動プログラミング,自動バグ修正への夢

N/A
N/A
Protected

Academic year: 2021

シェア "ソフトウェア工学の最前線 〜ソフトウェアが社会のすべてを定義する時代〜:[未来に向かって]11.自動プログラミング,自動バグ修正への夢"

Copied!
3
0
0

読み込み中.... (全文を見る)

全文

(1)〜 ア ェ 線 る時代 ウ 前 義す ト 最 を定 フ の すべて ソ 学 の 未来に向かって 工 社会. 特. 集. が ア ェ ウ ト フ ソ 〜. 基 応 専 般. 自動プログラミング, 自動バグ修正への夢. 11. 肥後芳樹(大阪大学) 鵜林尚靖(九州大学) 自動プログラミング. 的にプログラムを修正してくれる仕組みがあると 便利であろう.現在のソフトウェア工学の技術で. ソフトウェア工学研究の長年の夢として,自動プ. は,このようなことが可能になりつつある.実際,. ログラミングがある.その歴史は古い.コンピュー. ICSE(International Conference on Software En-. タソフトウェア研究の黎明期ではコンパイラが自動. gineering)などのトップカンファレンスではホット. プログラミングと呼ばれていた.機械語によるプロ. な話題の 1 つになっており,毎回,複数のセッショ. グラミングが当たり前の時代において,IBM によ. ンが設けられている.今まさに,世界中の研究者が. る 1957 年の FORTRAN コンパイラのリリースは. この夢に取り組んでいる.. 夢のような出来事だったと思う.人間にとって読み やすいプログラム記述から自動的に機械語に変換し てくれるコンパイラ技術は,その後のコンピュータ の歴史において重要な役割を担うことになる.その. 遺伝的プログラミングを利用した 自動バグ修正. 後,プログラムではなくソフトウェア仕様や設計モ. 発見したバグを人の手を介さずにプログラムコー. デル記述からのコード生成へとソフトウェア工学の. ドから取り除くことを自動バグ修正と呼ぶ.自動バ. 技術が発展したのは周知の事実である.しかしなが. グ修正の研究でブレイクスルーをもたらしたのは. ら,今ではコンパイラのことを自動プログラミング. 遺伝的プログラミングを用いた自動バグ修正手法. と呼ぶ人はいない.また,モデル駆動開発によるモ. GenProg. デルからのコード生成を自動プログラミングと呼ぶ. 遺伝的プログラミングとは,一言でいえば生物の. 人もいないと思う.それでは,現在のプログラマが. 進化を模すことにより解に到達するためのアルゴリ. 期待する自動プログラミングとはどのようなもので. ズムである.ここでの解とは,与えられたすべての. あろうか?. テストケースを通過することである.GenProg で. 昨今,機械翻訳ソフトあるいは Web 公開サービ. はプログラムコードを生物の個体とみなす.プログ. スを使用する機会が増えている.必ずしも期待した. ラムコードはテストケースを実行することによりそ. 翻訳精度ではないものの,ちょっとした翻訳には便. れがどの程度解に近い状態にあるかが評価される.. 利である.Web から文章を入力すると,英語等に. より解に近い状態のプログラムコードがいくつか選. 変換してくれる.もし,これをプログラミングに置. 別され,それらから次の世代のプログラムコードが. き換えてみるとどうであろうか?. 生成される.すべてのテストケースを通過するプロ. 不完全なプログラムコード(あるいはバグ付きの. グラムコードが生成されるか制限時間に達するまで. コード)を入力すると,不足しているコード片を自. この操作が繰り返し行われる(図 -1).. 動的に補ってくれたり,バグを自動的に修正してく. 自動バグ修正では入力されたバグのあるプログラ. れると,多くのプログラマは喜ぶであろう.また,. ムコードはテストケースを用いて評価され,どの. すでに動作しているソフトウェアを止めずに,自動. 部分がバグの原因であるかの当たりがつけられる.. 1). である.. 情報処理 Vol.58 No.8 Aug. 2017. 705.

(2) 〜 ア ェ 線 る時代 ウ 前 義す ト 最 を定 フ の すべて ソ 学 の 工 社会. 特. 集. が ア ェ ウ ト フ ソ 〜. 群衆知による自動プログラミング. 成功したテストケースの数 バグのある ソフトウェア. テストケース (10個) 入力値:3 入力値:3 入力値:3 入力値:3 入力値:3 入力値:3 入力値:3 入力値:3 期待値:10 入力値:3 期待値:10 期待値:10 期待値:10 期待値:10 期待値:10 期待値:10 期待値:10 期待値:27. 5. 4. 9. 2. 8. 8. 6. 7. 6. 6. 3. 10 バグ修正済み ソフトウェア. 図 -1 GenProg による自動バグ修正の様子. 自動プログラミングや自動バグ修正で新たな鍵と なるのが,群衆知(Crowd Knowledge)である.現在, プログラマの多くは,コード作成やバグ修正に困っ たとき,開発支援ツールが提供するプログラム解析 情報を参照したり,デバッガでプログラムの振舞い を確認したりする.それでも解決方法が分からない 場合は,インターネット上に遍在する群衆知に助け を求める.たとえば,Stack Overflow のようなソ. GenProg では次の世代のプログラムコードを生み. フトウェア開発者向けの Q&A サイトにアクセスし. 出す操作は比較的単純な方法で行われる.当たりを. たり,類似するコードがオープンソースソフトウェ. つけたコードを削除する操作や,ランダムに選択さ. ア(OSS:Open Source Software)にないかを検. れたほかのコード片を当たりをつけた個所に挿入す. 索したりして問題解決を図る.Q&A サイトから類. る操作が行われる.. 似コードを自動的に検出し,その解決策をプログラ. しかしながら,現時点では,自動バグ修正技術は. マに提示するような技術はすでに開発されている .. 修正可能なバグの数が少ない,生成されたプログラ. 群衆知をさらに高度に利用するためには,図 -2. ムコードが汚くその後の保守作業がしづらいなどの. に示すような「群衆知の循環による群衆ソフトウェ. 課題がある.実際のソフトウェア開発現場で用いる. ア開発エコシステム」を形成する技術開発が挙げら. にはまだ未成熟な技術である.. れる.このエコシステムでは,ソフトウェア開発支. 現在多くの研究者が自動バグ修正の研究に取り組. 援ロボット(ネットワークエージェント)が「群衆. んでいる.バグを生みやすい条件分岐の条件式に特. 知の発生」を捉え,リポジトリマイニングにより「群. 2). 化した修正 ,読みやすさ向上のための基本ブロッ ク単位でのコードの移植. 3). 等が提案されている.. また,プログラムコードを特定のルールに従って合 成する自動バグ修正手法. 4). も提案されている.. 衆知の形式知化」を図り,Q&A 情報として蓄積さ れた「群衆知の利用」を支援する.群衆知の利用支 援では,深層学習(Deep Learning)を用いて開発 者の思考プロセスを模擬(プログラム解析情報と群. プログラムコードの変更はバグ修正のためだけで. 衆知を融合し総合的に解決方法を提示)することに. はない.新しい機能を追加するための変更や,将来. より,自動プログラミングや自動バグ修正というか. の保守作業に備えるためのリファクタリング,ソフト. たちで,ソフトウェア開発者の作業をサポートする.. ウェアを新しい環境で動作させるための移植作業も. 今まで夢であった自動プログラミングや自動バグ. コードの変更を必要とする.各種類の変更を支援す. 修正は,伝統的なプログラム解析技術(コードから. る研究が活発に行われており,また変更の種類によ. 導出可能な演繹的情報)と OSS や Q&A サイトなど. らずプログラムコードの次の変更後の状態を予測する. が保有するソフトウェア開発ビッグデータに裏付け. 5). 706. 6). 研究も行われている .この技術が実現すれば,次. された群集知(群衆から湧き上がる帰納的情報)を. の変更でどのようにプログラムコードを変更すればよ. 結びつけることにより,現実味が増してきている.. いのかをプログラマに自動的に提示できるようになる.. 世界中の開発者が OSS プロジェクトに参画し,ロ. プログラマがその変更を承認すれば自動的にコード. ボットがリポジトリの変化情報を群衆知化し,Q&A. が変更される.提示されたコードに良くない部分があ. サイトに投稿することにより,世界中の開発ノウハ. ればその部分のみを開発者自身で変更すればよい.. ウを世界中の開発者が共有することができる.そし. 情報処理 Vol.58 No.8 Aug. 2017.

(3)  自動プログラミング,自動バグ修正への夢. て,それらの情報を参照して, さらに OSS の開発が進むと いう循環的なエコシステムが. 群衆知の発生. 群衆知の発生. 実 現 さ れ る. も は や ソ フ ト. バグ修正等のプ ログラム変更時 に開発ノウハウ が生まれる. ウ ェ ア の 開 発 環 境 は PC 内 の統合開発環境(IDE:Inte-. OSSリポジトリ群. grated Development Environ-. lQ&Aサイトの情報を 参照しながら, プログラム作成・ 変更 l結果はリポジトリに コミット修正. リポジトリマイニング による 群衆知の形式知化. ment)には閉じておらず,開 放的な群衆開発環境の世界に 移行しつつある.これは,ソ フトウェア工学における大き. 深層学習 による 群衆知の利用支援. なパラダイムシフトと言える. 強化された Q&Aサイト情報. 究極の夢. 図 - 2 群衆知の循環による群衆ソフトウェア開発エコシステムの概要. 自動プログラミングに関す る究極の夢は,欲しい機能を伝えるだけで,大規模 なプログラムが自動生成できることであろう.この 段階に到達するにはいくつもの壁を越えなければな らなく,現時点の技術水準では難しい. たとえば,インターネット上にあるプログラム コードや実行ファイルを収集して,それらの中に含 まれる部品を再利用することにより欲しいプログラ ムを自動合成するようなことが将来できるようにな るかもしれない.そのような自動合成を意識したイ ンタフェースやプロトコルが標準化されてくると現 実味を帯びてくる技術であろう. ソフトウェア工学は主にソフトウェアの開発者を 支援するための学問分野である.しかし,ソフトウェ アが自動で生成できるようになればもはや開発者は. 参考文献 1) Goues, C. L., Nguyen, T., Forrest, S. and Weimer, W. : GenProg : A Generic Method for Automatic Software Repair, IEEE Trans. Softw. Eng. 38, 1 (Jan. 2012). 2) Long, F. and Rinard, M. : Staged Program Repair with Condition Synthesis, In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/ FSE 2015). 3) Ke, Y., Stolee, K. T., Goues, C. L. and Brun, Y. : Repairing Programs with Semantic Code Search. In Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE 2015). 4) Xuan, J., Martinez, M., Demarco, F., Cl´ ement, M., Lamelas, S., Durieux, T., Berre, D. L. and Monperrus, M. : Nopol : Automatic Repair of Conditional Statement Bugs in Java Programs, IEEE Trans. Softw. Eng. 43, 1 (Jan. 2016). 5) Murakami, M., Hotta, K., Higo, Y. and Kusumoto, S. : Predicting Next Changes at the Fine-Grained Level, In Proceedings of the 2014 21 st Asia-Pacific Software Engineering Conference (APSEC 2014). 6) Chen, F. and Kim, S. : Crowd Debugging, In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). (2017 年 4 月 7 日受付). 必要ではないかもしれない.ソフトウェアを使いた いユーザが,自分自身でソフトウェアを生成してそ. 肥後芳樹(正会員)[email protected]. れを使う,そんな時代がいつか来るだろう.そのよ. 大阪大学大学院情報科学研究科准教授.本会長尾真記念特別賞や 論文賞等を受賞.IPSJ-ONE2017 にて講演.. うな時代にはソフトウェアという名はもはやその体 を表しておらず,クイックウェアやインスタント ウェアのような新しい名がついているかもしれない.. 鵜林尚靖(正会員)[email protected] 九州大学大学院システム情報科学研究院教授.本会フェロー. 2016 年度までソフトウェア工学研究会主査.. 情報処理 Vol.58 No.8 Aug. 2017. 707.

(4)

参照

関連したドキュメント

90年代に入ってから,クラブをめぐって新たな動きがみられるようになっている。それは,従来の

第四。政治上の民本主義。自己が自己を統治することは、すべての人の権利である

[r]

ニホンジカはいつ活動しているのでしょう? 2014 〜 2015

自閉症の人達は、「~かもしれ ない 」という予測を立てて行動 することが難しく、これから起 こる事も予測出来ず 不安で混乱

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

Amount of Remuneration, etc. The Company does not pay to Directors who concurrently serve as Executive Officer the remuneration paid to Directors. Therefore, “Number of Persons”

を育成することを使命としており、その実現に向けて、すべての学生が卒業時に学部の区別なく共通に