ソフトウェアテストの実行を機械学習で効率化する。Jenkins作者の川口氏が立ち上げた「Launchable」で実現しようとしていることとは(前編)

2020年6月15日

Jenkinsの作者として知られる川口耕介氏は、昨年米国で新会社「Launchable」を立ち上げ、日本にもその100%子会社であるLaunchable Japanを近日中に立ち上げ予定です。

Jenkinsの登場がテストやビルドの自動化を促進し、ソフトウェアの開発生産性を向上させたことは明らかでしょう。川口氏によると、Launchableは機械学習などの技術を用いてそれをさらに前進させるものだとしています。

インタビューを行った5月末の時点で、同社は米国に6人、日本に4人と10人ほどの体制で製品開発を進めています。

果たしてLaunchableはどのようなビジョンで何を実現しようとしているのか、同社共同創業者兼共同CEOの川口氏と、Launchable Japanのプリンシパルソフトウェアエンジニアの庄司嘉織氏に話を聞きました。

fig 川口氏(左)と庄司氏(右)。インタビューはオンラインで行いました

ソフトウェア開発の生産性強化はまだ経験や勘に頼っている

―――― 川口さんがブログに書かれた記事「Launchableからこんにちは」などで、Launchableが何をしようとしているのかはある程度説明されているとは思いますが、あらためて、なぜLaunchableを立ち上げ、なにを目指しているのか、教えてください。

川口氏 はい。Jenkinsを作ってきて感じていたのは、ソフトウェア開発者はこうしたツールで自動化された外骨格みたいなものを身に着けて、そうすることでパンチの威力を上げる、といった強化をしてきたのですが、この外骨格を作り上げて強化することそのものが、経験とか勘にみたいなものに頼っているところがあるということです。

自動化が進むにつれて、その自動化されたシステムたちから非常にたくさんのデータが出てきているにもかかわらず、それを使ったプロセスの改善みたいなものが行われていないなと思ったんです。

一方、CloudBeesで経験したことの1つで、セールスやマーケティングの人たちは定量的にいろんなものを把握していて。それが目からウロコだったんです。

―――― というと、どういうことですか?

川口氏 例えばCloudBees(注:川口氏が前職でCTOを務めていた会社)ではエンタープライズ向けのソフトウェアを売っていたわけですが、セールスのファネルは5段階あって、顧客がこういう条件を満たさないと次の段階に進めない、といったモデルを担当役員などが作るんですよ(注:セールスファネルとは、見込み客から購買に至るまでの段階を区切り、その中で顧客がどの段階に位置するかを示すことで売り上げの状況などを管理するモデル。購買に向かって徐々に顧客が絞り込まれていく様子が漏斗に似ていることから「セールスファネル」などと呼ぶ。)

で、顧客との実際のやりとりをCRMに記録していくと、5段階あるファネルのどこにどれだけの顧客がいるかが分かって、するとそこから第何四半期のどれくらいセールスがクローズするはず、といったことが分かって。

そういうのとセールスチームのリーダーの中にある「こういうはずだ」という考えとのあいだにズレがあれば、なぜズレているのかという疑問を解いていく過程で新たな発見があって、それでセールスのプロセスに改善が行われるとか、そうしたことが数字を基に行われていたんですね。

セールスやマーケティングはこうやって仕事を定量的に把握していて、一方でエンジニアはわりと勘と経験でやってて、そこはちょっと恥ずかしい気がしたんですよ。

もう1つ思ったのは、多くのソフトウェアエンジニアたちがメディアとかカンファレンスとかできらきらした前向きの技術を話しているのに、実際の現場ではいろんな苦労をしていて。

その意味で、テストは昔からある身近なテーマとしてみんなの課題になっているなと。特にソフトウェアの開発規模が増えてくるとテストの量が大きくなっていって、どこかの時点で行き詰まってしまうという、そういうのを何とかしたいと思っていました。

彼らにできたのなら、僕にできない気がしない

川口氏 そうしたなかでFacebookがある論文を出したのを読んだんです。彼らもまさにテストが多すぎる問題に直面していて、テストの実行数が拡大していって実行が追い付かなくなってきている。

そこで彼らは機械学習のモデルを使って、コードのどこかが変更されたときに、そこに敏感だと思われるテストを実行するようにしたらこういう成果がでました、という論文を公開したんです。

それを読んだときに、これはソフトウェア開発者としてたしかにそういうことができそうな気がしましたし、実際にFacebookができそうなことを論文で証明した。ただ、Facebookがやったプラクティスは彼らの会社の外で適用できる形ではでてきていません。汎用のソリューションになってない。

でも、彼らにできたのなら僕にできないという気がしないし、Jenkinsのときも、いろんなところでインハウスのソリューションだったものを汎用化したところがあって、これは同じパターンだなと。そこがスタートでした。

10分の1程度のテストを走らせるだけで十分にする

―――― テストの効率化に機械学習を利用すると。具体的にLaunchableが作っているのは、どのようなものなのでしょうか?

川口氏 いま取り組んでいる製品というのは、開発者がコードに加えた変更に敏感なテストを探し当てて割り当てる、というものです。するとテストを全部走らせなくても、10分の1程度のテストを走らせるだけで十分なフィードバックをテストから得られるようにする、ということをやっています。

これで長かったテストの待ち時間が10分の1になると。

一般のソフトウェア開発現場では、コードに変更を加えた後、テストを実行して結果が得られるまでに何時間もかかる、ということが往々にしてあります。これを例えば10分の1にすれば、かなりのインパクトと価値がある。テストからのフィードバックが得られる時間が短くなるだけでなく、テストにかかるコストも安くなります。

いまこれを、実際にいくつかの会社にベータテスターという形で使っていただきながら開発に取り組んでいます。

こういうことを第一弾として取り組んでいます。QAに関してはほかにもさまざまな課題があることは分かっていて、テストの実行に関するデータを集め始めたら、それを使った機械学習などでもっといろんなことができると思っています。それが第二、第三の矢になると思っています。

―――― すでに十分成果があげられる機械学習のモデルができている、ということですか?

川口氏 いろんな角度からの応え方があると思うんですが、われわれはサイエンスではなくてエンジニアリングなので、極端に言えばなにをやったとしてもユーザーにとってインパクトのある結果がでればそれでいいんです。

初期のこの段階からいろんな会社さんにベータテスターになっていただき、一緒に開発をしているのは、どのくらいのインパクトがでれば彼らにとって意義があるのか、そこに唯一の答えがあるからかなと。

それから、現在のスタート地点というのが、一般に行われているテストの実行がそもそも、コードにどんな変更をしたとしても、それとは関係なくテストを順番通りに実行するという、考えうる限り最悪の順序付けをしているんですね。

なので大したことをしなくても、それなりに成果が出ることは考えられますよね。

その一方で、どこまでいけるかということについては、いろんな可能性を考えていて、それは今後いろいろ研究していこうとしています。そういう人もチームにいます。

成功するテストには価値がないので実行しないようにする

―――― それはつまり、テストを自動生成するとかそういうことではなく、テストを効率的に実行するためのプラットフォームを作っている、ということですね。

川口氏 そうです。テストって、実行して成功するテストは、いわばなんの価値もないんです。有意義な発見を与えてくれないので。そういうのを実行しないようにする。

そういうことを予測するのに有用そうな情報を抽出して、それを機械学習にかけると役に立つことを学習してくれる、というものですね。

どのようなテストがどのように振る舞うかわかってくると、例えばこのテストはあんまり有用な情報をあたえてくれないにもかかわらず、メンテのコストがかかっている、といったことが分かってくると。

するとテストをメンテする人たちにはどのへんの手間がムダで、どのへんのエリアのテストが足りないのか、といったフィードバックもできる、そういう意味でもいろんな可能性があると思います。

庄司氏 テストに時間がかかるといった問題って、すごい昔から問題とされていた。けれど、そこに真っ向から取り組もうというアプローチは、分散テストなどはありましたがインテリジェントに取り組もうというのは初めてなんじゃないかなと思います。

テストが遅くて困るというのはどの会社でもつきまという問題だと思っていて、例えば緊急リリースしなくちゃいけないけどテストがまだ通ってないからすぐにリリースできない、ということを結構みんな経験していて、それを解決できるのはすごいなあと。

世界中のエンジニアの時間を1日10分ずつでも縮められたら、それだけで未来が来るのを早められるんじゃないかなと思います。

―――― なるほど。庄司さんがLaunchable Japanの1人目の社員とうかがいましたが、庄司さんは日本でどんな役割をされるのですか?

庄司氏 基本的に日本のエンジニアリングチームのマネージャという立場ですが、まだ人数が少ないのでコードを書くデベロッパーの側面も最初は多くなっています。

≫後編に続く
後編では製品の提供形態、日本法人を立ち上げた背景などを聞きました。

関連記事

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




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本