Repository navigation
feat(scratch-gui): 「さあ、始めましょう」に見た目・スプライトの単機能チュートリアル2本を追加 (#1179) - #1182
smalruby3-editor-bot[bot] wants to merge 4 commits into
Conversation
コスチュームをかえてみよう / スプライトを2つ使ってみよう を gettingStarted に追加。 1本完結・3〜6ステップ・順番に依存しない(deckIds を持たない)構成にし、 このカテゴリの単機能 deck の規約(deck id / locale キー / step 画像 / 画像キー / urlId の命名)を getting-started.jsx の冒頭コメントに明文化した。 画像は既存素材の流用が原則で、静止画は既存 GIF のフレームから生成した派生 PNG を 使っている。docs/tutorial/improvement-plan.md に「gettingStarted は単機能・Lv 分け なし」という方針分岐を追記した(同ドキュメントの Lv 別方針との食い違いを解消)。 Closes #1179 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 autopilot status
Linked issue #1179. Maintained by autopilot (single writer); do not edit. |
|
🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/topic/autopilot-1179/ |
敵対的レビューでの指摘対応。 - docs/tutorial/screenshots/0201-tips-library-1280x800.png を撮り直した。 単機能 deck 2 本の追加で「始めましょう」カテゴリの見た目が変わるため (.claude/rules/documentation.md のスクリーンショット DoD)。 - getting-started-costume の setup コメントを実挙動に合わせた。step1 の 「チュートリアルをはじめる」が新規プロジェクトを作り直すため、押した直後は コードタブに戻る (headless Playwright で確認)。後続 leaf が誤解しないよう明記。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
[Must] この PR で「さあ、始めましょう」カテゴリの見た目が 1 枚 → 3 枚に変わるので、 対応: 同じファイル名・同じ viewport(1280x800・ja ロケール・チュートリアル一覧を開いた状態)で撮り直して |
|
[Question] 実機(headless chromium・ローカル dev server)で確認した挙動:
つまり「コスチュームタブを開いた状態から始める(この deck の主題がそこにある)」というコメントの状態は、 対応: |
|
[Question] 共有画像 この PNG は「コードタブ・動きカテゴリのパレット・ワークスペースは空・マウスカーソルはコスチュームタブの上」という絵です。
「コード挿入」ボタンがある step なので手順自体は進められますが、初学者向けの手本としては弱いです。 |
|
[Question]
一方この deck の step2 は「スプライトをえらぶと、そのスプライトのプログラムになるよ」で、伝えたいのは 既存素材にちょうど良いものが無さそうなので、ここは撮り下ろし 1 本の価値が高いと思います(要判断)。 |
|
[Question] 4 step の内訳は intro / 選択の説明 / ネコにコード / ペンギンにコード ですが、 step1 の「チュートリアルをはじめる」で新規プロジェクトになるため、学習者の手元はネコ 1 匹だけの状態から始まります。 3〜6 step の枠内なので、 |
|
[Question] チュートリアル一覧を実際に開いて確認したところ、エディタ全景の縮小なので UI が潰れて何の 寸法(590x369)は既存と揃っていて、リンク切れなどの実害はありません。イラスト作成は設計判断+素材作業なので |
|
[FYI]
実機でパレットを確認したところ「コスチュームを [コスチューム1▼] にする」はドロップダウンごと正しく出ており、 |
|
[FYI]
意図どおり(検索でヒットさせたいだけ)なら問題ありません。フィルタボタンを増やす意図があるなら |
|
🤖 敵対的レビュー完了。指摘 8 件(Must 1 / Question 5 / FYI 2)。Must は修正済み。 確認したこと(合格した観点)
指摘の内訳
Question 5 件はいずれも動作は破綻していない(コンテンツの質・撮り直しコストの判断)ため、コメントのみ残しています。 |
There was a problem hiding this comment.
敵対的レビューのQuestionに対応して。
また、コスチュームをかえるチュートリアルの2ページ目の画像は静止画で、最後のページの画像はアニメーションしてコスチュームを変更していたので、最後のページのアニメーションが2ページ目にあるべき。
また、3ページめは実際のプログラム(コスチュームを繰り返しかえるもの)を画面に表示すると良い。
それと、CI failed: Summary of all failing tests
FAIL test/unit/containers/use-teacher-notifications.test.js
● useTeacherNotifications (EPIC #1111 / 日次取得) › email 不明(空キー)ならキャッシュを使わず毎回取得する(共有PC取り違え防止)
expect(received).toBe(expected) // Object.is equality
Expected: 1
Received: 0
109 | const { result } = renderHook(() => useTeacherNotifications({ idToken: TOKEN, handleTeacher401 }));
110 | await waitFor(() => expect(mockListNotifications).toHaveBeenCalledTimes(1));
> 111 | expect(result.current.unreadCount).toBe(1);
| ^
112 | // 空キーではキャッシュを書かない(他の空キー先生と共有されないように)。
113 | const cache = JSON.parse(window.localStorage.getItem(STORAGE_KEY));
114 | expect(cache.notifications[0].notificationId).toBe('x');
at Object.toBe (test/unit/containers/use-teacher-notifications.test.js:111:44)
Test Suites: 1 failed, 392 passed, 393 total
Tests: 1 failed, 1 skipped, 4356 passed, 4358 total
Snapshots: 13 passed, 13 total
Time: 134.412 s
レビュー指摘(#1182)への対応。step の説明と画面に出る絵がズレていた箇所を直す。 - コスチューム deck: step2 をコスチューム追加のアニメーション GIF に差し替え、 step3 は実際に挿入されるブロックの画像にする。実行ステップは step3 に統合し 3 step 構成にする(画像の使い回しをやめる) - スプライト deck: 「ペンギンをふやす」step を追加し、プログラムの step は 挿入されるブロックの画像にする。位置調整 GIF の流用をやめる - 説明と噛み合っていなかった共有画像 getting-started-shared-code-tab.png を削除 - コスチューム deck の setup.tab を削除(step1 の新規プロジェクト作成で打ち消され、 タブが一瞬切り替わるだけになるため) - コスチュームのサムネイルをコスチュームリストに寄せてトリミングし、一覧サイズで 何のチュートリアルか読めるようにする - お知らせ hook のテストが CI で落ちる race を修正(呼び出し回数ではなく state を待つ) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
🤖 レビュー対応。指摘 8 件(Must 1 / Question 5 / FYI 2)+ 人間レビュー 3 件 → 対応 7 件 / 返信のみ 2 件 / 対応不要 2 件(7e0f708)。 人間レビューへの対応
これに伴いコスチューム deck は 4 step → 3 step(イントロ / コスチュームをふやす / プログラムを入れて実行)になりました。実行ステップは step3 に統合しています(同じ GIF を step1・step4 で使い回すのをやめたため)。 敵対的レビュー Question 5 件
FYI 2 件( 確認
残っているもの(判断をお願いします)
|
Summary
「さあ、始めましょう」(
CATEGORIES.gettingStarted)に、優先度 A の単機能チュートリアル 2 本を追加しました。あわせて、このカテゴリの単機能チュートリアルの規約を確定しています(後続 leaf はこれに従う)。getting-started-costumenext_costume(見た目の切り替え)getting-started-spritesどちらも 1 本完結・順番に依存しない(
deckIdsで他 deck に繋がない)ので、ワークシートから「好きなものを 3 つやってみよう」と指示できます。確定した規約(
getting-started.jsx冒頭コメントに記載)getting-started-<機能スラッグ>— Lv 番号も通し番号も付けない(順序を示唆しないため)gui.howtos.getting-started-<スラッグ>.{name,stepN.title}getting-started-<スラッグ>-<N>-<説明>.<ext>、複数 deck 共有はgetting-started-shared-<説明>.<ext>gettingStarted<スラッグPascal>StepN(ja-steps.js/en-steps.js)urlId:gettingStarted<スラッグPascal>Changes Made
decks/categories/getting-started.jsx— 2 deck 追加(setupでコスチューム/コードタブを開き、allowedBlocksでパレットを絞る。コード挿入はcodeType: 'blocks'でブロックとして入る)decks/categories/getting-started.locale.js—ja/jaHira/enの文言を追加(ja と ja-Hira は対)decks/ja-steps.js/en-steps.js— 画像キーを登録chat3-mesh1-4-costume.gif/chat2-sprites1-5-add-penguin.gif/chat2-sprites1-6-settings.gif/chat2-sprites1-1-intro.gif)。静止画 2 枚と thumbnail 2 枚は既存 GIF のフレームから生成した派生画像で、新規撮影はしていませんdocs/tutorial/improvement-plan.md— 「方針分岐:gettingStartedは単機能・Lv 分けなし」を追記(ドキュメント内の「各軸は Lv 別」方針との食い違いを明文化して解消)Test Coverage
test/unit/lib/libraries/decks/getting-started-decks.test.js(12 tests)urlId/ 3〜6 ステップ、deckIdsを持たない(順序非依存)jaImages/enImages双方に存在する(欠けリンク検出)codeが実際にブロックへ変換できる(codeType: 'blocks'であることも検証)tutorial-categories-refactor.test.jsの deck 順序ガードに 2 deck を追加packages/scratch-gui: 上記 +ruby-basics-decks/cards/deck-setup— 81 tests all passnpm run lint(root / scratch-gui): 0 エラー・0 警告、prettier も pass補足(フォローアップ候補)
step 画像は既存素材の流用・派生のため、コスチューム deck の実行ステップはイントロ GIF の再利用です(
.claude/rules/scratch-gui/tutorial.md「画像の流用ルール」に沿った運用)。専用 GIF の撮り直しは後続の磨き込みで対応できます。Related Issues
Closes #1179
Part of #1177