設計としてのアカウントなし
OmniFluxのアプリでサインアップすることは決してない。「アカウントなし」がなぜ欠落でなく機能か、そしてそれが下流すべてをどう変えるか。
約束
OmniFluxのプロダクトで「サインアップ」「ログイン」画面を見ることはない。作るアカウントなし、確認するメールなし、管理するリカバリフローなし、「私のデータを削除」ボタンなし——なぜなら、削除すべきあなたのデータが我々の手元に存在しないから。
これは意図的なエンジニアリング・プロダクト選択であって、見落としではない。理由は以下。
なぜほとんどのアプリはアカウントを欲しがるか
ほとんどのアプリにとって、アカウントはクラウド側機能を成り立たせる方法だ:データは彼らのDBに、設定は彼らのバックエンドに、デバイス間同期は彼らのサーバへのアップロードを意味する。アカウントはサーバ側ストアへの鍵。
我々のプロダクトはサーバ側ストアを持たない。モデルはあなたのデバイスで動く。入力・出力はあなたのデバイスに住む。「ログイン」する対象がない。
諦めること
- デバイス間同期は難しくなる。ローカルネット上のE2E暗号化ピア同期と、(オプトイン)あなたがすでに管理する iCloud / Drive / Dropbox フォルダで解く。何ひとつ我々のサーバを通らない。
- デバイス間使用分析は失う。何人が機能を使っているか我々は知らない。そのシグナルは、ゆっくりした正直なやり方——レビューを読み、ユーザと話し、何が求められているか観察する——で取り戻す。
- ログインの壁の機能は失う。プロダクト面全体が「5分前にインストール、何にも接続していないユーザ」に対しても動く。
得ること
- 信頼のデフォルト。 データを集めないと、漏らせない、売れない、召喚状で出させられない、盗まれない。
- アカウントリカバリのサポート負担ゼロ。 パスワードリセットなし、「メール失った」チケットなし、SIMスワップ詐欺なし。サポート負担はSaaSよりシングルプレイヤーゲームに近い。
- 正直な価格設定。 アプリを一度売る。有料ユーザで無料ユーザを補助しない。「通知を増やさないと無料ユーザは離れる」というメトリクスに引っ張られダークパターンに陥らない。
- 長寿命プロダクト。 サーバを持たないアプリは、企業の優先度変更で死なない。ローカルモデル+ローカルDBは、デバイスが続く限り動き続ける。
同期の仕組み
オプトインすると:
- ローカルネット上で6桁ワンショットコードで2台ペアリング(OAuthでなくAirDrop風握手)。
- 両デバイスがローカルで鍵ペアを生成、握手で公開鍵を交換。
- 同期メッセージは受信側公開鍵で暗号化。我々のインフラ(リレーとして使うなら)は暗号文しか見ない。
- 元デバイスのペアリストから他方をいつでも失効可能。
任意のクラウドドライブのフォルダ(iCloud、OneDrive、Drive、Dropbox、セルフホストWebDAV)を差してもよく、暗号化同期パケットをそこに書く。それらのサービスの認証情報を我々が要求することはない;あなたがローカルフォルダを指してくれれば、アップロードはプラットフォームがやる。
「じゃあ何を作るかどう知るのか」
ユーザと話して。レビューを読んで。時折、明示的なオプトインのアンケートを出して。1996年の shareware 作者に送ったような、ゆっくり積もるフィードバックで——そして実は、それは非常に良いソフトウェアを作るのに十分だった。