TinyPilot: Month 31

Michael Lynch

TinyPilot: 31ヶ月目

一言でまとめると

移行の中には、スムーズなものもあれば、そうでないものもあります。

初めての方へ

こんにちは、Michaelです。ソフトウェア開発者で、独立系コンピューターハードウェア企業TinyPilotの創業者です。2020年に創業し、現在は月商6万〜8万ドル、従業員は私のほか6名で運営しています。

毎月、このような振り返りを公開して、ビジネスや仕事全体の状況を共有しています。

ハイライト

  • TinyPilotの新製品Voyager 2aの出荷を開始しました。
  • 契約したばかりの3PLベンダーとの契約を、数週間で解約しました。

今月の目標と達成度

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

初号機「Voyager 2a」を出荷する

  • 結果: Voyager 2aの出荷を開始しました。
  • 評価: A

Voyager 2aは、TinyPilotでこれまでで最もスムーズなリリースになりました。これまでのローンチでは、毎回細かいことを忘れて直前で慌てることがありました。今回は12月から必要な準備をすべて洗い出して進めてきたので、すべてが計画どおりに運びました。

2月に向けてフルフィルメントを3PLベンダーへ移行する準備を整える

  • 結果: 3PLベンダーとの契約を解約しました。
  • 評価: 評価なし

残念ながら、実際に業務を始めてみると、3PLのワークフローに重大な欠陥があることがわかりました。詳しくは後述します。

5回目の年次振り返りを書く

  • 結果: 公開は10日遅れましたが、内容には満足しています。
  • 評価: A-

今年の年次振り返りは執筆に苦労しました。完成した記事は約2,500語ですが、ボツにした下書きは5,000〜8,000語にのぼります。長い文章を書いては、200語の振り返りのために1,500語もの退屈な背景説明が必要だと気づいて削る、ということを繰り返しました。

公開したバージョンでは、複雑なエピソードに深入りしすぎることなく、その年の主要なトピックをうまくカバーできたと感じています。

TinyPilotの数値

指標2022年12月2023年1月増減
ユニーク訪問者数7,3088,092+784 (+11%)
総ページビュー15,54916,665+1,116 (+7%)
販売売上$66,092.24$68,619.55+$2,527.31 (+4%)
エンタープライズサブスクリプション$290.70$290.700
ロイヤリティ$2,798.97$5,689.93+$2,890.96 (+103%)
総売上$69,181.91$74,600.18+$5,418.27 (+8%)
利益-$4,806.26$8,552.79+$13,359.05 (+inf%)

売上は昨年末のピークからは落ちていますが、これは意図的なものです。広告を縮小し、供給不足を補い、フルフィルメントを担うスタッフの負担を減らすため、Amazonでの価格を高めに維持しています。

TinyPilotの3か月移動平均利益は、5か月連続で黒字を維持しています。過去最長の記録です。1月の数字には特に満足しています。大きな一時費用がいくつかあったうえ、売上も今後見込む水準より低かったにもかかわらず、しっかり利益を出せたからです。月8,500ドルの利益は、2023年に年間10万ドルの利益を出すという目標に対して、ほぼ計画どおりのペースです。

生産台数を月140台から200台へ

昨年末、TinyPilotは2023年9月までRaspberry Piの新たな割り当ては受けられないと知らされました。これにより、それまでの生産能力は月約140台に制限されることになりました。厳しい知らせでしたが、なんとか乗り切る計画は立てていました。

幸い、1月に少量ながら新たな割り当てを受けられることがわかり、生産能力は月200台に増えました。8GBのPiをほぼ2倍の価格で購入しなければなりませんが、新しいデバイスを販売し続けられるのであれば、喜んでプレミアムを支払います。

月200台という目標には満足しています。このペースなら無理なく販売を続けつつ、9月に供給不足が緩和したときにより速くスケールするための投資に充てる時間と利益も確保できます。

金属ケースをぎりぎりで確保する

中国では毎年1月下旬から2月上旬に春節(旧正月)を祝います。中国では春節を盛大に祝うため、取引先は完全に休業します。休業期間は2週間程度のところもあれば、最大で4週間休むところもあります。

TinyPilotは原材料の多くを中国から調達しているため、春節の前後は慎重に計画を立てています。休業前に製造が完了するよう早めに発注しなければなりませんし、4週間にわたって新規発注ができない期間を乗り切るため、通常より多めに発注する必要もあります。

12月の時点では、TinyPilotの新しい金属ケースの設計をまだ最終調整している段階でした。メーカーの見積もりでは、発注から完成まで30営業日かかるとのことでした。まさに春節の危険なタイミングと重なっていました。

カスタム製品の初回発注では、通常は可能な限り最小ロット――約4週間分――を注文します。しかし今回は最小ロットが4か月分でした。春節を乗り切る在庫に加え、次回製造分のリードタイムもカバーする必要があったからです。

すでにこの時点で、発注は大きなストレスでした。試作品は確認済みとはいえ、初回量産では何が起こるかわかりません。1,000個のケースが使い物にならない不良品になる可能性もありました。そうなれば、また4か月間は3Dプリントのケースに頼ることになり、需要増をまかなうために割高な予備ベンダーに高い費用を払い続けなければなりません。

もう一つの大きなリスクは、メーカーの納期が遅れ、春節前に何も出荷されないことでした。出荷予定日が近づいても、メーカーからは納期は守れそうだという以外、進捗の連絡はほとんどありませんでした。必要であれば一部だけでも先に発送してほしいと頼みましたが、それが可能かどうかも返答がありませんでした。

ようやく、休業に入ったと思っていた土曜日に、送料をすぐに支払ってほしいというメールが届きました。すぐに支払うと、数日後にケースの追跡番号が送られてきました。

そして1週間後、ケースが到着しました!しかも、すべて試作品と変わらない品質で、ほっと胸をなでおろしました。

段ボール箱いっぱいに詰められたTinyPilotの金属ケースの写真

届いた16箱のうちの1箱

おかげでVoyager 2aを予定どおり出荷でき、次の製造分が届くまでの在庫も確保できました。

3PLベンダーへの移行でつまずいたこと

今年の目標の一つは、TinyPilotの自社フルフィルメントを外部の配送倉庫へ移すことです。こうした事業者は「3PL(サードパーティ・ロジスティクス)」と呼ばれています。

12月に3PLベンダーへの移行を始めた当初は、とても順調でした。先方は小規模な企業で、顧客もすべて中小企業でした。規模感が合っていて、私たちのニーズもよく理解してくれているように思えました。

ところが、倉庫管理システム「Veracore」との連携方法について、PDFのマニュアルを渡されたとき、最初の違和感を覚えました。システムにログインしてみると、20年間更新されていないかのような古いASPアプリケーションが表示されたのです。

VeracoreのPDFマニュアルの1ページ。ひどい出来のASPアプリのスクリーンショットが載っている

Veracoreの導入マニュアルPDFと、そこに掲載されたウェブインターフェースのスクリーンショット

ひどく古いソフトウェアを目にして、もちろん不安になりました。ただ、TinyPilot側では引き続きShopifyで注文を管理する予定でした。Veracoreは3PLが私たちのシステムと同期するためのもので、自分が頻繁に使うことはないだろうと自分に言い聞かせました。

まずは取扱量の少ない製品から3PLに移すことにしました。TinyPilot Power Connectorです。メイン製品の10分の1の価格で、販売数は月に30〜40個ほど。3PLのワークフローを最初から最後まで試すには、リスクの低い製品でした。

3PLでの注文処理を開始した後、最初のPower Connectorの注文が入ったのは12月25日の午後5時でした。もちろん祝日のため当日発送はされません。翌日の午後に注文状況を確認しましたが、Shopify上ではまだ「未発送」のままでした。まあ、翌日も休みなのだろうと思いました。

27日の午後3時になっても、まだ発送されていません。注文が先方に正しく届いているか確認するため、3PLにメールを送りました。返答は、すべて正常に動いているというもので、Veracoreは1日に1回だけShopifyに発送状況を同期するとのことでした。Shopify上の発送状況や追跡番号は、午後8時までに更新されると言われました。

1日に1回?なぜ発送ラベルを印刷した時点で、すぐに注文を「発送済み」にしないのでしょうか。そうすればリアルタイムで情報がわかるはずです。

それでも、まあ大丈夫だろうと思いました。100社もの顧客がこのシステムに満足しているのです。リアルタイムの発送情報が本当に必要な場面がどれほどあるというのでしょうか。

もし顧客から注文変更の依頼が来たら?

30件に1件くらいの割合で、顧客から変更の依頼があります。配送先住所を間違えて入力していたことに気づいたり、気が変わって注文自体をキャンセルしたいという場合です。

TinyPilotの現在の体制では、こうした依頼への対応は簡単です。カスタマーサポートを担当する2名が、そのまま発送業務も担当しているからです。まだ発送前であれば、Shopify上で変更を加えて通常どおり処理を続けるだけです。

ところが3PLに移行すると、この「1日1回の同期」が問題になりました。顧客から変更依頼のメールが届いても、その注文がすでに発送済みかどうかがわからないのです。Shopify上で見ている情報は、最大で24時間遅れているからです。

3PL側の解決策は、私たちの注文を担当する従業員にメールで変更内容を伝えるというものでした。ひどい仕組みだと感じました。

現在、Shopifyは私たちにとって「信頼できる唯一の情報源(source of truth)」です。誰もが注文に関する情報をShopifyという一か所で共有でき、そこが正しい情報だと信頼できます。メールで別途やり取りを始めれば、情報が複数の場所に分散し、同期が困難になります。

しかも、チームではなく個人宛にメールするという点も気に入りませんでした。その担当者が病気や休暇で不在だったらどうなるのでしょうか。3PLは、通常は他の誰かがその人のメールをチェックすると言いました。通常は、ですか?

標準とは違う方法で支払われたら?

顧客がTinyPilotのウェブサイトの通常の決済フロー以外で購入するケースには、主に2つのパターンがあります。

  1. ウェブサイトでは対応していないカスタム注文が必要な場合(例:ボリュームディスカウント)。
  2. 発注書(PO)で支払いたい場合(いわば、大企業が発行する借用書のようなものです)。

(1)の場合は、カスタム注文を作成し、顧客にクレジットカードで支払えるリンクを送ります。顧客が支払うと、Shopifyは自動的に注文を「支払い済み」にし、私たちは発送します。

(2)の場合は、カスタム注文を作成し、顧客から署名入りの発注書が届くのを待ちます。発注書が届いた時点では実際のお金はまだ入っていないため、Shopify上では注文は「未払い」のままですが、発注書に基づいて発送します。

おわかりのように、(1)と(2)は互いに矛盾します。もし3PLに「支払い済みになるまで発送を保留する」よう指示すれば、発注書で支払う(2)の顧客の注文は発送されません。逆に「未払いでも発送する」よう指示すれば、(1)の注文は顧客が支払う前にすぐ発送されてしまい、支払われないままになる恐れがあります。

以前は、発注書のケースでは注文にメモを添えて意図を明確にしていました。しかし3PLは注文を一度しか取り込まないため、あとからメモを追加しても先方には届きません。

3PLの解決策は、ここでもやはり担当者にメールで特例を説明するというものでした。

こうして書き出してみて、見落としていた明白な解決策に気づきました。ルールを「支払い済みになったら発送する」に統一すればよかったのです。そして(2)の場合は、発注書を受け取った時点で手動で注文を「支払い済み」にすればいいのです。未払いの発注書を追跡する別の仕組みは必要になりますが、3PLとの連携を場当たり的なメールで複雑にするよりは簡単です。

3PLの乗り換え

総じて、最初の3PLの変更管理の仕組みは脆弱で、高額なミスを招きやすいと感じました。

うまくいっていないことを伝えると、先方は快く受け入れてくれました。契約上は2か月前の予告が必要で、本来なら月額最低料金350ドルを2か月分請求できたはずですが、請求はされませんでした。

3PLを選定していたとき、同じくらい気に入った候補が2社ありました。車で通える距離にある方を選びましたが、もう一方もいつでも連絡してほしいと言ってくれていました。

最初の3PLでエッジケースの問題に直面したとき、2番目の候補にどう対応するか確認しました。オーナーはVeracoreは古いと感じていたことを教えてくれ、彼の倉庫のソフトウェアなら私のケースにどう対応できるかを説明してくれました。Shopifyでの管理を続けつつ、場当たり的なメールでつなぐ必要のない、ずっとスムーズな方法でした。現在、その新しい3PLベンダーへの切り替えを進めています。

まとめ

今月できたこと

学んだこと

  • 3PLが標準外の注文にどう対応するかは事前に確認しましょう。
  • 自社のECプラットフォームと3PLの注文管理システム間のインターフェースは、できる限りシンプルに保ちましょう。
    • 私の場合、3PLとの連携をシンプルにできる業務プロセスの変更を見落としていました。
  • 新しい3PLへの移行は一気にやらないようにしましょう。
    • まずは取扱量や単価の低い製品から始め、本番の製品に移る前に問題点を洗い出しましょう。

来月の目標

  • 出荷可能なTinyPilotデバイスの在庫を通常の水準に戻します。
  • 新しい3PLベンダーへの移行プロセスを開始します。
  • 開発チームとサポートエンジニア間の横断的な連携を始めます。

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

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