Skip to content

記事に「役に立った」フィードバック(いいね)を追加する #1949

Description

@ma91n

サイト全体のブラッシュアップ検討から。読者の反応を受け取り、記事のいいね数として表示する。

前提の整理

サイト全体はWebフォントなし・JSなしの方針だが、この機能に限りJSを許容する

コメント機能(Giscus / Utterances)は JS 必須かつ外部サービス経由で GitHub API を叩く構成のため見送り。まずは「役に立った」程度の軽いフィードバックに絞る。

要件

  • フィードバックをデータとして受け取る
  • 記事のいいね数として表示する
  • 同一ユーザーの二重投稿をできるだけ防ぐ

構成案: Cloudflare Worker + KV

静的サイト(GitHub Pages)なのでカウントの保存先が必要。Cloudflare の無料枠で足りる見込み。

  1. Cloudflare アカウント作成(現在未使用のためゼロから
  2. Worker を作成(例: future-techblog-likes
  3. KV ネームスペースを作成し Worker にバインド
  4. GET /count?path=...POST /like を実装。CORS ヘッダを付与
  5. ブログ側に小さな JS を追加

二重投稿防止

  • クライアント: localStorage で「押した」フラグを保持
  • サーバー: 短時間の連続リクエストを軽く制限

別ブラウザ・シークレットウィンドウからは再度押せる。 完全な一意性は認証なしでは不可能で、技術ブログのいいねとしては許容範囲と判断する。

検討事項

  • 既存のSNSカウント表示との併存。記事ページには既にはてブ等のシェア数が出ており、そこへ「いいね」が並ぶ見せ方を決める必要がある
  • 表示は楽観的更新(クリック即 +1)にするか、保存完了後にするか
  • Worker の運用管理(アカウント・シークレット)を誰が持つか

優先度

他の項目と性質が違い(外部サービス依存・JS導入・運用が発生する)、独立性も高いため最後に着手する

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions