見出し画像

オープンソース界隈を震撼させた、Trivy買収の舞台裏 〜 オープンソースを成功させるためにできること〜

「才能が公正に評価され、どこでも誰とでも働けるプラットフォームを作る」–––オープンソースプロジェクトのための報賞金サービス『IssueHunt』を開発・運営するBoostIO株式会社のミッションを達成するためには、いかなる社会変革が必要なのでしょうか。オープンソースを日本の“文化”へと昇華させるべく、先進的な取り組みを行う企業に話を伺っていきます。

今回は、個人で開発したオープンソースプロジェクト『Trivy』がイスラエルのAqua Security社に買収され、2019年8月のブログ記事「趣味で作ったソフトウェアが海外企業に買われるまでの話」も話題を呼んだknqyf263氏と、Trivyの共同開発者である天地知也氏にインタビュー。BoostIOのCo-founder/CEOである横溝一将が聞き手を務め、趣味で開発していた個人のオープンソースプロジェクトが買収されるまでの軌跡と、その背景にある徹底した「広める」戦略に迫ります。

構成:小池真幸モメンタム・ホース) 写真:Photo TAISHO

オープンソース界隈を震撼させたTrivy、その開発前夜

横溝一将(以下、横溝):個人開発のオープンソースプロジェクトであるTrivyAqua Security社から買収の申し出を受け、譲渡のみならず、開発者のknqyf263さんが同社の社員としてイスラエルでソフトウェア開発を続けられるようになったことは、オープンソース界隈で話題を呼びました。あらゆる開発者に、夢と希望を与えたと思います。今日はお二人にお話を伺えるのを、とても楽しみにしていました。

まずはお二人の現在の活動内容をご紹介いただきたいです。まずはknqyf263さんから、よろしくお願いします。

画像1

knqyf263氏
2019年9月よりイスラエルにてセキュリティエンジニアとしてオープンソース開発に従事。今一番応援している企業はTOTOで、何とかイスラエルにウォシュレットを普及させて欲しいと考えている。

knqyf263:knqyf263と申します。Trivyを譲渡したといっても、実際にイスラエルに行ったらどうなるか分かりませんし、まだ何も偉そうなことを言える立場ではありません。だから、顔出しNGということでマスクをつけさせていただいておりますが、ご容赦ください(笑)。

現在はIT企業でセキュリティエンジニアとして脆弱性の解析やセキュリティ向上のためのシステム開発などに従事しつつ、趣味でオープンソース開発も手がけています。ご紹介にあずかった通り、今後はイスラエルのAqua Security社で働きます。

画像2

天地知也氏
合同会社グッドウィズのCEO。看護師やゲームプロデューサーなどを経験した結果、技術に触れている時間が一番楽しかったので技術者になる。現在はオープンソースの開発を行いながら、他社への技術支援やコンサルティングを行う。

天地知也(以下、天地):天地と申します。いまはエンジニアとして働きつつ、自分でもオープンソース開発を行なっています。実はもともと看護師だったのですが、独学でプログラミングを始め、起業やゲームのプロデューサーなどを経て、エンジニアに行き着きました。かねてよりknqyf263と親しくさせていただいていたご縁で、ライブラリ構築を中心に、Trivyの開発もがっつりお手伝いさせていただきました。

横溝:ありがとうございます。お二人がオープンソース開発に携わるようになったきっかけも、教えていただけますか?

knqyf263:大学時代の先輩の一言ですね。当時はスマホアプリ制作やサーバ構築を手がけていたのですが、「オープンソースは“使う”もの」という意識が強かったです。ですがある時、Unixのコマンドシェル『Z shell』の表示設定が思うようにいかなくて困っていた先輩に対して、別の先輩が「そんなに困っているなら、ソースコードを直せばいいじゃん」と声をかけているのをいるのを見まして。ちょっとしたやり取りだったのですが、自分にとっては衝撃が大きかったのを覚えています。そこから「直す側」としての自覚が芽生えました。

またその先輩に、僕がプロトコルのレベルまで見られないことを馬鹿にされ、悔しく思ったのも大きかったです。「ちゃんとアーキテクチャから勉強しよう」と決心し、オープンソースを手がけるにあたっての基礎体力をつけることにつながりました。もちろん、「設計の理解まではしなくても、とりあえず作ってしまおう」という勢いベースのやり方もアリですが、僕の場合は、構造を理解してからオープンソースに取り組むやり方が合っていました。

天地:僕がオープンソース開発に携わるようになったのは、オープンソースの脆弱性検知ツール『Vuls』の開発者である神戸康多さんとお会いしたのがきっかけです。彼の仕事を業務委託で手伝わせていただけるようになり、あわせてVulsコミュニティにも関わるようになりました。

画像3

BoostIO株式会社 Co-founder/CEO 横溝一将
大学在学中にシステムやアプリケーション受託の会社を福岡で起業しその後上京。その後会社として作っていたBoostnoteをオープンソース化し、現在はGitHubスター約15,000を獲得している。共創してくれているコミュニティの方々に何か恩返ししたい想いや、オープンソースエコシステムが抱える課題をIssueHuntに落とし込み、グローバルなメンバー達とともに世界へ挑戦している。

横溝:お二人はどのように出会われたのでしょうか?

天地:二人ともVulsのコミッターとして活動していたことがきっかけです。Vulsでコンテナイメージスキャンするための方法を、knqyf263さんに相談したところ「前からコンテナイメージスキャナ開発を少しずつ進めていたし、このまま俺が作るよ」と言ってくださって。OSのパッケージ取得などは僕も手伝いましたが、彼がコンテナイメージの構造を調べて実装してくれたんです。

横溝:オープンソース的で素晴らしいですね。Trivyはどういった経緯で開発することになったのでしょうか?

knqyf263:1年半ほど前から、新しいコンテナイメージスキャンのツールを作りたいと思っていました。ただ、リサーチしたり既存ツールのソースコードを読んだりして検証用のコードを書いたりはしていたのですが、なかなか開発のためのまとまった時間が取れなくて。

そんな折、2019年の4月頃、天地さんが「イメージスキャナ開発を引き継ぎたいです」と言ってくれたんです。1年以上アイディアを練ってきたし自分で形にしたいという思いと、ちょうど10日間のゴールデンウィークが控えていたこともあり、「10日使えばいけるかも」と思い、開発に踏み切りました。

公開から3日後に突然、「ちょっと話したい」とメールが届く

横溝:開発はどのように進められたのでしょう?

knqyf263:ゴールデンウィーク中はひたすら開発していましたね。後輩とラーメン二郎を食べに行ったり、ボードゲームをしたりしても、急いで帰ってすぐPCに向かう生活。朝に出かけていった妻が、夜に帰ってきたときも全く同じ体制でPCに向かっている僕を見て、引いていましたね(笑)。

天地:だいたい午前8時から午前4時くらいまで、常に連絡を取れる状態で開発し続けていましたよね。ほぼ寝ずに、エナジードリンクを飲みまくって。

横溝:ハンパないですね…!続いて、買収に至った経緯についてもお話を伺いたいです。ブログ記事には「Aqua Security社からいきなりメールが来た」と書かれていましたが、実際どのようなフローで売却に至られたのでしょうか?

画像4

knqyf263:公開から3日後、まだスターが400〜500個ほどしかない時のことでした。シンプルに「About Trivy」といった件名で、「ちょっと話したい」と書かれたメールが届きました。Aqua Security社は無料の脆弱性コンテナイメージスキャナとして『MicroScanner』というツールを公開しているのですが、そちらとTrivyとの比較グラフを載せてTrivyの方が良いといった内容を書いていたので、「これは絶対に怒っているやつだ」と思い、ただただ怖かったですね。

訴訟されるリスクもあると思い、誰にも相談できずに怯えていたのですが、その次のメールに「自分はMicroScannerを作った開発者の一人です。Trivyは自分たちとは違うアプローチを取っていて、すごい面白かった」と書かれていて。ソースコードもしっかりと読んでいただいたうえでの、CTO直々の買収提案でした。

最初は半信半疑でしたが、話せば話すほど誠意を感じました。他の人に話すと「オープンソースで買収ってどういう意味?パクればいいだけじゃん」と反応され、僕もそう思ってCTOの方に聞いてみると、「うちのツールとしてパブリッシュしてメンテナンスしていきたいから、そのためにお金を払いたいんだ」と言ってくれた。また英語が不自由な旨を伝えると、その夜には通訳の方を用意してくれたのも、本気度を感じました。

横溝:すごい話ですね。オープンソースの売却自体とても珍しい話だと思うのですが、譲渡の決断に至った決め手は、何だったのでしょうか?

knqyf263:ただ譲渡するだけでなく、自分が会社に入ってその後もメンテナンスを続けられるのが大きかったです。趣味として開発を続けていくことの難しさを感じていたので、仕事として続けられるのは悪くない話だと思いました。もちろん自分一人で意思決定ができなくなるなどの問題は生じますが、それでも安定性などにおいて利点のほうが多いと考えています。

また、自分がAqua Security社に参加することを決めた理由は2つあります。まず、オープンソースのプラットフォーム『Kubernetes』のホストなどを手がける団体Cloud Native Computing Foundation (CNCF)のTechnical Oversight Committee (TOC)メンバーが、上司にいた点。TOCはCNCFにどういったプロジェクトを採択するかなどを決める立場です。グローバルなオープンソースコミュニティの中心にいる人と一緒に働ける機会は日本ではなかなか得られないため、色々と学ぶ事が多いだろうと考えました。

そして、オープンソースチームの募集要項を見たら、「オープンソースが好きで、Goが書けて、ネットワークやセキュリティ周りに詳しく、CI/CDやKubernetesの経験もある人」と書いてあり、「完全に俺だ」と思った点です。これ以上ないほどフィットしそうなチームで、運命を感じましたね。

2年ほど前にアメリカや台湾でVulsの発表をした際に、実戦的な英語力を身につけることの必要性も痛感していましたし、Trivyのメンテナンスも続けられるしで、もう断る理由ないなと。

画像8

横溝:なるほど。オープンソースを売却されたお話ははじめて伺うので、大変興味深いです。ちなみに葛藤などはありましたか?

knqyf263:最初はありました。ですがイスラエルはサイバーセキュリティ先進国であり、「そこで働いて日本と何が違うのか見てみたい」という好奇心のほうが次第に強くなっていきました。

僕は英語も苦手で全然グローバル志向ではなく、日本が大好きな人間。ですがCTOの方に「俺も英語喋れないけど大丈夫」と言ってもらえたのは大きかったですね。実際には十分喋っていて、日本人っぽい謙遜だなと思いました(笑)。

横溝:ちなみに、交渉時に気をつけておくべきポイントなどはありますか?これからオープンソースの売買はますます増えていくと思うので、売却を視野に入れている方々の参考になれば良いなと思っています。

knqyf263:前もって特許を取っておけば良かったなとは思います。既存のツールではやってない手法も使っていたのですが、予め特許を取っておけば、もっと金銭面に跳ね返ったかもしれません。結局、オープンソースは誰でも無料で使えるので、大きな金額はつけにくいと実際に言われました。その際に、独占で使える権利を付与するライセンスなどをつけておけば、もっと攻められたかもしれません。

横溝:なるほど。めちゃくちゃ重要な話ですね。

knqyf263:譲渡する際も、コントリビューターの方が「自分の権利だ」と主張するのを防ぐために、全コントリビューターに連絡してContributor License Agreement (貢献者ライセンス同意書、以下 CLA)のサインをもらわなければいけなくて、大変でした。

サインをもらえなかった場合、その方のコミットはすべてRevertしなければいけなくなります。再実装する手間も生じますし、何よりお互い気持ちよくない。だからCLAは、簡単に導入できるので、前もって入れておくべきです。CLAへのサインを拒む方の人数が多いと、譲渡の話自体が立ち消えになる可能性も十分にあります。

あえて自分では「直さない」のが、コミュニティ運営の秘訣

横溝:Trivyのようなケースが増えてくると、開発者にとって励みになりますよね。お二人は、個人としてのオープンソースの持続可能性についてはどうお考えでしょうか?

knqyf263:なかなか難しいですよね。最初は「楽しいからやるぜ」となりますが、コミュニティが大きくなり、ユーザが増えたらIssueが次々と来て寝る暇もなくなる。その結果しんどくなってしまい、クローズしていくプロジェクトは多いじゃないですか。やめるだけならともかく、悪意のあるメンテナーの手に移り、トラブルにつながることもある。

画像6

天地:Trivyで個人でのオープンソース開発の難しさを身をもって知ったので、今手がけている別のプロジェクトでは、できるだけメンテナンスコストがかからないように工夫しています。たとえば、Issueをつくる段階で、利用者にIssueの種類を選ばせ、トリアージしやすい仕組みにしました。これは、のちにVulsとTrivyにも導入しました。設計面でいうと、勘違いによるIssueを減らすため、バグに見えるような挙動に繋がる機能は、効率がよくなるとしても入れないようにしました。同様の理由で、機能を意図的に少なく設計しています。

knqyf263:自分もそれは他のオープンソースを見て感じていたので、Trivyも最小機能にこだわっています。たとえばSlack通知機能をつけてしまうと、HipChat通知やChatwork通知のリクエストも来てしまうので、Trivyでははじめから通知機能をつけていません。代わりに、JSONで結果を出し、通知のスクリプトをユーザーに書いてもらうようにしています。できるだけ自分たちで抱え込む範囲を狭めるようにしているんです。

横溝:たしかに、いつの間にかプロジェクトがサグラダファミリアのようになってしまうのはあるあるですよね。ちなみに、プルリクやコントリビューションをうまく断るために、工夫してることはありますか?

knqyf263:まだ実現できていないのですが、人間が閉じると角が立つので、Botにやらせようと思っています。たとえばKubernetesにはものすごい量のイシューが立っていますが、一定日数が経ってもコメントやリアクションがなければ、自動でBotが閉じる仕組みになっています。自分で意思決定していると、申し訳なさからメンタルもやられるので、機械に任せるのは良いなと思っていて。

画像7

横溝:めっちゃ面白いですね!イシューへの対応方針などは定めていますか?たとえば僕が手がけていたBoostnoteだと、英語以外は問答無用でクローズしたり、プルリクには該当のイシューをつけたりしていました。

knqyf263:しょうもないミスは自分で直さないようにしています。自分がコントリビュートしたオープンソースプロジェクトの方が、愛着が湧くじゃないですか。メンテナーの方が「本当にありがとう。お前のおかげで良くなった」とコメントをくれてマージしてくれるだけで、またコントリビュートしたくなりますよね。ファンを増やすために、5分くらいで直せるものでも、あえて残すようにしていますね。

横溝:すごい。BoostIOでは、これから1年で10個くらいオープンソースを作ろうと思っているのですが、コミュニティを広げるための再現可能な手法として、さっそく使わせていただきたいです。

まずはREADMEの作り込みから。「広める」努力を怠らない

横溝:少し話を変え、日本国内でオープンソース開発に携わる人を増やすための方法についても伺いたいです。よく聞くのは、「自分の書いたコードを見られるのが恥ずかしくて、コントリビューションに踏み切れない」という話。僕も綺麗なコードを書くのが苦手なので、気持ちはよく分かります。どうすればこの壁を乗り越えられると思いますか?

画像8

knqyf263:気にしないことが大事です。有名で世界的に使われているオープンソースプロジェクトでも、コードが汚いものはたくさんあります。それでも、みんな恥ずかしげもなく出しているので、自分だけ恥ずかしがっていてもしょうがない。

という話はよく聞きますが急に羞恥心を捨てるのは無理なので、まずは巷にあるオープンソースプロジェクトのコードをいくつか読んでみてください。「これくらいなら俺にも書けそう」という気持ちになりますから。別にdisっているわけではなくて、コードなんて汚くても、誰かの問題を解決できるなら、十分に価値があると思うんです。コードが汚くても誰かの役に立っている自分と、コードの綺麗さを気にして誰の役にも立っていない自分を想像し、比較してみると良いかもしれません。日本人は完璧主義者も多いと思うのですが、100点満点にならないと出せないと思っていては、永遠に前に進めません。

横溝:プロダクト作りと同じですね。開発したオープンソースを広めるためのコツについても、教えていただきたいです。

天地:Vulsもそうでしたが、まずは海外から攻めるのが良いと思います。日本人はそもそもユーザー母数が少ないうえに、スターをつける人の割合も多くはない。だから、まずは海外のTwitterのインフルエンサーや、『Hacker News』などのニュースサイトに載るように努力しましょう。インフルエンサーの方に「取り上げてください」とメッセージを送るのも手です。無視されることも多いですが、使われなければ価値は出てこないので、そのくらい死に物狂いで広める努力をすべきです。

あと僕らはREADMEにもこだわっています。TrivyもDockleもREADMEをお互いにレビューしあって、納得いくものができるまで1週間くらい使っています。特にknqyf263さんは、できることを、ひと目で表現することにこだわっていました。

knqyf263:一画面だけ見れば使い方が理解できるREADMEがいいですよね。スクロールして読んでいかないと伝わらないものだと、途中で閉じちゃうじゃないですか。パッと見てできることが分かってはじめて、「ちょっと使ってみようかな」という気にもなる。機能がたくさんあっても、コア機能は一つに絞れると思うので、それが一目で伝わるようにすべきです。

たぶん最初に爆発的に広めてくれる人って、第一印象で判断しているケースが多いと思うんですよ。だから、まずは面白そうと思ってもらうことが大事。もちろん良いものを作ることは必須ですが、最初の「使ってもらう」ハードルを乗り越えないと、せっかくの価値が伝わりません。

あと動画を使う際は、GIF形式にするのがおすすめです。別ページに飛んで再生ボタンを押してもらうプロセスを経ずに、GitHub上で開いたらすぐに見てもらえるので。

画像9

knqyf263:僕は昔、かなりの自信作のオープンソースをつくったにも関わらず、他人に使ってもらう努力を怠ってしまったがために、誰にも使われずに終わったことがあります。その反省があるからこそ、今はこうして広めることもサボらないようにしています。自分のようにゴリゴリ押しに行くのが苦手でも、とりあえずREADMEだけでもちゃんと書きましょう。インフルエンサーの方に拾ってもらえる確率がぐっと高まるので。

スターを押すだけでもいい。できる所から「貢献」をはじめよう

横溝:そもそも、日本でオープンソースにコントリビュートする人の絶対数が少ない点も問題だと思います。コントリビューターを増やすために、お二人はどうすればいいとお考えでしょうか?

天地:まずはコントリビューションのハードルを下げるところからはじめる必要があると思います。スターを付ける回数ですら、海外の人に比べると、圧倒的に日本人は少ないと感じます。スターでも、READMEの誤字脱字を直すだけでもいいから、何かしらのコントリビューションを行うことが「かっこいい」とみなされるような文化ができるといいですよね。

knqyf263:あとは、「とりあえず直せばいいじゃん」と思えるマインドセットを広めることですね。冒頭でお話した通り、僕自身が大学の先輩にそうした考えをインストールされて、オープンソースにコミットするようになりました。特別な技術やテクニックを教わったわけではありません。既にオープンソースにコントリビューションしている人は、まずは周囲の人にそうした考え方を広めていってほしいですね。

天地:ツイートするだけでも、開発者はたいていエゴサーチをしているので、見つけてもらえる確率は高いです。できる範囲からでいいので、何かしらの「貢献」にトライしていけるといいですね。

画像10

横溝:今回のTrivyの買収は、日本のオープンソース開発者や開発者コミュニティをたいへん勇気づけた出来事だったと思います。最後に、今オープンソース開発を手がけている人や、これからトライしようとしている人に向けて、応援のメッセージをいただけますか?

天地:技術力が高くなくても、オープンソースに参加していいんだと伝えたいです。僕も2年前までは、「オープンソースは技術力が高い人が手がけるもの」というイメージがありました。だけど、実際にオープンソース開発にコミットしている人たちに会うと、人間味あふれる面白い人が多く、分からないことや改善点があればやさしく教えてくれます。その結果、僕ができることが増えていきました。オープンソースへの参加をためらっている人の中には、いまの僕よりもコードが綺麗に書けて、技術力が高い人はたくさんいます。僕がオープンソースでそこそこ上手くやっていけているので、ハードルを高く捉えないでほしいです。

あとは先ほどもお伝えしたように、何かをつくった際は「広める」ための仕組みもしっかりと考えましょう。いろいろとチャンスも増えますし、なによりも利用者の声はめちゃくちゃモチベーション上がりますよ。

knqyf263:僕は「一旦、最後まで走りきる」ことを大切にしてほしいです。作った後に誰かに使ってもらえる保証はないし、無駄になってしまうかもしれない中で、開発を続けるのは大きな不安やプレッシャーを伴います。だからこそ、途中で気持ちが切れてやめてしまう人も多いのですが、「この人、最後まで走り切ったらいけたのに」と思えるような人も少なくない。

Trivyも、ゴールデンウィークの半ばまでは上手く行くイメージが見えず、途中で投げ出しそうになったのですが、なんとかやり切りました。あそこでやめていたら、ただゴールデンウィークの半分を無駄にしただけになっていましたね(笑)。

横溝:諦めない、やりきる、不安やプレッシャーと戦う・・まさにスタートアップと同じですね。

knqyf263:そうですね。途中でやめるのは、本当にもったいない。最後まで走り切り、駄目ならまた次を考えればいいんです。

あと、「オープンソース開発に興味はあるが、特に作りたいものがない」という悩みを抱えている人も多い印象があります。そうした人は、まず目の前の業務に真剣に取り組んでみましょう。「オープンソース開発をしたい」という気持ちだと、取り組みたい問題は見つかりにくいと思います。必要とされることを普通に一生懸命やっていくうちに、テーマは自然と見つかります。僕も、Kubernetesの運用にがむしゃらに取り組むなかで、コンテナのセキュリティへの関心が湧いてきました。焦らずに、目の前のボールを1個ずつ打ち返していきましょう。

そして誤解を恐れずに言えば、「性格の悪さ」も身につけた方がいいでしょう。性格の良い人は、不満があっても飲み込んで受け入れてしまうと思うのですが、「これはおかしい」という不満に正直でいたほうが、オープンソースソフトウェア業界では強いと思います。

横溝:めちゃくちゃ「起業家」ですね。日頃の生きづらさを、サービスに昇華していくことこそがアントレプレナーシップですし、オープンソース開発も同じだなと感じました。

また、オープンソース開発における大変さやそれを乗り越える大事さ、作った後の広げ方など、精神面から実務面まで役に立つ情報をシェアいただき、本当に勉強になりました。僕たちも早速実践してみようと思います!

画像11

今日は本当にありがとうございました!

(了)

📣 BoostIOからのお知らせ
IssueHuntにて、オープンソースプロジェクトの支援や、求職中の開発者の方々と企業をマッチングするサービスを提供しております。
ご興味をお持ちの方は、当社のDeveloper Relations・海老島までご連絡下さい!
https://forms.gle/RXwrj7SpwDEeX8RTA
までご連絡ください!


この記事が気に入ったらサポートをしてみませんか?