Skip to content

AI・セキュリティ・プライバシー

家の場所、所有物、写真、購入情報、保証書、保管場所は、暮らしを便利にする一方で、組み合わせると生活パターンを推測できる情報です。UCHIZUは「多く集める」より、「必要な時だけ使い、利用者が選び、戻せる」ことを優先します。

Local firstクラウドなしでも主要導線を残す
Household scope世帯境界でDatabaseと文書を分離
Evidence firstAI推測と公式判定を混ぜない

1. 扱うデータ

分類主な保護方針
アカウントメール、認証状態、表示名認証基盤で管理し、アプリへ秘密情報を埋め込まない
世帯家、地域設定、構成、役割世帯IDとmembershipで参照範囲を制御
場所部屋、家具・収納、置き場所日常利用に必要な粒度だけ保存
モノ名称、型番、数量、期限、購入、保証世帯内データとして分離
写真・文書商品写真、レシート、保証書、説明書非公開Storageと短時間URLを前提にする
公式情報自治体、出典、更新日、ライセンス家庭データと分離し、原典と取得状態を保持
外部候補AI候補、商品候補、価格Provider、取得時刻、状態、修正経路を保持

2. 保存先を利用者が選べる

text
ゲスト利用
  └─ 端末内保存

クラウド利用を明示的に選択
  └─ Supabase Auth
       └─ 世帯単位のPostgreSQLデータ
       └─ 非公開Storage

初回起動でカメラ、写真、通知、クラウドを一括要求しません。各機能を使う時に説明し、許可しない場合も手入力とローカル経路へ戻れる設計です。

3. Databaseと世帯分離

UCHIZUのクラウド構成は、Supabase Auth、PostgreSQL、Storage、Edge Functionsを利用する設計です。画面からDatabaseへ無制限にアクセスするのではなく、世帯membershipとRow Level Securityを境界にします。

基本関係

text
Profile
  └─ Household membership: owner / editor / viewer
       └─ Home
            ├─ Room
            ├─ Furniture / Storage location
            ├─ Item
            ├─ Documents / Images
            ├─ Events / Notifications / Notes
            └─ Shopping / Lifecycle history
  • ownerは世帯と権限の管理を担当します。
  • editorは許可された世帯情報を編集します。
  • viewerは閲覧を中心とし、書き込みを制限します。
  • 世帯外の利用者は、IDを知っていても参照できないことをRLSで制御します。
  • 表示名を変更しても関係が壊れないよう、内部の安定したIDで関連付けます。

現在の検証範囲

2026年8月26日の遠隔自動検証では、一時利用者4件を使い、owner、editor、viewer、世帯外利用者のDatabase境界、招待、役割変更、削除を確認しました。これは物理端末2台の長時間利用や、対象公開ビルドの最終保証を意味しません。

4. 写真と文書

  • 家庭内の写真・文書はpublic bucketへ置かず、非公開Storageを使います。
  • 表示時は短時間のsigned URLを発行する設計です。
  • viewerや世帯外利用者の書き込みを拒否します。
  • 端末だけで有効なfile://などのURIをクラウドバックアップへ残しません。
  • 削除時はDatabaseの行だけでなくStorage objectも対象にします。

遠隔自動検証では、owner・editorの書き込み、viewer・世帯外利用者の拒否、別世帯の分離、削除を確認済みです。signed URLが実時間で失効することと、公開対象ビルドとの最終的な対応付けは未検証です。

5. 外部サービスへの送信

外部送信は機能の利用時にだけ行い、送信しなくても主要な手入力経路を残します。

利用場面送信候補送信しない場合
写真解析選択した写真、解析に必要な項目手入力で登録
商品検索商品名、型番、JANなど候補を手入力
URL読取利用者が選んだ商品URLURLを保持して手入力
クラウド同期世帯内で共有するデータ端末内で利用
Push通知tokenと必要最小限の配送情報アプリ内通知・一覧で確認

OpenAI、商品Provider、その他の秘密鍵はExpoクライアントへ埋め込まず、Edge Functionsのsecretとして扱います。外部サービスが未設定、失敗、利用条件外の場合は、推測値で埋めずにmanual、cache、公式ページへ戻します。

6. AIの責任境界

AIに任せること

  • 写真から一般的な品目名、メーカー、型番の候補を出す
  • 自治体情報を探すための一般品目語を提案する
  • 構造化候補や平易な説明文を提案する
  • 売却・譲渡の文章案を作る

候補は利用者が確認・修正してから保存します。

AIに任せないこと

  • 分別区分、収集日、粗大ごみ料金
  • 施設の所在地、営業時間、開設状況
  • 避難所や経路の安全性、最寄り、十分性
  • 商品のlive価格、在庫、配送、保証
  • 利用者の同意、出品、購入、削除の自動確定

これらは公式データ、契約したProvider、または利用者の明示操作に基づきます。確認できない場合は、不明または公式確認が必要であることを表示します。

7. 公式情報とfallback

状態表示と動作
live現在取得できた公式データ。提供元と取得時刻を表示
cache同じ自治体について保存済みの検証済みデータ
official snapshot取得時点を明記した公式資料の保存情報
unsupported安全な判定に必要な情報がない。公式確認へ案内

通信失敗時に、別自治体の値、一般論、AIの推測で曜日や金額を補いません。公式資料の条件が「30cmを超える」の場合、ちょうど30cmを同じ扱いにするなど、比較条件そのものも原文に合わせます。

8. 書き出し、削除、保持

書き出し

利用者が自分のデータを持ち出せるよう、JSONの書き出しと再取り込みを用意します。写真・文書を含む復元範囲は、端末とクラウドの構成により別途確認が必要です。

アカウント削除

削除対象は認証だけではありません。

  • Profileと認証情報
  • 世帯membership、招待、共有状態
  • Home、場所、モノ、履歴
  • 非公開の写真・文書
  • Push tokenや外部連携の回収対象

遠隔自動検証では、一時アカウント、Database、Storageの残留0件を確認しました。物理端末内の管理領域、外部OAuthの認可取消、公開ビルドの保持期間ジョブまで含む最終確認は残っています。

9. 開発時の安全策

  • .envや秘密鍵をGitへ入れない
  • クライアントにProvider secretを埋め込まない
  • マイグレーションとRLSを世帯役割別に検証する
  • デモ値、cache、live、unsupportedを画面とデータで区別する
  • 公式情報に提供元、更新日、ライセンス、原典を持たせる
  • 法務文書の版、本文hash、同意時刻、経路を分けて記録する
  • 公開ドメインが実際に配信するHTMLとbundleを対象に確認する
  • 一時アカウントを使う遠隔検証は、終了後の残留データも確認する

10. 公開前に残る確認

項目現在の状態
実在メールへのOTP配送未検証
物理iPhone・Androidのカメラ、文書、通知未検証
2台の物理端末でのRealtime・競合・再接続未検証
Expo PushのAPNs・FCM本番配信未検証
Google・Apple認証の認可取消未実装または実サービス未検証のため公開時は無効化が必要
法務文書と公開URL技術的な一致確認とは別に、正式運営情報と専門家確認が必要
ストア申告App Privacy、Data safetyを実装内容と照合する必要あり
セキュリティ機能があることと、本番安全性の保証は別です
UCHIZUは確認済みの境界を公開しますが、未検証の実機・契約・公開設定を完了扱いにはしません。

機能別の最新判定は実装状況をご覧ください。

公式情報は提供元の原典を優先してください。構想は現在提供中の機能ではありません。