nadai.dev
Essay

プロダクトをすべて手元で処理する理由

Sonir、Pixmend、gpdf は、どれも利用者のデータをサーバーに送りません。理由はプライバシーではなく、サーバー代と、サーバーを持つことで失われる自由度です。

わたしがいま個人で運営しているプロダクトは三つあります。macOS の再生音に DSP をかけて DAC へ出す Sonir、ブラウザで動く画像修復ツールの Pixmend、Go の PDF 生成ライブラリの gpdf です。分野はばらばらですが、設計には共通点がひとつあります。どれも、利用者のデータをわたしのサーバーに送らずに処理します。

  • Sonir は、部屋の測定データを端末の外に出しません。
  • Pixmend は、Real-ESRGAN を WebGPU でブラウザの中だけで動かします。
  • gpdf は、呼び出し元の Go プロセスの中で PDF を組み立てます。

プライバシーへの配慮に見えますが、出発点は別のところにあります。理由は二つで、サーバー代と、サーバーを持つことで失われる自由度です。

サーバー代は、一人では払い続けられません

処理をサーバーで行うと、利用者が増えるほど費用が増えます。画像の拡大や音声の処理のように計算の重い処理なら、なおさらです。本業を持ちながら一人で運営している以上、利用者が増えることがそのまま負担の増加になる構造は、長く続けられません。

手元で処理すれば、計算するのは利用者の端末です。利用者が何人増えても、わたしの側の費用はほとんど変わりません。配るのは静的なファイルだけで済みます。

費用を回収する仕組みが、プロダクトの形を決めてしまいます

サーバー代そのものより大きいのは、その費用を回収するための仕組みのほうです。

サーバーで処理するなら、使いすぎを防ぐために回数制限が要ります。回数を数えるにはアカウント登録が要ります。費用を賄うには有料プランが要ります。どれも、利用者のために足す機能ではありません。サーバー代を払い続けるために足す機能です。そして一度入れると、プロダクトの形はそれに合わせて決まっていきます。

Pixmend が登録なし、回数制限なしで使えるのは、気前がいいからではありません。処理が手元で完結していて、制限を設ける理由がそもそもないからです。Sonir のベータを無料で出せているのも、同じ理由です。

自由度は、作る側にも残ります

自由度が残るのは、利用者の側だけではありません。サーバーを持たなければ、障害対応も、データの保管も、容量の見積もりも抱えずに済みます。空いた時間と注意を、プロダクトそのものに使えます。

もちろん、手元処理にも制約はあります。使える計算資源は利用者の端末しだいで、ブラウザや OS の仕様にも縛られます。Sonir では、macOS の再生音を受け取るために仮想オーディオデバイスから作る必要がありました(仕組みは Zenn に書きました)。それでも、端末の制約の中で設計するほうが、費用の回収に合わせて設計するよりも、作りたいものに近いものが作れると感じています。

質問への応答

プライバシーのためではないのですか

結果として、データは利用者の手元から出ません。ただ、それは目的ではなく、サーバーを持たないと決めたことの帰結です。理由を後から整えて書くと実際の判断とずれるので、ここでは順番どおりに書いています。

どんなプロダクトでも手元で処理できますか

できないものもあります。複数の利用者のデータを集めて初めて成り立つサービスは、サーバーなしには作れません。一人の利用者の手元で完結する問題を選ぶ、というのがいまの方針です。