印を付けただけでは、探せるようにならなかった
記事一覧のカードには、前から「読了済み」の印を付けていました。
付けた当時は57本でした。いまは110本を超えています。印は役に立たなくなっていました。
読了の印だけでは足りず、未読だけを出す絞り込みを足した話です。URLに入れなかった理由、読んだ人にだけボタンを出した理由、そして0件の見せ方を書きます。
見分けることと、探すことは違う
印が付いていれば、目の前のカードが既読かどうかは分かります。見分けることはできます。
けれど「まだ読んでいないものを見たい」ときにやることは、100枚のカードを上から順に見て、印の付いていないものを拾う作業になります。これは探す作業で、印はそれを助けていません。
並んでいるものから条件に合うものを取り出すのは、一覧の側がやることです。
印だけ出して残りを目でやらせるのは、判定の材料は渡したが、判定はそちらでやってくれと言っているのと同じでした。
URLには入れなかった
この一覧には、すでにカテゴリとタグの絞り込みがあります。どちらも /blog?category=tech のようにURLに入ります。
未読の絞り込みは、同じ形にしませんでした。
| 絞り込み | 誰にとっても同じか | URLに入れるか |
|---|---|---|
| カテゴリ・タグ | 同じ。誰が開いても同じ記事が出る | 入れる |
| 未読 | 人によって違う | 入れない |
URLに入れるということは、その状態を他の人に渡せるということです。カテゴリなら渡せます。「技術系の記事はここ」と共有できます。
未読は渡せません。渡された側にとっては、自分と関係のない条件で記事が消えている一覧になります。共有したつもりの人も、渡された人も、何が起きたか分かりません。
読んだことがある人にだけ出す
ボタンは、1本でも読んだ記録がある人にだけ出しています。
初めて来た人にとっては、全部が未読です。押しても何も変わりません。
押して何も起きない経験を一度すると、そのボタンは「効かないもの」として記憶されます。
後日ちゃんと効く状態になっても、もう押されません。意味を持つまで出さないほうが、意味を持ったときに使われます。
0件を、失敗のように見せない
未読だけにして0件になる状態は、全部読み終えたという意味です。良い状態です。
ところが検索の0件と同じ文面を出すと、何かを間違えたように見えます。そこで分けました。
| 状況 | 出す文面 |
|---|---|
| 検索で0件 | 「〜に当てはまる記事はありませんでした」+用語集への案内 |
| 未読が0件 | 「記事はすべて読み終えています」+絞り込みを解除するボタン |
解除のボタンを添えているのは、行き止まりにしないためです。0件の画面で、絞り込みを外す手段がその場に無いと、戻り方を探すことになります。
戻ってきたときに、数が合わない
実装して最初に気になったのが、ここでした。
一覧から記事を開いて読み、ブラウザの「戻る」で一覧に帰ってくる。このときページは作り直されません。離れたときの画面がそのまま出てきます。
読了の記録は更新されているのに、一覧は古いままです。「未読だけ」と書いてあるのに、たったいま読んだ記事が並びます。
戻ってきたときに発生する合図(pageshow)で読み直すようにしました。結果として、戻った瞬間にいま読んだ記事が一覧から消えます。目の前で消えるのは少し驚きますが、「未読だけ」と書いてある以上、消えるほうが正しいと判断しました。
読了の記録は、こちらには届いていない
念のため書いておくと、どの記事を読んだかという記録はその人のブラウザの中にだけあります。こちらのサーバーには送っていませんし、見ることもできません。
だからこの絞り込みは、サーバー側では掛けられません。ブラウザ側でやっているのはそのためです。
今回の学び
まず、材料を出すことと、仕事をすることは違うということ。印は判定の材料でしたが、判定そのものは読む人に残っていました。数が増えると、その差がそのまま手間になりました。
次に、渡せる条件と渡せない条件があること。URLに入れるかどうかは、実装の都合ではなく「他の人に渡して意味があるか」で決まりました。
そして、0件には種類があること。見つからなかった0件と、やり終えた0件は別のものです。同じ文面で済ませると、良い知らせが悪い知らせに見えます。
この記事を共有する
関連記事
読む体験をつくる — 目次の自動生成から読了状態の保存まで
記事を5本公開したあと、読む側の体験を作り込みました。目次の自動生成、追従する目次、読了状況の表示と保存、スマートフォンのメニュー、読了目安の時間。あわせて、トップページの見た目も見直しています。 この記事は、その実装記 […]

ソース解説(2) 目次は本文から作る
本文が文字列として届くこと、そこから見出しを拾う方法、既にあるidを勝手に変えてはいけない理由、そして読んでいる位置をどう追いかけているかです。

読む邪魔をしない
貼り付いたヘッダーと目次が、読んでいるあいだずっと画面を占めていた。下へ読むときは引っ込むヘッダー、スクロール中だけ薄くなる目次、先頭へ戻るボタン。3つの判断の記録。