Skip to content

feat(tutorial): Phase 4 - DNCL チュートリアル (基礎 + アルゴリズム + 共通テスト対策) #681

@takaokouji

Description

@takaokouji

概要

Phase 4: 高校生向け DNCL チュートリアルを新設。共通テスト「情報Ⅰ」対策に直結する基礎技能とアルゴリズムを 2 カテゴリ × 計 12 deck で提供する。

設計詳細: docs/tutorial/improvement-plan.md Phase 4 セクション参照。

学習者像

  • 大学入学共通テスト「情報Ⅰ」を受験する高校生
  • 大半は 初めてテキストでプログラミング をする
  • DNCL モードでサンプルプログラムを読めるが、自力で書き上げる経験が乏しい

dnclBasics (基礎技能 6 deck)

Deck ID 内容 DNCL 機能
dncl-basics-1-display 文字や数字を表示する 表示する
dncl-basics-2-variables 変数を使う ← 代入 / = 比較
dncl-basics-3-conditionals もし〜ならば もし ... ならば: / そうでなければ
dncl-basics-4-loops 繰り返す を繰り返す / の間繰り返す: / 増やしながら繰り返す:
dncl-basics-5-arrays 配列を使う 添字、ループとの組み合わせ
dncl-basics-6-functions 関数を定義する NAME(ARGS) を定義する

dnclAlgorithms (アルゴリズム + 試作問題 6 deck)

ictl_example の DNCLv2 サンプル 19 題から共通テスト頻出パターンを抽出:

Deck ID 題材 元サンプル アルゴリズム概念
dncl-alg-1-fizzbuzz FizzBuzz サンプル 13 複合条件分岐、剰余
dncl-alg-2-frequency 出現頻度を数える サンプル 10 カウンタ配列、線形探索
dncl-alg-3-caesar シーザー暗号復号 サンプル 11, 12 モジュロ演算、文字配列
dncl-alg-4-binsearch 二分探索 サンプル 19 分割探索 (試作問題頻出)
dncl-alg-5-greedy-coins 硬貨枚数 (欲張り法) サンプル 17 貪欲法、降順反復
dncl-alg-6-trial-exam 試作問題 第2問 (得票配分) サンプル 14〜16 比例配分、最大剰余法

ゴール

DNCL モード自動切替

Phase 2 で導入する setup プロパティを活用:

'dncl-basics-1-display': {
    setup: { tab: 'ruby', rubyMode: 'dncl' },
    // ...
}

deck 起動時に Ruby タブ + DNCL モードに自動遷移するため、利用者は手動切替不要。

画像戦略

DNCL は文字主体なので Monaco エディタの DNCL ハイライト + 実行結果の 2 ペイン構成。1 deck あたり 5〜6 ステップ × 12 deck = 約 70 枚

DoD

  • dnclBasics 6 deck 追加
  • dnclAlgorithms 6 deck 追加
  • DNCL モード自動切替動作
  • 試作問題 第2問 deck の完答コード掲載 (出典明示)
  • 全 step 画像 (~70 枚)
  • locale 3 ファイル更新
  • npm run lint
  • Playwright で全 deck の起動・進行を確認

規模見積もり

dnclBasics で 1 PR、dnclAlgorithms を 2〜3 PR に分割、合計 3〜4 PR、3〜4 週間規模。

親 issue

このタスクは チュートリアル全体拡充 の一環。親 issue は別途作成。

関連資料

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions