アップロードされた画像が残ることは、一切ありません
Soft Touch

技術・約4分で読めます

写真をサーバーに送らないウェブサービスの作り方

写真を扱うサービスで一番怖いのは、預かった画像の流出です。この問題は、そもそも預からなければ起きません。ブラウザ内だけで処理を完結させる設計について書きます。

預かっていないものは漏れない

画像処理をサーバーで行うと、必ず「保存期間はどれくらいか」「誰がアクセスできるか」「削除は確実か」という問題がついてきます。個人で運営する場合、これらを完璧に管理し続けるのは現実的ではありません。

幸い、いまのブラウザは十分に高性能です。WebGLで画像を変形させ、WebAssemblyで機械学習の推論を回すところまで、すべて端末内で実行できます。サーバーは会員情報と決済だけを扱えばよくなります。

実際の構成

画像は input 要素から受け取り、URL.createObjectURL でメモリ上に置くだけです。通信は一切発生しません。顔と体の部位を判別する解析も、モデルファイルを最初に一度ダウンロードして、推論自体は端末内で行います。画像がGoogleへ送られるわけではありません。

サーバー側には、そもそも画像を受け取る入り口を作りません。データベースにも画像を入れる列を用意しません。「送れない」構造にしておけば、設定ミスによる事故も起こりません。

正直に書くことが、そのまま強みになる

この構成の利点は、利用者に対して曖昧さなく説明できることです。「アップロードされた画像が残ることは一切ありません」と言い切れて、しかもそれが技術的な裏付けを持ちます。

写真を扱うサービスに対する警戒心は年々強くなっています。預からない設計は、事故を防ぐだけでなく、そのまま信頼の材料になります。

実際に触ってみてください

登録なしで、トップページのサンプル画像をそのまま触れます。

ほかの記事