WorksHub
rin0420 / games, tools & bots

PRIVATE MUTUAL MATCHING

Secret Match

同じ場所にいる参加者が匿名で一人を選び、相互に選んだ二人だけに結果を知らせるブラウザツールです。アカウント登録やインストールは必要ありません。

使い方

幹事が男性・女性それぞれの人数を指定して部屋を作り、8文字の部屋IDと6桁の合言葉を参加者へ共有します。合計人数は20人までで、参加枠は作成後に変更できません。全員が揃うと投票へ進み、異なる参加枠の候補から一人、または「今回は選ばない」を選択します。

プライバシー設計

Cloudflare WorkerだけがD1データベースを操作します。合言葉と参加トークンはSHA-256のハッシュとして保存し、投票先は公開レスポンスへ含めません。結果は各参加者の認証情報を使って個別に取得します。

安全に使うために

  • 参加者全員の同意を得てから利用してください。参加しない選択も尊重します。
  • 実名、連絡先、SNS IDなど個人を特定できる情報は入力せず、当日だけ通じるニックネームを使ってください。
  • 部屋IDと合言葉は参加者だけに共有し、SNSなど公開の場所へ載せないでください。
  • 結果画面を本人の許可なく撮影・共有しないでください。結果を言うよう迫る使い方にも向きません。

活用例と進行のコツ

少人数の交流会で使う

幹事が参加者を数えてから部屋を作り、同じ会場で部屋IDと合言葉を口頭または限定した連絡手段で伝えます。人数設定と実際の参加者数が違うと投票開始を待ち続けるため、途中参加・欠席が確定してから作成すると進行しやすくなります。参加枠は作成後に直せないので、設定を誤った場合は新しい部屋を作り直します。

全員が同時に操作する

参加後は待機画面を開いたままにし、幹事が「全員参加済み」を確認してから投票時間を設けます。投票はやり直せないため、候補名と選択状態を確認してから確定します。選びたい相手がいない場合のために「今回は選ばない」も用意されており、無理に誰かを選ぶ必要はありません。

結果を個人のものとして扱う

全員の投票後、成立した場合は相手のニックネームが本人の画面だけに表示されます。成立しなかった場合も、誰が誰へ投票したかは示されません。結果発表会のように画面を一斉公開するより、各自が確認して終了する運用がこの仕組みに合っています。

データの保存と削除

部屋、参加者、投票はCloudflare D1に保存され、作成から24時間で利用できなくなります。期限切れデータは、新しい部屋が作成された際の処理で削除されます。サーバーにはニックネームや投票判定に必要な情報が入るため、公開したくない個人情報は最初から入力しないでください。

端末側では、部屋へ参加した際の部屋ID・参加者ID・トークンを、httpOnly Cookie(名前secret_match_room)としてブラウザに保存します。JavaScriptから読み取れないため、同一ドメインの他ページのスクリプトが参加者トークンへ到達することはありません。Cookieの有効期限は部屋の残り寿命に合わせて設定され、結果画面の「参加情報を消して終了」を押すと失効します。確実に消したい場合は終了ボタンを使うか、ブラウザ設定からSecret Matchのサイトデータを削除してください。ブラウザ側の削除だけでは、24時間以内のサーバーデータを個別に消す操作にはなりません。

タブやブラウザを閉じても、同じブラウザであればCookieにより参加状態が復元されます。ただし参加情報はアカウントへ同期されないため、別のブラウザや端末への引き継ぎはできません。投票途中で端末やブラウザを替えると同じ参加者として復帰できないので、開始から結果確認までは同じ端末とブラウザを使ってください。

よくある質問(FAQ)

料金や登録は必要ですか?

利用料金はかからず、アカウント登録やアプリのインストールも不要です。部屋を作る人と参加者の双方がブラウザから操作します。

スマートフォンで使えますか?

スマートフォンのブラウザで利用できます。投票が完了するまではページを閉じず、通信が安定した場所で操作してください。

オフラインでも動きますか?

動きません。部屋の作成、参加状況の確認、投票、結果判定はいずれもCloudflare WorkerのAPIと通信するため、インターネット接続が必要です。

誰に投票したかを幹事が確認できますか?

通常の画面や公開APIのレスポンスには投票先を含めず、幹事向けの投票一覧機能もありません。ただし運営基盤には判定用データが保存されるため、機密情報を預ける用途ではありません。

画面を閉じてしまった場合はどうなりますか?

参加情報はhttpOnly Cookieに保存されているため、同じブラウザであればタブやウィンドウを閉じても参加状態が復元されます。ただし別のブラウザや端末では復元できません。再参加で同じニックネームを復元する仕組みではないため、開始後は結果が出るまで同じ端末とブラウザを使ってください。

部屋をすぐ削除できますか?

部屋全体を作成者が即時削除する機能はありません。端末の参加情報は終了操作でCookieを失効させて消せますが、部屋と投票は24時間の有効期限後に利用できなくなります。

関連記事