ちぎり文(ちぎりぶみ)
文をブラウザの中で3枚にちぎって預ける投函所。本文はDBに書かれず、欠片は通りすがりの見知らぬ人が一文につき一枚だけ拾える。2人が差し出したときだけ文は開帳され、組み立てるのは読む人のブラウザ。
アプリを試す
別タブで開く ↗ユーザーが投稿した外部アプリを埋め込み表示しています。表示されない場合は「別タブで開く」からご利用ください。
「ちぎり文(ちぎりぶみ)」は、書いた文をその場で三枚にちぎって預ける投函所です。ちぎるのはサーバではなくあなたのブラウザで、預けられるのは欠片だけ。本文はデータベースのどの列にも書き込まれません。欠片は通りすがりの見知らぬ人が一文につき一枚だけ拾えて、拾われた瞬間サーバの控えは消え、中身はその人のブラウザにしか残らなくなります。二人が自分の欠片を「差し出す」と決めたとき、はじめて文は開帳されます。つまりこの投函所の鍵は暗号ではなく、会ったこともない二人の判断です。
こんなときに使う
- 誰かに読まれてもいい、でも自分から名乗って言うほどでもない一言を置いておきたいとき
- 秘密分散(シャミアの秘密分散法)が実際にどう動くのかを、数式ではなく手ざわりで確かめたいとき
- 見知らぬ人と非同期に噛み合う、勝ち負けのない遊びをしたいとき
- 「渡す相手を自分で選べない鍵」がどんな気分のものか、試してみたいとき
使い方
- ページ上部の「ためしにちぎってみる」で、好きな文を打ってみます。ここはサーバを一切使わないその場の実演で、三枚の欠片が出ます。一枚だけ選ぶと十六進の並びしか出ず、二枚選ぶと文がぴたりと戻ります。
- 「文を封じる」に本文を書いて、「3枚にちぎって預ける」を押します。ちぎる処理はブラウザの中で終わり、送られるのは欠片とその指紋だけです。
- 「欠片袋」に並んだ、まだ開いていない他人の文から一通を選び、「欠片を拾う」を押します。拾えるのは一文につき一枚まで。
- 「手もとの欠片」に入った欠片を、差し出すか、袋に戻すかを決めます。差し出せばその文は開帳に一歩近づき、袋に戻せば次に通りかかった人が拾えます。
- 二枚そろった文は「開帳」に並びます。そこに出ている文字は、あなたのブラウザがその場で欠片から組み立てたものです。
仕様と機能
| 項目 | 値 |
|---|---|
| 本文の長さ | 140字まで |
| ちぎる枚数 / 開帳に要る枚数 | 3枚 / 2枚 |
| ちぎり方 | GF(256) 上のシャミア秘密分散(既約多項式 0x11b、生成元 3) |
| 同じ文から拾える欠片 | 一人一枚 |
| 同時に持てる欠片 | 5枚 |
| 封じられる通数 | 24時間に1通 |
| 拾える枚数 | 24時間に20枚 |
| 連続操作の間隔 | 5秒(封じる・拾うのみ。差し出すには掛からない) |
| 朽ちるまで | 開かないまま7日 |
| 一覧の表示数 | 欠片袋24通 / 開帳30通 |
保存しているのは二つの表だけです。文の表は「いつ封じられ、いつ開いたか」しか持たず、本文の列がそもそも存在しません。欠片の表は、欠片そのものと、封じた時に取った SHA-256 の指紋を持ちます。拾う処理は CTE と FOR UPDATE SKIP LOCKED を組み合わせた単一のSQL文で、同じ瞬間に二人が同じ文へ手を伸ばしても、渡るのは別々の欠片です。差し出された欠片は指紋と突き合わせるので、途中で書き換えた偽の欠片は弾かれます。差出人も拾った人も記録せず、端末を見分けるための乱数の合言葉だけを回数の数えなおしに使っています。
作るときに決めたこと
閾値を2にしたのは、この遊びが成り立つかどうかが「他人が何人通るか」に丸ごと乗っているからです。3枚中3枚を要求すると、一人が持ち帰っただけで全部が死にます。3枚中2枚なら、誰か一人が気まぐれで持ち去っても、残りの二人で開けます。壊れやすさを味にしつつ、詰み方が緩やかになる線がここでした。
手持ちの上限を5枚にしたのは、拾うだけで帰れないようにするためです。5枚たまると、差し出すか袋に戻すか、どちらかを選ばないと次が拾えません。持っているだけでは何も起きないと体で分かる数として、多すぎず一枚でもない5枚にしました。封じられるのを24時間に1通に絞ったのも同じ理由で、書く側より拾って手放す側にページの時間を寄せたかったからです。
「秘密の保管庫ではない」と本文中にも書いたのは、そう誤解されると困るからです。差し出された欠片は開帳のためにサーバへ戻ってきます。2枚そろった時点で、その文は誰でも読めます。ここは隠す場所ではなく、二人が手放すと決めたときに開く場所です。逆に、拾ったまま保存を消してしまうと欠片はどこにも残らず、その文は永久に開きません。
注意点
- 拾った欠片はそのブラウザの localStorage にしか残りません。閲覧データを消したり別の端末で開いたりすると、その欠片は失われ、文は開けなくなります。
- 差し出した文は誰でも読める状態になります。読まれて困ることは書かないでください。
- 開かないまま7日たった文は朽ちて、もう拾えません。
- 認証がないので、端末の見分けは乱数の合言葉によるベストエフォートです。回数の上限も厳密な本人確認ではありません。