コンテンツ / ドキュメント
コンテンツ / ドキュメント
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
ドキュメントは、講座の補助教材として PDF ファイルを配信するコンテンツ種別。講師がブラウザから PDF をアップロードして公開し、受講者は専用ビューアでブラウザ内プレビューできる。プラン側の設定でダウンロード可否を切り替えられ、ダウンロード許可プランでは受講者がローカル保存、許可外プランでは閲覧のみに制限される。講師は常時ダウンロード可能。
主な利用想定は、講座テキスト・補助資料・チェックリスト等の配信。動画(./movie.md)や記事(./article.md)と同じくコンテンツタブから提供され、公開範囲(一般公開 / 受講者限定 / プラン限定)と入会後 X 日制限の組み合わせで提供範囲を制御できる。アップロード時に PDF の総ページ数が自動的に算出され、一覧やコンテンツ詳細でページ数情報として利用される。
📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):
- 目的: 講座の補助教材として PDF ドキュメントを配信、ブラウザ内プレビュー + ダウンロード
- 誰が使うか: 受講者・未受講者(公開設定次第)/ メイン講師・サブ講師(作成・編集)
- どこで使うか: 講座コンテンツタブからドキュメント一覧 → 個別ドキュメント
- 隣接機能との関係: 動画(
./movie.md)/ 記事(./article.md)/ ライブラリ(./library.md)- CS 問い合わせで頻発する論点: 「PDF が表示されない」「ダウンロードボタンが出ない」(プラン設定)「アップロードできない」
- [本機能特有] FE/BE のサイズ制限大きく乖離: FE 5GB / BE 30MB(直 PUT 経路では BE 検証が効かない可能性)
- [本機能特有] PDF 限定: アップロード可能形式は PDF のみ
- [本機能特有] ダウンロード可否はプラン設定: 講座ごとに
is_downloadable_documentで切替、講師は常時可- [本機能特有] PDF 総ページ数を保持: アップロード時に自動計算
利用シナリオ
シナリオ 1: 講師が PDF をアップロードして公開する
メイン講師またはサブ講師が、講座のドキュメント配信作成画面から PDF ファイルを選択してアップロード。タイトル・サムネイル・公開範囲(一般公開 / 受講者限定 / プラン限定)・公開日時を設定して保存すると、PDF の総ページ数が自動算出され、コンテンツ一覧に並ぶ。公開後は受講者が一覧から開いて内容を確認できる。
シナリオ 2: 受講者がブラウザで PDF を確認する
受講者がコンテンツ一覧からドキュメントを選択すると、専用ビューアで PDF がブラウザ内に表示される。ページ送りやズームでブラウザを離れずに内容を確認できる。学習途中で受講完了をマークすると、受講履歴に反映される。
シナリオ 3: ダウンロード許可プランで PDF をローカル保存する
ダウンロードを許可しているプランでは、ドキュメント詳細画面にダウンロードボタンが表示される。受講者がボタンを押すと PDF がローカルにダウンロードされ、オフラインや印刷で利用できる。ダウンロードを許可していないプランでは、画面上に閲覧用ビューアのみ表示され、ダウンロードボタンは出ない。
シナリオ 4: ファイルを差し替える
公開済みドキュメントの内容を更新したい場合、講師が編集画面から PDF ファイルを差し替える。差し替え後はビューアの表示・ダウンロード対象ともに新しいファイルに切り替わり、総ページ数も自動的に再計算される。タイトルや公開範囲は維持されるため、URL や受講履歴に影響しない。
よくある失敗ケース
- PDF 以外のファイル選択: 拡張子が
.pdfでないファイルはアップロード前に弾かれ、エラー表示 - サイズ超過: 上限を超えるファイルはアップロード前に弾かれる
- 破損 PDF: 総ページ数の自動算出に失敗するケースあり、運営アドミンの一括再計算機能で補修可能
権限別仕様
権限定義は ../user-roles.md 参照。用語は ../terminology.md。
講座権限軸
閲覧
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| ドキュメント閲覧(一般公開) | ○ | ○ | ○ | ○ |
| ドキュメント閲覧(受講者限定) | × | ○ | ○ | ○ |
| ドキュメント閲覧(プラン限定) | × | ○(指定プラン契約者のみ) | ○ | ○ |
| ダウンロード | × | ○(プラン設定 ON 時のみ) | ○(常時可) | ○(常時可) |
作成・編集
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| ドキュメントアップロード | × | × | ○ | ○ |
| メタ情報編集 | × | × | ○ | ○ |
| ファイル差し替え | × | × | ○ | ○ |
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| ドキュメント閲覧 | (通常と同じ) | (通常と同じ) | (通常と同じ) |
| ドキュメント削除 | ○(運営アドミン専用機能) | × | × |
| ダウンロード可否プラン設定の切替 | ○(運営アドミン専用機能) | × | × |
| PDF 総ページ数の一括再計算 | ○(運営アドミン専用機能) | × | × |
📝 レビュー観点:
- ダウンロード可否のプラン設定(
is_downloadable_document)の運用フロー- 講師は常にダウンロード可、受講者はプラン設定次第
機能詳細(ふるまい)
PDF アップロード
- 対応形式: PDF のみ(拡張子
.pdf) - アップロード経路: 講師がブラウザから直接ファイルを選択 → 内部でストレージへ直接送信し、画面側で進捗表示
- 総ページ数の自動算出: アップロード完了後、PDF を解析してページ数を自動的に保存。コンテンツ一覧や詳細でページ数情報として表示される
- 入力チェック: 拡張子が PDF でない場合、サイズ超過の場合は送信前にエラー表示
ブラウザプレビュー
- 専用ビューアで PDF をブラウザ内表示し、受講者はページ送り・拡大縮小で内容を確認できる
- 別アプリやブラウザ外ダウンロードを経由せずに閲覧でき、ダウンロード不可プランでも内容確認は可能
ダウンロード
- 講師(メイン / サブ): 常時ダウンロード可
- 受講者: 講座のプラン設定でドキュメントダウンロードが許可されている場合のみ可。許可されていない場合は画面上にダウンロードボタンが表示されない
- ダウンロード手段: 一時的に有効な保存先 URL を発行する方式(24 時間で失効)。期限切れ後は再度ダウンロード操作が必要
- プラン設定の切替: 講座のプラン設定画面で、ドキュメントダウンロード可否を切り替え可能。切替は即時反映
公開範囲
公開範囲は 3 軸の組み合わせで制御:
- 公開設定: 一般公開(未受講者を含め誰でも閲覧可)/ 受講者限定(その講座の受講者のみ)
- プラン限定: 特定プラン契約者のみに限定(記事・動画と同様の仕組み)
- 入会後 X 日制限: 受講開始から N 日経過後に閲覧可能とする時限公開
- 公開日時予約: 指定日時に自動公開
ファイル差し替え
- 公開済みドキュメントの編集画面から PDF を差し替え可能
- 差し替え後、ビューア表示・ダウンロード対象ともに新ファイルに切り替わる
- 総ページ数は新ファイルに合わせて自動的に再計算される
- タイトル・公開範囲・受講履歴・コンテンツ識別子は維持されるため、URL は変わらず、既存の受講者の閲覧履歴に影響しない
- 旧ファイルは内部で論理的に切り離される
📝 レビュー観点:
- 入力 → 処理 → 出力: PDF アップロード → 総ページ数計算 → メタ情報登録
- エッジケース: 破損 PDF、ページ数 0 PDF、サイズ超過、PDF 以外のファイル試行
- エラー表示: 形式エラー、サイズエラー、アップロード失敗
- 編集・削除の挙動: ファイル差し替え時の旧ファイル削除、削除後の閲覧不可化
- [本機能特有] FE/BE サイズ制限の乖離: dev 下段の改善課題で記録
admin 操作
できる操作
- ドキュメント削除: 運営アドミン専用機能で対応
- 無料公開フラグ切替: 受講者限定 ↔ 一般公開
- ダウンロード可否プラン設定の切替: 運営アドミン代理操作
- PDF 総ページ数の一括再計算: バッチ的な補修機能
詳細は ../admin/contents.md 参照。
実装されていない / 不明
- 運営アドミンによるドキュメント代理編集: 専用経路なし
📝 レビュー観点:
- 不適切ドキュメントの強制非公開化の運用フロー
品質 / 約束事項
- 応答性: アップロードは外部直 PUT、プレビューは PDF レンダリング即時
- 信頼性: ファイルは Wasabi 優先・S3 フォールバック
- 制限値:
- アップロード上限: 1 ファイルあたり 5GB(画面表示の上限値。実運用は数 MB〜数十 MB が中心)
- 対応形式: PDF のみ
- ダウンロード署名付き URL 有効期限: 24 時間
- データ保持: 削除は論理削除、ファイル本体は当面保持
📝 レビュー観点:
- 応答性: 大容量 PDF(数百ページ)のプレビュー時間
- [本機能特有] FE/BE 上限の乖離: 実質ユーザーに適用される値の確定(dev 改善課題)
変更履歴(リリースノート候補)
v2.29.2: 2026-05-01(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
📝 レビュー観点:
- 過去の主要変更(ダウンロード可否プラン設定追加 / 総ページ数取得追加 等)
関連ドキュメント
- 権限定義:
../user-roles.md - 用語辞書:
../terminology.md - 関連 PSD:
./article.md— 記事./movie.md— 動画./library.md— ライブラリ../admin/contents.md— 運営アドミンによるコンテンツ管理