KcalVoice プライバシーポリシー
KcalVoice(以下「本アプリ」)は、ユーザーのプライバシーを最優先に設計されています。 本ポリシーは、本アプリがどのような情報をどのように扱うかを明示するものです。
1. 収集しない情報
本アプリは以下の情報を一切収集・送信しません:
- 音声の録音データ(バイナリ) — 音声認識は端末内の Apple Speech Framework でオンデバイス処理され、録音波形が外部に送信されることはありません
- 写真・画像データ(バイナリ) — 写真入力時の OCR は端末内の Apple Vision Framework でオンデバイス処理され、画像が外部に送信されることはありません。取り込んだ画像はアプリのサンドボックス内にローカル保存されるのみです
- 氏名・電話番号・住所等の個人特定情報 — 本アプリは、利用にあたってこれらの個人情報を直接収集することはありません
- 位置情報 — 本アプリ自身は位置情報を一切使用しません(広告 SDK が「おおよその位置情報」を取得する可能性については第 5 項参照)
- 連絡先・カレンダー — これらへのアクセス権限を要求しません
なお、任意機能として Sign in with Apple によるサインイン(第 11 項)をご利用いただく場合は、 Apple から提供される匿名化された識別子(およびユーザーが Apple のリレーメールを選択した場合のみ転送用メールアドレス)を取り扱います。 これらは Apple が提供するプライバシー保護機構を経由します。
2. 外部送信する情報(AI 構造化処理・データベース蓄積)
本アプリは、音声認識の結果テキストや写真の OCR 結果テキストから AI が食材・栄養素を構造化するために、 運営者が管理する Cloudflare Workers プロキシサーバー(グローバルエッジ) を経由して 外部の AI 解析サービス(米国内の事業者) を呼び出します (現在は xAI 社の Grok および Perplexity 社の sonar を利用しています。 今後の品質・コスト最適化・障害対応のため、提供事業者は予告なく変更されることがあります)。 さらに、AI 推定の改善・アプリ機能の提供(料理ランキング等)・ 食事や栄養に関する情報発信(統計レポート・ブログ記事・SNS 投稿・メディア向け資料等)の基盤として、 匿名化・集計化された栄養素データを Supabase(米国) のデータベースに蓄積します。
送信されるデータは以下の テキスト情報のみ です:
- 音声認識で得られたテキスト(例: 料理名「ハンバーグ」、食材「ひき肉300グラムと玉ねぎ半分」)
- 写真から OCR で抽出したテキスト(レシピ本の材料表記等)
- 外食フローで入力された店名・商品名
- 構造化後の食材名・推定栄養素(匿名データ提供に同意した場合)
- 匿名端末識別子(UUID、詳細は第 3 項)
音声の波形データ・画像バイナリ・Apple ID・氏名・メールアドレス等の個人特定情報は Cloudflare Workers プロキシサーバー・Supabase・上記 AI 解析サービスのいずれにも一切送信されません。
Cloudflare Workers プロキシサーバーの役割
- AI 解析サービスの API キーをサーバー側で一元管理し、ユーザーが API キー入力を求められないようにする
- レート制限・不正利用防止
- 外食フローの栄養素キャッシュ(同じ「マクドナルドのチーズバーガー」を複数ユーザーが調べたときのヒット)
Supabase で蓄積する情報の用途
以下の用途でのみ、匿名化された情報を蓄積・利用します:
- 統計分析・アプリ改善: どの食材が多く記録されるか、どの AI 推定が誤りやすいかなど、アプリ改善のための内部集計
- アプリ機能の提供: 料理ランキング(人気の料理名・食材の表示)など、ユーザーに価値を提供する機能の基盤(将来機能を含む)
- AI 精度向上: AI プロンプトの改善、DB に未収録の食材(DB ミス)の検知と追加候補化
- 外食栄養素の確認済データ: 大手チェーン店の公式値の蓄積と再利用
- 情報発信・トレンド分析: 食事や栄養に関する集計データ(例: 季節別の人気食材、地域別の食事傾向、PFC バランスの統計等)に基づき、統計レポート・ブログ記事・SNS 投稿・メディア向け資料などを公開・配布することがあります。公開する情報には個人を特定できる情報は一切含まれません(個別ユーザーの記録・行動履歴ではなく、複数ユーザーから集計した統計値のみを扱います)
蓄積する情報は、原則として食材名・料理名・推定栄養素などアプリ機能に直接関連するものに限定され、 匿名端末識別子(UUID)と紐づけて保存されます。この UUID は Apple ID、氏名、メール等の 個人情報とは一切関連づけられていません。
匿名データから個人を再構築しない方針
運営者は、蓄積した匿名データから個人プロファイルの再構築を試みたり、 第三者の個人を特定する目的で利用することは一切ありません (App Store Review Guidelines 5.1.2(iii) 準拠)。
匿名データ提供のオプトイン・オプトアウト
構造化後の食材名・推定栄養素を統計・AI 改善目的で送信するかどうかは、 ユーザーの明示的な同意により決定されます(App Store Review Guidelines 5.1.1(ii) 準拠)。
- 初回インストール時に「匿名データの提供」に関する同意画面を表示します
- デフォルトは「同意しない」です。本機能を有効化していない場合、本項目記載の二次利用データは送信されません
- 同意後もいつでも設定 → 同期設定 → 「匿名データの提供」トグルから OFF に変更できます
- OFF にしても、Cloudflare Workers プロキシサーバー経由の AI 構造化処理(その時点での食材抽出のためのテキスト送信)は機能継続のため必要です
プロキシを経由しない通信
- Sign in with Apple 同期(任意機能): 詳細は第 11 項を参照ください
3. 匿名端末識別子(DeviceToken)について
本アプリは初回起動時にランダムな UUID(550e8400-e29b-41d4-... のような文字列)を生成し、
端末の Keychain に保存します。この UUID は以下の目的にのみ使用されます:
- Cloudflare Workers プロキシサーバーでのレート制限(1 端末あたりの呼び出し回数制御)
- 異常利用の検知
この UUID は以下の性質を持ちます:
- ユーザー個人(氏名・メール等)とは一切紐づきません
- 他のアプリや Apple/Google の広告 ID とも連携しません
- アプリを削除 → 再インストールすると新しい UUID になります
- 複数端末間で同期されません(各端末で独立)
4. 端末ローカルに保存される情報
以下のデータは、お使いの iPhone 内のローカル領域(SwiftData / FileManager / UserDefaults)に保存されます:
- 調理記録(料理名、食材、分量、栄養素、調理日時、メモ、お気に入りフラグ)
- 運動記録(種別・消費カロリー — Pro プランで手入力した場合)
- プロフィール設定(性別・年齢・身長・体重・活動量・目標カロリー・PFC 目標)
- 外食補正データ(ローカル上書き)
- 写真入力で取り込んだ画像ファイル(アプリのサンドボックス内)
- 検索履歴・お気に入り表示順
外部送信の例外: Sign in with Apple 同期 ON の場合
Premium Plus プラン以上に加入し、設定 → 同期設定で Sign in with Apple によるサインインと同期機能を有効にした場合のみ、 上記データのうち以下が暗号化通信(HTTPS/TLS)で Supabase(米国) に送信され、 Apple ユーザー ID(個人特定不可な識別子)と紐付けて保存されます:
- 調理記録(お気に入りフラグ・メモを含む)
- 運動記録(種別・回数・時間・メモ・消費カロリー)
- プロフィール設定・目標値
- 外食補正データ
以下のデータは 同期 ON でも送信されません:
- 写真入力で取り込んだ画像ファイル(端末内のみ)
- 検索履歴(端末内のみ)
同期機能の詳細・解除方法は第 11 項を参照ください。
iCloud バックアップについて
お使いの iPhone で iCloud バックアップが有効な場合、上記のローカルデータは Apple の iCloud に暗号化されてバックアップされる可能性があります。これは iOS 標準の バックアップ機構であり、本アプリの運営者は iCloud 上のバックアップ内容にアクセスできません。 iCloud バックアップの詳細は Apple のプライバシーポリシーをご参照ください。
5. 広告について
本アプリは Google AdMob による広告(バナー・ネイティブ・インタースティシャル)を表示します。 広告表示に関して以下のとおり取り扱います:
- App Tracking Transparency(ATT)ダイアログ: 初回起動時に「トラッキングの許可」を求めます。許可いただくと、あなたに関連性の高い広告が表示されやすくなります
- トラッキングを拒否しても広告表示は継続されます — その場合、文脈広告(アプリの内容に基づく広告)が表示されます
- AdMob SDK は広告配信の最適化のため、おおよその位置情報・デバイス ID(IDFA、ATT 許可時のみ)・診断データ等を収集する場合があります。詳細は AdMob のプライバシーポリシーをご参照ください
- Premium Plus プラン以上(第 12 項)に加入で広告を非表示にできます
なお、アクセス解析ツール(Google Analytics 等)によるイベント計測については第 13 項を参照ください。
6. 第三者への情報提供
本アプリは、ユーザーの同意なく第三者に情報を提供することはありません。 ただし以下の例外があります:
- 法令に基づき開示を求められた場合
- 人の生命・身体または財産の保護のために必要がある場合
7. データの削除・利用停止
ローカルデータの削除
本アプリをアンインストールすることで、端末内のすべてのローカルデータ(調理記録・ プロフィール・画像等)が削除されます。
匿名データの提供停止
設定 → 同期設定 → 「匿名データの提供」トグルを OFF にすることで、以降のデータ送信を停止できます。 過去に送信済みのデータは統計用途で保持される場合がありますが、個人を特定する情報は含まれません。
Sign in with Apple 同期データの削除
Sign in with Apple でサインインしている場合、設定 → 同期設定 → 「アカウントとサーバーデータを削除」で Supabase 上の個人名義の記録を完全に削除できます(App Store Review Guidelines 5.1.1(v) 準拠)。 この削除を実行しても、端末内のローカル記録には影響しません。
8. セキュリティ
- Cloudflare Workers プロキシサーバー・Supabase との通信はすべて HTTPS(TLS)で暗号化されます
- AI 解析サービスの API キーはサーバー側でのみ管理され、アプリ側には一切保持されません
- DeviceToken(UUID)・Sign in with Apple 用 JWT は iOS の Keychain Services で保護されます
- Sign in with Apple の認証は Apple の ID トークン検証を Cloudflare Workers プロキシサーバーで実施し、独自発行の JWT を介してユーザー名義データへのアクセスを制限します
9. 運営者・お問い合わせ
本アプリの運営者および連絡先は以下のとおりです (EU デジタルサービス法 / DSA 準拠):
- 運営者: Yosuke Kawano
- 所在地: 6F N&E Bldg., 1-12-4 Ginza, Chuo-ku, Tokyo 104-0061, Japan
- お問い合わせ: サポートページのお問い合わせフォーム
本プライバシーポリシーに関するお問い合わせは、上記お問い合わせフォーム、または App Store の本アプリサポートページよりご連絡ください。
10. ポリシーの変更
本ポリシーは、法令改正・機能追加・運用変更などに応じて更新される場合があります。 重要な変更がある場合は、アプリ内または App Store のリリースノートで通知します。 最新版はいつでも本ページで確認できます。
11. Sign in with Apple 同期機能(Premium Plus 以上の任意機能)
Premium Plus プラン以上に加入のうえ、設定 → 同期設定で Sign in with Apple によるサインインと同期機能を有効にした場合に限り、 以下の情報を処理します。本機能は任意です。
- Apple ID トークン: Apple から提供される ID トークンを Cloudflare Workers プロキシサーバーに送信し、検証後に独自の JWT を発行します。Apple ID 自体(メールアドレス等)は保存しません
- Apple ユーザー ID: Apple から提供される一意のユーザー識別子 (
001234.abcdef...形式) を Supabase のユーザーレコードに保存します。これは Apple ID メールアドレスではなく、Sign in with Apple 専用の識別子です - ユーザー表示名: 初回サインイン時のみ Apple から氏名が提供される場合があります。この情報はアプリ内の表示用にのみ使用され、Supabase には保存されません(Sign in with Apple の仕様上、初回以降は Apple から提供されません)
同期されるデータ
同期機能を有効にしている間、以下のデータが暗号化通信で Supabase に送信され、同じ Apple ID でサインインした他の端末(iPhone/iPad 等)に反映されます。詳細は第 4 項を参照ください。
- 調理記録(お気に入り・メモを含む)
- 運動記録(種別と消費カロリー)
- プロフィール設定・目標値
- 外食補正データ
アカウント削除
設定 → 同期設定 → 「アカウントとサーバーデータを削除」で、サーバー上の記録および Apple ユーザー ID を 完全に削除できます。この操作は取り消せません。
本機能を使用しない場合
Sign in with Apple 機能は任意です。サインインせずにアプリを利用することも可能で、 その場合 Apple ユーザー ID は一切送信されず、記録はお使いの端末内にのみ保存されます。
12. Premium プラン (アプリ内課金)
本アプリは無料でご利用いただけますが、追加機能を提供する Premium プランを App Store のサブスクリプション (StoreKit 2) として提供しています。
提供プラン
- Plus (¥150/月、¥1,500/年): 広告非表示、Sign in with Apple によるクラウドバックアップ、マルチデバイス同期 (iPhone ⇄ iPad、第 11 項)、「あとで食べる」機能
- Pro (¥300/月、¥3,000/年): Plus の全機能に加え、運動記録 (手入力) + 消費カロリー計算ツール
課金情報の取り扱い
- 支払い処理はすべて Apple (App Store / iTunes Store) が行います。本アプリの運営者はクレジットカード番号、決済履歴等の個人金融情報を取得・保存しません
- 本アプリは Apple の StoreKit 2 API を通じて、お使いの Apple ID のサブスクリプション加入状態のみを端末ローカルで判定します (購入の有効期限・ステータス等)
- サブスクリプション情報は本アプリの運営サーバー (Cloudflare / Supabase) には一切送信・保存されません
- サブスクリプションの管理・解約は iOS の設定 → Apple ID → サブスクリプションから行えます
ファミリー共有
本サブスクリプションは現時点でファミリー共有に対応していません (将来対応予定はございません)。 各 Apple ID 単位でのご加入をお願いいたします。
13. アクセス解析・品質管理ツール(Firebase / Google Analytics 等)について
本アプリおよび本アプリ関連の Web ページ(プライバシーポリシー・利用ガイド・記録共有リンク等)では、 サービス品質向上のため Google 社が提供する Firebase プラットフォームおよび 関連ツールを利用します:
iOS アプリで利用するツール
- Firebase Analytics(Google Analytics 4): 画面遷移・機能利用回数・滞在時間・ユーザーの利用傾向など、アプリ改善のためのイベント計測
- Firebase Crashlytics: アプリクラッシュ発生時のスタックトレース・発生機種・OS バージョン等を自動収集し、不具合修正に活用します。個人情報やユーザーの記録内容は含まれません
- Firebase Performance Monitoring: 音声認識・AI 構造化・画面遷移などの処理時間を計測し、体感速度の改善に利用します
- Firebase Cloud Messaging(FCM): プッシュ通知の配信基盤として利用します(詳細は第 14 項)
Web ページで利用するツール
- Google Analytics(GA4): ページビュー・滞在時間など Web ページの利用状況を集計
- Google Tag Manager(GTM): 上記の解析ツールおよび将来追加されうる他社の解析・マーケティングタグを一元管理するためのコンテナとして利用します。GTM 自体はユーザー情報を直接収集しません
- その他の解析・マーケティングタグ: GTM を経由して、Meta(Facebook)ピクセル・X(Twitter)ピクセル・各種広告効果測定タグなどを追加することがあります。重大な変更時は本ポリシーを更新してお知らせします
収集される情報
これらのツールは、原則として以下の匿名化された情報を収集します:
- アクセス日時、画面名・ページ URL、画面遷移、滞在時間、画面解像度
- OS、ブラウザ・アプリのバージョン情報、言語設定、タイムゾーン
- おおよその位置情報(IP アドレスから国・地域単位で推定。GA4 / Firebase は IP アドレスを保存しません)
- ツールが発行する匿名識別子(Firebase インスタンス ID、GA4 クライアント ID、FCM レジストレーショントークン 等)
- アプリ内および Web ページ内でのユーザーの操作・コンバージョンイベント
- クラッシュ発生時のスタックトレース・メモリ使用量・スレッド情報(Crashlytics)
- ネットワークリクエスト・画面表示・カスタムトレースの処理時間(Performance Monitoring)
これらの情報には、氏名・メールアドレス・電話番号などの個人特定情報は含まれません。 本アプリで取得した食事記録・プロフィール情報・写真データはこれらのツールに送信されません。
第三者(Google 等)による情報の取り扱い
Firebase・Google Analytics・Google Tag Manager の各サービスを通じて送信された情報は、 Google プライバシーポリシーおよび Firebase のプライバシー情報に従って取り扱われます。
オプトアウト方法
- iOS アプリ内: 初回起動時の App Tracking Transparency(ATT)ダイアログで「許可しない」を選択することで、デバイス間トラッキング ID(IDFA)の利用が無効化されます。匿名集計(Firebase Analytics / Crashlytics / Performance Monitoring)は引き続き行われますが、ユーザー個人を追跡する用途では使用されません
- Web ページ: Google Analytics オプトアウトアドオンのインストール、またはブラウザの「サイト追跡防止」「Cookie ブロック」機能で無効化できます
14. プッシュ通知について
本アプリは、ユーザーの利便性向上のため Firebase Cloud Messaging(FCM)を 通じて以下の種類のプッシュ通知を配信する場合があります:
- 記録リマインダー: 食事記録を忘れている可能性がある時間帯に、記録を促す通知
- 「あとで食べる」リマインダー: 登録された「あとで食べる」アイテムの消化を促す通知
- 共有記録の取り込み通知: 他ユーザーから共有された記録のインポート確認
- アプリ更新・重要なお知らせ: 新機能・不具合修正・メンテナンス予告等
通知に関する情報の取り扱い
- プッシュ通知を受信するため、本アプリは Apple 製の APNs(Apple Push Notification service)および Firebase Cloud Messaging が発行する端末固有のトークンを取得します。このトークンはユーザー個人(氏名・メール等)とは紐づきません
- FCM トークンはプッシュ通知の配信先を識別する目的でのみ使用され、Google の FCM サーバー経由で各端末に通知を送信します
- 通知本文にユーザー個人の食事記録・プロフィール情報が含まれることはありません(例:「記録を忘れていませんか?」のような一般的な文言のみ)
通知の拒否・許可取り消し
- 初回通知要求時に iOS 標準の許可ダイアログが表示されます。ここで「許可しない」を選択すると、以後プッシュ通知は配信されません
- 許可した後も、iOS の設定 → 通知 → KcalVoiceからいつでも無効化できます
- 通知を拒否しても本アプリの主要機能はすべて利用できます