TinyPilot: Month 22

Michael Lynch

TinyPilot:22ヶ月目

一言でまとめると

お金は一体どこに消えているのか?

ハイライト

  • TinyPilotは月商5万8000ドルを生み出しているのに、なぜか赤字になっています。
  • 開発者の稼働時間を低レイテンシーで把握することの重要性を、これまで考えていた以上に痛感しました。
  • 約2年ぶりに有料広告に再挑戦しています。

目標の自己採点

毎月のはじめに、その月に達成したいことを宣言しています。結果は次のとおりでした。

TinyPilotを使って自宅ラボ用NASサーバーを構築する方法についてのブログ記事と動画を公開する

  • 結果:ほぼ完成しましたが、まだ公開には至っていません。
  • 評価:D

ブログ記事は想定よりもかなり長くなっています。パーツ選びの思考プロセスについて書きたいことが山ほどあり、どれだけ時間がかかるか甘く見ていました。今後2週間ほどでの完成を目指しています。

TinyPilotのウェブサイトリニューアルを完了する

  • 結果:ウェブサイトのデザインはほとんど変わりませんでした。
  • 評価:F

本来6週間で終わるはずだったリニューアルが、もう7ヶ月目に入りました。しかも今回も、恥ずかしながらユーザーから見える変化はほとんどありませんでした。

デザインエージェンシーとの契約は解約したので、今月で作業は終了します。残りの数週間でリニューアルを完了してくれることを期待しています。もし間に合わなければ、別の開発者を雇って仕上げるつもりです。あまりにも長引きすぎています。

H.264のWebRTC配信に実験的に対応したTinyPilot Proをリリースする

  • 結果:大口顧客には先行ビルドを共有しましたが、一般向けの正式リリースはまだです。
  • 評価:C

今月のテーマは「思ったより少し時間がかかった」です。コード自体は完成していますが、顧客に公開する前に手動テストを終える必要があります。

TinyPilotの統計

指標2022年3月2022年4月増減
ユニークビジター6,2125,268-944 (-15%)
総ページビュー13,37511,974-1,401 (-10%)
販売売上$65,171.82$43,771.00-$21,400.82 (-33%)
エンタープライズ向けサブスクリプション$47.75$47.750
ロイヤリティ$4,012.83$2,253.61-$1,759.22 (-44%)
総売上$69,232.40$46,072.36-$23,160.04 (-33%)
利益$-3,043.34$-19,392.76-$16,349.42 (inf%)

4月のTinyPilotは厳しい月でした。米国でもEUの代理店経由でも、売上が過去6ヶ月で最低の水準まで落ち込みました。通常は数件の大口注文で毎月5,000〜10,000ドルの売上があるのですが、4月はそれが一件もありませんでした。

4月が単に運の悪い月だったのか、不況の兆しで支出が減っているのか、あるいは競合の新製品に売上を奪われているのかは、まだはっきりしません。

お金はどこへ消えているのか

前回の振り返りでは、2022年第1四半期は平均で月5,300ドルの利益が出ていると報告しました。帳簿を付け直してみると、ブログで報告した数値と実際の帳簿がずれており、実際には月3,000ドルの赤字だったことに気づきました。

月商5万8000ドルあり、TinyPilot1台あたり250〜325ドルの利益が出ているのに、どうして赤字になるのか。この数字には自分でも驚きました。

原因を突き止めるため、2022年第1四半期の月次経費を詳しく見直してみました。

費目月あたりコスト
原材料$24,896.46
ソフトウェア・サポートの外注$14,900.43
デザインエージェンシー$7,938.32
電気回路設計$5,291.07
発送業務スタッフ$2,915.75
送料$2,393.49
税金・関税$1,423.14
オフィス賃料$916.67*
クラウドサービス$495.03
広告費$106.78
その他$265.34
合計$61,542.47

* 実際の家賃は月550ドルですが、第1四半期は大家が小切手を不規則なタイミングで現金化したため、帳簿上は高く見えています。

最大の支出は原材料でした。供給不足からTinyPilotを守るため、今後18〜36ヶ月分の部品を備蓄しなければならず、通常よりさらに高くなっています。このうち月約6,200ドル分は数年持つ部品のための支出なので、備蓄が終われば月々の仕入れコストは大幅に下がるはずです。

次に大きかったのはソフトウェアとサポートで、月14,900ドルでした。新しい映像技術の統合を手伝ってもらうため短期で外部コンサルタントを雇った分、通常より少し高くなっています。平常時は12,000ドル前後ですが、それでもかなり高額です。

TinyPilot Proの課金は開発・サポート費用をまかなうためのものでしたが、まだライセンスのチェックや更新リマインダーの仕組みを導入できていません。TinyPilotユーザーの約3分の1はProライセンスの期限が切れていることに気づかず、そのまま無料でサポートとアップデートを受け続けています。今後数ヶ月の最優先課題は、TinyPilotのアップデートの流れを作り直し、有効な有料ライセンスを持つユーザーだけが最新のTinyPilot Proリリースを利用できるようにすることです。また、年80ドルで自動更新できるようにして、期限切れのたびに買い直す手間をなくしたいと考えています。

デザインエージェンシーには月8,000ドル近くかかっていましたが、幸いこの出費はなくなります。最後の支払いは済ませ、契約は5月末で終了します。ウェブサイトの保守のために開発者を雇うとしても、稼働時間も単価も低くなるので、月1,000〜2,000ドル程度になる見込みです。

次に電気回路設計で月5,300ドルかかっています。この費用は、パートナーの電気設計会社がTinyPilot Voyager 2を量産しやすいように再設計しているため、今後2〜3ヶ月は高いままです。設計が完了すれば、保守は設計よりずっと安くなるので、月2,000ドル程度まで下がる見込みです。

経費は大きく3つのカテゴリーに分けられます。

  • 継続コスト:家賃や人件費など、売上に関わらず毎月かかる固定費。
  • 材料費と送料:ほぼ売上に連動する変動費ですが、売上の伸びに対して3分の1程度のペースでしか増えません。
  • 一時的コスト:ハードウェアの再設計や部品の備蓄などの一過性の出費。

売上からの利益で、継続コストをまかないつつ成長のための出費も確保しなければなりません。ソフトウェアが月12,000ドル、電気設計が月2,000ドルまで下がると仮定すると、継続コストは月19,000ドル程度になります。原材料費が売上の約30%だとすると、事業を維持するには月27,000ドルの売上が必要です(27,000ドルの売上から材料費を引くと手元に22,000ドル残る計算です)。

月27,000ドルの売上は、過去6ヶ月は十分に上回ってきたので、十分達成可能に感じます。ただ、売上は下降傾向にあり、景気後退の兆しも見えるので、成長や一時的コストの分も含めて損益分岐点を上回り続けられることを願っています。

低レイテンシーな稼働時間報告の重要性

前回のアップデートでは、デザインエージェンシーと仕事をする上で事前に知っておきたかったことをたくさん挙げました。4月には、そこにもう一つ追加すべきことが見つかりました。稼働時間の報告が極めて重要だということです。

3月末、エージェンシーからリニューアルについて提案がありました。新しいBootstrapテーマへの置き換えです。TinyPilotのウェブサイトはBootstrapというCSSフレームワークを使っています。今も、サイトを最初に作ったときにBootswatchから入手した無料のサードパーティ製テーマを使い続けており、さらにその上にページやコンポーネントごとのカスタムスタイルを重ねています。

エージェンシーは、この構成は複雑に入り組んでいると指摘し、サードパーティ製テーマとページごとのスタイルを、サイト全体で統一した独自のBootstrapテーマに置き換えるべきだと提案してきました。作業は数日で終わるという見積もりでした。理にかなっていると思いました。そうしなければ、リニューアルの残りの作業で3層のCSSスタイルが衝突し続けることになるので、元は取れるだろうと考えたのです。

ところがテーマの作業は結局5週間かかり、合計6,100ドルのコストになりました。ユーザーの目に見える成果は次のとおりです。

変更前のTinyPilotウェブサイトのスクリーンショット変更後のTinyPilotウェブサイトのスクリーンショット。フォントと色がわずかに異なります

6,100ドルのウェブ開発の前(左)と後(右)

長期的にはこのリファクタリングは有益ですが、今やるべきではなかったと思っています。リニューアルはすでに6ヶ月遅れ、予算は5倍に膨らんでいます。コードがきれいに整理された見栄えのしないサイトより、コードが多少汚くても見た目が良いサイトの方がよほどましです。

なぜこんなことになってしまったのでしょうか。TinyPilotのいつもの開発者たちは、私が望んでいないことに深入りすることは滅多にありませんが、デザインエージェンシーではそれが何度も起きました。

決定的な違いの一つは、TinyPilotの開発者たちが、時間の使い方を低レイテンシーで共有してくれることです。彼らは作業セッションが終わるたびに、何に取り組んだかを短いメモとともに稼働時間を記録してくれます。

Deel上のTinyPilotの稼働時間報告のスクリーンショット

TinyPilotの社内開発者は作業の都度、稼働時間を報告します。

彼らからの成果を期待している時は、稼働時間をチェックします。もし2時間で終わると想定したタスクに14時間かかっていれば、難易度を見誤ったか、私の説明が不十分だったということです。どちらの場合でも開発者に確認を取り、続行するか軌道修正するかを一緒に決めます。

一方、デザインエージェンシーではフィードバックのループがずっと遅いのです。毎月15日に、その月これまでに稼働した合計時間だけを知らせる更新が届きます。月末になると時間の内訳が記載された詳細なレポートが送られてきますが、その時点ではもう手遅れです。

「2022年4月は40時間中16.02時間を使用しました」というメールタスクごとに内訳された稼働時間レポート

デザインエージェンシーの稼働時間報告は月に2回だけです。月の中頃に内訳のない合計時間だけが届き(左)、月末にタスクごとの詳細な内訳が届きます(右)。

もう一つの問題は、エージェンシーが週単位ではなく月単位でしか稼働時間をコミットしないことです。2月は最初の3週間まったく開発作業をせず、最後の10日間にすべての作業を詰め込みました。これでフィードバックループの悪さがさらに増幅され、タスクに時間がかかっているのか、まだ着手すらしていないのかを区別できませんでした。

今後デザインエージェンシーと仕事をするなら、請求可能な稼働時間をリアルタイムで共有できるツールの利用を必ず求めます。この情報は数週間も遅らせるにはあまりに重要で、期待値のズレに気づく機会を奪ってしまうからです。

有料検索広告を少し試してみる

TinyPilotの初期に有料広告を試したことがありますが、その効果をうまく測る方法がありませんでした。販売サイトは独自の変わった構成で作っているため、ShopifyやGoogle Analyticsの一般的なコンバージョン計測ツールとの連携が困難です。計測が動いているように見えても売上の約30%しか記録されず、設定を間違えたのか、ユーザーの70%が広告ブロッカーを使っているのか、どちらかでした。

アフィリエイト広告を試していたときに、偶然コンバージョン計測の問題を解決できました。顧客がアフィリエイトリンク経由で訪問すると、TinyPilotのウェブサイトはアフィリエイトIDをブラウザのローカルストレージに保存します。顧客がチェックアウトする際に、そのアフィリエイトIDを注文の属性として保存します。この方法ならGoogle Analyticsに依存せず、広告ブロッカーとの戦いも避けられます。

同じ仕組みを有料広告の計測にも使えることに気づきました。広告URLに含まれるリファラル情報をアフィリエイトIDと同じように扱えばよいのです。これを使って、GoogleとBingで広告を出稿し、有料広告に再挑戦しました。

Google広告: TinyPilot KVM over IP | Easy Remote Access | Open-Source, PoE, HTML5 TinyPilot is a simple, modern KVM over IP device with PoE. No software installation or Java plugins. Setup takes 5 minutes.

初めてのGoogle検索広告。

指標GoogleBing
広告費$1,715.10$1,018.09
表示回数15,6237,023
クリック数701196
クリック率(CTR)4.5%2.8%
クリック単価(CPC)$2.45$5.19
コンバージョンによる売上$4,202.88$789.97
広告費用対効果(ROAS)2.450.78

Googleはほぼすべての指標でBingを上回っています。Bingはクリック単価が2倍なのに、売上は3分の1しかありません。

最も重要な指標は広告費用対効果(ROAS)で、Googleでは2.45でした。つまり、Google広告に1ドル使うごとに2.45ドルの売上が得られているということです。これにかかる部品・人件費は約0.76ドルなので、利益はざっくり2.45ドルの売上 - 1ドルの広告費 - 0.76ドルの部品・人件費 = 0.69ドルの利益という計算になります。

言い換えれば、Google広告に1ドル使えば0.69ドルの利益になるわけで、これは非常にお得です。しかもこの売上は最低限の数字です。ユーザーがスマホで広告をクリックした後、デスクトップから購入した場合、私の計測ではGoogleの成果としてカウントされないからです。実際には計測値以上に稼いでいる可能性もあります。

広告文やターゲティングの改善はまだ一切試していません。マーケティングエージェンシーに任せれば、この成果はさらに大きく改善できるのではないかと思っています。

Googleの予算は1日150ドルまで増やし、利益が出続ける限りさらに引き上げていくつもりです。

Bingの予算は1日50ドルに据え置き、広告を少し調整しています。Bingでは「unifi 24 port switch」(まったく用途の異なる製品)や「kvms pro」(何らかのCCTV管理ソフトウェア)といった無関係な検索クエリに広告が表示されていたからです。

当初はDuckDuckGoで広告を出すつもりでした。ユーザー層が製品と相性が良いと思ったからです。奇妙なことに、DuckDuckGoの広告は直接の競合であるBingを経由してしか買えません。DuckDuckGoで広告を出すには、Bingで広告を出稿し、Bingの配信パートナー(AOL、Yahoo、DuckDuckGoが含まれます)への配信を有効にする必要があります。

DuckDuckGoで広告を出す唯一の方法は、Bing、Yahoo、AOLで広告を出すことです。

サイドプロジェクト

PicoShare

大きなファイルの共有を簡単にするため自分で作ったシンプルなウェブアプリ、PicoShareの開発を今も楽しんでいます。

特に気に入っている機能の一つが、ゲスト用アップロードリンクを作成できることです。特にTinyPilotのパートナーと仕事をする際、メールでは送れない大きなファイルを相手に送ってもらいたいことがよくありますが、Google DriveやDropboxのようなクラウドストレージにわざわざ登録してもらう手間をかけさせたくありません。

PicoShareのゲストアップロード機能なら、次のようにゲストリンクを作成できます。

PicoShareでゲストリンクを作成する画面のスクリーンショット

するとPicoShareがhttps://picoshare.tinypilotkvm.com/g/sWy2Pi5Dm8afJuxsのような専用のゲストリンクを生成します。ゲストがそのリンクにアクセスすれば、アカウント登録なしで私のPicoShareサーバーにファイルをアップロードできます。

ゲストリンク経由でアップロードするPicoShareの画面のスクリーンショット

すでにTinyPilotでも使い始めていますが、以前使っていたMega.nzやDropboxよりもずっとスムーズです。

もう一つ追加した機能は、アップロードに添えられるプライベートメモです。ファイルの詳細を覚えておきたい場合に便利です。

メモ入力欄のあるPicoShareのアップロードページのスクリーンショットメモが表示されたPicoShareのファイル一覧ページのスクリーンショット

PicoShareでは、アップロードにプライベートメモを添えられるようになりました。

まとめ

何ができたか?

  • 有料検索広告で有望な成果が出始めました。
  • TinyPilot Proのバージョン2.4.1で、H.264映像対応のコードが完成しました。
  • TinyPilotは、WebRTCでH.264映像を配信する方法についてのドキュメントをuStreamerに寄稿しました。

学んだこと

  • 外注先やエージェンシーと仕事をする際は、低レイテンシーな稼働時間報告が不可欠です。
    • そうでないと、プロジェクトが予算やスコープを超過していることに手遅れになるまで気づけません。

来月の目標

  • TinyPilotを使って自宅ラボ用NASサーバーを構築する方法についてのブログ記事と動画を公開する。
  • TinyPilotのウェブサイトリニューアルを完了する。
  • マーケティングエージェンシーまたはフリーランスに依頼する。

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

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