コンテンツ / ライブラリ
コンテンツ / ライブラリ
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
ライブラリ(UI 表記は「セレクション」)は、講座内の複数コンテンツ(記事 / 動画 / ドキュメント)を 1 つの教材グループとして束ねる機能。連続した章立て・連載・テーマ別の教材集として整理することで、受講者がグループ単位で学習を進められる。グループ内はディレクトリ(章 / 章のような区切り)を作成して整理可能で、ディレクトリの中にコンテンツを並べる 2 階層構成。ディレクトリのネストはできない。
主な利用想定は、複数回に分けた連載講義、テーマ別の教材セット、入門〜応用の段階別整理など。1 つのコンテンツ(記事 / 動画 / ドキュメント)は複数のライブラリに同時所属でき、別の章立てや別グループでの再活用が可能。受講者が開いた履歴は内部に記録され、ライブラリ内の進捗(コンテンツ何件のうち何件受講完了したか)として表示される。
biz 表記: UI 上は「セレクション」で統一。「ライブラリ」は内部呼称で biz/CS 提示文書では「セレクション」を使う。本 PSD 上段では機能を識別する目的で「ライブラリ(セレクション)」と併記する場面があるが、ユーザー向け案内では「セレクション」のみを用いる。
📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):
- 目的: 講師が複数コンテンツをまとめて教材グループ(講座 / 連載 / 章立て)として配信し、受講者がグループ単位で連続受講
- 誰が使うか: 受講者・未受講者(閲覧)/ メイン講師・サブ講師(作成・編集)
- どこで使うか: 講座コンテンツタブのライブラリセクション、講師は配信メニューのライブラリ管理
- 隣接機能との関係: 記事(
./article.md)/ 動画(./movie.md)/ ドキュメント(./document.md)/ セレクション(./selection.md、ライブラリのラッパー再生画面)- CS 問い合わせで頻発する論点: 「セレクションとライブラリの違い」(実装は同一)、「ディレクトリの並び替え」「コンテンツの表示順」
- [本機能特有] UI 「セレクション」 vs 実装「library」: 表記が乖離している。biz 文言は「セレクション」を使い、実装識別子は dev 下段に集約
- [本機能特有] 2 階層フラット: ライブラリ → ディレクトリ → コンテンツ の 2 段、ディレクトリのネストは不可
- [本機能特有] プラン横断の限定公開なし:
library_limited_planテーブル不在、ライブラリ単位の公開範囲は所属講座のみ
利用シナリオ
シナリオ 1: 講師が章立てした連続教材を作成する
メイン講師またはサブ講師が、講座のセレクション作成画面でセレクション名・概要を入力。続けてディレクトリ(章)を複数作成し、各ディレクトリに既存コンテンツ(記事 / 動画 / ドキュメント)を割り当てて並び順を整える。保存するとセレクションが公開され、受講者はコンテンツタブから一覧で確認できる。
シナリオ 2: 受講者がセレクションを連続受講する
受講者が講座のコンテンツタブからセレクションを選択し、ディレクトリ単位に整理されたコンテンツを順に開いて学習。各コンテンツの受講完了状況が集計され、セレクション単位の進捗(何件中何件受講完了)が表示される。閲覧履歴は内部に記録され、再訪時に続きから受講しやすい状態を保つ。
シナリオ 3: 既存コンテンツを別セレクションに使い回す
1 つの記事や動画を、入門編セレクションと応用編セレクションの両方に登録するなど、複数のセレクションへ同時所属させて再活用できる。コンテンツ自体の編集・削除はコンテンツ単位で管理されるため、片方のセレクションでメタ情報を変更したらもう一方にも反映される。
シナリオ 4: ディレクトリで章立てを整理し直す
講師がセレクション編集画面から、ディレクトリの追加・削除・並び替え、ディレクトリ間でのコンテンツ移動をドラッグ操作で行える。ディレクトリ未所属のコンテンツも並べておけるため、章立てが固まる前から仮置きできる。
よくある失敗ケース
- ディレクトリのネスト試行: ディレクトリの中にディレクトリは作れない(2 階層フラットのみ)
- タイトル文字数超過: セレクション名 20 文字 / 概要 60 文字を超えるとエラー表示
- 空の概要: 概要は必須入力
権限別仕様
権限定義は ../user-roles.md 参照。用語は ../terminology.md。
講座権限軸
閲覧
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| ライブラリ一覧閲覧 | ○(コンテンツ無いものはフィルタ) | ○ | ○ | ○ |
| ライブラリ詳細閲覧(中身一覧) | ○(公開設定次第) | ○ | ○ | ○ |
| 各コンテンツの再生 | ○(個別コンテンツの公開設定次第) | ○ | ○ | ○ |
| 閲覧履歴の記録 | × | ○ | ○ | ○ |
作成・編集
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| ライブラリ作成 | × | × | ○ | ○ |
| メタ情報編集(タイトル・概要) | × | × | ○ | ○ |
| ディレクトリ追加・編集・削除 | × | × | ○ | ○ |
| コンテンツの追加・並び替え | × | × | ○ | ○ |
| 削除 | × | × | ○ | ○ |
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| ライブラリ閲覧 | (通常と同じ) | (通常と同じ) | (通常と同じ) |
| ライブラリ既読データの補正 | ○(運営アドミン専用機能) | × | × |
| ライブラリの代理作成・編集・削除 | ×(運営アドミン専用経路は存在しない) | × | × |
📝 レビュー観点:
- 講師が他講座のライブラリを編集できないことの確認
- 運営アドミン代理操作経路の必要性
機能詳細(ふるまい)
階層構造
- 2 階層フラット: セレクション → ディレクトリ → コンテンツ
- ディレクトリのネスト(ディレクトリの中のディレクトリ)は不可
- ディレクトリ未所属のコンテンツも同一セレクション内に並べることが可能(仮置き / カテゴリ分け不要のケース対応)
並び順
- セレクション間(同一講座内のセレクションの並び順)
- ディレクトリ間(同一セレクション内のディレクトリの並び順)
- コンテンツ間(同一ディレクトリ内、または未所属コンテンツ間の並び順)
それぞれに並び順フィールドを持ち、編集画面のドラッグ操作で変更可能。
コンテンツの所属
- 1 つのコンテンツ(記事 / 動画 / ドキュメント)は複数のセレクションに同時所属可能
- 別セレクションへの追加でコンテンツが複製されることはなく、編集はコンテンツ単位で全所属先に反映される
- セレクションから外す操作はそのセレクション内の所属解除のみで、コンテンツ自体は削除されない
閲覧履歴
- 受講者がセレクションを開くと内部に閲覧履歴が記録される
- 続きから受講する導線や、セレクション一覧での既読/未読表示に利用される
公開範囲
- セレクション自体には独立した公開範囲設定(プラン限定など)はない
- セレクション一覧では、各コンテンツの公開設定が反映され、受講者が閲覧可能なコンテンツが 1 件もないセレクションは一覧でフィルタされる
- 各コンテンツの公開範囲(一般公開 / 受講者限定 / プラン限定 / 入会後 X 日制限)はコンテンツ単位の設定がそのまま適用される
進捗表示
- セレクション内のコンテンツのうち受講完了済みが何件かを集計し、進捗として表示
- 講師は「受講者がどこまで進んでいるか」のおおよその把握、受講者は学習履歴の確認に利用できる
📝 レビュー観点:
- 入力 → 処理 → 出力: ライブラリ作成 → ディレクトリ・コンテンツの並び替え(D&D)→ 保存
- エッジケース: ディレクトリ削除時の所属コンテンツ(未所属に戻る or 削除)、並び替え中の他編集との衝突
- エラー表示: タイトル未入力エラー、文字数エラー
- [本機能特有] FE/BE 制限値: タイトル DB 255 / FE 20、概要 DB 255 / FE 60、ディレクトリタイトル DB 1000 / BE 255 で乖離
- [本機能特有] 「セレクション」用語: UI 上の表記は「セレクション」、要 biz 整理
admin 操作
できる操作
- ライブラリ既読データの補正: 運営アドミン専用機能(Firestore 既読の整合性メンテ)
詳細は ../admin/master.md 参照。
実装されていない / 不明
- 運営アドミンによるライブラリの代理作成・編集・削除: 専用経路なし — 今後の改善課題
- 運営アドミン専用機能の不在: ライブラリ自体の運営アドミン操作経路は未提供
📝 レビュー観点:
- CS で「ライブラリが消えた」「並び順が崩れた」相談時の運営側対応経路の必要性
品質 / 約束事項
- 応答性: 一覧取得・編集は同期処理、編集画面の並び替えは画面内で即時反映、保存時にまとめて確定
- 信頼性: 編集時は変更内容が確定保存されるまで反映されない(途中操作でブラウザを閉じても保存前なら破棄)
- 制限値:
- セレクション名: 1〜20 文字(必須)
- 概要: 1〜60 文字(必須)
- ディレクトリタイトル: 1〜255 文字(必須)
- セレクション数 / ディレクトリ数 / コンテンツ数: 仕様上の固定上限なし(運用上は数十〜数百件規模が想定)
- データ保持: 削除は論理削除
📝 レビュー観点:
- [本機能特有] FE/BE 文字数の乖離: タイトル / 概要 / ディレクトリタイトルすべてで FE 制限が実質適用
- 大量ライブラリ・ディレクトリ時のレスポンス時間
変更履歴(リリースノート候補)
v2.29.2: 2026-05-01(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
📝 レビュー観点:
- 過去の主要変更(ディレクトリ機能追加 /
library_directory_contents廃止 +library_contents.library_directory_id列追加 等)
関連ドキュメント
- 権限定義:
../user-roles.md - 用語辞書:
../terminology.md - 関連 PSD:
./article.md— 記事./movie.md— 動画./document.md— ドキュメント./selection.md— セレクション(ライブラリの連続受講 UI)../admin/master.md— 運営アドミンによるライブラリ既読補正