billy6go

「匿名」は名前フィールドを省略することで実装されることが多い。

それはスタート地点ではあるが、設計手法とは言えない。アンケートは名前を省略しても、回答をアカウント、招待トークン、IPアドレス、クッキー、デバイス識別子、小規模なチーム、または内容から特定できる自由記述の詳細に結びつけることができる。

有用なエンジニアリング上の問いかけは次のとおりだ。

このタスクに実際に必要な識別経路はどれか、そしてそれぞれを除去すると何が起こるか?

以下は、短命のアンケートプローブである CandorKit を構築する際に使用したチェックリストである。

1. フォームを作成する前にデータ経路をインベントリする

システムに入力・出力・保持されるすべての値を列挙する:

  • アンケートのタイトルと質問
  • 回答の選択肢と自由記述
  • タイムスタンプ
  • アカウントまたは招待識別子
  • ネットワークおよびデバイスのメタデータ
  • 分析イベント
  • エクスポートされたファイルとコピーされたサマリー
  • 管理用シークレット

その後、各項目をタスクに応じて「必須」「任意」「禁止」に分類する。「フレームワークがデフォルトで収集する」ことは要件ではない。

CandorKit のアプリケーションデータベースには、アンケート本文、回答、タイムスタンプ、プライベートオーナーキーのハッシュ、有効期限タイムスタンプが保存される。回答には名前、アカウントID、IPアドレス、ユーザーエージェント、クッキーIDは一切紐付けない。

この記述は「誰も回答者を特定できない」というより狭い範囲である。ネットワークプロバイダーは通常のリクエストを処理する。質問の文言、小規模グループ、特異なイベント、自由記述は、アプリケーションが識別カラムを省略していても個人を特定し得る。

2. 回答者アクセスと所有者アクセスを分離する

公開された回答用URLと非公開の結果用URLは異なる信頼役割を担う。1つのベアラーリンクを両方に再利用すると、偶発的な漏洩が発生しやすくなる。

CandorKit は非公開の所有者シークレットを生成し、URLフラグメントに配置する。ブラウザは通常のHTTPリクエストパスでフラグメントを送信しない。サーバーは生のキーではなくハッシュを保存する。

この設計にはコストがある。リカバリワークフローが存在しない。所有者が非公開リンクを失うと、サービスはアクセスを再構築できない。このトレードオフは、アンケートを共有する前に明示すべきであり、サポートドキュメントに隠すべきではない。

3. 保存期間に実行可能な境界を設ける

「不要になったらデータを削除する」は運用ルールではない。

実行可能なルールには以下が必要である:

  1. 既知の有効期限タイムスタンプ
  2. 期限切れ後の読み書き拒否
  3. クリーンアッププロセス
  4. ユーザー向けの明示的な文言
  5. システム外のコピーに関する記述

CandorKit は各アンケートに7日間のデータベース有効期限を割り当て、期限切れアクセスを拒否し、スケジュールされたクリーンアップを実行する。CSVエクスポート、スクリーンショット、コピーした分析、その他の下流ファイルは、この自動削除境界の外側にある。

4. 分析を機微なペイロードから切り離す

分析イベントは製品の振る舞いを記述すべきで、アンケートの内容を記述すべきではない。タイトル、質問、回答、所有者キー、非公開リンクをセッションリプレイやイベントプロパティに送信してはならない。

同じルールはログやエラーレポートにも適用される。リクエストボディや例外ペイロードが機微なテキストを別の場所にコピーしている場合、マスクされたUIだけでは不十分である。

5. 質問設計をプライバシーモデルの一部として扱う

インフラは、回答者に散文で自己を特定させるアンケートを救済できない。

機微なフィードバックの場合:

  • 名前、正確な場所、社員ID、不要な人口統計情報の入力を避ける
  • 自由記述で自分や他人を名指ししないよう警告する
  • 少人数グループ内で1人を特定できる組み合わせを避ける
  • 正確な値がタスクに価値を追加しない場合は複数選択式や範囲を選択する
  • 緊急時、規制対象の報告、保護された内部告発には軽量な匿名アンケートを使用しない

実践的な教訓は、匿名アンケート設計は「引き算」であるということだ。識別経路を除去し、保存期間を短縮し、権限を分離し、残る制約を明示する。

CandorKit はこの狭いパターンの実用的なプローブである: https://candorkit.com/