このエントリーをはてなブックマークに追加

早稲田大学基幹理工学部准教授 鷲崎弘宜さんインタビュー

今回は、早稲田大学基幹理工学部准教授・グローバルソフトウェアエンジニアリング研究所所長 鷲崎弘宜さんにインタビューさせて頂きました。ソフトウェアエンジニアリングや研究・開発における理論的思考についてお話しを伺いました。

先生の研究の概要を教えて下さい。

一言で言えば、ソフトウェアエンジニアリングです。学問で言うとソフトウェア工学なのですが、ソフトウェアエンジニアリングと言う場合は単なる学問だけではなく、それを実際の場でどう活かすのか、どう実践するのかという、ソフトウェア開発や運用の実践の技術を扱っています。

柱としてはソフトウェアの設計や再利用、ソフトウェアの品質保証、ソフトウェア開発やプログラミングの教育方法を扱っています。例えば、品質保証の根幹をなすテストに関しては、有効なテストの仕方をいかに現場でアクショナブルな形で導入するのかという事を追求しています。我々の強みは、ほとんどの研究を企業と実施している事です。問題意識として、企業の現場ではしばしば「大体こういう時はこうしたらうまく行くだろう」と経験や勘で進められています。そういうのは、間違っていない部分もありますが、理論がしばしば欠けています。

そこに対して大学では、実はここにはこんな限界があります、もっとこういう良い方法があります、という具合に一歩引いて俯瞰しつつ経験を理論で裏打ちするという事と結び付けたいという思いがあります。そのため、できるだけ共同研究という形で現場の問題を把握させて頂けるように努めています。

開発において、どのような事に気を付けたら良いか、またどのように行ったら良いでしょうか?

例えば、プロジェクト管理ツールやビルドツールで何かのデータを取っているとします。テストケースをどのくらい回しているか、消化しているか、今プロジェクトがどうなっているのか、というソフトウェアの品質やプロジェクトの診断に使えそうなデータというのは概ねあります。

ですが、それを十分に活用できていないと思います。次の一週間、あるいは一ヶ月先の未来はこうなっていくだろう、という予測をして、次はこういうアクションを取ると良い。という風に診断してアクションに結びつける、という所にはまだ至っていないのではないかと思います。

恐らくそれを直感的にされている場合はあるとは思うのですが、もう少し理論的な裏付けをもって次の未来はこうなりますよ、したがって次はこういうアクションが取れますよという意思決定支援の仕組みを企業に導入頂こうとしています。無論、個々のプロダクトですとか現場の事象がありますから、最終決定は現場のご判断ですね。そこは参考情報として見て頂いて意思決定をして頂きますが、そういう診断情報があるだけでもだいぶ違うのではないかと我々は思っています。

具体的に企業で行っていることはありますか?

例えばYahoo! JAPANさんと今行っているのは、プロダクトやプロジェクトのデータを測定して状況や品質を診断し、未来を予測し、未来を変えるというアクションに繋げようというものです。様々なデータを測定し診断結果を表示するツールをビルドツールのプラグインという形で開発し、今試行を頂いている段階です。

また富士通さんとは、組織変更に着目して、オープンソースソフトウェア等の様々なソフトウェアの品質測定評価に取り組んでいます。一定規模以上のソフトウェアはしばしば、一つの組織が全部作っているわけではなく、様々な組織の手を経て作られていきます。そうすると、様々な組織が異なる開発の仕方をとっていくため、様々な組織が手を付けた箇所ほど実際バグが多く出てきます。そういう事は肌感触で現場の方がお気付きになっているわけですが、確かにデータとしてそう出ますよ、という事を実証的に明らかとします。

結果として、こういう怪しい所を重点的にレビューしたり、あるいは欠陥を作り込みにくいような分かりやすい設計にするなり、きちんと取り組んだ方がいいというアクションに繋がります。それが品質向上に繋がってくると思います。

研究以外で行われている活動について教えて下さい。

今取り組んでいるのは、情報処理学会主催のSamurAI Codingという国際AIプログラミングコンテストです。

最初は、GREEさんと一緒にプログラミングコンテストとして開催しました。与えられた問題を解決するという競技系のプログラミングコンテストではなく、ゲームのキャラクターを対戦させるプラットフォームを用意しまして、エンジニアや学生の方々に、ゲームキャラクターを自律的に動かすある種の人工知能プログラムを作って頂きます。初めて開催したのが2011年で、それが好評だったため、現在では情報処理学会の傘下でより国際的に実施しています。

このようなコンテスト式で競うことでプログラミングを学習したり、それを更に発展させたり実現させたり、ということは関係する人々にとって学びの大きい創造的で質の高い体験であると思っています。

そういうプラットフォームを自分たちで作って提供する、運用するという事もしていますし、一方で既存のコンテストへの参加というのも学生には奨励しています。その一例がETロボコンです。これはレゴのマインドストームで作られたロボットを自律的に動かす、というものでして全国規模で開催されています。その東京地区大会はここ数年、早稲田大学でホストさせていただいていて、学生にも参加を奨励しています。こういう実際に競う場面、オープンな場というのは学生にとって自ら技術、知識を高めていく非常によい動機付けになっています。

最後に、ご覧のみなさんへメッセージをお願いします。

最近思いますのは、プログラミングなどによって支えられる情報技術は非常に創造的かつ学際的な領域であるという事です。通常のモノ作りでしたら、初期のコンセプトを出して、モックを作って検証し、それから小さいスケールで作り、検証し、ようやく量産に入って、という非常に超大な時間がかかります。しかしプログラミングやそれに基づいた情報の技術、例えばソフトウェアなりサービスなりといったモノであれば、創造と革新を非常に速いスピードで回せます。

もう一つ面白いのはそれが非常に学際的という事です。残念なソフトウェアは世の中に溢れていますね。正しく動くけど、なんの役にも立たない、誰も使わない。そういったことは防ぎたいですね。プログラミングや情報技術によって何かを達成するということは、情報技術外の社会や領域と関わるという学際的なことであるわけです。扱う対象やドメインに対しての知識が必要になってくるでしょうし、それとプログラミングや情報技術をどう結び付けるかという考え方・姿勢が必要です。

「私は情報技術の専門家だから言われた通りに作ります」というのではなく、対象とするドメインの性質や問題を捉えて、どういう選択肢があるか、どういうプログラミングが必要か、どういう情報技術やシステムを生み出して問題解決に使えるだろうかという事を考える。そういう姿勢が大事だと思います。エンジニア就活のご覧のみなさんも、理論的な考えを持ち、未来を予測する力を付けてみませんか?

おすすめの記事