Skip to content

出荷前の欠陥修正・無料100個の可視化・UI/UXの磨き込み・配布物の整備 - #6

Merged
yoggydev merged 2 commits into
mainfrom
claude/claude-code-setup-hzqva9
Jul 28, 2026
Merged

出荷前の欠陥修正・無料100個の可視化・UI/UXの磨き込み・配布物の整備#6
yoggydev merged 2 commits into
mainfrom
claude/claude-code-setup-hzqva9

Conversation

@yoggydev

Copy link
Copy Markdown
Owner

🚨 出荷を止めるレベルの欠陥を、配布前に発見・修正

書き出したHTMLで色が出ていませんでした。

bg-card / text-muted-foreground / bg-background などはこのプロジェクト固有のデザイントークンで、素の Tailwind には存在しません。ところが wrapDocument()<script src="https://cdn.tailwindcss.com"> を1行入れるだけで、設定もCSS変数も渡していませんでした。

実ブラウザでの実測(修正前 → 修正後):

修正前 修正後
bg-card の背景色 rgba(0, 0, 0, 0) (透明) rgb(255, 255, 255)
text-muted-foreground の文字色 rgb(0, 0, 0) (真っ黒) rgb(113, 113, 122)
bg-muted の背景色 rgba(0, 0, 0, 0) rgb(244, 244, 245)

影響範囲: 880件中430件、無料MCP版100件中30件。 しかもこれは無料版だけの問題ではなく、generateVanillaHtml はスタジオの「バニラHTML書き出し」=この製品の中心価値そのものなので、買い切り版の購入者がコピーするHTMLも同じ状態でした。

4つの機械検査(コントラスト・axe・キーボード・横スクロール)は全てこれを素通りしていました。検査していたのは「Reactとして描画した結果」で、「書き出したHTML」ではなかったためです。

修正: wrapDocument / generateDynamicVanillaHtml に生成モジュール経由でトークン定義を注入。静的HTML880件とMCPデータを再生成し、注入率 880/880・無料 100/100 を実測確認。配布ZIP生成時に未注入HTMLが1件でもあれば停止する検査も追加(同じ内容を2箇所に持たせない設計)。

npm未公開・BOOTH未出品・GitHubリリース未作成のため、壊れたものは誰の手にも渡っていません

無料100個が見えるようになった

880個のうちどれが無料版の100個か判別する手段がなく、無料MCPユーザーが「何が足りないか」を知れませんでした(購入判断ができない)。

  • スタジオに**「無料100個」トグルとカードの「無料」バッジ**を追加(検索・カテゴリ・お気に入りとAND併用)
  • 無料IDの生成と照合テスト(880件のmanifestと100/100一致をビルド時に恒久検査)
  • 件数のみ別モジュールに分離し、LP初期チャンクへのID混入を回避(ビルド後のchunk grepで実測)

UI/UX の磨き込み

実機スクリーンショットで確認した欠陥を根拠に修正しました。

  • 375pxでスタジオのヘッダーが画面外に溢れ、JAボタンが切れていた → 1行に収まるよう段階的に畳む(「…」メニュー新設、キーボード操作可)
  • LPの言語切替がヘッダーCTAに重なっていた → ヘッダー行内へ移設
  • 日本語見出しが単語途中で改行 (「ランディングペ/ージは、」「"組み立て/る"時代へ。」)→ 文節単位で折り返す Phrased を導入。見出しとリード文のみに適用
  • 同名コンポーネント26種(53件)にコレクション名を併記して識別可能に
  • 「お気に入り 880件」と誤読される件数表記を「表示中 880 件」に
  • ギャラリーの空に見えるカード・過大な高さを調整、ライトテーマのコントラスト改善
  • 検証中に発見した詳細ビューの375px溢れも修正
  • 375/768/1280 の3幅で横スクロールが無いことを実測(21計測すべてOK)

買い切りへの移行残り

統計バーの「¥0 あなたの月額」→「100 無料で使える数」(ja/en)、LPの「3つのプラン」→2プラン表記。

配布物の整備

  • LICENSE を配置(無料版=個人利用/非商用、買い切り版=商用可を分離。英訳付き)
  • 配布ZIP生成・検証スクリプト — 9.6MB / 4554ファイル。node_modules.git.env 等の混入なしを検査。展開して実ブラウザで描画確認するところまで自動化
  • MCPのREADMEを実態に修正npx 手順は npm未公開のため動かないことを npm view(E404)で実証し、今動く手順に差し替え。ツール表も実装と一致させた

note記事の訂正

「109件の欠陥を直した」という数字が、記事自身の内訳(12+29+0+26=67)と合っていませんでした。67に訂正し、タイトルもその顛末を主題に変更。あわせて今回の430件欠陥の話を追記しています(「検査は、検査した経路しか守らない」)。

導入時点の違反数はコード内コメント(src/registry/a11y.test.tsx:20 の29件、scripts/check-overflow.mjs:14 の26件)に当時の記録が残っており、そちらと照合済みです。

検証エビデンス

  • テスト 2666件グリーン(+12)。typecheck / build / prerender グリーン
  • 実ブラウザでの computed style 実測(上記の表)
  • 注入率 880/880・100/100 の実測
  • 3幅×4画面の横スクロール実測
  • build-release.mjsverify-release.mjs の出荷ゲートがすべてOK

残件(要対応)

  • mcp/package.jsonfiles に LICENSE が無く、npm公開時に同梱されない
  • package.jsonrelease / verify:release スクリプト未登録(node scripts/... で実行可)
  • モバイルでスタジオの検索欄が出ない(サイドバーが md 未満で非表示)

🤖 Generated with Claude Code

https://claude.ai/code/session_01YXb6DP2sELzRyZkqpe15p4


Generated by Claude Code

claude added 2 commits July 28, 2026 14:11
- スタジオに「無料100個」トグルとカードの「無料」バッジを追加。
  検索・カテゴリ・お気に入りとAND併用可
- 無料IDの生成スクリプトと照合テスト(880件のmanifestと100/100一致・重複ゼロを
  ビルド時とテストの両方で恒久検査)
- 統計バーの「¥0 あなたの月額」→「100 無料で使える数」(ja/en)。
  LPの「3つのプラン」表記も2プランに修正
- 件数だけを freeCount.ts に分離し、LP初期チャンクへのID混入を回避(実測で確認)

※ デザイン磨き込み(P2)と配布物整備(P3)が並行作業中のため、その途中経過を含む。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YXb6DP2sELzRyZkqpe15p4
【出荷を止めるレベルの欠陥を修正】
書き出したHTMLでデザイントークンが解決されず、bg-card が透明・
text-muted-foreground が真っ黒になっていた(880件中430件、無料MCP版100件中30件)。
bg-card 等は素のTailwindに無いプロジェクト固有トークンで、CDNを1行読むだけの
wrapDocument() が設定もCSS変数も渡していなかった。これはスタジオの
「バニラHTML書き出し」=製品の中心価値そのものにも効いていた。
- wrapDocument/generateDynamicVanillaHtml に生成モジュール経由でトークン定義を注入
- 静的HTML880件とMCPデータを再生成(注入率 880/880・無料 100/100 を実測)
- 実ブラウザ実測: bg-card rgba(0,0,0,0)→rgb(255,255,255)、
  text-muted-foreground rgb(0,0,0)→rgb(113,113,122)
- 配布ZIP生成時に未注入HTMLがあれば停止する検査を追加(同じ内容を2箇所に持たない)

【無料100個が見えるようになった】
スタジオのどれが無料版の100個か判別する手段が無く、購入判断ができなかった。
- 「無料100個」トグルとカードの「無料」バッジを追加(検索・カテゴリとAND)
- 無料IDの生成と照合テスト(880件のmanifestと100/100一致をビルド時に恒久検査)
- 件数のみ別モジュールに分離しLP初期チャンクへのID混入を回避(実測確認)

【UI/UXの磨き込み】
- 375pxでスタジオのヘッダーが画面外に溢れJAボタンが切れていたのを1行に収めた
- LPの言語切替がヘッダーCTAに重なっていたのをヘッダー行内へ移設
- 日本語見出し・リード文が単語途中で改行されていたのを文節単位で折り返すよう修正
- 同名コンポーネント26種(53件)にコレクション名を併記して識別可能に
- 「お気に入り 880件」と誤読される件数表記を「表示中 880 件」に
- ギャラリーの空に見えるカード・過大な高さを調整、ライトテーマのコントラスト改善
- 375/768/1280 の3幅で横スクロールが無いことを実測

【買い切りへの移行残り】
統計バーの「¥0 あなたの月額」→「100 無料で使える数」(ja/en)ほか

【配布物】
LICENSE配置(無料版=個人利用/買い切り版=商用可)、配布ZIP生成・検証スクリプト、
MCPのREADMEを実態に修正(npx手順はnpm未公開で動かないことを実証し差し替え)

【note記事】
「109件の欠陥」が内訳(12+29+0+26=67)と合わなかったため67に訂正。
あわせて今回の430件欠陥の顛末を追記した

テスト2666件グリーン

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YXb6DP2sELzRyZkqpe15p4
@yoggydev
yoggydev marked this pull request as ready for review July 28, 2026 21:49
@yoggydev
yoggydev merged commit 0ddb18f into main Jul 28, 2026
2 checks passed
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.

2 participants