トーク / アナウンス
トーク / アナウンス
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
トークルーム内の特定の投稿を 「アナウンス」としてルーム上部にピン留め する機能。講師が重要な告知・周知事項を目立たせ、受講者がルームを開いた時点で最初に目にするようにする。
- 対象: 既に投稿済みのトーク(テキスト / ファイル問わず)
- 件数: 1 ルームあたり最大 5 件
- 設定権限: メイン講師(サブ講師の可否は 要確認。下段「未解決課題」参照)
- 通知発火: なし(アナウンス設定・解除時に関連ユーザーへのプッシュ通知は飛ばない。詳細は
./notification.mdの「アナウンス」セクション参照)
アナウンスはルーム上部の固定枠に表示され、ルーム内の通常のトーク一覧とは独立してスクロールする。受講者・未受講者ともに閲覧できるが、ルームへのアクセス権限が無いユーザーは当然見えない(ルーム閲覧権限に依存)。
利用シナリオ
シナリオ 1: 講師の重要告知
メイン講師が「来週の講義日程変更」のトークを投稿 → そのトークをアナウンスに設定 → ルームを開いた全受講者の画面最上部に常時表示される。
シナリオ 2: 複数告知の並行運用
講師が過去のアナウンス(例: 入会手順)を残したまま、新しい告知を追加。最大 5 件まで同時設定可能。古いものを外したいときは個別に解除。
シナリオ 3: 誤ったアナウンス対象の解除
講師が誤った投稿をアナウンスしてしまった場合、解除操作で即外せる。解除したトーク自体は削除されず、通常投稿として残る。
権限別仕様
権限定義は ../../user-roles.md、用語は ../../terminology.md 参照。
講座権限軸
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| アナウンス設定 | × | × | ○(※1) | ○ |
| アナウンス解除 | × | × | ○(※1) | ○ |
| アナウンスの閲覧(ルーム内) | ×(※2) | ○ | ○ | ○ |
| アナウンスから元トークへジャンプ | ×(※2) | ○(※3) | ○ | ○ |
- ※1: 仕様としてはメイン・サブ両方に許可。実装上も両方が通る想定だが、サブ講師ケースの挙動をテストで固定する作業を FIN-417 で追跡中(実装識別子は下段「処理フロー」参照)
- ※2: 未受講者はルーム自体にアクセス不可、その結果としてアナウンスも見えない
- ※3: 受講者はルームの「過去トーク制限」設定(
blockPastTalks=true)が有効な場合、自身の契約開始日以前のアナウンス対象トークへはジャンプできない(アナウンス自体は表示される)。講師は常にジャンプ可能
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| アナウンス設定 / 解除 | ×(運営アドミン経由の専用操作経路は存在しない) | (通常と同じ) | (運用上、講師が投稿禁止になるケースは想定外のため考慮不要) |
| アナウンス閲覧 | ×(通常ユーザー経路は未実装) | (通常と同じ) | (通常と同じ、閲覧可) |
機能詳細(ふるまい)
設定
- 既に投稿済みの自ルーム内のトークをアナウンスに指定する
- 削除済みトークはアナウンスに設定できない(エラー)
- 同じトークを重ねて設定しても冪等(エラーにならず、既存のアナウンスがそのまま返る)
- 1 ルームに既に 5 件のアナウンスがある状態で 6 件目を設定するとエラー。解除して空きを作ってから設定する必要あり。ユーザーには「アナウンスは 5 件まで設定できます」の旨が表示される
解除
- アナウンスのみ解除され、対象のトーク自体は残る
- 解除したトークを再度アナウンスに設定することも可能
表示仕様
- ルーム画面の最上部に固定表示(スクロールしても常時見える位置)
- 設定されている直近 1 件をヘッダーに表示(本文サマリーは先頭 50 文字まで)
- 2 件目以降は折りたたみ。ユーザーは開閉できる(開閉状態はブラウザローカルに保存され、次回開いた時も維持)
- ソート順は 更新日時の降順(新しく設定されたものが上)
対象トークが削除されたときの挙動
- アナウンスレコードは残り続ける
- ただしルーム画面での表示は「メッセージを読み込めませんでした」という旨のプレースホルダーに切り替わる
- 解除(削除)操作は引き続き可能
ルームが削除されたときの挙動
- ルーム自体の削除は論理削除で、アナウンスレコードは CASCADE されず残存する
- ルームそのものが受講者・講師から見えなくなるため、アナウンスに実質的にアクセスできなくなる(間接的に不可視化)
- アナウンスレコードは DB 上孤児として残るが、表示経路が無いため運用上の影響はない(孤児データ整理の課題は
./room.mdの dev 改善課題参照)
admin 操作
できる操作
該当なし。アナウンスに対する運営アドミン専用の運用操作は現状ない。
実装されていない
- 運営アドミンによるアナウンスの代理設定・解除: 現状、運営アドミン専用の操作経路は存在しない。運営が不適切なアナウンスを解除したい場合は、該当ルームのメイン講師に依頼する必要がある — 今後の改善課題(必要性があれば)
品質 / 約束事項
応答性
- 設定・解除ともに同期処理で、操作結果は即時返る
- FE 側は Firestore 経由でリアルタイムに更新を検知して表示を切り替える(複数タブで開いていても同期)
制限値
- 1 ルームあたり最大 5 件
- 1 トークあたり 1 件(同じトークを複数のアナウンスエントリにすることはできない)
データ保持
- 解除は即削除(論理削除ではない)。解除後はアナウンスレコードは残らない
- 対象トークが削除されてもアナウンスレコードは残留する(表示だけがプレースホルダーになる)
信頼性
- DB への書き込みと Firestore への同期の 2 経路で永続化
- Firestore 側の同期遅延があれば FE は最小限のデータで暫定表示し、後から補完
変更履歴(リリースノート候補)
v2.29.2: 2026-04-24(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
関連ドキュメント
- 権限定義:
../../user-roles.md - 用語辞書:
../../terminology.md - 関連 PSD:
./notification.md(アナウンス設定時の通知非発火を記述),./room.md(ルーム設定、未作成),./post.md(投稿機能、未作成)
このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。