同意は、いちばん新しい1行で決まる

「同意する」のチェックボックスをひとつ置けば、同意の機能は作れてしまう。 キャストの表に「同意済み」の列を足して、押されたら印を立てる。それで画面は成り立つ。 ただ、位置情報でそれをやる気にはなれなかった。印がひとつあるだけでは、いつ同意したのか、どの文面に同意したのか、本人が押したのか店が代わりに付けたのかが、あとから分からない。

同意は「状態」ではなく「出来事」で持つ

それで、このデリヘル管理システムでは同意を表の列にせず、出来事の記録として持つことにした。 同意した、撤回した、を1行ずつ足していく。書き換えも削除もしない。いちばん新しい行が、いまの状態になる。 1行ごとに、同意文の版、本人がアプリで押したのか店が書面の同意を代わりに記録したのか、代わりに記録したなら誰が、を残している。

キャストのスマホの設定タブ。「位置情報の同意 未同意」の行が開き、黄色い枠の中に「安全のため、勤務時間中はあなたの位置を取得します。位置の履歴は90日で自動的に削除されます。同意はいつでも撤回でき、撤回も記録に残ります」の説明と、緑の「位置情報の取得に同意する」ボタンがある
キャストのスマホの設定タブ。同意する前はこの黄色い枠が出る(画面はデモデータです)。

キャスト側の画面は、設定タブの1行だけにした。何のために取るのか、履歴は何日で消えるのか、いつでも撤回できること、を枠の中に書いてある。 日数は文面に直接書かず、実際に履歴を消している設定値をそのまま表示している。文面と実際の動きが食い違うのがいちばんまずいからだ。 店の側には、紙で同意をもらったときのために、代わりに記録するボタンがある。こちらは「店が記録した」と分かる形で残る。

記録しているだけだった、という失敗

最初に作ったとき、ここまでで満足していた。7月に見直して、抜けが2つあったことに気づいた。

ひとつは、同意の前から位置の送信が始まっていたこと。位置情報送信のスイッチは最初からオンで、同意の行を開いたことがなくてもスマホは位置を送っていた。 同意の記録は残るのに、同意していなくても同じように動く。これでは最初から同意したことにしているのと変わらない。 いまは、同意が付いていない間はスマホの側で送信を始めないし、サーバーの側でも受け取りを断る。 判定のたびに最新の1行を読みにいくようにもした。画面の表示用に読み込んだ古い状態で判定すると、撤回した直後の1回を通してしまう。

もうひとつは撤回のほう。撤回の行は足されるのに、最後に送られた座標がキャストの情報に残ったままだった。 店の画面には、撤回したあとも古い位置が「現在地」として出つづける。撤回しても何も変わらないなら、撤回のボタンは飾りだ。 撤回の記録と同時に、最後の座標も消すように直した。

宿題

同意文の版は1行ごとに記録しているが、版が変わったときに「新しい文面にもう一度同意してください」と出す画面は、まだ作っていない。 いまのところ文面を変えていないので困ってはいない。変える日が来る前に作っておく。