TinyPilot:10ヶ月目
原文は Michael Lynch により に公開されました。 このブログを購読する
一言でまとめると
TinyPilotが初めての本格的なオフィスを構えました。
ハイライト
- TinyPilotが初の公式オフィススペースを手に入れました。
- マーケティングの実験を試しましたが、失敗に終わりました。
- 新しいオフィスのITインフラを設計するのは楽しい作業でした。
目標の達成度
毎月初めに、その月に達成したい目標を宣言しています。目標に対する結果は次のとおりです。
TinyPilotの売上を3万ドルにする
- 結果: 売上が46%増の2万9000ドルになりました
- 評価: A-
目標の3万ドルにはわずかに届きませんでしたが、惜しいところまでいきました。2月から続いていた売上低迷の流れを止められたことにほっとしています。
TinyPilot専用PoE HATの試作機を作る
- 結果: 世界的な半導体不足により、試作機の完成が少なくとも1ヶ月遅れました
- 評価: D
開発を始めた時点で、電気工学のパートナーたちは世界的な集積回路の不足を考慮していましたが、状況は想定以上に深刻でした。
通常であれば、試作機の設計とプリントに成功してから部品を大量に購入します。私たちは購入のタイミングを早め、試作機を設計した段階で購入する計画にしました。3回試しましたが、そのたびに回路基板の設計に費やした3〜4日の間に部品が完売してしまいました。新たな戦略は、互換性のある部品が見つかり次第、主要部品を半年分すぐに購入し、それらが設計通りに動くことを祈るというものです。
著書Refactoring Englishの目次案を作る
- 結果: 目次案を完成させ、本のランディングページで公開しました
- 評価: A
自分としてはしっくりくる目次案が書けましたが、まだ読者からのフィードバックは集めていません。次のステップは、メーリングリストの登録者にアンケートを取り、目次案が彼らの学びたい内容と合っているかを確認することです。
TinyPilotの数値
| 指標 | 2021年3月 | 2021年4月 | 前月比 |
|---|---|---|---|
| ユニーク訪問者数 | 5,805 | 5,880 | +75 (+1%) |
| 総ページビュー数 | 9,762 | 10,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.56 | N/A |
TinyPilotの新オフィス:楽しいこと
TinyPilotが初めての公式オフィスを手に入れました!自宅から徒歩15分の場所にあり、立地も最高です。賃貸借契約は5月1日にスタートし、現在オペレーションの移転を進めています。

新オフィスの初日(今はずっと片付いています)
今も主に自宅で仕事をしていますが、ちゃんとしたオフィスを持つのは想像以上に楽しいと感じています。自宅はどんどんTinyPilotの倉庫と化していたので、すべてをオフィスに移して、キャビネット2つ分と大きなクローゼットを取り戻せたのは大きな救いでした。
新オフィスで意外なほど楽しかったもう一つのことが、技術インフラを選ぶ作業でした。現在使っているものを簡単に紹介します。
ドアロック: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
注: まだオフィスのサーバーラックを設置していないため、すべてのネットワーク機器を床に直置きしています。まるで野蛮人のようです。


自宅ではUbiquiti EdgeRouter 4を使っていますが、Ubiquitiは今年に入って急速に評判を落としています。pfSenseは人気の代替ですが、オープンソースであると偽っているようです。複数の情報源から、OPNsenseはpfSenseの「良心的な」フォークだと聞いています。
Qotom Q355G4ミニPCはOPNsenseを動かすのに人気の選択肢なので、Amazonで購入しました。もちろん、OSのインストールは新しい仮想ストレージマウント機能のおかげでTinyPilotだけを使って行いました。
今のところOPNsenseは気に入っています。Ubiquitiよりは複雑ですが、MikroTikよりははるかに直感的です。なんとか使いこなせてはいますが、まだ設定を気軽にいじれるほど慣れてはいません。
スイッチ:TP-Link 8ポートPoEスイッチ

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

これも自宅で使っているのと同じものです。125平方フィート(約11.6平方メートル)の小さなオフィス1つには、少しオーバースペックかもしれません。
PoE対応でケーブル1本で済むのが気に入っています。自宅のRuckusは一度設定してから一度も手を加える必要がなかったので、メンテナンスが最小限で済む点が気に入っています。
プリントサーバー:Pi 4B上のCUPS

プリントサーバーのセットアップは驚くほど簡単でした。Pi 4B(幸い手元にたくさんあります)にPoE HATを載せ、cupsとprinter-driver-brlaserをインストールしただけです。
印刷時にいくつか不具合が出ていますが、Linuxクライアント側の問題なのか、CUPSサーバー側なのか、それともプリンター自体の問題なのかはまだ切り分けできていません。
踏み台/bastionサーバー:古いPi 3上のTailscale

マシンにリモートでアクセスするために、古い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ウェブインターフェースにアクセスできます。

Tailscaleを使って自宅の開発マシンからオフィスのプリントサーバーを管理している様子
今後導入予定
- 12Uサーバーラック
- HP DL380 G7ラックマウントサーバー
- 主に初めてサーバーラックを使ってみたかったからです。
- とにかく巨大で、重量は約27kg(60ポンド)もあります。
- ひょっとするとひどいアイデアだったということになるかもしれません。
- Dell Optiplex 3050 Micro(メインのワークステーション)
- 当面は17インチのテスト用ノートPCがメイン機の代わりを務めています
TinyPilotの新オフィス:面倒なこと
オフィスを開設する際の楽しくない部分は、法務や保険まわりの手続きです。
これまで人を雇うときは、米国では比較的手続きが軽く官僚的でもない「業務委託」としてだけ雇ってきました。しかし、誰でも好きに業務委託にできるわけではありません。IRS(内国歳入庁)は従業員と業務委託の区別についてガイダンスを出しています。私が必要としている業務は、IRSの基準では雇用関係に該当します。つまり、大量の書類手続きをこなし、労災保険にも加入しなければなりません。さらに、賃貸借契約でも賠償責任保険と物的損害保険への加入が求められています。
TinyPilotは、保険会社が使う事業区分にきれいには当てはまりません。保険会社が「製造業」というとき、通常は人を死に至らしめかねない大型機械を備えた工場を想定しています。私たちは回路基板をプラスチックケースにねじ止めするという意味では製品を「製造」していますが、そのせいで保険会社からは「製造業」とみなされ、高い保険料を請求されます。
人事まわりの手続きはさらに面倒で、今もまだ尾を引いています。他の創業者からの勧めでJustWorksを選びましたが、私が純粋なソフトウェア事業ではないせいで、体験はさらに悪くなっているのだと思います。
これまでのJustWorksでの体験は次のとおりです。
- JustWorksのオンボーディングでは、7人の異なる担当者から同じ質問をされ、チーム内でまったく連携が取れていないように見えました。
- JustWorksは、労災保険を彼らから購入しなければならないという大きな隠れコストを抱えており、それがサインアップから1週間経つまで分かりません。
- JustWorksはデフォルトで労働法規のポスターを送り付け、50ドルを請求してきます。顧客はオプトアウトできますが、4人チームで月額200ドルを払っているのに、安いポスターくらいサービスしてくれてもいいのに、とひどくせこい気持ちになります。
JustWorksで最も不満だったのは、労災保険で私の職種を卸売倉庫作業員に分類されたことです。私はフォークリフトで巨大なパレットを運ぶ人たちと同じリスクプールに入れられています。自分の仕事は完全にコンピューター作業だと説明したにもかかわらず、私の給与にかかる保険料率は、実際に機器の組み立てという肉体労働を行う従業員よりも3倍も高くなっています。料率の訂正を求めても、JustWorksは正しいコードを割り当てたと主張するばかりで、詳しい説明をしようとしませんでした。
最終的にアカウントマネージャーと電話で話し、私の仕事はソフトウェアを書くこととマネジメントに限られており、倉庫作業員に分類されるのはおかしいと説明しました。彼は理解を示し、労災保険のチームに確認すると言ってくれました。数日後、彼はこんなメッセージを伝えてきました。
このケースの管理者は、業務内容がオフィスでのコンピューター作業であったとしても、製品および卸売事業の運営に関わっているとみなされます。そのため、クライアントは現在のような分類となっています。その関わりがあることで、この従業員は単なる事務職員とはみなされません。
今からJustWorksから乗り換えるのは大変すぎるので、年末にGustoとOnPayを検討する予定です。
「弁護士に確認させてください」
Mike Monteiroの有名なトーク「F— You, Pay Me」を見返したことに触発され、人生で初めてビジネス契約のレビューを弁護士に依頼しました。
Monteiroのアドバイスは主にコンサルタントや業務委託向けですが、その大半は創業者にも当てはまります。彼は、相手側に契約条件のすべてを決めさせ、自分の側に弁護士を立てないことで、膨大な力を手放すことになると主張しています。たとえ事業がまだ弁護士を雇えるほど大きくないように思えても、良い弁護士は悪い契約から身を守ることで元を取ってくれるのです。
私はこれまで商業用賃貸借契約を結んだことがなく、何が普通なのかも分かっていませんでした。だから弁護士に相談するには良い機会に思えました。その結果、賃貸借のプロセスに1週間の余計な時間がかかり、ストレスも増えました。遅れの原因は、人生で初めて弁護士を雇うことと、その弁護士に賃貸借契約をレビューしてもらうことを同時に進めたためです。
ただ、結果は楽しいものになりました。「弁護士に確認させてください」と言えるのは、自分が本物のビジネスパーソンになったような気分にさせてくれました。そして弁護士は、賃貸借契約の矛盾点を見つけ、インターネットの可用性や貸主の立ち入り権の制限など、私にとって重要な条項について、より明確な文言を提案してくれました。
見当違いだったプロモーション実験
Will YarboroughはTinyPilotをレビューしてくれた初期のYouTuberの一人で、TinyPilotのさらに面白い使い方で彼とコラボできないかと考えていました。
私たちはビデオ通話でアイデアを出し合い、WillはTinyPilotを使って一眼レフカメラを制御するという案を出してくれました。ほぼすべての一眼レフはHDMI出力を備え、シャッターを切るためのシンプルな電子インターフェースを公開しています。
TinyPilotはRaspberry Pi上で動作し、Raspberry Piにはソフトウェアでオン・オフを切り替えられる電子ピンがあります。もし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,493 | 56,094 | -7,399 (-12%) |
| 総ページビュー数 | 141,199 | 123,723 | -17,476 (-12%) |
| ドメインレーティング(Ahrefs) | 11.0 | 11.0 | 0 |
| 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月 | 前月比 |
|---|---|---|---|
| ユニーク訪問者数 | 185 | 114 | -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サブレディットでトップを取るのに役立ったとクレジットしてくれました。
Zestful
| 指標 | 2021年3月 | 2021年4月 | 前月比 |
|---|---|---|---|
| ユニーク訪問者数 | 480 | 892 | +412 (+86%) |
| 総ページビュー数 | 1,367 | 2,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万3000ドルにする。
- TinyPilotのオペレーションを新オフィスへ完全に移行する。
- Refactoring Englishの目次についてフィードバックを集め、改善する。
記事をランダムに読む
コメント
ログインしてコメントする