端末内処理

撮影した目画像を、サーバーへ送信しません。

目の画像は個人性の高いデータです。このアプリは、それを外部に送らないことを 設計の前提にしています。ポリシーとして約束しているだけでなく、送り先が存在しない構成にしています。

処理の流れ
  1. 1cameragetUserMedia
  2. 2browser memoryImageData(メモリ上のみ)
  3. 3analysisMediaPipe + 自作CV(すべて端末内)
  4. 4discardフレームは破棄
  5. 5store座標値と設定のみ
1. 静的ファイルしか配信しません

このアプリはサーバー側の処理を持ちません。ビルド成果物は HTML・CSS・JavaScript・ モデルファイルだけで、画像を受け取って処理する API は存在しません。 受け取る口がないので、送られようがありません。

2. 顔検出モデルも自前で配信します

MediaPipe のランタイム(WASM)と顔ランドマークモデルは、CDN ではなく このアプリと同じオリジンから配信しています。 外部の配信元へリクエストが飛ぶこと自体がありません。 初回読み込み後はオフラインでも動作します。

3. 保存するのは座標値だけです

端末内に保存するのは、基準位置の座標、レンズ径の比、測定履歴(方向と大きさ)、 設定だけです。画像・虹彩の位置・顔ランドマークは保存しません。 設定画面に実際の保存内容とサイズを表示しています。

保存する:
  lensOffsetX / lensOffsetY   (角膜径で正規化した座標)
  lensRadiusRatio             (レンズ径 ÷ 虹彩径)
  createdAt                   (記録した時刻)
  settings                    (撮影・表示の設定)

保存しない:
  画像、動画、虹彩の座標、顔ランドマーク、端末識別子
4. 解析結果を外部AIに問い合わせる機能はありません

設計検討の段階で、画像分類モデル(Clef など)をセカンドオピニオンとして 使う案を検討しました。座標検出そのものには不向きであることに加え、目の画像を外部へ送る必要が出るため、 本番の必須要件からは外しています。精度より、送らないことを優先しました。

5. アクセス解析を入れていません

トラッカー、解析タグ、広告、外部フォントのいずれも読み込んでいません。 フォントも端末標準のものを使っています。読み込み時に外部へ出るリクエストは ゼロです。

確認する方法
  • ブラウザの開発者ツールの Network タブを開いたまま撮影してください。画像の送信は記録されません。
  • 端末を機内モードにしても、一度読み込んだ後は同じように動作します。
  • 設定画面から保存内容とサイズを確認し、いつでもすべて削除できます。

カメラの映像は getUserMedia で取得し、canvas 上でメモリ内の画素としてのみ扱います。解析の仕組みもあわせてご覧ください。