トーク通知
トーク通知
概要
講座内のトークルームへの投稿をトリガーに、関係ユーザーへプッシュ通知を送る機能。Web プッシュ通知と PushQuay 通知 の 2 チャネルに同時配信する。
通知は投稿が行われたルーム種別・投稿内容に応じて次に分岐する:
- チャンネル通知: チャンネル(1:多 ルーム)への投稿に対し、購読している会員に送信
- DM 通知: DM(1:1 ルーム)への投稿に対し、DM 相手 + メイン講師 + サブ講師に送信
- メンション通知: 投稿テキストでメンションされたユーザーに追加送信
- スレッド通知: スレッド投稿の場合、スレッド関連ユーザー(親・兄投稿者・メンション対象)に送信
受信側は講座単位・ルーム単位・メンション・DM で通知 ON/OFF を細粒度に制御できる。送信側はルーム設定(講師限定投稿 / スレッド限定投稿 / 公開状態 / アーカイブ)で投稿・通知の可否が決まる。
設計上の要点は「投稿 → 通知対象決定 → 配信」の各段階で多層のフィルタリングが走る点、および「投稿が成功しても通知が発火しないケースがある」非対称性(非公開ルーム・アーカイブ済み)。
利用シナリオ
シナリオ 1: 講師からの新着お知らせ
メイン講師がチャンネルに投稿 → 購読中の会員全員に数秒以内にプッシュ通知が届く。会員はミュートや通知 OFF で受信を止められる。
シナリオ 2: 会員同士の会話とメンション
会員 A が会員 B をメンションして投稿 → ルーム購読者への通常通知に加え、B にメンション通知が届く(B がメンション通知を ON にしている場合)。
シナリオ 3: 講師と会員の 1:1 DM
会員が講師へ DM → 講師(メインとサブ)と DM 相手に通知が届く。他の会員には配信されない。
シナリオ 4: スレッドでの議論
スレッド親にスレッドコメントを投稿すると、親投稿者・既にスレッドに参加した投稿者・親/兄投稿のメンション対象に通知が届く。スレッド外の購読者には原則届かない。
シナリオ 5: 非公開・アーカイブルームでの沈黙
メイン講師が下書きとして非公開ルームに投稿しても、通知は発火しない。アーカイブ済みルームも同様。
利用可否(権限別)
トーク通知は同一ユーザーが投稿(発信)と受信の両方に関わり得るので、操作の性質で分けて整理する。
講座権限軸
発信(トーク投稿 → 通知発火)
| 操作 | 非会員 | 会員 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| トーク投稿(通常ルーム) | × | ○(※1) | ○(※2) | ○(※2) |
| トーク投稿(講師限定投稿ルーム) | × | × | ○ | ○ |
| トーク投稿(スレッド限定投稿ルーム、スレッド外) | × | × | ○(※4) | ○(※4) |
| トーク投稿(スレッド限定投稿ルーム、スレッド内) | × | ○ | ○ | ○ |
| 自分の投稿を編集 | × | ○ | ○ | ○ |
| 自分の投稿を削除 | × | ○ | ○ | ○ |
| 他人の投稿を削除 | × | × | ○(※3) | ○(※3) |
| 特定トークをアナウンスに設定 / 解除 | × | × | ○ | ○ |
- ※1: 投稿禁止フラグが立っているユーザーはアクセス拒否で投稿できない
- ※2: アーカイブ済みルームでは投稿できない
- ※3: メイン講師 / サブ講師は講師権限で他ユーザー投稿を削除可能
- ※4: スレッド限定投稿の制約は会員のみに適用。講師(メイン・サブ)はスレッド外にも投稿可能(スレッドの親トーク作成等)
受信(トーク通知の着信)
| 操作 | 非会員 | 会員 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| チャンネル通知の受信 | ×(※1) | ○(※2) | △(※4) | △(※4) |
| DM 通知の受信(DM 相手側) | ×(※1) | ○ | ○(※3) | ○(※3) |
| メンション通知の受信 | ×(※1) | ○ | ○ | ○ |
| スレッド通知の受信 | ×(※1) | ○ | ○ | ○ |
| 通知設定の変更(講座 / ルーム / メンション / DM) | ×(※1) | ○ | ○ | ○ |
- ※1: 非会員は該当講座の通知設定レコードを持たないため、通知対象外
- ※2: 通知設定が ON の場合のみ。ルーム個別ミュートでさらに抑制可能
- ※3: DM ルームの通知対象は 仕様として 「DM 相手 + メイン講師 + サブ講師」に固定される(自身の通知設定より優先)
- ※4: チャンネル通知は通知設定の購読登録依存。ルーム作成時のデフォルト登録は「契約済み会員 + ルーム作成者本人」のみで、他の講師は含まれない。自分で通知設定を ON にすれば受信可能
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| トーク投稿 | ×(運営アドミン経由での管理操作のみ、直接投稿権限なし) | (通常と同じ) | × |
| トーク通知の受信 | ×(通常ユーザー経路は未実装) | (通常と同じ) | (通常と同じ、投稿不可が受信に影響しない) |
| 削除済み含むトーク閲覧 | ○(運営アドミン経由) | × | × |
| 通知設定の変更 | ×(自身の通知受信は想定されていない) | ○ | ○ |
投稿禁止フラグの影響範囲: 投稿の入口で弾かれるため、そのユーザーが起点の通知は一切発火しない。受信側の挙動には影響しない。
機能詳細(ふるまい)
通知の発火条件
トーク投稿成功後に非同期で通知が発火する(投稿成功の返却時点では通知未配信)。数秒以内の配信を想定。
投稿が成功しても通知が発火しないケース:
- 非公開ルーム(下書き状態のルーム)への投稿
- アーカイブ済みルームへの投稿(そもそも投稿自体が不可)
- 削除済みトーク(投稿後に削除された場合、後続の通知処理が走っても対象外)
サポートで「投稿したのに通知が来ない」問い合わせを受けた場合は、まず上記 3 ケースを確認する。
通知対象者の決定
投稿種別に応じて以下の集合が作られ、マージして通知対象ユーザーリストとなる(投稿者自身は除外):
- チャンネル購読者(通常ルーム時): そのルームの通知設定が ON のユーザー。ルーム作成時のデフォルトは「契約済み会員 + ルーム作成者本人」。他の講師(メイン・サブ)は自動で含まれない(各自で通知 ON にすれば受信可能)
- DM 対応者(DM ルーム時): 仕様として固定で DM 相手 + メイン講師 + サブ講師。この 3 者は自身の通知設定に関わらず対象(※ただしチャネル ON/OFF 設定は効く)
- メンション対象: 投稿テキストでメンションされ、かつメンション通知 ON のユーザー
- スレッド関連者(スレッドコメント投稿時のみ): 親投稿者 + 兄投稿者 + 親/兄メンション対象
重複は自動的に排除される。
ルーム設定による通知・投稿の制御
| ルーム設定(biz 表記) | 効果 |
|---|---|
| 講師限定投稿 | 会員は投稿不可。メイン講師 / サブ講師のみ投稿可能 |
| スレッド限定投稿 | 会員はスレッド外に投稿不可(スレッド内のみ投稿可能)。講師(メイン・サブ)はスレッド外にも投稿可能(親トークの作成等) |
| 公開 / 非公開 | 非公開のルームでは投稿は可能だが通知は発火しない |
| アーカイブ | 投稿不可、通知発火もしない |
| 過去トーク制限 | 契約開始日以前の投稿は会員側で非表示(通知配信済み分への影響なし) |
通知設定の階層
会員は以下 4 層で通知の着信を制御できる:
- 講座単位 ON/OFF(その講座の通知全般)
- ルーム個別 ON/OFF(特定ルームのミュート等)
- メンション通知 ON/OFF(講座単位)
- DM 通知 ON/OFF(講座単位)
通知設定は部分更新ではなく「有効にしたい項目のみ」送信するリセット型の更新仕様。チャネル単位(Web プッシュ / PushQuay)でも ON/OFF 可能。
配信チャネル
1 回の投稿通知は、Web プッシュ(Firebase Cloud Messaging) と PushQuay の 2 チャネルに同時送信される。ユーザー側の通知設定で、チャネルごとに ON/OFF できる。
デバイストークン
ユーザーは通知を受け取るデバイス(ブラウザ / PushQuay)を最大 3 件 登録できる。4 件目の登録時は最も古いトークンが自動削除される。講座単位でも Web プッシュ受信を有効化 / 無効化できる。
メンション
- 投稿テキストに特殊タグを埋め込むことでメンション
- メンション対象者のうち、権限制約(投稿禁止等)で除外されたユーザーは
@ユーザー名のテキスト表記に自動変換される - メンション対象ユーザーはトークに紐づけて記録され、後続のスレッド通知でも参照される
スレッド
- スレッド = スレッド親 + そのスレッドコメント群の論理単位
- スレッドコメント投稿時は、親・兄の投稿者とメンション対象が通知対象に追加される
- スレッド内のみ表示のスレッドコメントは、通常のチャンネル通知対象からは除外される
投稿の編集・削除
- 自分の投稿はテキスト更新可能
- 削除は論理削除。物理削除は当面非対応
- 講師(メイン / サブ)は他ユーザーの投稿も削除可能
- 編集・削除時に通知は発火しない仕様(再送もされない)。通知は新規投稿時のみ発火する
アナウンス
特定のトークをアナウンスとして昇格・解除できる。アナウンス設定の変更時に通知は発火しない仕様。
関連ドキュメント
- Linear: FIN-294(PRD/PSD フレームワーク本体)
- 関連 PSD(今後作成):
./room.md(トークルーム機能),./post.md(投稿機能)