Launching a Side Project Backed by Github Sponsors

Matthias Endler

GitHub Sponsorsに支えられたサイドプロジェクトの公開

昨日、私たちはanalysis-tools.devを公開しました。正直、反響の大きさは想像以上でした。

これは静的コード解析ツールを比較するためのサイドプロジェクトです。静的解析は、ソースコードを実行することなくバグを検出し、コード品質の向上に役立ちます。

このプロジェクトの何よりの魅力は、完全にオープンソースであることです。私たちは広告表示やユーザーのトラッキングに依存しないプロダクトを作りたいと考えました。その代わりに、GitHubでスポンサーを募る——それだけです。この過程で多くのことを学びました。同じように挑戦してみたい方は、ぜひ読み進めてみてください!

まずは数字から

誰もがビジネス指標は好きなものです。私たちの数字をいくつか紹介します。

  • プロジェクトは2015年12月にGitHub上のawesome listとして始まりました(2015年12月)。
  • 現在、470件の静的解析ツールを掲載しています。
  • トラフィックは継続的に増加しています。現在7,500件のスターと190名を超えるコントリビューターを数えています。
  • 週あたりのユニークユーザーは500〜1,000人です。
  • 何年も前からウェブサイトを作りたいと思っていましたが、同僚のJakubが2020年5月に加わったことで、ようやく実現できました。
GitHubスター数の推移。このグラフはまさにビジネスチャンスと叫んでいます。
GitHubスター数の推移。このグラフはまさに「ビジネスチャンス」と叫んでいます。
出典: star-history.t9t.io

「ウェブサイトを作るのに5年もかかったの?」と思われるかもしれません。その理由は、アイデアがあまりに明白だったので、きっと誰かがすでに試して失敗したのだろうと考えていたからです。

このニッチを埋める人が現れなかったにもかかわらず、先延ばしにし続けました。
世の中のツールを知るために5年間リストを更新し続けてきたにもかかわらず、先延ばしにしました。
言いたいことはお分かりでしょう。物事をあまり長く先延ばしにしてはいけません。アイデアが明白に思えるとき、それは実際に明白だからです。

収益モデル

プロジェクトをどうやって財政的に支えるかを考えるのには時間がかかりました。何をやりたくないかははっきりしていました。AdWordsに支えられたSEOのゴミ捨て場にはしたくありませんでした。トラッカーに「ユーザーデータを売る」こともしたくありませんでした。

GitHubのコントリビューターの皆さんに対して、すべてのデータを誰でも無料で利用できるようにし続ける責任があります。では、どうすればその上でサービスを構築できるでしょうか。当初はインフラコストを自分たちで負担することも考えましたが、それではサイトを維持したり新機能を追加したりする動機が保てません。

当時、GitHub Sponsorsはまだ始まったばかりでした。しかし、それが選択肢になると気づいた途端、すべてが腑に落ちました。競合との比較を恐れない企業には、そうした比較を可能にするオープンなプラットフォームを支援する動機があります。さらに、偏りを避け、比較を客観的で分かりやすいものにするプロダクトを作ることができます。

スポンサーシップは、魂のない成長への解毒剤となり、スリムで持続可能なサイドビジネスを築くことを可能にしてくれます。analysis-tools.devが本業になることは期待していません。そのには市場が小さすぎるかもしれません——それで構いません。

技術スタック

収益モデルが決まれば、技術に集中できます。私たちは二人ともエンジニアなので、素早く試行錯誤できます。

当初はYewで凝ったものを作ろうと考えていました。Rust/WebAssemblyのフレームワークで、私はRust/WebAssemblyが大好きなので……

Jakubが別の提案をしてくれてよかったと思っています。Gatsbyです。正直に言いますと、Gatsbyにはまったく思い入れがありませんでした。Jakubにもそう伝えました。「Gatsbyには全然こだわりがない」と。でも、そこがポイントなのです。特定の技術に感情的にこだわらないことで、ツールではなく仕事そのものに集中できます。結果的により多くのことを成し遂げられます!

そこからはほぼ順調でした。スターターテンプレートを使い、JakubがGraphQL連携の仕組みを教えてくれ、Rustも少し使うことができました!サイトはCloudflare上で、Rustで構築されたエッジワーカーとして動いています。(ええ、少しずるをしました。)

3つ数える間に、MVPの完成です!

スポンサー探し

こうしてプロトタイプはできましたが、スポンサーはまだゼロでした。ここから始まったのが、これまでで最も困難な部分です。今もそうですが、人々に支援を納得してもらうことです。

私たちはコールドメールを送らないという賢明な判断をしました。ほとんどの企業が無視するからです。その代わりに、自分たちのネットワークに目を向け、以前GitHub上の古い静的解析リストに自社のプロジェクトを追加してほしいと連絡してきた開発者がいることに気づきました。

最初に連絡したのはそうした人たちでした。メッセージは短く、個人的なものにするよう心がけました。

最も効果的だったのは、背景を簡単に説明し、以前プロジェクトに貢献してくれたことを思い出してもらう、中程度の長さのメールでした。スポンサーページへのリンクも添えました。

企業は信頼できるパートナーと納得感のある価値提案を求めています。そのため、スポンサーページは細部まで丁寧に磨き上げておくことが大前提でした。

GitHub Sponsorsページ
GitHub Sponsorsページ

『スター・ウォーズ/スカイウォーカーの夜明け』と同じく、反応は賛否両論でした。返信がない人もいれば、メッセージを上司に回したもののそこから返信がないケース、そもそもオープンソースプロジェクトのスポンサーに興味がないという人もいました。どれも当然のことです。皆忙しいですし、スポンサーウェアはまだ新しい考え方なのです。

ちょっとした愚痴です。テック企業はオープンソースから得ている価値に比べて、スポンサーが圧倒的に足りないと思っています。もし創業時にLinuxのような無償のOSや、Nginx、Apacheのようなウェブサーバーがなかったら、あなたの会社は存在していたでしょうか?

ただ、中には興味を示しつつも、少し手助けを必要とする稀なタイプの返信もありました。多くの人にとって、GitHub SponsorsやOpenCollectiveを通じて開発者をスポンサーするのは初めての経験なのです。

私たちがOpenCollectiveをフィスカルホストとして利用し、請求書発行や寄付の送金を任せていることが役立ちました。ドキュメントには立ち上げ時に大変お世話になりました。

スポンサー探しの仕事に終わりはありませんが、AIによるセマンティック解析サービスであるDeepCodeから、ぜひ賭けてみたいという連絡をもらったときは、とても心強く感じました。

彼らのおかげで、プロダクトを完成まで押し上げることができました。彼らのおかげで、サイトを誰でも無料で使えるままにできています。それはつまり、サイトを広告やトラッカーのない状態に保てるということです。

その代わり、DeepCodeはコード品質を重視する多くの優秀な開発者にリーチでき、彼らは将来の優良顧客になるかもしれません。また、オープンソースにフレンドリーなテック企業として認知されることもできます。開発者向けツールを販売する上で、これはかつてなく重要です。Win-Winの関係です!

マーケティング

Jakubも私も以前に起業した経験がありましたが、これが初めての真にオープンなプロダクトでした。

フェーズ1:早めにリリースする 🚀

私たちはソフトローンチを選ぶことにしました。できるだけ早くサイトをデプロイし、クローラーにインデックスさせるのです。ページが静的に生成され、基本的なSEOガイドラインに沿っていることが、時間をかけて検索順位を上げるのに確かに役立ちました。

フェーズ2:ターゲット層にフィードバックを求める 💬

オーガニックなトラフィックと最初の投票が集まった後、開発者の友人たちにページを試してもらい、知っているお気に入りのツールに投票してもらいました。これは初期検証となり、率直なフィードバックを得ることで、最も目立つ欠陥を見つけることができました。

フェーズ3:告知記事を用意する 📝

私たちはブログ記事を書きました。多少クリックベイト気味ではありましたが、役目は果たしてくれました。静的解析は壊れている——直そう! という記事です。この分野に対する私たちのフラストレーションと、なぜオープンなプラットフォームを構築することが重要なのかがよく表れています。異なる解析ツール間の技術的な違いをもっとうまく説明できたはずですが、それはまた別の機会にします。

フェーズ4:ソーシャルメディアで告知する 🔥

正式な告知の直前に、検索機能が壊れていることに気づきました(案の定です)。原因を調べると、Algoliaの無料枠の上限に予想より少し早く達していたのでした。😅 大した問題ではありません。Algoliaのカスタマーサポートとすぐにやり取りし、オープンソースプラン(存在すら知りませんでした)に移行してもらえました。すぐに軌道に戻れました!

補足:Algoliaのカスタマーサポートは最高です。対応が早く、技術に精通しており、とても親切でした。Algoliaは私たちのプロダクトにぴったりでした。レスポンスタイムは常に数ミリ秒台で、Gatsbyとの統合も迅速かつ簡単でした。

あのツイートはかなり話題になりました:63件のリツイート、86件のいいね、そして今も増加中
あのツイートはかなり話題になりました。63件のリツイート、86件のいいね、そして今も増え続けています

もちろん、皆が私たちが支援を求めていることを理解していましたが、いいねやリツイートをしてくれた一人ひとりに感謝しています。こういうときこそ、志を同じくする人々のネットワークが役立つのです。

サイトが完全に壊れてはいないと確信できたらすぐに、Lobste.rs(2 downvote)、/r/SideProject(3 upvote)、そしてHacker News(173 upvote、57コメント)で告知しました。ソーシャルメディアはある意味予測不能です。ただ、メッセージをそれぞれの読者に合わせて調整し、謙虚でいることが役立ちます。

こうしたマーケティング施策への反響はすさまじいものでした。

公開日のトラフィック
公開日のトラフィック

おそらく当然のことながら、Cloudflareのエッジワーカーはまったく負荷を感じさせませんでした。

Cloudflare上のエッジワーカーのCPU時間
Cloudflare上のエッジワーカーのCPU時間

上司のXoan Vilasが簡単なパフォーマンス分析をしてくれましたが、お墨付きをもらえました。(ありがとう、ボス!)

みんなでハイタッチです!

今後は?

もちろん新機能は追加しますし、将来の計画もいろいろあります。とはいえ、そんな話はさておき、このマイルストーンを振り返ってみましょう。広告もトラッカーもなく、スポンサーだけで支えられた健全な小さなビジネスです。🎉

最後に、ぜひご自身の内面を深く見つめ、取り組むべき小さなプロダクトを見つけてほしいと思います。きっと目の前にあるはずです。私のように、長い間先延ばしにしてきたものかもしれません。でも、もう先延ばしは終わりです。次の成功物語はあなたのものです。さあ、外に出て何かを作りましょう。

あ、ちょっと待って!……立ち去る前に、analysis-tools.devを覗いて、お気に入りのツールをいくつかアップボートしてもらえませんか? もし今日とても気前がよければ(あるいはオープンソースを大切にする素晴らしい雇用主がいるなら)、ぜひスポンサーページもチェックしてみてください。

オーストリア・ウィーンでのJakubと私。実際は私がそんなに小さいわけではありません。
オーストリア・ウィーンでのJakubと私。実際は私がそんなに小さいわけではありません。

原文は Matthias Endler により に公開されました。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。