Fincs

トーク / リアクション

トーク / リアクション

本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(## 🔧 実装詳細 以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。

概要

トーク投稿に対して絵文字でリアクションする機能。投稿に対して同意・賞賛・確認等の軽量なフィードバックを返す手段として使う(チャット本流に投稿せずに反応を示す)。

主な仕様:

  • リアクション付与: 各メッセージ下のチップから既存リアクションを再使用、または絵文字ピッカーから新規選択
  • 取消: 同じ絵文字を再度押すと取消(toggle 式、別ボタンなし)
  • 絵文字の範囲: Unicode 標準絵文字のみ(肌色選択あり)。カスタム絵文字は未対応
  • 種類数上限: 1 メッセージあたり最大 10 種類(11 種類目を追加しようとすると警告で追加不可)
  • 通知発火なし: リアクションでは通知が飛ばない(投稿者・他参加者ともに)。「リアクションしたのに気付かれない」と CS で挙がる典型
  • 個別ルームの無効化: ルームによってはリアクション機能を無効化できる(運用設定)

リアクションは投稿よりも軽い「チャットを汚さない反応手段」として位置付けられる。投稿者への通知が必要な場合はメンションや返信を使う前提。

📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):

  • 目的: 投稿への軽量なフィードバック(同意・賞賛・確認等)。チャットを汚さずに反応を伝える
  • 誰が使うか: 受講者・メイン講師・サブ講師
  • どこで使うか: トークルーム画面の各メッセージ
  • 隣接機能との関係: 投稿(./post.md)/ ブックマーク(./bookmark.md
  • CS 問い合わせで頻発する論点: 「リアクションしたら通知される?」(→ されない)「カスタム絵文字使える?」(→ 使えない)「肌色変更」「種類数の上限」
  • [本機能特有] 通知発火なし: リアクションでは通知が飛ばない(投稿者にも他参加者にも)
  • [本機能特有] 1 メッセージあたり 10 種類まで: 11 種類目を追加しようとすると警告
  • [本機能特有] 同じ絵文字を再度押すと取消(toggle)
  • [本機能特有] 集計と保存は Firestore のみ: RDB にリアクションテーブルなし、付与・解除は FE が Firestore に直接書き込み
  • [本機能特有] 個別ルームの無効化: feature toggle で特定ルームのリアクション機能を無効化可能

利用シナリオ

シナリオ 1: 受講者が講師の投稿に賛同を示す

メイン講師が「課題の提出期限を 1 週間延長します」と投稿。受講者は本文に返信せず、メッセージ下の絵文字ピッカーから 👍 を選んでリアクション。同じ気持ちの他の受講者も既存の 👍 チップを押下することで賛同が同じリアクションに集約され、講師は「何人が賛同したか」を一目で把握できる。

シナリオ 2: リアクションの取消

受講者が誤って 😢 を押してしまった。同じ 😢 チップを再度押すと取消(toggle)。別ボタンや確認ダイアログはない。

シナリオ 3: リアクション者一覧の確認

メイン講師が投稿に集まった 👍 を誰が押したか確認したい。チップを長押しまたは詳細表示でリアクション者一覧ポップアップが表示される。

シナリオ 4: 種類数上限

ある投稿に 10 種類のリアクションが既に集まっている状態で、11 種類目の絵文字を追加しようとすると警告メッセージが表示され、追加不可。既存リアクション(10 種類のいずれか)であれば再使用は可能(同一絵文字に賛同者が増えるだけ)。

よくある失敗ケース

  • 「リアクションしたのに気付かれない」: 仕様としてリアクションでは通知は発火しない。投稿者にバッジ表示も飛ばない。気付いてほしい場合はメンションや返信を使う必要がある
  • 「カスタム絵文字を使いたい」: Unicode 標準絵文字のみ対応で、カスタム絵文字は未対応
  • 個別ルームでリアクションが使えない: 運用設定で個別ルームのリアクション機能が無効化されている可能性

📝 レビュー観点:

  • 標準的なリアクション付与(絵文字選択 → 投稿に表示)
  • 同じリアクションを再度押下して取消
  • リアクション者一覧の確認
  • 11 種類目のリアクション追加試行 → 警告
  • 個別ルームでリアクション機能が無効化されている場合
  • 失敗ケース: 連打、ネットワーク切断時の楽観的更新

権限別仕様

権限定義は ../user-roles.md 参照。用語は ../terminology.md

講座権限軸

操作 未受講者 受講者 サブ講師 メイン講師
リアクション付与 ×
リアクション解除(自身分) ×
リアクション一覧の閲覧 ×
リアクション者一覧の確認 ×

横断軸

操作 運営アドミン テストユーザー 投稿禁止
リアクション付与 (通常と同じ) (通常と同じ) (通常と同じ、要確認)
リアクション削除(運営アドミン代理) ×(運営アドミン専用機能は存在しない) × ×

📝 レビュー観点:

  • 投稿禁止フラグユーザーがリアクションできるかは要確認(投稿チェックが入るか)
  • 運営アドミン経由の不適切リアクション削除手段の有無

機能詳細(ふるまい)

絵文字の範囲

  • Unicode 標準絵文字のみ対応(emoji-mart の標準セットに準拠)
  • 肌色選択あり(人物系絵文字で 5 段階の肌色バリエーションを選択可)
  • カスタム絵文字は未対応(Slack のような独自絵文字アップロードはなし)

リアクション付与

各メッセージ下のリアクションチップ表示部から付与する:

  • 既存リアクション: 既に他の人が押した絵文字のチップを押下すると自分も同じリアクションに加わる(再使用)
  • 新規リアクション: 絵文字ピッカーボタンを押して絵文字を選択

取消(toggle)

同じ絵文字を再度押下するとそのリアクションが取り消される(toggle 式)。別途取消ボタンや確認ダイアログはなし。誤押下した場合も同じ絵文字を再押下するだけで戻せる。

種類数上限

1 メッセージあたり最大 10 種類のリアクションが付けられる。11 種類目を追加しようとすると警告メッセージが表示されて追加不可。既存 10 種類のいずれかへの再使用(賛同者を増やす)は引き続き可能。

リアクション者一覧

各リアクションのチップを押下(または長押し)すると、そのリアクションを付けたユーザー一覧がポップアップ表示される。一覧は絵文字ごとのタブで切り替え可能、参加者数が多い場合はページングされる。

通知

リアクションでは通知が一切発火しない。投稿者にも他のスレッド参加者にも、メンション扱いにもならない。意図的な仕様で、軽量なフィードバック手段として通知の負荷を増やさない設計。

ルーム無効化

特定のルームでリアクション機能を全体的に OFF にできる運用設定がある。OFF の場合、そのルームの投稿にはリアクションチップ・絵文字ピッカーが表示されない(リアクション付与経路がない)。設定方法は運営側の管理対応。

📝 レビュー観点:

  • 入力 → 処理 → 出力: 絵文字選択 → 楽観的更新 → Firestore 書き込み
  • エッジケース: 連打、Firestore 書き込み失敗、同時に複数人がリアクション
  • エラー表示: 種類数上限到達時の警告、ネットワーク失敗時の楽観的更新ロールバック
  • 編集・削除の挙動: 投稿削除時のリアクションの扱い、論理削除との整合
  • [本機能特有] 通知非発火: 「リアクションしたのに気付かれない」CS 相談の根拠
  • [本機能特有] 1 ユーザーの付与種類数の制限なし: メッセージ全体の 10 種類のみ

admin 操作

該当なし

リアクション関連の運営アドミン専用操作は存在しない。

実装されていない

  • 運営アドミンによる不適切リアクションの削除: 専用経路なし — 今後の改善課題

📝 レビュー観点:

  • リアクションを使った嫌がらせ等の運営対応経路の必要性
  • 一括無効化の運用フロー(feature toggle 経由のみ)

品質 / 約束事項

  • 応答性: リアクション付与・解除は楽観的更新で即時表示、Firestore 反映は数秒以内
  • 信頼性: 楽観的更新失敗時はロールバック表示
  • 制限値:
    • 1 メッセージあたりの種類数: 最大 10
    • 1 ユーザーの付与種類数: 制限なし(同一絵文字の重複付与は不可)
  • データ保持: リアクションは Firestore に保持

📝 レビュー観点:

  • 応答性: 楽観的更新の体感速度、Firestore 反映遅延
  • 信頼性: ネットワーク切断時の挙動
  • [本機能特有] 個別ルーム無効化: 環境変数で制御、設定方法は dev 担当

変更履歴(リリースノート候補)

v2.29.2: 2026-05-02(PSD 初版)

  • [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない

📝 レビュー観点:

  • 過去の主要変更(リアクション機能追加 / 種類数上限導入 / 個別ルーム無効化トグル追加 等)

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →