TinyPilot: Month 17

Michael Lynch

TinyPilot:17か月目

一言まとめ

たった1つのリンクを削除しただけで売上が62%増加した経緯

ハイライト

  • TinyPilotの売上が5万7千ドルまで急増し、この水準が持続する可能性があります。
  • TinyPilotの新製品と新しいブランディングをまもなくローンチします。
  • サイドプロジェクトのGoogle Cloud Platform利用料を90%削減しました。

目標の振り返り

毎月初めに、その月に達成したいことを宣言しています。その目標に対する結果は以下のとおりです。

TinyPilotのウェブサイトのリブランディングを完了する

  • 結果: リブランディングは95%完了しましたが、まだ公開には至っていません。
  • 評価: B

デザイン会社とともにロゴのコンセプトとカラースキームは確定しましたが、新しいブランディングを公開する前に、まだ細部を詰めている段階です。

ハードウェアの準備が整い次第、Voyager 2をローンチできるように準備する

  • 結果: ハードウェアを受け取ってから1週間以内にローンチできる体制が整いました。
  • 評価: A-

Voyager 2に必要なカスタムハードウェアの調達は長い道のりでしたが、先週ようやく製造が完了し、最初のロットを受け取ることができました。そのため今週中にローンチできる見込みです。Voyager 1の需要への対応に追われ、当初の予定より少し遅れていますが、遅延は1〜2日程度で収まるはずです。

有料マーケティング施策の検討を支援してくれるマーケティング会社またはフリーランサーを採用する

  • 結果: 優先事項の変化により見送りました。
  • 評価: 評価なし

いくつかのマーケティング会社と話をしましたが、まだ採用する準備は整っていませんでした。現在でさえTinyPilotの売上増加への対応に追われている状況ですので、マーケティングは一旦保留し、現在の需要に応えるための生産体制の拡充に注力しています。

TinyPilotの数値

指標2021年10月2021年11月増減
ユニーク訪問者数6,8987,983+1,085 (+16%)
総ページビュー13,00814,596+1,588 (+12%)
販売売上$34,927.55$56,626.33+$21,698.78 (+62%)
法人向けサブスクリプション$48.00$47.75-$0.25 (-1%)
ロイヤリティ$6,804.53$8,185.78+$1,381.25 (+20%)
総収益$41,780.08$64,859.86+$23,079.78 (+55%)
利益$1,936.22$12,758.39+$10,822.17 (+559%)

製品を1つに絞ったことで売上がほぼ倍増しました

供給不足のため、10月にTinyPilotの低価格モデルを廃止し、プレミアムモデルであるTinyPilot Voyagerに絞ることにしました。その結果、製品カタログにはVoyager本体と、あまり売れないアクセサリ類だけが残ったため、カタログページ自体を廃止することにしました。

要するに、サイトのナビゲーションバーからリンクを1つ削除しただけです。

旧ナビゲーションバーのスクリーンショット
旧製品カタログページのスクリーンショット

TinyPilotのウェブサイトで行った変更の中で最も効果が大きかったのは、製品カタログページへのナビゲーションバーのリンクを削除したことでした。

先月の振り返りでは、売上が上向き始めていることに触れ、これが製品ラインナップの簡素化と関係があるのではないかと書きました。さらに1か月分のデータが加わったことで、その影響は非常に大きかったと確信しています。

製品を1つに統合する前後でのTinyPilotの売上推移を示すグラフ。統合後に売上が上昇傾向にある

製品を1つに統合する前後でのTinyPilotの週次売上の推移

これまでにも売上が急増したことはありましたが、常にYouTubeでの紹介や人気サイトでのレビューといった明確なきっかけがありました。売上は一時的に急増した後、徐々に落ち着いていくのが常でした。

製品を1つに統合してからは、売上が過去の急増時と同じくらいの高水準で推移していますが、一時的なイベントのときのように落ち着く気配がありません。

もしこの売上増加がカタログページの廃止によるものだとすれば、これまでTinyPilotで行った施策の中で最も投資対効果が高いものになります。たった1つのリンクを削除しただけで、売上が62%も伸びたのです!

再び訪れた成長の痛み

TinyPilotの最初の6か月間は、常に成長に追われる日々でした。売上が4〜8週間ごとに倍増していたため、新しいサプライヤーを探し、事業を拡大するためにプロセスを作り直すことを繰り返していました。その成長は刺激的でしたが、同時に疲弊するものでもありました。2021年の大半は、より安定的で予測可能なペースに落ち着いていたので、正直ほっとしていました。

今回の売上増加により、再び成長の痛みが戻ってきました。売上急増への緊急対応プランは用意しており、今年はそれがうまく機能してきましたが、今回のような持続的な成長に対する計画はありませんでした。

電源コネクタの在庫切れ

まず気づいたのは、電源コネクタの消費ペースが速く、このままでは次回の基板入荷を待たずに在庫が尽き、Voyagerの販売ができなくなるということでした。

TinyPilot電源コネクタの写真

TinyPilot電源コネクタの在庫が数日で尽きかけました。

個別販売分を在庫切れとして表示したところ、消費ペースがわずかに緩やかになり、新しい入荷が届くまで何とか持ちこたえることができました。

[補足: Voyager以外は販売しないとあれほど強調したのに、なぜ電源コネクタをまだ販売していたのか疑問に思われるかもしれません。説明します。私のDIY TinyPilotガイド経由では、依然として一部のサブ製品へのリンクが残っていますが、TinyPilotのウェブサイトを訪れただけではそれらのページを簡単に見つけることはできません。]

リボンケーブルの在庫切れ

次に、リボンケーブルの在庫が少なくなってきました。通常は大量にまとめ買いしており、手元に大量にあるため在庫管理システムで追跡するまでもないと考えていました。しかし、正確に追跡していなかったため、前回の発注が遅れていることに気づきませんでした。残りはわずか30本で、数日分のVoyagerを製造するのがやっとの数量でした。

TinyPilotで使用しているリボンケーブルの写真

70mmリボンケーブルの在庫切れにより、TinyPilotの販売が危うく停止するところでした。

私たちが使っているのは規格外のサイズのリボンケーブルなので、特注で取り寄せています。こんな些細な部品のせいで、数週間にわたって販売を停止しなければならないのでしょうか?

幸い、サプライヤーが発注を早めてくれ、数日以内に新しいケーブルを届けてくれました。念のため追加で1,500本を慌てて購入したので、しばらくは安心です。

さらに、今後はこれらのケーブルも通常の在庫管理システムで追跡することにしました。これまでのような大まかな管理では、「そろそろ余裕を持って発注すべき段階」と「これは緊急事態だ」という違いを判断するのが難しかったからです。

3Dプリントのスケーリング

最後の不足は、まだ解決できていないケースの問題です。ケースはこれまで常に3Dプリントで製造してきました。素早く試作を繰り返せるからです。使用している3Dプリント素材は高級感のある手触りで、顧客やレビュアーからもケースの品質について頻繁に好評をいただいています。

問題は、3Dプリント、特に私たちが使っている素材では印刷に時間がかかることです。Voyager 1のケース1つを印刷するのに8時間、Voyager 2では12時間かかります。3Dプリントを委託している業者が私たちのためにプリンターを1台増設してくれましたが、Voyager 2に切り替えれば新たな生産能力を超えてしまうと予想しています。残念ながら、売上が伸びるたびに新しいプリンターを買い増してもらうわけにはいきません。

短期的な対策として、TinyPilotのEU向け販売代理店が私たちからケースを購入するのではなく現地で印刷するようになったため、プリンターの負荷が約30%軽減されています。長期的な対策としては、3Dプリント業者と協力して、より速く印刷できつつも高級感を保てる別の素材を検討しています。また、初期費用は2万〜4万ドルかかりますが、週に数千個のケースを生産できる射出成形を再検討する時期かもしれません。

サイドプロジェクトをGoogle Cloud Platformから移行しました

この振り返りでは主に本業について書いていますが、先月はサイドプロジェクトをGoogle Cloud Platform(GCP)から移行する作業を楽しみました。

私がGCPを使い始めたのは約8年前のことです。当時、ほとんどのクラウドプロバイダーはウェブアプリのホスティングに月10〜20ドルを請求していました。App EngineやFirebaseといったGoogleのサービスは、小規模なプロジェクトであれば月0ドルまでスケールダウンできたため、実験的な試みに最適でした。月20ドルを払い続けなければならないとわかっていては、新しいプロジェクトを公開する気も起きにくいものです。

現在、GCPは小規模なプロジェクトには向かないことがほとんどです。サービスが肥大化し複雑になったため、基本的なウェブアプリを新規に作成してデプロイするだけでも、設定や権限の調整に1時間ほどかかってしまいます。幸いなことに、GCPに代わる優れた選択肢があり、低コストで、より良い開発体験を提供し、さらに優れたカスタマーサポート(つまり、何らかのカスタマーサポートがあるということ)を提供してくれます。

GCPを長く使ってきたため、多くのサイドプロジェクトが今もGoogle Cloud Platform上で動いており、サービス利用料がどんどん膨らんでいました。先月は夜や週末を使って、特にコストのかかっていたサービスをGCPから移行しました。

大移行前のGCPのコストは以下のとおりでした。

GCPのコスト推移を示すグラフ。2021年8月から10月までの合計は252.71ドル

2021年8月から10月までのサイドプロジェクトのGCPホスティング料金

そして、移行が完了した後のコストがこちらです。

移行後のGoogle Cloudサービス料金がゼロに向かって減少していくグラフ

2021年11月にGoogle Cloudの代替サービスへ移行した後のGoogle Cloudサービス料金

HTTPロードバランシング - 月37ドル

HTTPロードバランシングは大きな落とし穴でした。

What Got DoneやWanderJestでは、ユーザーに画像をアップロードしてもらい、Google Cloud Storage(GCS)バケットに保存しています。デフォルトでは、GCSのURLはhttps://storage.googleapis.com/whatgotdone-public/...のような長くて見づらいものになります。私はhttps://media.whatgotdone.comのようなすっきりしたURLにしたかったのです。

サブドメインからGCSのファイルを提供するためのGoogle流の手順は、この80ステップの手順で説明されています。静的IPv4アドレスの確保、HTTPロードバランサーのセットアップ、TLS証明書の生成などが含まれます。私はこれらの手順をすべて実行しましたが、ロードバランサーによって1サイトあたり月約18ドルのコストがかかるとは知りませんでした。

このコストはBunnyCDNに切り替えることで大幅に削減できました。CDN全体をセットアップするのは大変だろうと心配していましたが、驚くほど簡単でした。BunnyCDNというサービスを見つけてから30分もしないうちに、Google Cloud Storageバケットをmedia.whatgotdone.comドメインで配信できるようになりました。やったことは、BunnyにGCSバケットのURLと使いたいサブドメインを伝えて、DNSレコードを追加しただけです。

BunnyCDNのプルゾーン設定ページのスクリーンショット

BunnyCDNでは、わずか3ステップでGCSバケット用のカスタムドメインを設定できました。

BunnyCDNの最低料金は合計で月1ドルですが、Googleの場合は1サイトあたり月約18ドルです。私は最低料金を大きく下回っています。これまでの帯域幅使用量は78.55MBなので、料金にすると約0.0008ドルです。仮にBunnyCDNの最低料金を超えたとしても、帯域幅の単価はGoogleの10分の1以下です。

帯域幅 - 月21ドル

送信帯域幅の料金は主にこのブログとIs It Ketoから発生しています。両サイトともGoogle Firebaseでホスティングしており、帯域幅の料金は1GBあたり0.15ドルでした。ウェブサイト全体で月に約150GBの帯域幅を消費していますが、ブログの読者が急増するとその3倍になることもあります。

他の静的ファイルホスティングサービスも探しましたが、なぜかほとんどの静的ホスティングプロバイダーが継続的インテグレーション(CI)ワークフロー全体を乗っ取ろうとしてきます。私はそんなことは望んでいません。CIにはCIベンダーを、ホスティングにはホスティングプロバイダーを使いたいのです。

以前Netlifyも検討しましたが、「CIも当社に任せてください」というタイプのホストだと思い除外していました。そんなとき、Siddhant Goelさんに教えてもらったのが、Netlifyの「手動ビルド」モードで、CI関連の余計な機能をすべてスキップできるというものでした。400GBの帯域幅が含まれる月19ドルのプランがあり、それを超えても1GBあたり0.20ドルなので、訪問者が急増する月でも支払いは月20ドル程度で収まります。

App Engine - 月13ドル

最後の大きなコストは、What Got DoneのApp Engineホスティングでした。長年にわたり月約2ドルで収まっていましたが、7月に突然月10〜15ドルに跳ね上がり、原因はわかっていません。

幸い、What Got Doneは標準的なGo製ウェブアプリなので、App Engine上で動かす必要はありません。より厄介な依存関係はデータ用のGoogle Firestoreでした。App EngineとFirestoreを別々に移行することもできましたが、Googleのサービスアカウントや権限周りの扱いが非常に面倒なので、両方のサービスから一度にきっぱりと離れることにしました。

Firestoreの代わりにはSQLiteLitestreamを使いました。SQLiteはすべてのデータを単一ファイルに保持するシンプルなSQLデータベースです。LitestreamはSQLiteデータベースをクラウドに同期するためのツールです。LogPasteの構築でも同じ技術を使い、うまくいったので、さらに投資することにしました。

App Engineの代わりにはfly.ioを使いました。この1年間fly.ioを試してきましたが、常に良い体験ができています。ドキュメントは明確で、ツールは期待どおりに動作し、創業者や主要なエンジニアがサポートフォーラムで積極的にサポートしてくれます。

fly.ioへの移行は主にコスト削減とベンダーロックインからの脱却が目的でしたが、結果としてパフォーマンスも大幅に向上しました。What Got DoneのほとんどのAPIリクエストは、SQLiteとfly.ioに移行したことで2〜20倍高速になりました。

App Engineとfly.ioのパフォーマンス比較グラフ
リクエストApp Engineレイテンシ(ms)fly.ioレイテンシ(ms)レイテンシ削減率
最近のエントリーを取得745.327.396.3%
ユーザープロフィールを取得300.029.390.2%
パーソナライズされたフィードを取得572.068.788.0%
ユーザーの全エントリー履歴を取得215.762.071.3%
インプレッション数を取得349.720.094.3%
エントリーを公開183.372.760.4%

継続中のプロジェクト

ここでは、現在も維持はしているものの、開発の中心ではないプロジェクトについて簡単にご報告します。

Is It Keto

指標2021年10月2021年11月増減
ユニーク訪問者数20,32117,790-2,531 (-12%)
総ページビュー47,48740,722-6,765 (-14%)
ドメインレーティング(Ahrefs)11.015.0+4.0 (+36%)
AdSense収益$230.64$235.36+$4.72 (+2%)
Amazonアフィリエイト収益$27.76$26.25-$1.51 (-5%)
総収益$258.40$261.61+$3.21 (+1%)

Is It Ketoは今もバックグラウンドで少額の収益を上げ続けています。今月の唯一の変更は、FirebaseからNetlifyへ移行したことで、ホスティングコストの削減につながりました。

Hit the Front Page of Hacker News

指標2021年10月2021年11月増減
ユニーク訪問者数100159+59 (+59%)
Gumroad収益$75.27$94.57+$19.30 (+26%)
Blogging for Devs収益$0.00$0.000
総収益$75.27$94.57+$19.30 (+26%)

私のブログ講座は先月もいくつか売れました。ブラックフライデーセールを検討しましたが、ビジネスを考えずに過ごす連休を楽しんでいたので、見送ることにしました。代わりにWhat Got Doneをいじるのを存分に楽しめたので、見送って正解でした。

Zestful

指標2021年10月2021年11月増減
ユニーク訪問者数613576-37 (-6%)
総ページビュー1,4261,489+63 (+4%)
RapidAPI収益$99.74$727.17+$627.43 (+629%)
総収益$99.74$727.17+$627.43 (+629%)

Zestfulは今月、約700ドル分のリクエストをしてくれた新規顧客のおかげで大きく収益が伸びました。顧客名に見覚えがあったのでメールを確認したところ、3年前に私から営業をかけたものの丁寧に断られていた相手でした。考えるのに数年かかったようですね。

まとめ

今月やったこと

学んだこと

  • 売上が上向き始めたら、早めにスケーリングを考えるべきです。
  • Google Cloud Platformは小規模なプロジェクトにはたいてい不向きです。

来月の目標

  • Voyager 2をローンチする。
  • TinyPilotのリブランディングをローンチする。
    • 今度こそ本当に。
  • TinyPilotの需要に追われないよう、十分な在庫を確保する。

注記: この記事ではいくつかのサービスを紹介していますが、私は顧客としての関係以外にこれらのサービスとビジネス上の関係はありません。ブログで一見本物のように見える商品推薦を読んで、実は著者が紹介料で利益を得ていたと知るのが嫌いなので、紹介ボーナスやアフィリエイト料が発生するリンクは意図的に使用していません。

原文は Michael Lynch により に公開されました。

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