匿名性の技術的保証

なぜ身バレしないのか

「見ません」という約束ではなく、技術的に見られない構造になっています。このページではその仕組みをすべて公開します。

データベースに保存されるもの・されないもの
航空会社・職位・年収帯・勤務年数・年代
口コミの本体。集計に使用します。年収は100万円単位のレンジのみ保存(1,697万円のような正確な数字は保存しません)。
口コミ本文(任意)
入力した場合のみ保存。運営チームが確認します。路線・具体的な運航情報・個人を特定できる出来事が含まれている場合は非公開にします。
証明ハッシュ(proof_hash)
重複投稿防止のみに使用する暗号化された文字列。あなたのIDからは復元できません(下記参照)。
氏名・メールアドレス
一切保存されません。投稿テーブルにこれらのカラムは存在しません。
ユーザーID
データベースの口コミレコードにuser_idカラムはありません。投稿と会員情報は紐付いていません。
IPアドレス・デバイス情報
投稿時のIPアドレスやブラウザ情報は収集・保存していません。
正確な年収・生年月日・路線
フォームに入力欄がそもそも存在しません。100万円単位・5歳区切り・5年区切りの選択式のみ。
証明ハッシュ(proof_hash)の仕組み

ログインが必要なのは、スパム投稿を防ぐためだけです。あなたのユーザーIDは投稿データに含まれません。その代わり、以下の計算をあなたのブラウザ上で行います。

1
ユーザーIDと航空会社を結合
あなたのID(UUID)と投稿先の航空会社を組み合わせた文字列を作ります。この処理はブラウザ内だけで完結します。
userId + "::pv_anon::" + airline + "::2026"
2
SHA-256でハッシュ化
上記の文字列をSHA-256(業界標準の暗号化)で変換。元の値に戻すことは計算上不可能です。
crypto.subtle.digest('SHA-256', data) → "a3f8c2d1e4b7..." (64文字の文字列)
3
ハッシュのみをDBに保存
サーバーに送信されるのはこのハッシュ文字列のみ。ユーザーIDやメールアドレスは送信されません。運営チームがDBを確認しても、誰が投稿したかは分かりません。
4
重複チェックにのみ使用
同じ人が同じ航空会社に2回投稿することを防ぐためだけに使用します。それ以外の用途はありません。
実際のデータベース構造(reviews_v2テーブル)

保存されるカラムは以下の8つのみです。「user_id」「email」「name」カラムは存在しません。

CREATE TABLE reviews_v2 ( id uuid PRIMARY KEY, -- 投稿固有ID proof_hash text NOT NULL, -- SHA-256ハッシュ(身元特定不可) airline text NOT NULL, -- 航空会社コード position text NOT NULL, -- 機長 / 副操縦士 / 訓練生 salary_bucket text NOT NULL, -- 例: "1600-1700"(100万円単位) tenure_bucket text NOT NULL, -- 例: "5-10"(勤務年数5年単位) age_bucket text NOT NULL, -- 例: "30-34"(年代5歳単位) comment text, -- 口コミ本文(任意) created_at timestamptz -- 投稿日時 ); -- ※ user_id, email, nameカラムは存在しない
表示ルール — n≥3の集計のみ公開
3件以上
同一条件(航空会社×職位)のデータが3件以上ある場合のみ集計を公開
2件以下
「データ収集中」と表示。特定の人物を指す恐れがある場合は非公開にします
なぜログインが必要なのか

ログイン不要にした場合、スパムや虚偽データが大量投稿されます。信頼できるデータを守るため、アカウント認証を使っています。ただし:

  • ログイン時に使うJWTトークンはSupabaseサーバーとの通信認証に使われるだけです。
  • あなたのユーザーIDは投稿テーブルに書き込まれません。
  • サインアップ時のメールアドレスは会員管理テーブルにのみ存在し、口コミテーブルとは完全に分離されています。

仕組みを理解した上で、安心して投稿してください。

匿名で口コミを投稿する →