TinyPilot: Month 10

Michael Lynch

TinyPilot:10か月目

一行サマリー

TinyPilotに初めての本格的なオフィスができました。

ハイライト

  • TinyPilotに初めての正式なオフィスができました。
  • マーケティング施策を試しましたが失敗に終わりました。
  • 新しいオフィスのITインフラを設計するのが楽しくて仕方ありませんでした。

目標の達成度

毎月初めに、その月に達成したいことを宣言しています。目標に対してどうだったかを振り返ります。

TinyPilotの売上を3万ドルに伸ばす

  • 結果:売上は46%増の2万9千ドルになりました
  • 評価:A-

3万ドルという目標にはわずかに届きませんでしたが、かなり近づくことができました。2月から続いていた売上の下降トレンドに歯止めがかかり、ほっとしています。

TinyPilot専用PoE HATのプロトタイプを作る

開発を始めた当初、協力してくれている電気系エンジニアたちは世界的な集積回路の不足を織り込んでいましたが、想定以上に深刻でした。

通常は、プロトタイプの設計と試作が成功してから部品を大量に発注します。今回はその発注のタイミングを、プロトタイプを設計した段階まで前倒しする計画でした。しかし3回試しても、基板の設計に費やした3〜4日の間に毎回部品が売り切れてしまいました。新しい戦略として、互換性のある部品が見つかり次第、設計でうまく動くことを祈りつつ、重要部品を半年分まとめて先に購入することにしました。

著書 Refactoring English の目次案を作る

自分としては納得のいく目次が書けましたが、まだ読者からのフィードバックは集めていません。次のステップとして、メーリングリストの登録者にアンケートを取り、目次が期待に合っているか確認する予定です。

TinyPilot の統計

指標2021年3月2021年4月増減
ユニーク訪問者数5,8055,880+75 (+1%)
総ページビュー9,76210,483+721 (+7%)
販売売上$19,782.96$28,880.65+$9,097.69 (+46%)
寄付$19.92$0.00-$19.92 (-100%)
総売上$19,802.30$28,880.65+$9,078.35 (+46%)
純利益-$352.77$843.56N/A

TinyPilotの新オフィス:楽しいこと

TinyPilotに初めての正式なオフィスができました!自宅から徒歩15分という絶好の立地です。賃貸契約は5月1日から始まり、現在オペレーションの移転を進めています。

引っ越し初日のTinyPilotオフィスの写真

新オフィスの初日(今はもっと片付いています)

今も主に自宅で仕事をしていますが、ちゃんとしたオフィスを持つのは想像以上に楽しいです。これまで自宅がどんどんTinyPilotの倉庫と化していましたが、すべてをオフィスに移したことで、棚2つ分と大きなクローゼット1つ分を取り戻すことができ、ほっとしています。

意外にも特に楽しかったのが、オフィスの技術インフラを選ぶ作業でした。現在使っているものを簡単に紹介します。

ドアロック:Yale Assure Lever

オフィスのドアに取り付けたスマートロックの写真

オフィスにはもともと普通の鍵付きドアレバーが付いていましたが、一時的な入室をよりうまく管理できる方法が欲しいと思っていました。また、従業員との関係がこじれて別れることになった場合に、オフィスの鍵のコピーがどこかに残っているのではないかと心配したくありませんでした。

Augustのスマートロックは評判が良いと聞いていましたが、同社はデッドボルトしか作っていません。Yaleは2017年にAugustを買収しており、Augustのソフトウェアを搭載したドアレバー錠を作っています。

これがYaleによる買収の影響なのかは分かりませんが、設置プロセスは驚くほどひどいものでした。アプリの説明が分かりにくく、ハードウェアやWi-Fiで少しでも問題が起きるとエラーをうまく処理せずに失敗するため、すべての手順で少なくとも3回はやり直しが必要でした。

ただ、一度セットアップが完了してしまえば、ポケットから鍵を探すことなくドアを開けられるのは快適ですし、誰がいつオフィスに出入りしたかのログが残るのも便利です。

プリンター:Zebra LP2844(配送ラベル用)と Brother HL-2300D(書類用)

机の上に置かれたプリンターの写真

私はネットワーク対応プリンター、特にWi-Fi接続のものとは相性がとても悪いです。Brotherのプリンターは単なるUSB接続のシンプルな機種で、後述する専用のプリントサーバー経由でローカルネットワークに共有しています。自宅でも同じ機種を使っていて安定して動いているので、オフィスにも適していると判断しました。

Zebraのプリンターはすでに自宅で使っていたものを、そのままオフィスに移設しました。動作自体は問題ありませんが、自宅のWindowsマシンでできていた印字の濃さの調整がうまくできず、ラベルが少し読みづらくなっています。

ルーター:Qotom Q355G4ミニPCで動作するOPNsense

:まだオフィスのサーバーラックを設置できていないため、すべてのネットワーク機器を床に直置きしています。見栄えはひどい状態です。

Qotom Q355G4ミニPCの写真OPNsenseのスクリーンショット

自宅ではUbiquitiのEdgeRouter 4を使っていますが、Ubiquitiは今年に入って急速に評判を落としています。代替として人気なのがpfSenseですが、こちらはオープンソースであることについてごまかしているようです。複数の情報源から、OPNsenseはpfSenseの「良心的な」フォークだと聞いていました。

Qotom Q355G4ミニPCはOPNsenseを動かす定番の選択肢なので、Amazonで購入しました。もちろん、OSのインストールはTinyPilotだけを使って行いました。新しい仮想ストレージのマウント機能のおかげです。

今のところOPNsenseは気に入っています。Ubiquitiよりは複雑ですが、MikroTikよりははるかに直感的です。なんとか使いこなせてはいますが、まだ設定をあれこれいじるには慣れが必要です。

スイッチ:TP-Link 8ポートPoEスイッチ

TP-Link 8ポートスイッチの写真

自宅で使っているのと同じスイッチで、気に入っています。ただPoEポートがすぐに足りなくなりそうなので、ラックマウント予定のNetgear 16ポートGS116LPをすでに注文しました。

無線アクセスポイント:Ruckus R310

まだ設置していないRuckus製無線アクセスポイント

これも自宅で使っているのと同じ機種です。125平方フィート(約11.6平米)の小さなオフィス1部屋には、少々オーバースペックかもしれません。

PoE対応でケーブル1本で済むのが気に入っています。自宅のRuckusは一度設定したらそのまま放っておいても安定して動いてくれたので、手間がかからないのも良い点です。

プリントサーバー:Pi 4B上のCUPS

Raspberry Pi製プリントサーバーの写真

プリントサーバーのセットアップは驚くほど簡単でした。手元にたくさんあったPi 4BにPoE HATを取り付け、cupsprinter-driver-brlaserをインストールしただけです。

いくつか印刷の不具合が出ていますが、原因がLinuxクライアント側にあるのか、CUPSサーバー側なのか、それともプリンター本体なのかはまだ切り分けできていません。

ジャンプボックス/踏み台サーバー:古いPi 3上のTailscale

古いRaspberry Pi 3の写真

マシンにリモートでアクセスするために、古いRaspberry Pi 3にTailscaleをインストールしました。さらに自宅のデスクトップにもTailscaleを入れたので、両方のマシンがインターネットにつながっていれば、Tailscaleの仮想ネットワーク経由でつながります。

ルーターにアクセスしたいときは、自宅のデスクトップからこのコマンドを実行します。

ssh bastion -L 443:192.168.1.1:443

これで、ルーターの管理画面にアクセスできます。

オフィスのプリントサーバー(franklin)を管理したいときは、このコマンドを実行します。

ssh -J bastion franklin -L 631:localhost:631

これで、franklinのCUPSウェブインターフェースにアクセスできます。

CUPSインターフェースのスクリーンショット

Tailscaleを使って自宅の開発マシンからオフィスのプリントサーバーを管理している様子

今後導入予定のもの

  • 12Uサーバーラック
  • HP DL380 G7 ラックマウントサーバー
    • 初めてサーバーラックを使ってみたかったのが主な理由です。
    • とにかく巨大で、重さは60ポンド(約27kg)あります。
    • ひどい選択だったと分かるかもしれません。
  • Dell Optiplex 3050 Micro(メインのワークステーション)
    • 当面は17インチのテスト用ノートPCをメインのワークステーションとして使っています

TinyPilotの新オフィス:面倒なこと

オフィスを開設する際の楽しくない部分は、法務や保険まわりの手続きです。

これまで人を雇うときは、すべて「業務委託」としてきました。これは米国ではかなり手続きが軽く、官僚的な手間も少ない形態です。しかし、誰でも好きに業務委託にできるわけではありません。IRS(内国歳入庁)は従業員と業務委託の区別についてガイダンスを出しています。私が必要としている業務は、IRSの基準では雇用関係にあたります。つまり、大量の書類手続きをこなし、労災保険にも加入しなければなりません。さらに、賃貸契約上も賠償責任保険と物的損害保険への加入が求められています。

TinyPilotは、保険会社が用いる事業区分にきれいには当てはまりません。保険会社が「製造業」というとき、通常は人命に関わる重機を備えた工場を想定しています。私たちは基板をプラスチックケースにねじ止めするという意味では「製造」していますが、そのため保険会社からは「製造業」と見なされ、高い保険料を請求されます。

人事まわりはさらに面倒で、今も手続きが長引いています。他の創業者の勧めでJustWorksを使うことにしましたが、私が純粋なソフトウェア事業ではないため、使い勝手はさらに悪くなっているのだと感じています。

これまでのJustWorksでの経験は次のとおりです。

  • JustWorksのオンボーディングでは、7人の異なる担当者から同じ質問を繰り返し受けました。チーム内でまったく連携が取れていないようでした。
  • JustWorksでは、労災保険を同社経由で購入することが必須ですが、そのことは登録手続きを始めて1週間経つまで分かりません。しかも大きな隠れコストになっています。
  • JustWorksはデフォルトで労働法規のポスターを送り付け、50ドルを請求してきます。オプトアウトは可能ですが、4人チームで月200ドルも払っているのに、安いポスターくらいサービスしてくれてもいいのに、と細かく課金されている感覚が拭えません。

JustWorksで最も納得がいかないのは、労災保険の職種分類で、私の職種を卸売倉庫作業員に分類されたことです。巨大なパレットをフォークリフトで運ぶ人たちと同じリスク区分に入れられています。自分の仕事は完全にパソコン作業だと説明したにもかかわらず、私の給与にかかる保険料率は、実際に組み立て作業を行う従業員よりも3倍高くなっています。料率の訂正を求めても、JustWorksは正しいコードを割り当てていると主張するばかりで、詳しい説明はしてくれませんでした。

最終的にアカウントマネージャーと電話で話し、自分の仕事はソフトウェアを書くこととマネジメントに限られており、倉庫作業員に分類されるのはおかしいと説明しました。担当者は理解を示し、労災チームに確認すると言ってくれました。数日後、こんな返答がありました。

このケースの管理者は、業務内容がオフィスでのパソコン作業であったとしても、卸売事業の製品や業務に触れる機会があります。そのため、単なる事務職員とは見なされず、そのことが当該の分類となる理由です。

今からJustWorksから乗り換えるのは大変なので、このまま続けますが、年末にはGustoOnPayを検討する予定です。

弁護士に確認させてください

Mike Monteiro氏の有名なトーク「F— You, Pay Me」を見返したのをきっかけに、人生で初めて弁護士に業務契約のレビューを依頼しました。

Monteiro氏のアドバイスは主にフリーランスや業務委託向けですが、その大半は創業者にも当てはまります。彼の主張は、相手側に契約条件のすべてを決めさせ、自分の側に弁護士を立てないことで、膨大な主導権を手放してしまうというものです。事業がまだ小さくて弁護士を雇う余裕がないように思えても、良い弁護士は悪い契約から身を守ってくれることで、十分に元を取ってくれるというのです。

商業用賃貸契約を結ぶのは初めてで、何が普通なのか分からなかったので、弁護士に相談するには良い機会だと思いました。その結果、賃貸契約の手続きに1週間ほど余計なストレスがかかりました。遅れの原因は、初めての弁護士探しと、その弁護士による賃貸契約のレビューという2つの作業を同時に進めたためです。

ただ、結果は楽しいものでした。「弁護士に確認させてください」と言えたときは、本物のビジネスパーソンになった気分でした。そして弁護士は、賃貸契約の矛盾点を見つけ、インターネットの利用可否や、大家が賃貸スペースに立ち入る権利の制限など、私にとって重要な条項について、より明確な文言を提案してくれました。

見当外れだったプロモーション実験

Will Yarborough氏はTinyPilotをレビューしてくれた最初のYouTuberの一人で、彼とTinyPilotのより面白い使い方でコラボできないかと考えていました。

アイデアを出し合うためにビデオ通話をした際、WillはTinyPilotを使って一眼レフカメラを操作する案を出してくれました。ほぼすべての一眼レフはHDMI出力を備え、シャッターを切るためのシンプルな電子インターフェースを公開しています。

TinyPilotはRaspberry Pi上で動作し、Raspberry Piはソフトウェアでオン・オフを切り替えられる電子ピン(GPIO)を備えています。TinyPilotのウェブインターフェースにPiのピンを制御するボタンを追加できれば、Willがそのピンとカメラのシャッターをつなぐ回路を組んでくれるという話でした。

これは素晴らしいアイデアに思えました!TinyPilotにまったく新しい市場が開けるかもしれません。Raspberry Piを使って一眼レフのシャッターを制御する方法をブログで紹介している人は他にもいましたが、映像キャプチャと組み合わせ、洗練されたウェブインターフェースにまとめた例は誰も作っていませんでした。

回路の作成や動画撮影といった大変な部分はWillが担ってくれるので、これは絶対にうまくいくと思いました。私がやることはウェブUIにボタンを追加するだけです。せいぜい1時間もあれば終わるはずでした。

いざソフトウェア部分の実装に取りかかると、ボタンを追加するだけでは済まないことがすぐに分かりました。Raspberry Piの電子インターフェースを制御するための適切なライブラリを含めるよう、TinyPilotのインストーラーを更新する必要がありました。さらに、ボタンを適当に配置するわけにもいかず、置き場所として自然な位置にUIを再配置しなければなりませんでした。動くものができた後も、異なるカメラでの動作を確認しながら、Willと何度か改善を重ねる必要がありました。

結局、開発には合計で約6時間かかりました。小さく聞こえるかもしれませんが、今は一週間に数時間でもコーディングの時間が取れれば良い方です。このプロジェクトで、1週間以上のコーディング時間をすべて使い切ってしまいました。

Willは素晴らしい動画を作ってくれましたが、二人とも反響の少なさにがっかりしました。執筆時点での数値は次のとおりです。

指標
YouTubeの再生回数812
メーリングリスト登録者数17
コンバージョン率2%

動画が公開された後、私が間違った問いを立てていたことに気づきました。Raspberry Piでこのような仕組みを作った人は確かにいませんでしたが、すでに一眼レフをスマホやブラウザから操作できる製品は存在していたのです。ある企業は、コンピューターネットワーク経由でカメラを制御するというアイデア自体を発明したとして特許まで取得しており、私が競合製品を作れば訴えられる可能性さえありました。

一眼レフ用のコードをすべて別のexperimentalブランチに分けておいて良かったと思っています。当初は小さな変更だから通常のTinyPilotソフトウェアに機能として追加できると考えていました。そうしなくて本当に良かったです。そうしていたら、コードは大幅に複雑になり、99%のユーザーが必要としない機能でUIがごちゃごちゃになっていたでしょう。

既存プロジェクト

今もメンテナンスは続けているものの、開発の中心ではないプロジェクトについて、簡単に近況を報告します。

Is It Keto

指標2021年3月2021年4月増減
ユニーク訪問者数63,49356,094-7,399 (-12%)
総ページビュー141,199123,723-17,476 (-12%)
ドメインレーティング(Ahrefs)11.011.00
AdSense収益$611.99$560.20-$51.79 (-8%)
Amazonアフィリエイト収益$337.29$116.78-$220.51 (-65%)
総売上$949.28$676.98-$272.30 (-29%)

Is It Ketoは今も静かに動き続けています。昨年と同じパターンで、新年にダイエットを始めた人たちの関心が薄れるにつれて、人気もゆっくりと落ちてきています。

Amazonアフィリエイト収益の落ち込みが特に大きく見えますが、これは先月が外れ値だったためです。

Hit the Front Page of Hacker News

指標2021年3月2021年4月増減
ユニーク訪問者数185114-71 (-38%)
Gumroadでの売上$313.63$341.61+$27.98 (+9%)
Blogging for Devs経由の売上$655.20$109.20-$546.00 (-83%)
総売上$968.83$450.81-$518.02 (-53%)

私のコースは今も少量ずつ売れ続けています。先月はMonica Lent氏のBlogging for Devsコミュニティ経由で大きな伸びがありました。3月にMonica氏がコースを会員特典として無料提供し始め、ユニークなダウンロードごとに私にロイヤリティを支払ってくれたのです。その当初の勢いは落ち着いてきました。

今もコースを見つけて学んだことを報告してくれる人がいるのは嬉しいことです。Chris Samiullah氏はCourseMakerのブログで自身のノートを公開し、私のコースが/r/programmingサブレディットで1位を取るのに役立ったと紹介してくれました。

Zestful

指標2021年3月2021年4月増減
ユニーク訪問者数480892+412 (+86%)
総ページビュー1,3672,132+765 (+56%)
RapidAPI経由の売上$21.97$40.82+$18.85 (+86%)
総売上$21.97$40.82+$18.85 (+86%)

Zestfulは引き続き保守モードで運用しています。Enterpriseプランについての問い合わせが増えていますが、価格を伝えるとすぐに話が立ち消えになります。TinyPilotから注意をそらす機会費用を考慮して、高めの価格を提示しているためです。

ただ、Enterpriseの問い合わせの多くは真剣さに欠けるように感じます。よくある問い合わせは、「従量課金プランは高すぎます。Enterpriseプランはいくらですか?」というものです。

まとめ

何ができたか?

  • TinyPilot初のオフィススペースの賃貸契約を結びました。
  • オフィスに常駐するパートタイム従業員を2名採用しました。
  • 新入従業員向けに、TinyPilotの社内プロセスの約50%を文書化しました。
  • TinyPilot 1.5.0の開発を完了し、仮想ストレージ機能と映像ストリームの調整サポートを追加しました。
  • ブログ記事「How Litestream Eliminated My Database Server for $0.03/month」を公開しました。

学んだこと

  • ライブの議論の場で新しいプロジェクトを即決しないこと。
    • 小さく見えても、実際は思ったより複雑なことが多いです。
    • その作業に見合う価値があるかどうか、じっくり考える時間が必要です。
  • 変化にはより多くの時間を割り当てること。
    • TinyPilotでは今、初めてのオフィスへの移転と、新入従業員のゼロからのトレーニングという2つの大きな変化が同時に起きています。
    • どちらにも時間がかかることは想定していましたが、予期せぬ作業に対応するためのバッファをもっと取るべきでした。

来月の目標

  • TinyPilotの売上を3万3千ドルに伸ばすこと。
  • TinyPilotのオペレーションを新オフィスへ完全に移転すること。
  • Refactoring Englishの目次についてフィードバックを集め、改善すること。

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

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