
DOCHIでは一度入れた票を変えることも取り消すこともできません。投票の直後に結果を見せる流れと、退会しても票を消さない理由、データベースで守る仕組みを書きます。
DOCHIでは、一度入れた票をあとから変えることも、取り消すこともできません。押し間違えたと思っても、やり直すボタンはありません。不便に見えるこの決まりは、開発の最初に書いた仕様の時点で、もう決めていました。票をそのまま信じられることが、二択で聞くアプリの土台だと考えたからです。この記事では、変更を許すと何が崩れるのか、退会しても票を消さない理由、画面ではなくデータベースで守る仕組みを説明します。
投票の直後に結果が出る。だから票を動かせない
DOCHIでは、AかBを選ぶとその場で結果が出ます。別の画面へ移らず、選んだ直後に「どちらが多かったか」が分かる流れです。

この流れで票を変えられるとどうなるか。まず適当にどちらかへ入れて結果を見て、多いほうへ入れ直す。そういう使い方ができてしまいます。投票が「自分はどちらがいいか」ではなく、「結果をのぞくための操作」になります。
そうなると、表示される割合は「みんながどちらを選んだか」ではなく、「結果を見たあと、みんながどちらへ寄ったか」になります。迷っている人が聞きたいのは前者です。結果をすぐ見せる体験と、票を変えられる仕組みは、同時には成り立たないと判断しました。
変えられない票は、締め切ったあとも動かない
DOCHIの投稿は、時間が来ると投票の受け付けを締め切ります。締め切ったあとも投稿と結果は残り、投票した人はあとから見返せます。ただ、そこで新しく投票することも、票を入れ直すこともできません。
締め切りの前後で決まりを変えないのは、結果を見返す人にとっての意味を保つためです。昨日見た割合と今日見た割合が違っていたら、その結果をもとに決めた人は困ります。投票が終わったあとの結果は、その時点で確定した記録として扱います。
1票で結果を決めつけないための工夫は、1票で「100%」とは表示しない。DOCHIが5票まで結果を隠す理由に書きました。少ない票の割合を見せないことと、入った票を動かさないことは、どちらも「表示される数字を信じてよい」状態を守るための決まりです。
退会しても票は消さない。他の人の結果が変わるから
票を変えられない決まりは、アカウントを削除するときにも効いてきます。最初の作りでは、アカウントを消すと、その人の票も一緒に消える設計でした。データの持ち方として自然に見えたからです。
ところが、これは他の人の投稿の結果をあとから書き換えます。6対4だった結果が、1人の退会で5対4に変わる。投稿した人から見れば、何もしていないのに割合が動きます。本人の操作で票を変えられないのに、退会という別の操作で票が消えるのは、決まりの抜け道です。
そこで、アカウントを削除しても票は残し、プロフィールのほうを誰のものか分からない形に置き換えることにしました。表示名やアイコン、自己紹介は消え、残った票は「削除されたユーザー」のものとして数えられます。
アカウントを削除したい
設定から削除できます。削除すると、プロフィール(表示名・ユーザー名・アイコン・自己紹介)は復元できない形で消え、ご自身の投稿も表示されなくなります。フォロー・ブロック・通知・端末の登録も削除されます。
ただし、投じた票と書いたコメントはそのまま残ります。票を取り消すと、他の方の投稿の結果があとから変わってしまうためです。コメントも、返信のぶら下がった会話が途中で切れないように残します。どちらも「削除されたユーザー」として表示され、あなたと結びつく情報は残りません。
削除の取り消しはできません。同じメールアドレスで新しく登録しても、以前のプロフィールや投稿は戻りません。
票を消さないことには、もう1つ理由がありました。DOCHIでは、票が入るたびに投稿ごとの集計を数え足しています。数え足す仕組みはありましたが、票が消えたときに数え直す仕組みはありませんでした。退会で票が消えると、集計だけが多いまま残り、誰も気づけません。票を残す設計にしたことで、この食い違いが起きる道そのものがなくなりました。
ボタンを消すだけでは守れない。データベースが決める
投票したあとの画面から、投票のボタンを消すことはできます。ただ、DOCHIの開発の決まりには「ボタンを無効にするだけで、二重の投票を防げると考えない」と書いてあります。画面の制限は、通信を直接送る人や、改変したアプリには効かないからです。
そのため、票の決まりはデータベースの側に置きました。
- 1つの投稿に対して、同じ人の票は1つしか入らないようにする
- 入った票を書き換える権限と、消す権限をどの利用者にも渡さない
- 自分の投稿への票と、締め切ったあとの票は、データベースが受け付けない
この決まりは、一度実際に試されました。開発中、手元の環境では問題がなかったのに、公開用の環境では票を書き換える権限まで既定で付いていたことが分かりました。環境ごとに初めから付いている権限が違い、私が書いた設定は権限を足すだけで、削ってはいなかったためです。
このときも、票は書き換えられませんでした。権限とは別に、行ごとに「誰が何をしてよいか」を決める規則を置いていて、票を書き換える規則は1つも作っていなかったからです。権限のほうも、既定のものをすべて外して、必要なものだけを渡し直しました。どちらか1つが抜けても、もう片方で止まるようにしています。
2回目の投票はエラーにしない。「もう入っている」と扱う
通信が遅いときにもう一度スワイプしたり、ボタンを続けて押したりすると、同じ票が2回送られることがあります。2回目はデータベースが受け付けません。
このとき、画面にはエラーを出さず、そのまま結果を表示します。2回目が断られたということは、1回目の票はもう入っているということです。本人が望んだ「投票した」という状態はできているので、「失敗しました」と出すのは事実と違います。
利用状況の記録でも、2回目は「投票を終えた」に数えません。続けて押しただけで投票数が増えて見えると、どれだけ使われているかを見誤るからです。
やり直せないから、うっかり投票しにくい形にした
票を変えられない以上、意図しない票を減らすことも同じくらい大事です。DOCHIの投票は右へスワイプするとA、左へスワイプするとBで、指を動かしているあいだに、どちらを選ぼうとしているかを表示します。
スワイプがしにくい人のために、タップで投票する手段も足しました。このとき、写真そのものをタップして投票する形にはしませんでした。写真は、拡大して見ようとして触れるものだからです。取り消せない操作と、何気なく触れる場所を重ねると、取り返しのつかない押し間違いが起きやすくなります。そこで、写真の下に「A に投票」「B に投票」と書いたボタンを置き、投票が終わるとそのボタンは消えるようにしました。受け付けられない投票を、押せる形で残さないためです。
投票をやり直したいのですが
1つの投稿に投票できるのは1人1回だけで、あとから変更することはできません。集まった票をそのまま信じられるようにするための決まりで、アプリの表示だけでなくサーバー側でも守られています。
なお、ご自身の投稿には投票できません。
二択で聞くアプリにした理由そのものは、「どっちにしよう」をひとりで抱えない。DOCHIを作っている理由に書いています。迷っている人に外からの視点を届けるには、届ける数字が動かないことが前提になります。DOCHIは開発中で、操作の細かいところはこれからも変わりますが、1人1票で票を変えないという決まりは変えないつもりです。


