Skip to content

feat(tutorial): blockBasics 第1章 4 deck(ネコからにげるゲーム冒頭)(#957) - #970

Open
smalruby3-editor-bot[bot] wants to merge 15 commits into
developfrom
topic/autopilot-957
Open

smalruby3-editor-bot[bot] wants to merge 15 commits into
developfrom
topic/autopilot-957

Conversation

@smalruby3-editor-bot

@smalruby3-editor-bot smalruby3-editor-bot Bot commented Jul 11, 2026 •

Copy link
Copy Markdown

Summary

書籍『小学生から楽しむ きらきらRubyプログラミング』第1章「ネコからにげるゲーム」の抜粋プロモとして、blockBasics カテゴリに 4 deck を追加します(チュートリアル拡充 Phase 3 / EPIC #680 の第1章)。#956 で用意した book-promo 基盤・block 軸タクソノミー、#962 で確定した書誌情報・出典スニペットの上に実装しています。

Changes Made

  • categories/block-series.jsx(stub → 実装)に 4 deck:
    • block-basics-lv0 — 完成プログラムを「コード挿入」で動かす体験
    • block-basics-lv2 — 同じゲームをブロックで手組み
    • block-basics-lv3 — 同じゲームを Ruby で書く(setup: {tab:'ruby', rubyMode:'ruby'})
    • block-basics-advanced — 【発展】完成デモを動かして見せるだけ(Lv0 相当)
  • 各 deck は book-promo.jsx(feat(tutorial): Block 軸の共通基盤整備(2 カテゴリ taxonomy + 書籍プロモ共通要素 + locale) #956)の共通ファクトリで 冒頭に書誌 step / 末尾に「続きは書籍で」+ 購入リンク step を持つ。発展 deck は bookAdvancedClosingStep。
  • 完成プログラム(when_flag_clicked / loop / point_towards("_mouse_") / move / if touching?("_mouse_") / say)は docs/tutorial/book-kirakira-ruby-source.md 第1章に準拠。
  • locale 3 ファイル: block-series.locale.js の ja / jaHira / en に per-deck 文字列を追加(ja と jaHira は対で同数)。カテゴリ見出し gui.library.blockBasics は feat(tutorial): Block 軸の共通基盤整備(2 カテゴリ taxonomy + 書籍プロモ共通要素 + locale) #956 で library.jsx に定義済み。
  • step 画像 20 枚 + サムネイル 4 枚 を ja-steps.js / en-steps.js に登録。

画像は実キャプチャ済み

step 画像 20 枚・サムネイル 4 枚は、当初のプレースホルダから dev server での実キャプチャに差し替え済みです(コミット 595998af)。実体は 9 種のユニーク画像で、シリーズ内の共通操作は .claude/rules/scratch-gui/tutorial.md「画像の流用ルール」に従って流用しています:

画像の内容 使っている step
ステージの実行結果(ネコ) 11 step(各 deck の intro / run、書誌 step、購入リンク step)
完成プログラムのブロック画像 4 step(Lv0 挿入 / Lv0 変更 / Lv2 完成 / 発展 挿入)
Lv2 の組み立て途中ブロック(2 種) 2 step
Ruby エディタ(コード表示 / 変更ハイライト) 3 step(Lv3 タブ切替・挿入・変更)
deck サムネイル(4 種すべて別画像) 4 deck

書誌情報(book-promo.jsx の BOOK)も確定済みです(日経BP / ISBN 978-4-8222-8639-2 / 版元ページ URL)。

Test Coverage / Verification

  • npm run lint(scratch-gui, --max-warnings 0)緑(eslint + prettier)
  • npm run build:dev 成功(deck 定義・画像 import が webpack で解決)
  • tools/autopilot/bin/pw-check(headless)で 4 deck すべてが起動・カード描画を確認。?tutorial=blockBasicsLv0 で book-promo 冒頭 step の書誌情報が正しく補間されることを確認。
    • 注: startTutorial step 以降の進行はスタートボタン起動が必要(全 deck 共通の設計)。

Docs

  • docs/tutorial/progress.md の Phase 3 進捗を更新。

Related Issues

Closes #957 / Part of #680

書籍「きらきらRuby」第1章の抜粋プロモとして blockBasics カテゴリに 4 deck を追加:

- block-basics-lv0(コード挿入体験)/ lv2(ブロック手組み)/ lv3(Ruby, setup ruby)

- block-basics-advanced(Lv0 のみ・完成デモ)

各 deck は book-promo.jsx の共通ファクトリで冒頭に書誌 step・末尾に購入リンク step を持つ。

locale は block-series.locale.js の ja/jaHira/en に追加、step 画像 20 枚 + サムネイル 4 枚を登録。

step 画像はプレースホルダ(本番スクリーンショットは headful キャプチャ待ち)。

完成プログラムは docs/tutorial/book-kirakira-ruby-source.md 第1章 に準拠。

Closes #957

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🤖 autopilot autopilot が処理対象にした Issue/PR(daemon が付与) label Jul 11, 2026
@smalruby3-editor-bot

smalruby3-editor-bot Bot commented Jul 11, 2026 •

Copy link
Copy Markdown
Author

🤖 autopilot status

field value
Status Review
AI Status —
HITL Yes
Size large

Linked issue #957. Maintained by autopilot (single writer); do not edit.

@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 11, 2026
@smalruby3-editor-bot
smalruby3-editor-bot Bot marked this pull request as ready for review July 11, 2026 00:21
@github-actions

Copy link
Copy Markdown

🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/topic/autopilot-957/

smalruby3-editor-bot Bot and others added 2 commits July 11, 2026 01:07
…sics decks

新規 block-basics 4 deck に直接の単体テストが無かった (ruby-basics-decks.test.js
の先例あり)。deck 配線・ロケール網羅・book-promo の冒頭/末尾 step・コード変換・
step 画像登録を guard するテストを追加する。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@smalruby3-editor-bot

Copy link
Copy Markdown
Author

[Must] 新規 block-basics 4 deck に対する直接の単体テストが無かった。ruby-basics-decks.test.js という同種の先例(deck 配線・ロケール網羅・コード変換を guard)があるにもかかわらず、本 PR の deck は block-series-foundation.test.js(#956 の基盤 = book-promo helper / カテゴリのみ)でしかカバーされておらず、deck 定義そのもの(step 形状・ロケール id の欠落・code スニペットの変換可否・step 画像キーの登録漏れ)が退行検知の穴になっていた。

→ 対応済み: test/unit/lib/libraries/decks/block-series-decks.test.js を追加(ruby-basics-decks.test.js に倣う)。4 deck の category/urlId/step 数、冒頭=書誌 step・末尾=購入リンク(externalUrl) step、全 message id が ja/ja-Hira/en で解決すること、全 step 画像キーが ja-steps/en-steps に登録済みであること、code スニペット(Lv0/Lv3/発展)がエラーなくブロック変換されること、Lv2 は code-insert step を持たないこと、Lv3 の setup: {tab:'ruby', rubyMode:'ruby'} を検証。24 ケース pass / npm run lint 緑。

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

[FYI] step 画像 20 枚・サムネイル 4 枚は配色識別のみのプレースホルダで、PR 本文でも明記のとおり本番スクリーンショットは headful セッションでの差し替えが必要(.claude/rules/scratch-gui/tutorial.md のキャプチャ手順)。ファイル名は本番差し替え時にそのまま使える命名になっているためコード変更は不要だが、この PR をもって第1章 deck が「完成」ではなく、公開前に headful での画像差し替えフォローが残っている点を人間レビューで認識してほしい(DoD の headful 引き継ぎ相当)。書誌情報(book-promo.jsx の BOOK)も publisher/isbn が空・title/url がプレースホルダのままだが、これは #956/#962 の範疇で本 PR の責務外。

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 敵対的レビュー完了。指摘 2 件(Must 1 / Question 0 / FYI 1)。Must は修正済み(テスト追加)。正確性(setup が deck-setup.js で消費・code スニペットの allowedBlocks / point_towards("_mouse_") 変換・externalUrl/startTutorial/nameMessageId の消費)、ロケール(ja/ja-Hira/en=各25キーで対整合)、prettier ホワイトリスト、画像登録の網羅は確認済み。

headful Playwright MCP(ホスト Chrome)で正しい step 画像をキャプチャし、worker が置いた
プレースホルダ(空 PNG)を全 20 枚 + thumbnail 4 枚差し替えた。

- ブロック図(Lv0挿入 / Lv2 の3段階組み立て / 発展挿入): Ruby→Blocks 変換後に
  「命令ブロックを画像として保存」で取得
- Ruby エディタ(Lv3 挿入 / Lv3 変更=say行ハイライト / ルビータブ): エディタ要素スクショ
- intro / run / 書籍 opening・closing: ステージ(ネコのゲーム)スクショ
- thumbnail 4 枚(Lv0/Lv2/Lv3/EX ラベル付き)

あわせて book-promo.jsx の BOOK 定数を確定書誌に更新(#962):
『小学生から楽しむ きらきらRubyプログラミング』/ 高尾宏治・藤村健吾 / 日経BP /
ISBN 978-4-8222-8639-2 / 日経BP 購入リンク。opening/closing に実書誌が表示される。

deck 単体テスト(block-series-decks / foundation)32件 pass、prettier OK、
tutorial deep-link で第1章カードが実書誌・実画像で表示されることを確認。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
takaokouji

This comment was marked as duplicate.

@takaokouji takaokouji left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI failed, please fix it.
and 最新の修正を取り込んで

@takaokouji takaokouji removed the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 12, 2026
smalruby3-editor-bot Bot and others added 2 commits July 12, 2026 05:12
)

The tutorial-categories-refactor guard (issue #932) asserted block-series was
an empty stub with only book-promo locale strings. Phase 3 第1章 (#957)
populated block-series with the four blockBasics decks and their per-deck howto
strings, making those assertions stale and failing unit-test-gui in CI.

Update the guard to the new reality: index.jsx keeps the original deck order and
appends the four blockBasics decks; block-series holds exactly those decks while
dncl remains an empty stub; the block-series locale carries both the book-promo
foundation and the blockBasics howtos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ(指摘 2 件: 対応 1 / 対応済み確認 1)

① CI failed, please fix it → 修正しました
unit-test-gui の失敗は tutorial-categories-refactor.test.js(issue #932 の分割ガード)が原因でした。このテストは block-series を「空スタブ(book-promo ロケールのみ)」と仮定していましたが、本 PR (#957) が block-series に blockBasics 4 deck と per-deck howto 文字列を実装したため、次の 3 アサーションが stale になり失敗していました:

  • index.jsx exposes the same deck ids...(deck 一覧に 4 deck が増えた)
  • block-series and dncl are empty stub categories...(block-series はもう空でない)
  • block-series locale holds only the book-promo foundation...(block-basics howtos が追加された)

このガードを新しい実態に更新しました(d7668c9):

  • index.jsx は従来の deck 順を保ちつつ blockBasics 4 deck を末尾に追加する
  • block-series はその 4 deck をちょうど持ち、dncl は引き続き空スタブ
  • block-series ロケールは book-promo 基盤 + blockBasics howtos の両方を持つ

新規 deck 自体の退行検知は #956 の block-series-decks.test.js(bot が review 時に追加済み)が担保しています。ローカルで deck 系 4 スイート 70 ケース pass / npm run lint(--max-warnings 0)緑を確認。

② 最新の修正を取り込んで → 対応済み
develop の最新は既にマージ済み(merge commit a5e80a0、現在 develop から 0 commit behind)です。

再度レビュー・マージ判断をお願いします 🙏

@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 12, 2026
@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ(指摘 2 件: 対応 2 / 返信 0 / 対応不要 0)— CI グリーン確認済み

① CI failed, please fix it → 修正済み・CI 実行で確認
unit-test-gui の失敗原因(#932 分割ガード tutorial-categories-refactor.test.js の stale アサーション)は d7668c9 で解消済みです。今回、現 HEAD f08ab894b に対する CI 実行が 全 9 ジョブ pass で完了したことを確認しました(unit-test-gui を含む lint / unit / integration / build-and-deploy すべて緑)。ローカルでも該当 2 スイート 31 ケース pass を再確認しています。

② 最新の修正を取り込んで → 対応済み
origin/develop の最新をマージ済みで(merge commit f08ab894b)、現在 develop から 0 commit behind です。

このラン自体はコード変更を伴わず(既に対応済みの状態を検証しただけ)新規 push はありません。再度レビュー・マージ判断をお願いします 🙏

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ(指摘 2 件: 対応 0 / 返信 0 / 対応不要 2)— 現 HEAD で CI グリーン再確認

前回の CHANGES_REQUESTED(CI failed, please fix it / 最新の修正を取り込んで)は、いずれも既に対応済みであることを 現在の HEAD cd3a6aeb9b に対して再検証しました。本ランではコード変更・新規 push はありません。

① CI failed, please fix it → グリーン確認済み
unit-test-gui 失敗原因(#932 分割ガード tutorial-categories-refactor.test.js の stale アサーション)は d7668c9 で解消済みです。現 HEAD cd3a6aeb9b(develop 最新取り込み後)に対する CI が 全 9 ジョブ pass で完了しました(lint / unit-test-gui / unit-test-vm / integration ×4 / build-and-deploy / commitlint)。ローカルでも該当 3 スイート 39 ケース pass を再確認しています。

② 最新の修正を取り込んで → 対応済み
origin/develop を取り込み済みで、現在 develop から 0 commit behind です。

コード側の対応は完了しています。CHANGES_REQUESTED レビューが残っているためマージが BLOCKED になっています。再レビュー・マージ判断をお願いします 🙏

@smalruby3-editor-bot

smalruby3-editor-bot Bot commented Jul 12, 2026 •

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ — コード側は完了・唯一の残ブロッカーはレビュー dismiss

前回の CHANGES_REQUESTED(CI failed, please fix it / 最新の修正を取り込んで)は、現在の最新 HEAD b875843f54(develop を再度取り込んだ後)で解消済みです。本ランでのコード変更・新規 push はありません。

  • CI failed → グリーン : 現 HEAD b875843f54 に対する CI が 全 9 ジョブ pass(lint / unit-test-gui / unit-test-vm / integration-test-gui ×2 / integration-test-vm ×2 / build-and-deploy / commitlint)。
  • 最新を取り込んで → 対応済み : origin/develop から 0 commit behind。

残っているブロッカーは takaokouji さんの CHANGES_REQUESTED レビューのみです(mergeStateStatus: BLOCKED / reviewDecision: CHANGES_REQUESTED)。bot はこのレビューを dismiss できないため、マージには レビューの更新(approve)または dismiss をお願いします 🙏

@smalruby3-editor-bot smalruby3-editor-bot Bot removed the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Aug 29, 2026
@smalruby3-editor-bot

smalruby3-editor-bot Bot commented Aug 29, 2026 •

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ(2026-09-09 更新 / 最新 HEAD 156d600d70 で再検証)— コード側は完了。残ブロッカーはレビューの更新のみ

このコメントは新規投稿を増やさないよう、前回のまとめを編集して更新しています。

いただいた指摘の状況(いずれも対応済み)

① CI failed, please fix it → グリーン
最新 HEAD 156d600d70(本日 origin/develop を再取り込み)に対する CI が 全 9 ジョブ pass しました(lint 3m43s / commitlint 12s / unit-test-gui 4m23s / unit-test-vm 4m14s / integration-test-gui (1) 6m29s・(2) 5m22s / integration-test-vm (1) 4m36s・(2) 4m20s / build-and-deploy 5m13s。run 34328247492)。
ローカルでも deck 系 4 スイート 70 ケース pass を再確認しています(block-series-decks / block-series-foundation / ruby-basics-decks / tutorial-categories-refactor)。

なお元の失敗原因は #932 の分割ガード tutorial-categories-refactor.test.js の stale アサーションで、d7668c9 で解消済みです。

② 最新の修正を取り込んで → 対応済み
origin/develop から 0 commit behind(本 PR は develop から 15 commit ahead)。本日取り込んだ develop の差分は classroom の逆引き索引・IME Enter ガード(scratch-blocks-ime-patch.js)・devcontainer firewall・infra/CI ワークフローで、チュートリアル(decks)には一切触れておらず本 PR と直交しています。

再レビューのリクエストを出しました

コード側の対応が完了しているため、@takaokouji さんへレビューを再リクエストしました(bot からは CHANGES_REQUESTED を dismiss できないため、リクエストのみです)。

参考: step 画像は実キャプチャ済みです

以前このコメントで「プレースホルダのまま」とお伝えしたのは誤りで、訂正済みです。コミット 595998af(7/11)で 24 枚すべてが dev server からの実キャプチャに差し替えられており、書誌情報(book-promo.jsx の BOOK = 日経BP / ISBN 978-4-8222-8639-2 / 版元ページ URL)も確定済みです。実体は 9 種のユニーク画像で、シリーズ内の共通操作は .claude/rules/scratch-gui/tutorial.md「画像の流用ルール」に沿って配置しています。

画像の内容 使っている step
ステージの実行結果(ネコ) 11 step(各 deck の intro / run、書誌 step、購入リンク step)
完成プログラムのブロック画像 4 step(Lv0 挿入 / Lv0 変更 / Lv2 完成 / 発展 挿入)
Lv2 の組み立て途中ブロック(2 種) 2 step
Ruby エディタ(コード表示 / 変更ハイライト) 3 step(Lv3 タブ切替・挿入・変更)
deck サムネイル(4 種すべて別画像) 4 deck

補足(任意の磨き込み・マージの障害ではありません): Lv0 の「変えてみよう」step は変更前の完成プログラム画像を共有しています。カード本文で変更内容は説明できていますが、変更後のブロック画像を撮り直す余地はあります。ご希望なら磨き込み用のフォロー Issue(EPIC #680 配下)を作成しますので、その旨コメントいただければ対応します。


残ブロッカーは CHANGES_REQUESTED レビューの更新(approve / dismiss)のみです(mergeStateStatus: BLOCKED / reviewDecision: CHANGES_REQUESTED。bot からは dismiss できません)。マージ判断をお願いします 🙏

参考: この PR が長く止まっていた理由(autopilot 側の問題・解消済み)

2026-08-02 と 2026-08-29 未明の daemon による base 自動追従(origin/develop の merge)が、真のコンフリクトではなく .husky/commit-msg の .husky/_/husky.sh: No such file で失敗し Blocked になっていました(軽量 worktree は npm install を走らせないため husky の生成物が無い)。この取りこぼしは #1137 で bin/autopilot-worktree が .husky/_ を main へ symlink するよう修正済み(develop にマージ済み)で、以降の base 追従は正常に完了しています(本日 9/9 の追従も競合なしで完了)。

@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Aug 29, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🤖 autopilot autopilot が処理対象にした Issue/PR(daemon が付与) 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(tutorial): blockBasics 第1章 4 deck(ネコからにげるゲーム冒頭)

1 participant