オープンソースビジネスの挑戦と現実
いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・ソフトウェアを元にビジネスを立ち上げようと試行錯誤してきた。その経験についてここでシェアしてみようと思う。
あらすじ
薄々予期していたことではあったけれど、結論から言うと、そんなにはうまくいかなかった話ということになる。要点をまとめると次の通りだ。
「moldリンカ」というオープンソースのツールを開発して、それを元にビジネスを行おうとしていた
そこそこ稼ぐことはできたものの、大きなリターンを得るのは難しかった
ほとんどの企業はオープンソースを大々的に活用していても「無料のソフトウェア」にはお金を払うつもりはないし、払いたくても社内制度上できない
大きなリターンを得たいのならば、自作のオープンソース・ソフトウェアを元にサービスを立ち上げるか、単に商用ソフトウェアを開発するのがよい
詳しく書くと次のようになる。
きっかけ
僕は2013年〜2019年まで、「LLVM lldリンカ」というオープンソースの開発ツールの開発をGoogleで行っていた。lldリンカはオープンソース・ソフトウェアとしてはかなり成功していて、今では大規模開発の現場ではほぼ必ず使われるような標準的ツールになっている。それまでのリンカに比べてlldリンカはずっと高速なのが特長だった。Googleはlldから直接収益を得ていたわけではないけれど、開発ツールがキビキビ動くようになるとGoogleエンジニア全員の開発効率が上がるわけだから、lldリンカのようなものを従業員に作らせるのには合理性があった(これについては「オープンソース活動がフルタイムの仕事になる仕組みの話」という記事を書いた)。
その後、2020年にコロナが流行してきてリモートワークになったり、コロナショックならぬコロナバブルで株価が上がって資金的に多少余裕ができたこともあって、僕は特に次の当てもなくGoogleを退職することにした。しかし僕のような人間は時間ができると何かしらのものをつい作ってしまうもので、自由になった時間で僕は「moldリンカ」という新作を作り始めた。moldリンカはlldリンカとほぼ互換なのだが、lldの開発で得た知見を元にさらなる高速化を図っていて、実際にlldより数倍速いものを作ることができた。
その流れで、moldを元に会社を設立してオープンソースで稼ぐという挑戦をすることになった。自分の商売を始めてみたいという気持ちは以前からあったので、ちょうどよいチャンスだったというわけだ。挑戦するからには、給与所得では不可能なレベルの利益を得ることを目標にしようと思っていた。
狙い
オープンソースで稼ぐためには次の二つのことをする必要があった。
人気のオープンソース・ソフトウェアを書く
それを何らかの方法でマネタイズする
僕の場合、(1)はあまり大きな問題ではなかった。業界標準のlldリンカの作者の新作というだけでみんなそれなりに着目してくれるし、moldは実際に宣伝どおり高速なので、放っておいてもそれなりにユーザは勝手に増えていった。
マネタイズについて僕が当初考えていたのは主に次の4つの方法だ。
1つは、GitHubスポンサーで寄付を募ること。大規模なプロジェクトでは月間1万ドルを超える寄付を得ているものもあったりするので、人気のプロジェクトになればそれなりにGitHubスポンサーで稼げるかもしれないと思った。
2つ目の方法は、サポートを売ること。広く使われているプログラムであればサポートを必要とする企業ユーザがいるかもしれないし、そういう人たちはお金を払ってくれるかもしれない。
3つ目の方法は、新機能開発を請け負うこと。ユーザによっては、お金を払ってでもいいから何らかの新機能をmoldに追加してほしいと思うかもしれないし、そういう人からお金をもらって優先的に新機能を開発するという商売ができるかもしれない。
最後の方法は、プロジェクト全体を売却すること。moldはAGPLライセンスなので、ネットワーク越しにサービスを提供する場合は「ソフトウェア全体」のソースコードを公開する義務が生じる。リンカの場合はネットワーク越しにサービスを提供するわけではないので、正直AGPLだからどうということはないのだが、一部の企業(例えばGoogle)ではAGPLプログラムを念の為に全面的に禁止しており、そういう会社はプロジェクト全体を買収するインセンティブがある。moldリンカを買収して、MITなどのもっとリベラルなライセンスに変更して、自社のポリシーに合った形で使えるようにしたいというケースがあるだろうなと思ったのだ。
現実
moldは狙い通り、それなりに人気のオープンソース・ソフトウェアになった。既存のツールと互換で単により速いというものなので、使いたい人がいるのは当然だろう。GitHubでのスターの数も1万を超えた。
マネタイズは思っていたほどにはうまくいかなかった。GitHubスポンサーでは月額$1500くらいのお金が集まった(個人全体では月額$3000だが、半分は別のプロジェクトへの寄付)。サポート契約は、月額$5000の契約を1つ結ぶことができた。この2つを合わせると月額$6500、年間だと$78,000。今の円相場(1 USD ≒ 140 JPY)だと年間約1100万円の売上である。
この売上だとそこそこ儲かってるように見えるかもしれないけど、何十万ドルも稼いでいたエンジニアが仕事を辞めて(僕は Googleではスタッフエンジニアだった)、リスクをとってビジネスを始めた結果、8万ドル弱の売上しか立たなかったという話なので、正直なところ割には合っていない。サポートの契約が切られて売上が月$1500に急減することもあり得る。少なくともこれは、当初思い描いていた成功のイメージからはかなり遠い。
オープンソース・ビジネスの問題点
オープンソースのビジネスには、僕が思うに以下のいくつかの問題があった。
まず第一に、サポート契約を結んでくれる会社はほとんどないし、サポート契約というビジネスモデル自体が利益相反になる可能性があるということである。そもそも多くの会社は、問題なくソフトウェアが動くのならばサポートを必要としない。また、サポートが必要(使いにくいとかバグが多いとか)であるほど自分が儲かるというというビジネスモデルを確立してしまうと、ソフトウェアの品質を上げすぎると利益が減ることになる。長期的な成功のためには、ユーザの成功が自分の成功に繋がる仕組みを作らなければいけないのに、それと逆の仕組みになってしまうのである。これは望ましくない。
第二に、新機能開発の請負はあまり仕事にならないということがある。実際に数万ドルで、とある機能をmoldに追加したことはあるのだが、継続して発注が来るような商売にはならなかった。それに、そもそも僕はフローではなくストックによる商売(労力と売上が比例する人月商売ではなく、一度儲かる仕組みを作ると継続的に儲かるビジネス)を目指していたので、請負はそこまで嬉しい話でもなかった。
第三に、GitHubスポンサーで大きく利益を上げるのは難しいということがある。GitHubスポンサーはソフトウェアを使う対価としてお金を払うものではなく、単に善意で寄付を行うものなので、大きなお金を集めるのは難しい。誰かがすでに何千ドルも毎月GitHubスポンサーでお金を集めているとしたら、その人ではなく、経済的にもっと厳しそうな何か別のプロジェクトにお金をあげようと思うのが普通の感覚ではないだろうか? したがってGitHubスポンサーでは、副収入程度のお金を集めることは比較的簡単かもしれないけど、大成功を収めるのはほとんど不可能のように思える。これは一部のスターYouTuberがスパチャで大金を稼いでいたりするのと対照的だが、オープンソースにおける投げ銭はショービジネスにおける投げ銭とは何かが根本的に違うということなのだろう。
第四に、GitHubスポンサーを集めるという行為に心理的負担が伴うという問題がある。スポンサーは自然と減っていくので、現状を維持するためだけにも定期的に寄付を呼びかけていかないといけないのだけど、そもそも一切スポンサーをする気のない人には僕からのメッセージは届かないし、すでにスポンサーしてくれている人には「これでは足りない」という負担を感じさせてしまうので、スポンサー募集を呼びかけ続けるのは心苦しいものがある。オープンソースは経済的に損だという話をすると怒り出す人もいるし(特にRedditとかにたくさんいたけど、多分僕はそういう人たちよりずっとたくさんオープンソースに貢献してきているので、それもまたモヤモヤする)、僕だってあまりお金お金と言っている人だとは思われたくはない。これは、価値のあるソフトウェアをわざわざ無償で使えるように提供しつつも、なるべくお金を払ってくださいという2つの相反するメッセージを同時に送っていることから生じる根本的な問題であって、それなら単に有償ライセンスでソフトウェアを提供してその対価を受け取るというドライな関係のほうがお互いずっと気楽である。
第五に、企業からGitHubスポンサーでお金を集めるのはほとんど不可能に近いということがある。例えばある会社がmoldを使って開発効率を向上することができたとして、現場のエンジニアが僕に対して会社からスポンサーするべきだと思ったとしよう。では、スポンサーシップをするための購買申請をそのエンジニアが上げたとして、マネージャはそれを承認できるだろうか? 普通の会社では「対価として何も得られないものにお金を払う」という申請を承認することはできない。そしてこれは経営陣のレベルですら判断が難しい。株主に帰属するはずの利益を勝手に寄付しているということになりかねないからだ。また、会計処理において寄付になるのか(税引き後の利益から払うことになる)、あるいは経費になるのかもよくわからないし、経費ならばどの仕訳になるのかもはっきりしない。要するに、スポンサーをしたいと社内の人が考えたとしても、実務的にそうするのは極めて困難なのだ。いろいろ社内調整をしてスポンサーになることは不可能ではないかもしれないけど、単に何もしなくても「無料のソフトウェア」を使うことができるわけだから、スポンサーするための政治的困難さをくぐり抜けるインセンティブは誰にとってもないのである。
なお、最後の問題については、事前にオープンソースのスポンサーシップのために予算を計上していて、そのための社内手続きが存在している会社であれば、スポンサーになるのは社内制度的に可能である。日本だと例えばサイボウズなどはそういう会社で、moldプロジェクトをサポートしてくれている。
上記の話をまとめると、オープンソース・プロジェクトは成功時のリターンの上振れが少ないので、大きなリスクを負う代わりに大きなリターンを求めるスタートアップがメインで行うべき事業ではないというのが僕の現状の結論ということになる。別に利益が全てというわけではないけれど、儲けたいのならば、人気のオープンソース・ソフトウェアを作れば何らかの方法で儲かるだろうと考えて行動することはあまり合理的とは言えない。
新しいビジネスプラン
では、大きな利益を得るためにはどうすればよいのだろうか?
一部の企業は、製品をオープンソースとして提供しつつ、それをクラウドでサービスとして提供することで売り上げを上げている。オープンソースで直接稼ぐのではなく、オープンソースを使って稼いでいるわけだ。ただし、このビジネスモデルは、そのオープンソース・ソフトウェアをAWSなどがサービスとして提供するという脅威には脆弱で、実際にそういうことはよく起きている。したがってネットワーク効果によるロックインがあるもの、たとえばgitとGitHubのような関係のサービスを運営するのがよいのだろう(gitはGitHubが開発しているわけではないが)。
別のプランとしては、単に「オープンソース」であることをやめて、「ソース利用可能な商用プロダクト」にライセンスを変更してしまうという方法がある。ソースコードは公開されているけど利用には一定の条件下で支払いが必要なプロダクトというモデルに転換するというわけである。そういうモデルであれば企業ユーザから支払いを受けるのは簡単だ。
moldは実際、僕がサブライセンスが可能なライセンス形態になっており(AGPLとMITのデュアル・ライセンスで利用可能なことをプルリクエストの条件にしている)、moldを商用ライセンスに転換することは不可能ではなかった。
ただし実際には、Linux版のmoldはすでに完成といってよいレベルに達していて、いまさらライセンスを変更するのは難しかった。オープンソースは期間の定めがないライセンスなので、最新版のライセンスを変更したとしても、それ以前のバージョンはAGPLで利用可能なままである。したがって、moldのライセンスを一方的に変更したとしても、誰かが最後のオープンソースのバージョンをフォークして開発を続けてしまうことは容易に予想できた。そうなると、ライセンスを変更して商用ソフトウェアに転換すると単に自分がプロジェクトのオーナーシップを失うという結果に終わることなるわけで、僕に取ってはデメリットしかなかった。
一方、macOS版のmoldは未完成だったので、結局僕はそちらのライセンスを変更して、「soldリンカ」という別ブランドで商用ソフトウェアとして製品展開していくことにした。soldリンカは実際に大規模なiOS開発をしているユーザから引き合いがあって、ライセンスしているユーザの数は増加していっている。
というわけで、今は僕はmacOS/iOSに注力して、普通のソース利用可能な商用ソフトウェアとしてビジネスを展開することにフォーカスしている。
まとめ
オープンソースにはオープンソースのよさがある。僕は長年のオープンソースのサポーターだ。ただし、経済的に大きく成功することを第一の目標にしているのなら、おそらくオープンソースはあなたの目標のための手段として取るべきものではない。まあ、これは当たり前の結論なのだが、いろいろ試行錯誤してみても結局結論は変わらなかったのである。
おまけ
macOS版のmoldに注力するといっていた矢先、AppleがmacOSのリンカを書き直して高速化したことがアナウンスされてしまった。
Today at WWDC we introduced a new static linker. It is a ground-up rewrite that’s up to 5x faster than ld64. The new linker is written with multicore in mind, and it’s the first production ready parallel linker officially supported for iOS development. (1/n)
— Davide Italiano (@davidecci) June 5, 2023
こうなると僕のmacOSビジネスはおそらく消滅である。Appleが競合製品を作ってくるリスクは認識していたけど、もしそうするとしたら、新規プロジェクトを立ち上げる前にまず僕のリンカを買収しようとするだろうと思っていた。実際にはAppleは数年前から新しいリンカの実装に取り組んでいたようなので、僕がプロジェクトを始めたのが少し遅すぎたようだ。WWDCの発表一つでUnityの株価が20%近くも上がったり、逆にImagination Technologiesの株価が60%も急減したりするのを見て、なかなかすごい世界だと思っていたが、僕もそういう直撃をくらってしまった。まあ、半年分の仕事がパーになってしまっただけなので、大した損失ではないんだけど。