Skip to content

feat(tutorial): add ruby-basics-1-numbers deck (Phase 2)#685

Merged
takaokouji merged 5 commits into
developfrom
feature/tutorial-ruby-basics-1-numbers
May 11, 2026
Merged

feat(tutorial): add ruby-basics-1-numbers deck (Phase 2)#685
takaokouji merged 5 commits into
developfrom
feature/tutorial-ruby-basics-1-numbers

Conversation

@takaokouji
Copy link
Copy Markdown

Summary

Phase 2 の最初の Ruby チュートリアル deck を追加します。新カテゴリ rubyBasics「Ruby のきほん」を新設し、TryRuby を参考にした puts ベース の計算チュートリアルを 6 ステップで提供します。

設計上の特徴:

Steps (Lv1 only)

  1. イントロ: Rubyで計算してみよう!
  2. 最初の puts: puts 2 + 6 を実行 (コード挿入)
  3. 実行: 緑の旗を押してネコが「8」としゃべるのを確認
  4. 他の演算: puts 4 * 10 / puts 30 / 4 / puts 5 - 12 (コード挿入)
  5. 自由編集: 数字を好きに変えて自分だけの計算
  6. TryRuby 導線: 「ここで書いた puts のコードは本物の Ruby でも同じように動くよ」+ 外部リンク示唆

Changes

File Change
tutorial-tags.js CATEGORIES.rubyBasics を追加
library.jsx 「Ruby のきほん」カテゴリラベル追加
decks/index.jsx ruby-basics-1-numbers deck 定義 + setup: {tab:'ruby', rubyMode:'ruby'} + サムネイル import
decks/{ja,en}-steps.js 6 step 画像の import 登録
decks/steps/ruby-basics-1-*.png NEW — Playwright で生成した 6 step 画像
decks/thumbnails/ruby-basics-1-numbers.jpg NEW — ImageMagick で生成したライブラリサムネイル
locales/{en,ja,ja-Hira}.js deck 名・step タイトルの 3 言語翻訳
docs/tutorial/progress.md Phase 2 deck 進捗を 1/7 に更新
tools/playwright-verify/generate-ruby-basics-1-steps.mjs NEW — step 画像生成 (将来の画像更新に再利用可)
tools/playwright-verify/verify-ruby-basics-1.mjs NEW — deck 動作確認

Verification

[ruby1] categories = ["始めましょう","通信入門 ① …","通信入門 ② …","通信入門 ③ …","Ruby のきほん"]
[ruby1] OK: Ruby のきほん category visible
[ruby1] card open: true
[ruby1] active tab name: ルビー
[ruby1] OK: Ruby tab auto-activated by setup
[ruby1] localStorage dnclMode = false
[ruby1] OK: DNCL mode is off
[ruby1] PASS: ruby-basics-1-numbers deck verified

bin/dx bash -c "cd packages/scratch-gui && npm run lint" 緑。

Test plan

  • CI: lint / unit / integration
  • 手動: tipsLibrary を開き 5 カテゴリ目に「Ruby のきほん」が表示される
  • 「Rubyで計算してみよう」をクリック → Ruby タブが自動で開く / DNCL は無効
  • コード挿入ステップで puts 2 + 6 が Monaco に貼り付く
  • 緑の旗を押すとスプライトが「8」としゃべる
  • 既存 deck (setup なし) は従来通り開ける (デグレなし)

Image quality note

Step 画像は Playwright MCP で Ruby タブの状態を素直に撮影したものです。文字主体で UI 内容は正確ですが、Phase 1 の Mesh 系列 deck のような演出 GIF にはなっていません。実運用で十分な品質ですが、後続 PR で個別に磨き込む余地があります (generate-ruby-basics-1-steps.mjs が再利用可能)。

Related

🤖 Generated with Claude Code

Phase 2 の最初の Ruby チュートリアル deck を追加。新カテゴリ「Ruby のきほん」
(`rubyBasics`) を新設し、TryRuby を参考にした puts ベースの計算チュートリアル
を 6 ステップで提供する。

deck 起動時に setup プロパティで Ruby タブ + Ruby モードに自動遷移するため、
利用者は tipsLibrary からクリックするだけで適切な環境でチュートリアルが始まる。

ステップ構成 (Lv1 のみ):
  1. イントロ: Rubyで計算してみよう!
  2. puts 2 + 6 を実行
  3. 緑の旗を押すとネコが「8」としゃべる
  4. かけ算・わり算・ひき算も試す
  5. 数字を好きに変えて自由に計算
  6. TryRuby へ誘導 (「ここで書いた puts のコードは本物の Ruby でも動くよ」)

puts/print/p は scratch-gui の Ruby → ブロック変換で looks_say にマップ
されているため (packages/scratch-gui/src/lib/ruby-to-blocks-converter/looks.js)、
学習者は Smalruby で書いたコードをそのまま TryRuby や標準 Ruby に持ち込める。

- tutorial-tags.js: CATEGORIES.rubyBasics 追加
- library.jsx: 「Ruby のきほん」ラベル追加
- decks/index.jsx: deck 定義 + setup プロパティ {tab:'ruby', rubyMode:'ruby'}
- decks/{ja,en}-steps.js: 6 step 画像 import
- decks/steps/ruby-basics-1-*.png: Playwright で生成した step 画像 6 枚
- decks/thumbnails/ruby-basics-1-numbers.jpg: ImageMagick で生成したサムネイル
- locales/{en,ja,ja-Hira}.js: deck 名 / step タイトルの 3 言語翻訳
- docs/tutorial/progress.md: Phase 2 deck 進捗を 1/7 deck に更新
- tools/playwright-verify/generate-ruby-basics-1-steps.mjs: step 画像生成スクリプト
- tools/playwright-verify/verify-ruby-basics-1.mjs: deck 動作確認スクリプト
  (5 カテゴリ表示 / deck 起動 / Ruby タブ自動切替 / DNCL off / step 進行 を検証)

Refs: #679, #682

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

takaokouji and others added 4 commits May 11, 2026 17:56
…TryRuby link

PR レビューでの指摘 2 点を修正:

1. **すべての step スクリーンショットに ERROR が表示されていた問題**
   原因: Monaco 0.55.1 の内部 `_acceptDeleteRange` で `Cannot read properties
   of undefined (reading 'substring')` がスローされ、エディタが全行を error
   マーカーで埋める。Playwright 自動化中の rapid setValue で再現する。
   修正: Playwright + Monaco でのスクリーンショット生成をやめ、ImageMagick
   でクリーンなコードカード画像 (720x420) を生成する方式に切り替え。Monaco
   非依存のため安定 + ERROR 表示が消える。

2. **「TryRuby へ」と書きながら実際のリンクが無かった問題**
   修正: deck の最終ステップを `externalResources` 形式に変更
   (chat-3-mesh-3 の Kairyudo リンクと同じパターン)。クリック可能な
   TryRuby カードとして `https://try.ruby-lang.org/ja/` を表示する。

その他の変更:
- 旧 `steps/ruby-basics-1-6-tryruby.png` を `thumbnails/ruby-basics-1-tryruby.png`
  に移動 (externalResources の img は thumbnails/ から読む)
- `rubyBasics1Step6` 画像 import と locale step6.title を削除
- 新 locale key `gui.howtos.ruby-basics-1-numbers.external.tryruby.name` を追加
- サムネイル `ruby-basics-1-numbers.jpg` も統一スタイル (dark bg + monospace) に更新
- verify スクリプトに「deck が TryRuby URL を宣言しているか」のチェックを追加
- 画像生成スクリプトを Playwright → ImageMagick に書き換え (再生成可能)

Refs: #679, #682, #685

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
TryRuby は URL パスでの言語指定 (`/ja/` など) を受け付けない仕様のため、
ルート URL のみを使用する。

- decks/index.jsx: externalResources.tryruby.url を `/ja/` → `/` に修正
- generate-ruby-basics-1-steps.mjs: TryRuby カード画像の URL 表記を更新
- thumbnails/ruby-basics-1-tryruby.png: 上記スクリプトで再生成
- improvement-plan.md: 同様に修正し、TryRuby の URL 仕様について注記を追加

Refs: #679, #685

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…choices)

ruby-basics-1-numbers の最終ステップを 1 択 (TryRuby のみ) から 2 択に拡張。
これまでは「TryRuby に行く」ボタンしか無く、Ruby チュートリアルを終えた
利用者がそのままサイトを離脱してしまっていた。次に「スモウルビーで他の
チュートリアルを試す」選択肢を同列で並べ、tipsLibrary に戻れるようにする。

実装:
- src/components/cards/cards.jsx (Smalruby マーカー追加): externalResources の
  各エントリで `action: 'openTipsLibrary'` を宣言できるよう拡張。`url` の
  代わりにこの action を持つカードは <a target="_blank"> ではなく <button>
  として描画し、クリックで `onShowAll` (= dispatch closeCards + openTipsLibrary)
  を呼ぶ。
- decks/index.jsx: ruby-basics-1-numbers の最終ステップに
  `smalrubyTutorials: { action: 'openTipsLibrary', img, name }` を追加。
  TryRuby と同列の 2 つのカードとして並ぶ。
- thumbnails/ruby-basics-1-tryruby.png: 利用者提供の TryRuby スクリーンショット
  (try ruby ロゴ + 「30分ありますか?」ヒーロー文) に置き換え。生成版より
  本物の TryRuby UI を見せられる。
- thumbnails/ruby-basics-1-more-tutorials.png: 「チュートリアル一覧へ」と
  伝える Smalruby カード画像を新規追加 (ImageMagick で生成、Smalruby brand red)。
- locales/{en,ja,ja-Hira}: `ruby-basics-1-numbers.external.tutorials.name`
  追加。
- smalruby-markers.md: 新しい「internal resource action」マーカーを記録。
- verify-ruby-basics-1.mjs: 最終ステップが両 externalResources を持ち、
  tryRubyUrl が正規ルート URL、tutorialsAction が openTipsLibrary であることを
  bundle 経由で検証。

Refs: #679, #685

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR レビューでの指摘を反映:

1. **TryRuby サムネイル差し替え**
   従来の画像は上端の「try ruby」ロゴが 200x100 表示領域で見切れていた。
   利用者提供の 859x430 (2:1 アスペクト調整済み) 版に置き換え、ロゴと
   ヒーローテキストの両方が収まるようにする。

2. **TryRuby カードの文言を簡潔に変更**
   「TryRuby でもっとRubyを学ぶ — ここで書いたputsはそのまま動きます」
   → 「外部サイト「try ruby」で詳しくRubyを学ぶ」
   外部リンクであることが一目で分かる短い案内に統一。

3. **「スモウルビーで他のチュートリアル」カードを削除**
   cards UI の下部に既に「もっと見る」ボタンがあり、これが同じく
   tipsLibrary を開く動作 (`onShowAll` → closeCards + openTipsLibrary)
   を持っていたため、追加カードは冗長だった。重複 UI を解消し、
   externalResources に追加した内部アクション機構もまるごと revert する。

revert された変更:
- src/components/cards/cards.jsx: PreviewExternalStep の Smalruby マーカー
  (action: 'openTipsLibrary' サポート) を削除し、upstream の <a href> 一本に
  戻す
- .claude/rules/scratch-gui/smalruby-markers.md: 関連エントリ削除
- src/lib/libraries/decks/index.jsx: smalrubyTutorials externalResource を
  削除、import も削除
- thumbnails/ruby-basics-1-more-tutorials.png: 削除
- locales/{en,ja,ja-Hira}.js: tutorials.name エントリ削除、tryruby.name を
  新文言に置き換え
- verify-ruby-basics-1.mjs: tutorials assertion を削除し、TryRuby 単独の
  検証に簡略化

Refs: #679, #685

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@takaokouji takaokouji merged commit fc4a313 into develop May 11, 2026
9 checks passed
@takaokouji takaokouji deleted the feature/tutorial-ruby-basics-1-numbers branch May 11, 2026 13:27
github-actions Bot pushed a commit that referenced this pull request May 11, 2026
…ial-ruby-basics-1-numbers

feat(tutorial): add ruby-basics-1-numbers deck (Phase 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant