shinkai.me

リアクション機能をいい感じにした

shinkai.me の記事ページで、押しても気持ちのいいリアクション UI を組んだ。やったことを軽く残しておく。

何が変わったか

これまで記事末にあったのは「拍手」ボタンとシェアアイコン。シンプルでよかったけれど、もう少し読み終えたあとの体温を残したかったので拡張した。

4種類のリアクション

押せるのは 4 種類:

  • 👏 Clap — 良かったよの気持ち
  • ❤️ Love — もう一度読みたい
  • 💡 Insightful — 視点が増えた
  • 🎉 Celebrate — おめでとうの気持ち

各リアクションは独立にカウントされる。1人あたり 20 回まで押せる。Medium の clap と同じく、連打すると微妙にうれしい。

シェアもカウント

シェアアイコンは独立した1つで、押すとドロップダウンが開いて X とリンクコピーが出る。それぞれを発火するとサーバ側のカウンタが回る。「読んで終わり」じゃない流通が見えるとうれしい。

上限のサイン

20 回に達するとカウントが max の表示に切り替わる。気づかずにポチポチ押してると、軽くアイコンが揺れる。これも控えめにある。

どう作ったか

KV のキーは:

  • claps:<slug>(既存をそのまま流用)
  • reactions:<slug>:<type>(新規)
  • shares:<slug>(新規)

API もそれぞれ最小実装。クライアント側は localStorage に自分の押下数を持って、永続化する。

モチベーション

データを集めたいというよりも、「読み手の手触り」をできるだけ消さないでおきたかった。完全な無音より、押せて変わる方が記事を書く側の張り合いも続く。

次にやりたいこと

  • 各リアクションが多い記事を /stats から拾えるようにする
  • 上限到達時の小さなお祝い演出を入れる
  • リアクション付きの月次まとめを生成してみる

このあたりは、実際に運用してから決めようと思う。