ユーザーが本当にほしいものを見極めよう

2020年末、ツイ消し職人に新機能を追加したのですが、そのときの話をしようと思います。

新機能の内容は、ツイートの削除完了予定日時を表示する、というものです。

きっかけは、複数のユーザーから「ツイ消し開始ボタンを押してからしばらく経ったけど、まだ削除されない。いつ終わるのか教えてほしい」と問い合わせがあったことでした。

ツイ消し職人では一人ずつ順次ツイ消し処理を行っているため、ユーザーAがツイ消しをしている最中にユーザーBがツイ消しを開始した場合、ユーザーBはユーザーAのツイ消し処理が終わるまで待つ仕様になっています。

また、削除するツイートの数とツイ消し処理にかかる時間は比例しており、数十件のツイ消しであれば一瞬で終わりますが、数十万件のツイ消しには数時間かかります。

当時のツイ消し職人の画面はこんな感じになっていて、自分の前に何人がツイートを削除しているか(何人分待たなければいけないか)は分かるのですが、何ツイート分待たなければいけないかは分かりませんでした。

画像1

先程の例で言うと、自分がユーザーBであるとして、ユーザーAが消したいツイートの数が10件なのか5,000兆件なのかが分からないということです。

また、仮にユーザーAのツイート数を画面に表示したとしても、ツイ消し処理にかかる時間をユーザーは推測することができないため、あまり意味がないという状況でした。

このとき、ユーザーに対して何をすべきだろうかと考え、一番最初に浮かんだのは、ツイ消し処理を並列にしたり、サーバー台数を増やしたりして、単位時間あたりに削除できるツイートの数を増やそうでした。

ツイ消し開始ボタンを押してからツイ消し完了になるまでのスパンを短くすることで、「まだ削除されないんだけど」という問い合わせを減らそうとしたんですね。

そのため、コードを見直したり新しいサーバーを立てて並列処理のテストをしていたのですが、この作業に取り掛かり始めた1日後にハッと気が付きました。

顧客の求めているものはこれではない、と。

そもそも並列処理にするかどうかは、ツイ消し職人を作り始めた時点で一度考えた上で、しないという決断をしていたのを思い出しました。

理由は、ユーザーはツイ消しの速度でサービスを選ぶわけではない(ツイ消しを確実にできるほうがよっぽど重要である)し、ツイ消しに1日かかろうと別に気にしない(急ぐ理由がないし、何かしらの理由で本当に急いでいるならば、ツイ消しではなく、垢ごと消すはず)からです。

今回の問題点は、ツイ消しに時間がかかることではなく、ツイ消しの完了時間が分からない(いつ終わるのだろう? or 本当に終わるのかこれ?)ことだと気付いたため、ツイートの削除完了予定日時を表示する機能を追加しました。

画像2

画面上では実にシンプルな機能なのですが、裏側ではどんなことをやっているのかを説明します。

ユーザーAとBとCがいたとして、この3人が順番にツイ消し開始ボタンを押した場合、それぞれの画面に表示する削除完了予定時刻は以下のように計算しています。

ユーザーAには「現在時刻 + ユーザーAのツイ消し見積もり時間」を表示
ユーザーBには「現在時刻 + ユーザーAのツイ消し見積もり時間 + ユーザーBのツイ消し見積もり時間」を表示
ユーザーCには「現在時刻 + ユーザーAのツイ消し見積もり時間 + ユーザーBのツイ消し見積もり時間 + ユーザーCのツイ消し見積もり時間」を表示

見積もり時間の計算ロジックはこんな感じです。

残ツイート数 = 総ツイート数 - 削除済みツイート数
見積もり時間(分) = 残ツイート数 ÷ 1分間あたりの平均ツイート削除数


この機能を付けてから、ユーザーからの問い合わせはなくなりました。

顧客が本当に求めているものは何かを見極めないと、不必要なものを作ってしまい、誰も喜ばない上に技術的負債を抱えてしまうことになる、というのが今回の教訓です。

参考になれば幸いです。

よろしければサポートお願いいたします。 今後の記事執筆の励みになります。