lecture(講義)
説明文と図を表示するページ。content は Markdown 形式で記述可能です。
choice(選択式問題)
4択などの選択問題。embedded-choice(穴埋め問題)
文中の{slot1} などをドロップダウンで選択する形式。
quiz(クイズ)
穴埋め+用語の組み合わせなど、より複雑なクイズ形式。wiring(配線問題)
機器同士を線で結ぶ問題。pc | router | cloud | switch | server | loadbalancer
sandbox(ネットワーク構築サンドボックス)
デバイスをキャンバスに配置し、ケーブルで接続する。必要に応じて ConfigPanel で IP 等を設定し、接続と設定の正しさでクリア判定する。- トポロジーのみ (
validationMode: 'topology-only'): 指定された接続ができていればクリア。 - フル設定 (
validationMode: 'full-config'): 接続に加え、各デバイスのexpectedConfig(IP・ゲートウェイ・サブネット等)が一致していればクリア。 - デバイス追加: ドラッグ(PC)または タップで選択 → キャンバスをタップで配置(スマホ対応)。
- 物理/論理ビュー切替、ケーブル種別(
cableType: utp / stp / fiber / wireless)の表示に対応。
packet-sim(パケットシミュレーター)
あらかじめ定義されたトポロジーとシナリオに沿って、パケットの流れをステップ実行で可視化する。- 「送信」で開始し、「次へ」で 1 ホップずつ進める。
- 各ステップでパケットヘッダーの before/after 差分(PacketInspector)、アクション(ActionBadge)、カプセル化/デカプセル化(EncapsulationVisualizer)を表示。
- ステップごとにチャレンジ問題(ChallengeOverlay)を出題可能。
- 物理/論理ビュー、ケーブル種別表示に対応。
ページタイプと実装の対応
授業ページ用のルート(src/routes/courses.$courseId.lessons.$lessonId.tsx)で page.type に応じて表示を切り替えます。ページタイプごとの UI は components/lesson 配下のコンポーネントに委譲されています。
src/routes
courses.$courseId.lessons.$lessonId.tsx
src/components
lesson
LessonContent.tsx
LectureContent.tsx
QuizPuzzleContent.tsx
QuizChoiceContent.tsx
SimpleChoiceContent.tsx
WiringContent.tsx
sandbox
packet-sim
- lecture / choice / embedded-choice / quiz / wiring: LessonContent 経由で上記コンポーネントに分岐してレンダリング
- sandbox: SandboxComponent
- packet-sim: PacketSimComponent