背景
先生が自身で作成した課題(説明ページ: テキスト + 画像、スタータープロジェクト)を、インターネットを通じて全国の先生に共有し、再利用できる仕組みを作る。
具体的な利用イメージ:
- スモウルビー甲子園の入門課題、メッシュ(通信)の課題などを授業で実施した先生が、その課題を共有する
- 学習指導案・研究発表資料などの補足資料は外部 URL(Google Drive / Google Documents へのリンクを想定)として課題に添付する
- 他の先生は共有された課題を閲覧・絞り込みし、自分のクラスに取り込む(再利用)とスタータープロジェクトごと読み込まれ、そのまま授業を進められる
既存資産との関係
- 課題モデルはそのまま使う: 課題の説明は現行どおり「画像 + テキストのページ」+ スタータープロジェクト(S3
{classroomId}/assignment/)。追加は補足資料用 URL のみ
- 再利用の複製機構は既存:
POST /classrooms/{id}/duplicate が説明・画像・スターターの S3 コピーを既に実装している(共有→取り込みはこの機構の共有ストア版)
- 組み込みテンプレート機能(
classroom-assignment-templates/)は未リリース・導線撤去済み。本 EPIC が求めるのはスモウルビーに組み込んだテンプレートではなく、全国の先生が作った課題を共有する仕組み(テンプレート lib は「pages + 推奨ルーブリック軸」というフォーマットの先行事例としてのみ参照)
要件
機能要件
| # |
要件 |
| F1 |
先生が自分の課題を共有ライブラリに公開できる(説明ページ + スタータープロジェクト + 補足資料 URL) |
| F2 |
補足資料 URL を課題に添付できる。共有時に「どのような URL を期待しているか」(学習指導案などを配置した Google Drive / Google Documents 等の閲覧リンク)を明示し、無関係な URL の投稿を抑止する |
| F3 |
投稿者プロフィールを表示する(著作権が投稿者にあることを明確にするため)。ただし個人情報は最小限とする |
| F4 |
日本の学校に合わせた属性を持つ: 学校種(小/中/高 など)、学年、教科 など |
| F5 |
共有課題の全体閲覧と属性による絞り込みができる |
| F6 |
他の先生が共有課題を自分のクラスに取り込める(スタータープロジェクト込みの複製。取り込み後は自由に編集可能なスナップショット) |
| F7 |
投稿者は自分の共有課題を更新・取り下げできる |
| F8 |
不適切な投稿への対処手段がある(通報 or 運用者削除。方式はスパイクで決定) |
非機能要件
| # |
要件 |
| N1 |
全国の先生が利用するため、ある程度の数の投稿(数百〜数千件規模)に耐える閲覧・絞り込み |
| N2 |
共有課題は保存期限(TTL)の対象外(永続。クラス機能の 90 日 TTL と分離する) |
| N3 |
保持する個人情報は最小限(表示名 + 任意の所属程度。連絡先は持たない) |
| N4 |
公開 UGC としての安全性(利用規約・ライセンス整理、公開範囲の設計) |
アーキテクチャ方針(初案 — スパイクで確定)
infra/smalruby-classroom の拡張として実装(課題フォーマット・先生認証・複製機構を共有するため)
- 新 DynamoDB テーブル
SharedAssignments{suffix}(TTL なし・永続)+ 絞り込み用インデックス
- 新 S3 プレフィックス or 新バケット(既存バケットは全体に 365 日 lifecycle があるため、共有課題の実体は期限の当たらない場所に置く必要がある)
- 投稿 = 課題のスナップショットを共有ストアにコピー / 取り込み = 共有ストアから自クラスに複製(既存 duplicate の応用)
Sub-issues
スパイクで決める主な論点(Decision Log はスパイク完了時にここへ転記)
- 閲覧の公開範囲(ログイン不要の全公開 vs 先生ログイン必須)
- 補足資料 URL の制約方式(ガイダンス表示のみ / https 必須 / ドメイン許可リスト)
- ライセンス・利用規約(CC BY 等の既存ライセンス vs 独自規約)
- モデレーション方式(事後通報型 vs 事前承認型)と運用体制
- 属性タクソノミの具体(学校種 × 学年 × 教科 + 自由タグ?)
- プロフィールの項目(表示名・所属の扱い)
- ストレージ構成(新バケット vs プレフィックス分離)と配信方式
- 検索・絞り込みの実装方式(規模想定に対する GSI 設計)
🤖 この EPIC は Claude Code が起案しました。スパイク(S0)で詳細設計の壁打ちを行い、決定後に実装 sub-issue を展開します。
背景
先生が自身で作成した課題(説明ページ: テキスト + 画像、スタータープロジェクト)を、インターネットを通じて全国の先生に共有し、再利用できる仕組みを作る。
具体的な利用イメージ:
既存資産との関係
{classroomId}/assignment/)。追加は補足資料用 URL のみPOST /classrooms/{id}/duplicateが説明・画像・スターターの S3 コピーを既に実装している(共有→取り込みはこの機構の共有ストア版)classroom-assignment-templates/)は未リリース・導線撤去済み。本 EPIC が求めるのはスモウルビーに組み込んだテンプレートではなく、全国の先生が作った課題を共有する仕組み(テンプレート lib は「pages + 推奨ルーブリック軸」というフォーマットの先行事例としてのみ参照)要件
機能要件
非機能要件
アーキテクチャ方針(初案 — スパイクで確定)
infra/smalruby-classroomの拡張として実装(課題フォーマット・先生認証・複製機構を共有するため)SharedAssignments{suffix}(TTL なし・永続)+ 絞り込み用インデックスSub-issues
スパイクで決める主な論点(Decision Log はスパイク完了時にここへ転記)
🤖 この EPIC は Claude Code が起案しました。スパイク(S0)で詳細設計の壁打ちを行い、決定後に実装 sub-issue を展開します。