[{"data":1,"prerenderedAt":229},["ShallowReactive",2],{"content-/design-system-course-refinement":3,"all-pages-for-dir":227,"og-image-/design-system-course-refinement":228},{"id":4,"title":5,"body":6,"category":208,"concepts":209,"description":210,"extension":211,"meta":212,"navigation":190,"ogImage":209,"path":213,"project_name":214,"published":215,"publishedAt":216,"seo":217,"stem":218,"tags":219,"todo":209,"unpublished":215,"updatedAt":209,"__hash__":226},"pages/2026-07/2026-07-14/design-system-course-refinement.md","デザインシステム基礎講座を磨き込んだ一日——ターゲット別モックアップ・9ステップ実践LP・ハンバーガーメニュー実装",{"type":7,"value":8,"toc":193},"minimark",[9,13,17,21,46,50,53,56,60,68,71,78,82,85,92,95,99,102,106,109,120,124,127,130,133,137,144,148,159,162,176,179],[10,11,5],"h1",{"id":12},"デザインシステム基礎講座を磨き込んだ一日ターゲット別モックアップ9ステップ実践lpハンバーガーメニュー実装",[14,15,16],"p",{},"公開済みのデザインシステム基礎講座を、朝から夕方まで自分で読み直しては手を入れ続けた。ページを開くたびに「ここ、文章で説明してるだけで実物がないな」と引っかかる箇所を見つけ、その場でClaude Codeに実装させて、ブラウザで描画を確かめる。この往復を夕方まで回したら、比較モックアップ、講座自身のLP、章扉画像15枚、ハンバーガーメニューまで積み上がっていた。",[18,19,20],"h2",{"id":20},"この日の流れ",[22,23,24,28,31,34,37,40,43],"ul",{},[25,26,27],"li",{},"08:37 前日分の変更をコミット（学習ゲート通過）",[25,29,30],{},"10:08 ターゲット別モックアップ追加、ヒーローセクション構成要素の再掲",[25,32,33],{},"10:26 9ステップを実践した講座LPの作成、ヘッダー固定＋スクロールスパイ",[25,35,36],{},"10:29 セクション一覧と9ステップの1対1対応付け、実カラー列とページ統合",[25,38,39],{},"11:00 全15概要ページに章扉画像、ハンバーガーメニュー実装",[25,41,42],{},"12:29 アクセシビリティページへGOOD/BAD移植、チャプター開閉仕様の統一、wrangler更新",[25,44,45],{},"16:36 本文センタリングずれの調査 → memoに残して明日へ",[18,47,49],{"id":48},"同じ健康管理アプリをターゲット別に3通り組み分けた","同じ健康管理アプリを、ターゲット別に3通り組み分けた",[14,51,52],{},"「なぜターゲット指定が重要か」のページには、高齢者向け・若い女性向け・企業向けでデザインが変わるという説明が文章で書いてあるだけだった。それなら実物を見せた方が早い。同じ健康管理アプリを3つのターゲット向けに、レイアウト・装飾・フォントを実際に変えたHTML/CSSモックアップとして組ませ、「同じアプリをターゲット別に組んでみる」という新ページとして挿入してもらった。デスクトップで3つ横並び、モバイルで1カラムに折り返すところまでブラウザで確認した。",[14,54,55],{},"続けてヒーローセクション設計のページ。前のページで組んだモックアップの構成要素を、①〜⑥の番号バッジ付きでもう一度並べてもらった。左に番号付きリスト、右にHeroモックアップという配置で、「さっき見たあの部分ね」と読者が思い出せる形になった。CTAのページも同じ形式で、青いプライマリボタン5種＋セカンダリボタン1種を目的別に並べ直している。",[18,57,59],{"id":58},"良い情報設計の9ステップを講座自身のlpで実践した","良い情報設計の9ステップを、講座自身のLPで実践した",[14,61,62,63,67],{},"講座の第1章には「良い情報設計の9ステップ」と「悪い情報設計の5パターン」がある。教えを説くだけで実例がないのはもったいないので、講座の内容を全部読み取らせたうえで、9ステップどおりの構成で講座自身のランディングページを独立HTMLとして作らせた。置き場所は",[64,65,66],"code",{},"public/lp/design-system/index.html","で、開発サーバーでもそのまま見える。受講者の声はプレースホルダーとして作文してある。右下の「情報設計ラベルを表示」を押すと、各セクションが9ステップのどれに対応するかバッジが浮かぶ仕掛けも入った。",[14,69,70],{},"Chrome DevToolsで開いてレビューしたら、2点直したくなった。ヘッダーがスクロールで流れてしまうのと、ナビの「特徴・進め方・受講者の声・料金・FAQ」が現在地を示さないこと。ヘッダー固定とスクロールスパイ（スクロール位置に応じたナビハイライト)を追加してもらい、開いていたタブでそのまま動きを確かめた。",[14,72,73,74,77],{},"導線の置き場所は少し迷った。章の一つとして組み込むとリンク構成が崩れるので、イントロの末尾と、第1章9ステップのページ末尾に1行ずつ",[64,75,76],{},"\u003Ca>","を足すだけの軽い形に落ち着いた。「9ステップの実例がこれ」と学んだ直後に置くのが一番効く。",[18,79,81],{"id":80},"英語で言い換えただけを表の対応列とコメントで白状させた","「英語で言い換えただけ」を、表の対応列とコメントで白状させた",[14,83,84],{},"第2章の「よく使うセクション一覧」には「前章の9ステップとほぼ1対1で対応しています」と書いてあるのに、実際の対応は読者の脳内補完に任せていた。テーブルの左側に「対応する9ステップ」列を新設し、Hero=①ファーストビュー、Problem=②課題提起……CTA=⑨と紐付けてもらった。並べてみて気づいたのは、この11セクションは9ステップを英語の呼び名に言い換えたものにすぎない、ということ。それ自体が読者の安心材料になるので、「新しく覚える概念が増えたわけではない」という趣旨のコメントを本文に足した。",[14,86,87,88,91],{},"ここで一つ罠を踏んだ。TSの講座データを直してリロードしても、画面が古いままなのだ。調べさせたら、講座ページはTSファイルを直接読むのではなく、生成スクリプトが吐くJSONから配信されていた。直前の変更が映って見えたのは、失敗した",[64,89,90],{},"pnpm dev","のpredevがたまたまJSONを再生成していたからで、完全な偶然。以後、講座データを直したらJSONを手で再生成する、が確定手順になった。",[14,93,94],{},"トーン&カラーの章では、HEX値を文字列で載せているだけの表に「実カラー」列を足し、HEX値をその色そのもので装飾してもらった。作業中に、スウォッチだけの独立ページが隣にあると分かったので、要素を1対1で保ちながら1ページに統合した。HEX値テーブル→解説→スウォッチ6色→組み合わせ実例という縦の流れになり、左ナビから独立ページが消えた。モバイル確認ではChrome DevToolsのresizeが効かず、デバイスエミュレーションで390px幅を再現する回り道もあった。",[18,96,98],{"id":97},"全15章の概要ページに雑誌の章扉のような1枚画像を入れた","全15章の概要ページに、雑誌の章扉のような1枚画像を入れた",[14,100,101],{},"タイポグラフィの概要ページを見ていて、「この章が何の話か、開いた瞬間には分からない」と感じた。タイポグラフィなら文字、余白なら余白と、章のテーマがひと目で分かる雑誌の章扉風ヒーロー画像を、講座全章の概要ページ15枚ぶん入れさせた。デスクトップで15件、モバイル390px幅でも代表ページを確認し、モバイルでラベルが潰れていた箇所は一括置換で直している。",[18,103,105],{"id":104},"講座の記述どおりにサイト自体をハンバーガーメニュー化した","講座の記述どおりに、サイト自体をハンバーガーメニュー化した",[14,107,108],{},"レスポンシブ設計の章には「ナビゲーションはハンバーガーメニューにする」と書いてある。ところが講座サイト自体には、全体目次を開くハンバーガーメニューがなかった。教えていることを自分がやっていない状態なので、モバイル表示のビューアーにドロワー式の全体目次を実装させた。",[14,110,111,112,115,116,119],{},"動作確認では一度、クリックでURLが勝手に",[64,113,114],{},"si=2","へ進む想定外の挙動が出て、クリーンな状態から再テストして切り分けた。合わせて、下スクロールでヘッダー2段（サイトヘッダー＋講座ヘッダー）が畳まれて本文が全画面になり、上スクロールで戻ってくる連動も入れた。実際のスクロールコンテナが",[64,117,118],{},".scroll-content","だと特定するまでに一往復あった。",[18,121,123],{"id":122},"アクセシビリティのページにgoodbadの実物を移植した","アクセシビリティのページに、GOOD/BADの実物を移植した",[14,125,126],{},"アクセシビリティの「考えること8点」も文章だけだったので、mdx-playground側で公開しているUIデザイン原則コンテンツ（NG/OKのモック比較）を8観点すべてに埋め込み、対応する原則には詳細版へのリファレンスリンクを振った。ここでもJSON再生成を忘れて旧コンテンツを眺める一幕があり、午前の学びがさっそく効いた。",[14,128,129],{},"もう一つ、チャプター目次の開閉仕様も直した。今いる章の中身しか展開されない仕様だと、隣の章に何があるか毎回クリックしないと見えない。全チャプターのトピック一覧を常時展開する仕様にビューアー本体を変更したので、同じビューアーを使う全講座に一括で効いた。17チャプターある講座でも崩れないことを確認している。",[14,131,132],{},"ここで一区切りとしてコミットを頼んだ。午前からの変更はドロワー実装とコンテンツ改修の2コミットに切り分けられ、それぞれ学習ゲートのクイズに答えて受領証を発行してからプッシュした。",[18,134,136],{"id":135},"pnpmが止まった犯人はdevサーバーのファイルロックだった","pnpmが止まった犯人は、devサーバーのファイルロックだった",[14,138,139,140,143],{},"コミット後、Dependabotの警告7件を調べさせたら、全部が単一パッケージundiciの脆弱性で、",[64,141,142],{},"pnpm update wrangler","一発で解消できると分かった。自分のターミナルでコマンドを走らせたが、32MBのダウンロードが終わったあと沈黙する。「なんとなく止まってる気がする」と伝えて調べてもらうと、lockfileが7/3から未更新で、pnpmらしきプロセスも見当たらない。原因はdevサーバーのファイルロックで、止めた直後にpnpmが完走した（7分14秒）。wranglerは4.98.0→4.110.0、undiciは修正版7.28.0になり、Dependabotの未解決アラートは0件になった。機械的な依存更新なので、学習ゲートは理由を残してスキップしている。",[18,145,147],{"id":146},"センタリングずれは原因を特定して明日に回した","センタリングずれは、原因を特定して明日に回した",[14,149,150,151,154,155,158],{},"夕方、タイポグラフィのsi=5とsi=6で、本文カラムの中央位置が微妙にずれているのを見つけた。調査させると、si=5は",[64,152,153],{},"stageHtml","あり、si=6は",[64,156,157],{},"texts","のみという構造差がレイアウトに響いていた。修正自体は済んだが、同じ仕組みを使う別講座の約30ページをPlaywrightで一括検証する作業が残ったので、原因・修正内容・検証スクリプト2本をmemoに残して明日に回した。修正ファイルは未コミットのまま置いてある。",[18,160,161],{"id":161},"学びメモ",[22,163,164,167,170,173],{},[25,165,166],{},"講座データ(TS)は生成JSONを経由して配信される。TSを直してリロードしても画面は変わらない。「なぜか反映された」の正体が、失敗したpredevの副作用だったと突き止められたのが収穫",[25,168,169],{},"pnpmが黙り込んだら、まずdevサーバーのファイルロックを疑う。プロセス一覧とlockfileの更新日時を見れば切り分けられる",[25,171,172],{},"「講座で教えていることをサイト自身がやっていない」は、読者より先に自分が講座を読み返すと見つかる。ハンバーガーメニューはまさにそれだった",[25,174,175],{},"Chrome DevToolsのresizeが効かないビューポートでは、デバイスエミュレーションに切り替えれば390px幅を再現できる",[18,177,178],{"id":178},"次にやること",[22,180,183],{"className":181},[182],"contains-task-list",[25,184,187,192],{"className":185},[186],"task-list-item",[188,189],"input",{"disabled":190,"type":191},true,"checkbox"," 本文センタリング修正の一括検証: 同じ仕組みの講座約30ページをPlaywrightで巡回し、ずれが残っていないか確認してからコミットする（memoの検証スクリプトを使う）",{"title":194,"searchDepth":195,"depth":195,"links":196},"",2,[197,198,199,200,201,202,203,204,205,206,207],{"id":20,"depth":195,"text":20},{"id":48,"depth":195,"text":49},{"id":58,"depth":195,"text":59},{"id":80,"depth":195,"text":81},{"id":97,"depth":195,"text":98},{"id":104,"depth":195,"text":105},{"id":122,"depth":195,"text":123},{"id":135,"depth":195,"text":136},{"id":146,"depth":195,"text":147},{"id":161,"depth":195,"text":161},{"id":178,"depth":195,"text":178},"dev",null,"自作のデザインシステム基礎講座を丸一日改善した記録。同じ健康管理アプリをターゲット別に組み分けた比較モックアップ、良い情報設計の9ステップを実践したLPとスクロールスパイ、章扉画像15枚、ハンバーガーメニュー実装、JSON再生成の罠まで。","md",{},"/design-system-course-refinement","eurekapu-nuxt4",false,"2026-07-14T00:00:00.000Z",{"title":5,"description":210},"2026-07/2026-07-14/design-system-course-refinement",[220,221,222,223,224,225],"デザインシステム","情報設計","ランディングページ","スクロールスパイ","レスポンシブ","Nuxt","R9wDTLy3vVyF8bB1fYPA-s4PoGMRuC8bOZYqHG8Br4w",[],"https://log.eurekapu.com/og/blog/design-system-course-refinement.png?v=2026-07-14T00%3A00%3A00.000Z&title=%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7%E3%82%92%E7%A3%A8%E3%81%8D%E8%BE%BC%E3%82%93%E3%81%A0%E4%B8%80%E6%97%A5%E2%80%94%E2%80%94%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E5%88%A5%E3%83%A2%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%83%BB9%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E5%AE%9F%E8%B7%B5LP%E3%83%BB%E3%83%8F%E3%83%B3%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E5%AE%9F%E8%A3%85&author=Kei%20Komatsu&sig=5add278b36cb4852",1784186907887]