端末内処理
撮影した目画像を、サーバーへ送信しません。
目の画像は個人性の高いデータです。このアプリは、それを外部に送らないことを 設計の前提にしています。ポリシーとして約束しているだけでなく、送り先が存在しない構成にしています。
処理の流れ
- 1cameragetUserMedia
- 2browser memoryImageData(メモリ上のみ)
- 3analysisMediaPipe + 自作CV(すべて端末内)
- 4discardフレームは破棄
- 5store座標値と設定のみ
1. 静的ファイルしか配信しません
このアプリはサーバー側の処理を持ちません。ビルド成果物は HTML・CSS・JavaScript・ モデルファイルだけで、画像を受け取って処理する API は存在しません。 受け取る口がないので、送られようがありません。
2. 顔検出モデルも自前で配信します
MediaPipe のランタイム(WASM)と顔ランドマークモデルは、CDN ではなく このアプリと同じオリジンから配信しています。 外部の配信元へリクエストが飛ぶこと自体がありません。 初回読み込み後はオフラインでも動作します。
3. 保存するのは座標値だけです
端末内に保存するのは、基準位置の座標、レンズ径の比、測定履歴(方向と大きさ)、 設定だけです。画像・虹彩の位置・顔ランドマークは保存しません。 設定画面に実際の保存内容とサイズを表示しています。
保存する: lensOffsetX / lensOffsetY (角膜径で正規化した座標) lensRadiusRatio (レンズ径 ÷ 虹彩径) createdAt (記録した時刻) settings (撮影・表示の設定) 保存しない: 画像、動画、虹彩の座標、顔ランドマーク、端末識別子
4. 解析結果を外部AIに問い合わせる機能はありません
設計検討の段階で、画像分類モデル(Clef など)をセカンドオピニオンとして 使う案を検討しました。座標検出そのものには不向きであることに加え、目の画像を外部へ送る必要が出るため、 本番の必須要件からは外しています。精度より、送らないことを優先しました。
5. アクセス解析を入れていません
トラッカー、解析タグ、広告、外部フォントのいずれも読み込んでいません。 フォントも端末標準のものを使っています。読み込み時に外部へ出るリクエストは ゼロです。
確認する方法
- ブラウザの開発者ツールの Network タブを開いたまま撮影してください。画像の送信は記録されません。
- 端末を機内モードにしても、一度読み込んだ後は同じように動作します。
- 設定画面から保存内容とサイズを確認し、いつでもすべて削除できます。
カメラの映像は getUserMedia で取得し、canvas 上でメモリ内の画素としてのみ扱います。解析の仕組みもあわせてご覧ください。