概要
Phase 2: Ruby 軸チュートリアルを TryRuby ベースで拡充する。コア戦略は puts を共通言語にすること。Smalruby の Ruby → ブロック変換が puts を looks_say にマップする (packages/scratch-gui/src/lib/ruby-to-blocks-converter/looks.js:79-151) ため、同じ puts コードが Smalruby ではスプライトがしゃべり、TryRuby ではコンソール出力されるという連続性が成立する。
設計詳細: docs/tutorial/improvement-plan.md Phase 2 セクション参照。
前提となる基盤実装 (このフェーズの一部として先行)
deck 起動時の環境セットアップ機構 (setup プロパティ)
deck 起動時にタブ・Ruby モード・拡張機能を自動セットアップする横断機構。Phase 2 以降のすべての新規 deck がこれに依存する。
- 新 deck プロパティ
setup: { tab, rubyMode, extensions, rubyVersion }
tips-library.jsx または cards reducer 経由で deck 起動時に適用
activateTab (editor-tab) / setDnclMode (dncl-mode) / vm.extensionManager.loadExtensionURL を呼ぶ
- 冪等性、ロード失敗時のグレースフルデグレード
設計詳細: improvement-plan.md「チュートリアル起動時の環境セットアップ」セクション。
Ruby チュートリアル 7 deck
新カテゴリ rubyBasics 配下:
| Deck ID |
内容 |
TryRuby 対応 |
Smalruby 翻案 |
ruby-basics-1-numbers |
計算 (puts 4 * 10) |
try_ruby_20〜40 |
ネコが「40」としゃべる |
ruby-basics-2-strings |
文字列反転 (puts "スモウルビー".reverse) |
try_ruby_50〜100 |
|
ruby-basics-3-variables |
変数 (name = "ネコ"; puts ...) |
try_ruby_110〜140 |
|
ruby-basics-4-arrays |
配列 (ticket.reverse) |
try_ruby_150〜200 |
|
ruby-basics-5-blocks |
`5.times { |
i |
puts i }` |
ruby-basics-6-methods |
def hello(name) |
try_ruby_350〜420 |
|
ruby-basics-7-next |
TryRuby 導線 |
try_ruby_560 |
「Smalruby で書いた puts コードは TryRuby でもそのまま動くよ」+ 外部リンク |
setup 例
'ruby-basics-1-numbers': {
setup: { tab: 'ruby', rubyMode: 'ruby' },
// ...
}
スコープ
- Lv1 のみ (Lv2/Lv3 は将来課題)
- 1 deck あたり 5〜7 ステップ × 7 deck ≒ 35〜50 枚画像
- TryRuby 外部リンクの実装方法 (新 step プロパティ
externalUrl または既存機構の流用)
DoD
規模見積もり
3〜4 PR (基盤 1 + Ruby deck 2〜3 PR)、1〜2 週間規模。
親 issue
このタスクは チュートリアル全体拡充 の一環。親 issue は別途作成。
関連資料
- 全体設計:
docs/tutorial/improvement-plan.md
- TryRuby 日本語訳:
~/ghq/github.com/ruby/TryRuby/translations/ja/
- Ruby → ブロック変換:
packages/scratch-gui/src/lib/ruby-to-blocks-converter/looks.js
概要
Phase 2: Ruby 軸チュートリアルを TryRuby ベースで拡充する。コア戦略は
putsを共通言語にすること。Smalruby の Ruby → ブロック変換がputsをlooks_sayにマップする (packages/scratch-gui/src/lib/ruby-to-blocks-converter/looks.js:79-151) ため、同じputsコードが Smalruby ではスプライトがしゃべり、TryRuby ではコンソール出力されるという連続性が成立する。設計詳細:
docs/tutorial/improvement-plan.mdPhase 2 セクション参照。前提となる基盤実装 (このフェーズの一部として先行)
deck 起動時の環境セットアップ機構 (
setupプロパティ)deck 起動時にタブ・Ruby モード・拡張機能を自動セットアップする横断機構。Phase 2 以降のすべての新規 deck がこれに依存する。
setup: { tab, rubyMode, extensions, rubyVersion }tips-library.jsxまたはcardsreducer 経由で deck 起動時に適用activateTab(editor-tab) /setDnclMode(dncl-mode) /vm.extensionManager.loadExtensionURLを呼ぶ設計詳細: improvement-plan.md「チュートリアル起動時の環境セットアップ」セクション。
Ruby チュートリアル 7 deck
新カテゴリ
rubyBasics配下:ruby-basics-1-numbersputs 4 * 10)ruby-basics-2-stringsputs "スモウルビー".reverse)ruby-basics-3-variablesname = "ネコ"; puts ...)ruby-basics-4-arraysticket.reverse)ruby-basics-5-blocksruby-basics-6-methodsdef hello(name)ruby-basics-7-nextputsコードは TryRuby でもそのまま動くよ」+ 外部リンクsetup 例
スコープ
externalUrlまたは既存機構の流用)DoD
setupプロパティが 4 観点 (tab / rubyMode / extensions / rubyVersion) で動作rubyBasics)npm run lint緑規模見積もり
3〜4 PR (基盤 1 + Ruby deck 2〜3 PR)、1〜2 週間規模。
親 issue
このタスクは チュートリアル全体拡充 の一環。親 issue は別途作成。
関連資料
docs/tutorial/improvement-plan.md~/ghq/github.com/ruby/TryRuby/translations/ja/packages/scratch-gui/src/lib/ruby-to-blocks-converter/looks.js