研究 / Research
アーキテクチャ科学研究系
研究紹介
頼れるソフトウェアを効率よく作り価値を提供し続ける
私はソフトウェア工学 (SE: software engineering) と呼ばれる分野において研究を行っています。今や、個人、組織、そして社会全体のあらゆる活動においてソフトウェアシステムが重要な役割を果たしています。ソフトウェア工学は、ソフトウェアシステムを構築し、その品質を保証し、運用、保守し続けるための活動を総合的に扱う分野です。プログラムを扱うような技術だけでなく、そもそもどのような機能・品質により価値が得られる、課題が解決するのかというビジネスの分析も扱いますし、チーム間のコミュニケーションや日々の活動のあり方、費用や納期の見積もりといった側面も扱います。
私は、この全体像を忘れないようにしながら、特に品質の保証・向上のためのテストや検証、修正・デバッグの技術に関する研究を行っています。テストであれば、対象システムを動かしてみて「期待通り」の出力や振る舞いになっているかを確認するのですが、複雑ソフトウェアシステムに対し、どういう動かし方をしてみるのか、そもそも「期待通り」とは何なのか、といったところに難しさがあります。形式手法と呼ばれる数学的なアプローチを用い、「個別のケースを試してみる」のではなく、「どんなケースでもこうなると断言できる」という検証を行うこともあります。もちろんそれらの技術が、本来やりたいこと、実世界で起きうることからかけはなれてはいけませんので、品質の意味や、安全性・信頼性のあり方をモデリング、分析する技術も重要となります。
安全な自動運転システムや高品質なAIシステムのために
実世界で動作する自動運転システムや、深層学習技術や大規模言語モデルを用いて実現したAIシステムなど、これまでになかった機能を実現するシステムが次々と現れています。こういったシステムに対するソフトウェア工学のあり方は、私の活動において一つの大きな軸です(SE for AI、機械学習工学・AI工学)。品質の保証・向上という観点においても、「ニーズを満たす」「高い品質である」といったことの定義も、それを扱うための技術アプローチも、従来のソフトウェアシステムとは変わっています。
端的には、今までのソフトウェアシステムは、「イートインなら税率10%で計算する」というように、処理ルールのようなものを要求仕様として定め、それに対応するプログラムを書き出していました。一方で、自動運転システムやAIシステムは、求めるものをルールとしてすべて書き出すようなことは困難です。内部の作り方も、決まった動きをするプログラムを書き出すというよりは、何か都度賢く判断するような技術(機械学習や最適化など)を用います。いろいろな意味での「不確かさ」が高いといえます。
私の研究室では、自動運転システムやAIシステムに対するテスト技術や、自動修正技術について盛んな研究を行っています。シミュレーションを繰り返し行いながら、「より有効なテスト」を自動で探索したり、AIが「よりニーズを満たす」ような動きになるように自動で修正を行ったりといった技術に取り組んでいます。
ソフトウェア開発の道具としてのAIを使いこなす
一方で、深層学習や最適化、大規模言語モデルなどのAI技術は、ソフトウェア開発を助ける「道具」としても大きな効果を発揮するポテンシャルを持っています(AI for SE)。私は特に、進化計算と呼ばれる最適化技術の活用に取り組んでいます。端的には、「よいもの」を定義するようなスコアをうまく決めてあげれば、そのスコアを高くするようなことはAIに自動でやらせることはできるわけです。進化計算は、その際に、たくさんの過去のデータから学ぶのではなく、その場でいろいろ試しながらスコアを上げていくようなアプローチです。このアプローチで、「よいテスト」を作らせたり、「AIを構成するパラメーター値に対するよい修正案」を作らせたりということができます。こういった技術は、従来からあるソフトウェアシステムに対しても使えますし、上述のような自動運転システムやAIシステムに活用することもできます。
当然ながら、「AIをAIが検査する、両方がすごいからきっと結果もよい」というだけでは、開発者はプロダクト・サービスに対する責任を果たすことができません。開発者による理解、フィードバックを通しながら、品質を保証・向上できるような技術を提供する必要があります。また、あらゆるニーズに対して万能な道具となるようなAIもあり得ず、従来からのソフトウェア工学技術とAI、そして人間の活動との適切な組み合わせも必要となってきます。
産学連携を通した課題解決・価値創造へ
以上のように私は、AIをはじめとした新しい種類のシステムや新しい技術にもいち早く踏み込みながら、ソフトウェアシステムの品質の保証・向上のための研究を行っています。ソフトウェア工学における研究は、理想的なあり方や未来の先進的な技術に取り組みつつも、ソフトウェア開発の現場における課題解決・価値創造も見据えていく必要があります。私はこの点を頭において、エンジニア向けの教育・人材育成プログラム(トップエスイー)の運営や、開発現場向けガイドラインの執筆などの活動も行いながら、自動車やゲームなど様々な業種における企業との協働に基づいた研究活動を行っています。〼