プライバシーポリシー
本アプリにおける個人情報の取扱いについて説明します。
1. 収集する情報
本アプリケーション「Senza.Limiti」(以下「本アプリ」)は、Google アカウントを利用した OAuth 2.0 認証によりログインする際、以下の情報を取得します。これらはサービスの提供に必要な情報です。
Google アカウント情報
- メールアドレス(ユーザー識別・認証用)
- ユーザー名・プロフィール画像(UI 表示用)
Google OAuth トークン
- アクセストークン(セッション中のみ利用。Google Calendar API の呼び出しに使用)
- リフレッシュトークン(AES-256 暗号化のうえ、データベースに保存。アクセストークン再発行のみに使用)
Google カレンダーデータ
本アプリは calendar.events スコープを使用し、以下の目的に限定してカレンダーにアクセスします。
【運営モデル】面談管理者による双方カレンダーへの予定追加
本アプリの中核機能は、面談管理者が面談の予約者(メンバー)と担当メンターの双方のスケジュールを一元管理するコミュニティ運営モデルを前提としています。面談管理者が面談を確定させる操作を行うと、本アプリが担当メンターの Google カレンダーに面談予定(Google Meet リンク付き)を作成し、予約者を参加者として招待します。Google カレンダーの招待機構により、結果としてメンターと予約者の双方の Google カレンダー上に確定した面談予定が表示されます。この運営モデルを成立させるため、本アプリが利用者のカレンダーに対して予定を書き込めることが必須の前提となります。
A. 自分自身のカレンダーへのアクセス
- 面談確定時に担当メンターの Google カレンダーへ予定(Google Meet リンク付き)を作成し、予約者を参加者として招待する(結果として双方のカレンダーに予定が表示される)
- 面談キャンセル時に作成済みのカレンダー予定を削除する
- 自分の予定一覧を本アプリ内のカレンダー画面に表示する
B. メンターのカレンダー内容の参照(面談管理権限保有者のみ)
本コミュニティではメンター一人一人が面談対応可能な時間帯・種別をそれぞれの Google カレンダー上に独自のタイトルで記載する運用になっています。実際のタイトル例としては「面談2予約OK」「面談NG(どうしてものものは調整可能)」「コンテンツのみ(都合つかない場合は相談OK)」「コンテンツ作業予定」などがあり、多くの場合タイトル本文に加えて括弧書きで例外条件やニュアンスが記載されます。
この運用上、単純な空き時間情報や機械的なパターンマッチングでは「この枠が純粋な NG なのか、条件次第で調整可能なのか、種別が限定されるのか」を判別できず、タイトルの自然言語を人間が読み取って個別に判断する必要があります。面談管理者がメンターの Google カレンダーに実際に記載されているタイトル文言を参照することは、適切な面談枠の割り当て判断に不可欠であり、本サービスの中核機能の一部として設計されています。
- 面談スケジューリングのため、面談管理権限(admin / meeting ロール)を持つ利用者がメンターの Google カレンダー上の予定を参照します
- 参照する情報: 予定の開始・終了時刻およびタイトル(上記の面談可否や条件を表す文言)
- 利用目的: 面談の手動割り当て時に、メンターのスケジュールとタイトルに書かれた条件を確認して、適切な枠に面談を設定するため
- 利用範囲: 割り当て操作中に限って参照し、他の用途には一切利用しません
- 本取り扱いはメンターに対して事前に説明・周知済みであり、メンターとしてログインするユーザーは上記のカレンダー内容の共有に同意したものとみなします
取得したカレンダーデータは本アプリのサーバーおよびデータベースに永続保存されません。管理者のリクエスト処理後にメモリから破棄されます。パスワードや決済情報等の機密データは一切取得しません。
プッシュ通知
プッシュ通知を有効にした場合、ブラウザが発行するサブスクリプション情報(エンドポイントURL・暗号鍵)をデータベースに保存します。この情報は通知の配信のみに使用し、ユーザーの閲覧履歴等のトラッキングには使用しません。
トーク・掲示板データ
トーク機能および掲示板で送信されたメッセージ・リアクションはデータベースに保存されます。これらのデータは、コミュニティ内のコミュニケーション機能の提供のみに使用されます。
経費申請データ
経費申請で入力された請求書情報(金額・明細・ステータス)はデータベースに保存されます。これらのデータは経費精算プロセスの管理のみに使用されます。
2. 情報の利用目的
収集した情報は、以下の目的にのみ利用されます。目的の範囲を超えた利用は行いません。
- ユーザー認証およびセッション管理
- 被り検索・面談管理・経費申請・トーク・掲示板などの各機能の提供
- 面談確定時の Google カレンダーへのイベント登録(Google Meet URL の発行を含む)
- 面談管理者によるメンターのカレンダー予定の参照(面談の手動割り当て用途、メンターの事前同意に基づく)
- プッシュ通知による更新情報の配信
- UI におけるユーザー名・プロフィール画像の表示
- アクセストークンの自動更新(リフレッシュトークンを使用)
3. データの保存と管理・業務委託先
本アプリは以下の業務委託先(下請事業者)のインフラ上で稼働しており、データの保存・処理にあたってこれらの事業者を利用します。いずれも業務遂行上必要な範囲でのみデータにアクセスし、独自の用途には利用しません。
Vercel(アプリケーションホスティング)
本アプリのサーバーサイド処理は Vercel Inc. のプラットフォーム上で実行されます。HTTP リクエスト・レスポンスは Vercel のサーバーを経由しますが、業務データの永続保存は行っていません(処理後のメモリ破棄のみ)。Vercel のランタイムログには一部のリクエストメタ情報が一定期間保持されます。
Supabase(データベース・ストレージ)
ユーザー情報(メールアドレス・表示名・ロール)、面談データ、メッセージ、経費申請データは、Supabase, Inc. のマネージド PostgreSQL データベースに保存されます。暗号化されたリフレッシュトークン、プッシュ通知サブスクリプション情報、アバター画像も同サービスに保存されます。
Google(OAuth 認証・Calendar・Spreadsheets)
ログイン認証およびカレンダー機能の提供のため、Google LLC の OAuth 2.0 および Google Calendar API を利用します。被り検索機能では、サービスアカウント経由で Google スプレッドシートのデータを読み取り専用でアクセスします。検索結果はリクエストごとに処理され、サーバーに永続保存されません。ユーザーの Google アカウントへのスプレッドシートアクセス権は要求しません。
取得した情報を広告目的・マーケティング目的で利用することはありません。法令に基づく開示要求がある場合を除き、個人データを第三者(上記の業務委託先を除く)に販売・共有・提供することはありません。
4. Google API Services ユーザーデータポリシー(Limited Use 宣言)
本アプリが Google API を通じて取得した情報の利用および転送は、Google API Services User Data Policy(Limited Use 要件を含む)に準拠します。具体的に、本アプリは以下を遵守します。
- 取得した Google ユーザーデータは、本アプリの利用者向け機能の提供および改善のみに使用します
- 機能提供・法令遵守・合併/買収(事前通知あり)を除き、取得したデータを第三者へ譲渡・売却しません
- 広告の配信・ターゲティング・プロファイリングには一切使用しません
- 機能提供に必要な場合、セキュリティ目的、または法令遵守のために必要な場合を除き、人間が取得データを閲覧することはありません。また、AI/ML モデルの学習・開発には一切使用しません
5. Cookie とセッション管理
本アプリでは、認証状態の維持のために Cookie を使用します。この Cookie にはセッション識別子のみが含まれ、個人を特定する情報は保存しません。ブラウザの設定により Cookie を無効にすることが可能ですが、その場合、ログイン機能が正常に動作しません。
トラッキング目的の Cookie や第三者の分析ツール(Google Analytics 等)は使用しておりません。
6. データの保持期間と削除
Google から取得したユーザーデータ
- Google カレンダーデータ(予定のタイトル・時刻等)は、本アプリのサーバー・データベースに永続保存していません。リクエスト処理後に速やかにメモリから破棄されます
- アカウント削除時には、データベースに保存されている暗号化 Google OAuth リフレッシュトークンを即時クリアします
- 同時に、当該トークンを Google 側でも revoke(
https://oauth2.googleapis.com/revoke)して失効させます。これにより、本アプリが以降そのアカウントの Google カレンダー等にアクセスすることはできなくなります
コミュニティ運営上のデータ
コミュニティの性質上、退会したメンバーが再度参加することを想定し、また他の当事者(相手側メンバー・面談担当者)や運営上・法令上の記録義務を考慮して、以下のデータはアカウント削除後も保持されます。
- 面談リクエスト・面談履歴(他の当事者の記録でもあるため)
- 請求書・経費明細(税法上の保管義務に基づき一定期間保管)
- 掲示板投稿・トークメッセージ(他参加者とのやりとりの記録として残ります)
- ユーザー情報(氏名・表示名・メールアドレス等、再参加時の同一人物特定のため)
これらの業務データは広告・マーケティング・第三者への提供などの二次利用は一切行いません(上記 4.「Limited Use 宣言」参照)。
削除請求・権限取り消し
個人データの開示・訂正・削除をご要望の場合は、下記のお問い合わせ先までご連絡ください。また、Google アカウント側でのアクセス権限の取り消しは、Google アカウントの権限管理ページからいつでも行うことができます。
7. セキュリティ
本アプリは、収集した情報を保護するために以下の技術的・運用的措置を講じています。
- Google OAuth リフレッシュトークンは AES-256-GCM による認証付き暗号化で保存しています(平文での保存は一切行っていません)
- 暗号化キーは Vercel の環境変数として管理され、ソースコードおよびデータベースには保存されません。開発者・運営者であっても、このキーと暗号文の両方に同時にアクセスできる者は限定された運用責任者のみです
- リフレッシュトークンの復号はサーバーサイド処理(アクセストークン再発行時、カレンダー API 呼び出し時等)の一時的なメモリ上でのみ行われ、復号結果は永続保存されません
- すべての通信は HTTPS (TLS) で保護されており、データベースへの接続も TLS によって保護されています
- Supabase のアクセス制御(Row Level Security ポリシー)により、認証されたユーザーが権限範囲外のデータにアクセスすることを防止しています
- API ルートではサーバーサイドで認可チェックを行い、ロールベースでの権限制御を実施しています
ただし、インターネット上のデータ転送において完全なセキュリティを保証することはできません。
8. ポリシーの変更とお問い合わせ
本プライバシーポリシーは、法令の改正やサービスの変更に伴い、予告なく改定される場合があります。重要な変更がある場合は、可能な限りアプリ内で通知いたします。改定後のポリシーは、本ページに掲示された時点から効力を生じます。
本ポリシーに関するご質問、個人情報の開示・訂正・削除のご要望、その他お問い合わせがございましたら、下記までご連絡ください。
運営:Senza Limiti
開発者:56ryoga@gmail.com