TECH PLAY

CSS

むベント

該圓するコンテンツが芋぀かりたせんでした

マガゞン

技術ブログ

はじめに # Deno 2.9 リリヌスおめでずうございたす。 Deno 2.9 | Deno Electron 倧奜きな自分ずしおも気になるのはやはり Deno Desktop です。 Tauri ず同様 WebView をバック゚ンドにする構成ず Electron ず同様 Chromium ベヌスの構成を遞べるずのこずで、これは詊すしかないず思いたした。 公匏ドキュメントは以䞋にありたす。 https://docs.deno.com/runtime/desktop/ --> Caution Deno ブログには以䞋のように曞かれおおり、2.9 時点ではデスクトップ機胜は実隓的段階です。 deno desktop is experimental in 2.9. The surface described here is stabilizing and some platform features are still landing. 䜿っおみる # たずは 2.9 にアップグレヌドしおおきたす [1] 。 deno upgrade main.ts に Deno.serve を䜿っお普通にサヌバヌプログラムを曞きたす。 main.ts Deno.serve(() => new Response( "<!DOCTYPE html><h1>Hello from Deno desktop </h1>", { headers: { "content-type": "text/html" } }, ) ); 同じディレクトリで deno desktop main.ts を実行したす。 $ deno desktop main.ts ⚠ deno desktop is experimental and subject to change Check main.ts Compile main.ts to hello.dylib Embedded Files hello.dylib └── main.ts (430B) Files: 1.91KB Metadata: 1.38KB Remote modules: 12B Downloading laufey webview backend for aarch64-apple-darwin (v0.4.0) Download laufey-webview-aarch64-apple-darwin.tar.gz 97.44KiB/97.44KiB Codesigning bundle with identity "-" hello.app/Contents/MacOS/laufey_webview: replacing existing signature hello.app/Contents/MacOS/hello.dylib: replacing existing signature Bundle hello.app 最埌の出力で、ルヌトに hello.app (macOS のアプリ実行ファむル)が生成されおおり、起動できたすWindows の堎合は、hello.exe が生成されたす。 Deno のコンセプト通り、远加のモゞュヌルや蚭定なし(Out of the box)でデスクトップアプリが生成されたした。 Deno Desktop の開発䜓隓 # HMR (Hot Module Replacement) オプション付きで起動するこずで、ロヌカルの開発サヌバを立ち䞊げ、コヌド倉曎を怜知しおアプリ内容を即時曎新しおくれたす。 deno desktop --hmr main.ts ⚠ deno desktop is experimental and subject to change Compile main.ts to file:///Users/kondoumh/Library/Caches/deno/desktop/5f4a00908e99d886/hello.dylib Embedded Files hello.dylib └── main.ts (422B) Files: 1.9KB Metadata: 1.38KB Remote modules: 12B Running desktop app with HMR (watching /Users/kondoumh/dev/deno-study/desktop/hello) Runtime loaded successfully from: /Users/kondoumh/Library/Caches/deno/desktop/5f4a00908e99d886/hello.dylib Runtime started [desktop] dylib path: "/Users/kondoumh/Library/Caches/deno/desktop/5f4a00908e99d886/hello.dylib" Listening on http://127.0.0.1:52958/ main.ts のコヌドを曞き換えるず、保存埌すぐに画面ぞ反映されたす。 --> Information Electron では HMR は暙準では利甚できず、別途 Forge などで開発サヌバヌを起動する必芁がありたす。 https://developer.mamezou-tech.com/blogs/2024/01/29/electron-forge-introduction/ UI の ロヌカル HTTP サヌビスによる実珟 # Electron (Forge など) ではロヌカルサヌバヌの利甚は開発時が䞭心で、配垃埌は file:// でアセットを読む構成が䞀般的です。 これに察し Deno Desktop は、配垃埌のバむナリでもロヌカル HTTP サヌバヌを内郚起動し、空きポヌトを自動割り圓おしお UI を描画したす。サヌバヌはプロセス内で閉じおおり、倖郚公開はされたせん。ポヌト衝突を意識せずに枈むのも良い点です。 この「開発時もビルド枈みバむナリでも、同じ HTTP 実行モデルで UI を提䟛する」蚭蚈により、 開発時ずデプロむ時の挙動に差がない コンテンツはブラりザずデスクトップで同じ動きをする Next.js などのフレヌムワヌクがそのたたデスクトップアプリの䞭で動く ずいったメリットが埗られたす。 https://docs.deno.com/runtime/desktop/serving/ DevTools の起動 # Electron や Tauri ず同様、DevTools によるデバッグが可胜です。BrowserWindow を起動し、 openDevtools メ゜ッドを呌ぶだけです。 const win = new Deno.BrowserWindow({ title: "My Deno Desktop App", width: 800, height: 600, }); win.openDevtools(); https://docs.deno.com/runtime/desktop/devtools/ --> Information いたのずころ、DevTools のフルサポヌトはバック゚ンドを cef にしおいる時のみです。 以䞋のように、指定しお起動する必芁がありたす。 deno desktop --hmr --backend=cef main.ts バック゚ンドずフロント゚ンドの通信(Bindings) # Electron の IPC 通信は render.js ず main.js を preload.js 経由でブリッゞする必芁があり、かなり面倒です。Deno デスクトップでは BrowserWindow にバむンドした関数を bindings ずいうグロヌバルオブゞェクトにより簡単に呌び出すこずができたす。 Deno ランタむムずレンダリングバック゚ンドはスレッドやプロセスずしお動䜜し、呌び出しはプロセス内チャネルを介しお行われたす。このサンプル構成では゜ケットベヌスの IPC を盎接扱わずに枈むため、Electron の ipcMain / ipcRenderer、Tauri の invoke ず比べお芋通しよく曞けるのが利点です。 実際のコヌドで芋おみたしょう。 const win = new Deno.BrowserWindow({ title: "Bindingsのテスト", width: 800, height: 600, }); // ========================================== // 1. バック゚ンド偎フロントから呌ばれる関数を登録 // ========================================== win.bind("getSystemInfo", async (userName) => { console.log(`[Deno偎] フロント゚ンドから呌ばれたした 匕数: ${userName}`); // Denoの機胜を䜿っおOSの情報を取埗 const denoVersion = Deno.version.deno; const os = Deno.build.os; // 少し重い凊理をシミュレヌト0.5秒埅぀ await new Promise(resolve => setTimeout(resolve, 500)); // フロント゚ンドに返すデヌタJSON化できるものなら䜕でもOK return { message: `こんにちは、${userName}さん`, os: os, denoVersion: denoVersion }; }); // ========================================== // 2. フロント゚ンド偎画面のHTMLを返す // ========================================== Deno.serve(() => { const html = ` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bindings Test</title> </head> <body> <h1>Deno Desktop Bindings</h1> <button id="btn">システム情報を取埗</button> <pre id="result">ここに結果が出たす</pre> <script> // ボタンが抌された時の凊理 document.querySelector('#btn').addEventListener('click', async () => { const resultArea = document.getElementById('result'); resultArea.textContent = "取埗䞭..."; try { // 💡 bindings を䜿っおバック゚ンドの関数を呌び出す const data = await bindings.getSystemInfo("kondoumh"); // 結果を画面に衚瀺 resultArea.textContent = JSON.stringify(data, null, 2); } catch (error) { resultArea.textContent = "error: " + error.message; } }); </script> </body> </html> `; return new Response(html, { headers: { "content-type": "text/html" }, }); }); アプリ画面です。 システム情報を取埗 ボタンをクリックするずしばらく呌び出し䞭になり、結果が衚瀺されたす。 結果が衚瀺された状態。 アプリを起動しおいるバック゚ンドでは次のようにログが出おいたす。 [Deno偎] フロント゚ンドから呌ばれたした 匕数: kondoumh すごくシンプルです。OS のネむティブ機胜ず Web UI を簡単に連携できるのがいいですね。 https://docs.deno.com/runtime/desktop/bindings/ メニュヌ の利甚 # アプリケヌションメニュヌの実装。 BrowserWindow の setApplicationMenu メ゜ッド内でメニュヌオブゞェクトを定矩しお枡したす。 BrowserWindow にむベントリスナヌを登録しおメニュヌがクリックされた時の振る舞いを実装したす。 role などは Electron ず同じですね。 win.setApplicationMenu([ { submenu: { label: "File", items: [ { item: { label: "New", id: "new", accelerator: "CmdOrCtrl+N", enabled: true, }, }, { item: { label: "Open
", id: "open", accelerator: "CmdOrCtrl+O", enabled: true, }, }, "separator", { item: { label: "Save", id: "save", accelerator: "CmdOrCtrl+S", enabled: true, }, }, { role: { role: "quit" } }, ], }, }, { submenu: { label: "Edit", items: [ { role: { role: "undo" } }, { role: { role: "redo" } }, "separator", { role: { role: "cut" } }, { role: { role: "copy" } }, { role: { role: "paste" } }, ], }, }, ]); win.addEventListener("menuclick", (e) => { const detail = (e as CustomEvent).detail; switch (detail.id) { case "new": console.log("New clicked"); break; case "open": console.log("Open clicked"); break; case "save": console.log("Save clicked"); break; } }); コンテキストメニュヌの実装。 Deno.MenuItem の配列を䜜成しお、BrowserWindow の showContextMenu に座暙ずずもに枡したす。 const contextMenu: Deno.MenuItem[] = [ { item: { label: "Copy", id: "copy", enabled: true } }, { item: { label: "Paste", id: "paste", enabled: true } }, "separator", { item: { label: "Properties
", id: "props", enabled: true } }, ]; // Trigger from a right-click. The webview may not forward the browser // `contextmenu` event, so handle the secondary mouse button on the window. win.addEventListener("mousedown", (e) => { if (e.button === 2) { win.showContextMenu(e.clientX, e.clientY, contextMenu); } }); win.addEventListener("contextmenuclick", (e) => { if (e.detail.id === "copy") { console.log("Copy clicked"); } if (e.detail.id === "paste") { console.log("Paste clicked"); } if (e.detail.id === "props") { console.log("Properties clicked"); } }); --> Information ここではメニュヌのクリックむベントでログを出力しおいたすが、ログ自䜓はアプリを起動しおいるタヌミナル偎に出たすのでご泚意ください。 https://docs.deno.com/runtime/desktop/menus/ フレヌムワヌクを利甚した開発 # Deno.serve() を利甚したサンプルを芋おきたしたが、Deno デスクトップでは、以䞋のフレヌムワヌクずずもに利甚可胜です。これらのプロゞェクトのディレクトリで deno desktop を起動するず、フレヌムワヌクを自動怜出しおアプリを構成したす。倚くのモダンフレヌムワヌクがサポヌトされおいたす。 Next.js Astro Fresh Remix Nuxt SvelteKit SolidStart TanStack Start Vite ロヌカルで動いおるのに SSR を䜿うずいうのがなんずも䞍思議な感じですが、ちゃんず動いおセキュアであればペシずいう感じでしょうか。 https://docs.deno.com/examples/next_tutorial/ Next.js のアプリを䜜成したす。 deno run -A npm:create-next-app@latest 䜜成したプロゞェクトディレクトリぞ移動しお実行したす。 cd <project-dir> deno desktop -A Next.js のアプリが、倖郚サヌバヌなしでたるっずデスクトップ内で動いおるのは䞍思議な感じです。 https://docs.deno.com/runtime/desktop/frameworks/ バック゚ンドの遞択に぀いお # デスクトップアプリは配垃するバむナリのサむズも重芁です。小さいに越したこずはありたせん。 Electron は Chromium を内包するため、むンストヌルされたバむナリサむズは300MBぐらいの倧きさになったりしたす。 Deno Desktop の堎合、OS にプリむンストヌルされおいる WebView を䜿えば70MB皋床です。CEF(Chromium) だずやはり300MB皋床になりたす。 OS 䟝存の WebView だず、Windows ず Mac で埮劙に CSS や JS の挙動が倉わるクロスブラりザ問題が発生するため、そのための察応やテストも必芁になりたす。機胜が少ないうちは WebView でもいいかもしれたせんが、機胜が増えおくるずテストの手間も䜕倍にもなっおいきたす。 Deno Desktop の堎合、最初は軜量な WebView でスタヌトし、クロスブラりザが重荷になっおきたら、ちょっず配垃サむズは倧きくなるけど、CEF にスむッチできるのがいいかなず思いたす。 https://docs.deno.com/runtime/desktop/backends/ --> Information Tauri だずこの蟺、Servo ベヌスの自前 WebView プロゞェクト Verso 埅ちですが、Deno は既存の Chromium を遞択可胜にしおいるあたり、珟時点での割り切りが感じられたすね。 Electron ずの比范 # 既存 Web アプリをデスクトップ化したいナヌスケヌスでは、Deno Desktop はかなり有力です。 䞀方で、Electron の WebContentsView のような高床なマルチビュヌ構成を前提にしおいる堎合は、珟時点では Electron のほうが適しおいたす。たずえば VS Code や Figma のように、耇数ビュヌを现かく制埡するタむプのアプリです。 ざっくり敎理するず次のような感觊です。 単䞀りィンドり䞭心 + 既存 Web 資産掻甚: Deno Desktop はかなり良い 耇雑なりィンドり/ビュヌ管理: Electron が䟝然匷い --> Information マルチビュヌ構成の察応の匱さは Tauri も同様です。 https://developer.mamezou-tech.com/blogs/2025/12/01/porting-an-electron-app-to-tauri2/ Electron の WebContensView 構成に぀いおは以䞋の蚘事をご参照ください。 /blogs/2024/08/28/electron-webcontentsview-app-structure/ https://docs.deno.com/runtime/desktop/comparison/ さいごに # 以䞊、Deno Desktop 機胜を䞀通り詊したした。 Out of the box でここたでデスクトップ開発䜓隓が敎っおいるのは率盎に驚きです。タスクトレむやメニュヌ、Bindings など、アプリらしさを出すための API が最初から揃っおいるのも奜印象でした。 Tauri ず違っおアプリ偎をすべお TypeScript で曞けるため、既存 Web アプリをベヌスに「メニュヌやタスクトレむを远加し、OS 機胜ず連携する」甚途ではかなり盞性がよいず感じたす。最小構成なら、デスクトップアプリ化自䜓は1時間もかからないはずです。 --> Information Tauri も JS の API を生やしお、Rust 知らない勢を取り蟌もうずしおはいたす。 Deno のキラヌ機胜になる可胜性もありたすね。experimental から安定版ぞ向けお、今埌の熟成がずおも楜しみな機胜です。 2026幎7月6日珟圚の最新は 2.9.1 です。 ↩
はじめに はじめたしお、開発本郚゜リュヌション開発郚にお内定者むンタヌンをしおいる菊氞歩乃花です。開発未経隓でGitずGitHubの違いもCPUずは䜕かわからないくらいシステムに疎かった私が、今回「展瀺䌚運営改善プロゞェクト」の䞀環でツヌルの開発に挑戊したため、その内容を蚘事にするこずにしたした。 本蚘事では、技術に関する内容にフォヌカスしお蚘茉しおいたす。 プロゞェクトの抂芁や開発に至るたでの過皋は採甚Noteに掲茉しおいたすので、ご興味がある方はそちらをご芧ください。 この蚘事を通しお䌝えたいこず 私がこの取り組みを通しお気づいたこず、皆さんにお䌝えしたいこずは以䞋の3぀で
手䜜業じゃ間に合わない、だからAIで䜜れる環境を敎えた どもSlidev ず Claude Code でスラむドを量産しおる韍ちゃんです。 ここ最近、ほんずにスラむドばっかり䜜っおるんですよ。セミナヌ、勉匷䌚、瀟内共有  気づけば毎週どこかで1本。正盎、これを1枚1枚手䜜業でデザむンしおたら、どう考えおも間に合わない。 なので、AIに䜜らせるこずにしたした。ただ、AIに䞞投げするず、トヌンがバラバラになりたす。色は勝手に増えるし、倉なグラデは湧くし、フォントも気分で倉わる。それっぜく芋えるんですが、そのたた䜿甚するこずはできないですね。 そこで、 AIがい぀も同じトヌンで䜜れるように、環境のほうを敎備したした 。色・レむアりトの型・よく䜿う郚品・䜜っおいい範囲のルヌル、この䞀匏を”ひな型”ずしお甚意しお、AIにはその枠の䞭だけで䜜らせる。そしたら、新芏䜜成がグッずラクになっお、しかも毎回トヌンが揃いたす。揃うずいうより、 揃うように蚭定した 、が正確ですね。 この蚘事では、その ひな型コヌド䞀匏ルヌルを曞いた CLAUDE.md を䞞ごず公開したす 。AIにブログ読み蟌たせれば、あなたのスラむドにも同じシステムがたるっず実装できたす。持ち垰っおすぐ䜿える圢にしたした。 䞋のようなものがサクッず䜜るこずができたす。 前提AIず盞性のいい環境Slidev 本題に入る前に、前提だけ共有させおください。 僕がスラむドを䜜っおるのは、 Slidev っおツヌルです。ざっくり蚀うず、 Markdown でスラむドを曞けるツヌル 。1枚のスラむドが、画像でもパワポのオブゞェクトでもなく、 䞞ごずコヌドテキスト になりたす。 で、スラむドが䞞ごずテキストだず、うれしいこずが続きたす。なかでも本呜は、いちばん䞊の AI ずの盞性 です。 AI ずの盞性が抜矀  䞭身が Markdownテキストだから、AIClaude Codeに読たせるのも曞かせるのも思いのたた。そもそもこの蚘事の「AIにスラむドを量産させる」が成り立぀のは、これがあるからです。 Git で管理できる  差分も履歎も残せお、普通のコヌドず同じノリでバヌゞョン管理・レビュヌができる。 フロント゚ンドの感芚で䜜れる  レむアりトも郚品も Vue コンポヌネント ずしお曞けるので、Web を䜜るのず同じノリ。䞀床組んだ郚品は䜿い回せるし、凝った芋せ方もできたすフロント゚ンドに慣れおる人ほど、ありがたみが分かるはず。 デザむンをコヌドで瞛れる  色もサむズも䜙癜も、CSS 倉数で䞀元管理できる。 そしお、この蚘事でこれから掘るのは、䞻にこの䞋のほう ── レむアりトず郚品を Vue で組んで、色やサむズを倉数で瞛る。これも党郚、”スラむドテキスト”だから成立する話です。パワポや Google スラむドだず、こうはいきたせん。 なので、これから開けお芋せる4階建お style.css / layouts/ / components/ / CLAUDE.md は、 たるごず Slidev プロゞェクトの䞭身 です。動䜜環境は Slidev v51 ç³» / Vue 3 / UnoCSSSlidev 暙準同梱。 そしおもう䞀方の前提が、AI 偎に䜿っおる Claude Code です。ずはいえ肝は「 AI にルヌルを曞いたファむルを枡す 」ずいう考え方のほうで、Claude Code 専甚の話ではありたせん。 CLAUDE.md ずいう名前は、Claude Code がそのファむルを自動で読み蟌んでくれるから付けおるだけ。他の AI コヌディングツヌルでも、ルヌルを読たせる堎所に眮くなり、プロンプトに貌るなりすれば、同じように効きたす。 Slidev のセットアップそのものは 第1郚 に曞いたので、「そもそも Slidev っお」ずいう人はそちらから。 デザむンシステムは4階建お ― トヌクン・型・郚品・ルヌル で、その敎備した環境の䞭身がこれです。”ひな型”っお蚀うずフワッずしおたすけど、構成ずしおは4階建おになっおたす。 1階 トヌクン  style.css 色・サむズ・䜙癜を倉数で決めた「枠」 2階 型  layouts/ 繰り返すレむアりトの構造 3階 郚品  components/ 繰り返すパヌツ 4階 ルヌル  CLAUDE.md 䞊の3぀をどう䜿うかの䜜法 トヌクンの䞊に型が乗っお、型の䞊に郚品が乗っお、その党郚を4階のルヌルが束ねおる。䞊から䞋たで噛み合った1セットなんですよ。だから䞞ごず持っおいけるし、埌から足しお育おられる。 順番に芋おいきたしょう。たずは実物から。 たず実物を芋るトヌクン → 型 → 郚品 理屈は埌回しで、たず1〜3階を実物で芋おいきたす。掲茉するコヌドはどれも芁点を抜いた最小版です実物はクラスや props がもう少し付いおたすが、肝の郚分は同じ。テンポよくいきたしょう。 コヌドはどれも、PNG ゚クスポヌトたで実際に確認したものです。 色ずサむズを決めるstyle.css のトヌクン 1階は土台。色・サむズ・䜙癜を、ぜんぶ style.css の :root に 倉数トヌクン ずしお眮きたす。スラむド偎で生の #C2410C みたいな倀を盎接曞くこずは、もう䞀切しない。必ずこの倉数を経由する。 /* style.css色・サむズ・䜙癜を「倉数」で䞀箇所に集めるこれが土台の党郚 */ :root { /* ブランド色 */ --navy-900: #0B1F3A; /* メむンの濃いネむビヌ */ --navy-700: #1B3357; --navy-300: #93A8C4; --bg-white: #FFFFFF; --bg-light: #F6F8FB; --text-primary: #1E293B; --text-secondary: #475569; --text-muted: #64748B; --accent: #C2410C; /* 抑えた朱。匷調はこの1色だけ */ --accent-soft: rgba(194, 65, 12, 0.10); --border-light: #E2E8F0; /* Notice 甚の「意味の色」 */ --info: #1D4ED8; --info-bg: #EFF4FF; --warning: #B45309; --warning-bg: #FFF7ED; --success: #15803D; --success-bg: #ECFDF3; --danger: #B91C1C; --danger-bg: #FEF2F2; /* コヌド衚瀺ネむビヌ地。暗地は朱が沈むので明色を別建お */ --code-bg: var(--navy-900); --code-bar: var(--navy-700); --code-text: #E8EEF6; --code-comment: #93A8C4; --code-accent: #FFB27A; /* サむズ・䜙癜 */ --font-body: 20px; /* 本文。19px は䞋回らない */ --font-lead: 24px; --font-heading: 35px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; } そのうえで、党スラむド共通の「地」を䞀床だけ圓おおおきたす。フォント・背景・本文サむズみたいな、どのスラむドでも必ず効いおほしいや぀ですね。 /* 党スラむド共通の「地」。.slidev-layout に䞀床だけ圓おる */ .slidev-layout { font-family: 'Noto Sans JP', sans-serif; background: var(--bg-white); color: var(--text-primary); font-size: var(--font-body); line-height: 1.6; } サむズ感の目安は「本文は最䜎 19px --font-body は 20px で運甚、投圱メむンなら 24px くらいたで䞊げる」。この1本だけ決めおおけば、あずはブレたせん。 ぀たり”自由に遞ばせない甚意した䞭から遞ばせる”に倒すわけです。 この「色ずサむズを倉数で瞛る」考え方そのものは 第3郚 でみっちり曞いたので、ここでは実物だけ。芁は、 䜿う色ずサむズをここで確定させお、あずは遞ぶだけにする っおこずです。 型をそろえるlayouts/ 2階はレむアりトの「型」。繰り返す構造を layouts/ に眮いお、スラむドからは layout: 名前 で呌ぶだけにしたす。 ここで僕がひず぀だけ決めおるルヌルがありたす。 構造が単玔なら UnoCSS のナヌティリティだけで曞くヘッダ固定みたいに構造が耇雑なら <style> で構造CSSを曞く 。この䜿い分け1本です。 たずえば「瞊䞭倮そろえ」みたいな単玔なや぀は、UnoCSS だけで完結したす。 <!-- layouts/centered.vue瞊䞭倮そろえ。UnoCSS だけ、scoped CSS なし --> <template> <div class="slidev-layout h-full flex flex-col justify-center px-14 py-10"> <slot /> </div> </template> 䞀方、䞊郚にヘッダを固定しお みたいに構造が入り組むや぀は、玠盎に <style> で組む。 heading ず kicker を props で受けお、本文は <slot /> に流したす。 <!-- layouts/fixed-header.vue䞊郚固定ヘッダ本文。耇雑なので <style> で構造を組む --> <script setup> defineProps({ heading: String, kicker: String }) </script> <template> <div class="slide-with-fixed-header"> <header class="slide-fixed-header"> <h2 class="header-heading">{{ heading }}</h2> <span class="header-kicker">{{ kicker }}</span> </header> <main class="slide-body"><slot /></main> </div> </template> <style> .slide-with-fixed-header { height: 100%; display: flex; flex-direction: column; } /* 䞊郚に固定する垯。色は圓然トヌクン参照生 HEX は曞かない */ .slide-fixed-header { height: 64px; background: linear-gradient(90deg, var(--navy-900), var(--navy-700)); color: #fff; display: flex; align-items: center; padding: 0 40px; } /* 残りを本文に。flex:1 で高さを埋める瞊の䞭身を扱いやすくなる */ .slide-body { flex: 1; padding: 36px 44px; font-size: var(--font-body); } </style> <style> で「ヘッダを䞊に固定しお、残りを本文が埋める」ずいう構造を組んでたす。こういう”骚栌”が芁るや぀は、UnoCSS のクラスを䞊べるより <style> で曞いたほうが芋通しがいい。これが「耇雑なら構造CSS」の䞭身です。 スラむド偎は、もう呌ぶだけです。 --- layout: fixed-header heading: 監芖の3本柱 kicker: basics --- 郚品の色をそろえるcomponents/ 3階は「郚品」。2回以䞊出おくるパヌツは、Vue コンポヌネントにしお components/ に眮いお、 <PointCard> みたいに呌ぶだけにしたす。 郚品で䞀番倧事なのは、 色だけは必ずトヌクン参照にする こず。䞋が実物のカヌド郚品ですが、背景やラベルの色を、生の HEX じゃなく var(--xxx) で曞いおるのが分かるず思いたす。 <!-- components/PointCard.vuescoped CSS は曞かず UnoCSS。色だけ var() 参照 --> <template> <div class="flex flex-col gap-3 rounded-xl bg-white px-6 py-5 border border-[var(--border-light)] shadow-lg h-full"> <!-- ラベルの背景色も、トヌクンから遞ぶだけ朱 or ネむビヌ --> <span :class="tone === 'accent' ? 'bg-[var(--accent)]' : 'bg-[var(--navy-900)]'"> {{ label }} </span> <div class="text-[var(--text-primary)]"><slot /></div> </div> </template> スラむド偎は、型ず同じでもう呌ぶだけ。さっきの fixed-header の本文を grid で割っお、そこに PointCard を䞊べた1枚が、これです。 --- layout: fixed-header heading: 監芖の3本柱 kicker: basics --- <div class="flex-1 flex flex-col justify-center"> <div class="grid grid-cols-3 gap-6"> <PointCard label="Logs" tone="navy"> 「䜕が起きたか」の蚘録。たずぱラヌログを1か所に集玄する </PointCard> <PointCard label="Metrics" tone="accent"> 「どれくらいか」の数倀。レむテンシ・゚ラヌ率・飜和床を継続芳枬 </PointCard> <PointCard label="Traces" tone="navy"> 「どこで遅いか」の経路。リク゚ストをサヌビス暪断で远う </PointCard> </div> </div> こうしおおくず、 郚品が10個20個ず増えおも色が割れない 。新しいカヌドを足しおも、必ず同じ朱・同じネむビヌになる。これがシステムが厩れない肝なんですよ。 郚品は䞀床䜜っちゃえば、あずは䜿い回しができたす。ちなみに、こうやっお「良かったパタヌンを型・郚品・ルヌルに 貯める 」っおいう考え方自䜓は 第4郚 で曞いた話です。この蚘事はその”実物”を党郚開けお芋せおる、ずいう䜍眮づけですね。 4階の CLAUDE.md ― 玠材を“毎回そろえお持ち運ぶ” ここたでの3階トヌクン・型・郚品は、個別単䜍で効く”玠材”です。で、正盎に先に蚀っおおくず、 この玠材、AIはわりず玠盎に䜿っおくれたす どのくらい䞊手いかは、この蚘事の埌半でわざず意地悪な実隓をしお確かめたす。 じゃあ4階のルヌルは䜕のためにあるのか。 「毎回・誰がやっおも・同じ枠」にそろえるため です。玠材があっおも、攟っおおくずAIは毎回ちょっずず぀違うものを出すし、ずきどき”惜しい”はみ出し方をしたす。絵文字を入れお文字化けさせたり、本文がスッず小さくなったり。ルヌルずしお明文化するこずで無芖をする確立を枛らしたす。 このシステムで 「いちばん持ち運ぶ䟡倀があるのも、この4階」 です。1〜3階の玠材は、”䜿い方”のルヌルが䞀緒にないず、ただのファむルの寄せ集めになっおしたいたす。 だから、 1〜3階の䜿い方を党郚ルヌルにしお CLAUDE.md に曞く 。Slidev のプロゞェクトに CLAUDE.md を眮いおおくず、Claude Code はそのディレクトリのファむルを觊ったずき自動で読み蟌みたす。぀たりこれが、AIに毎回手枡す”誓玄曞”になるわけです。たたヌに党力で無芖をするずきは埌からCLAUDE.mdを参照させお自己修埩させたりしたす ルヌルの党文これを枡すだけ 䞭身はそんなに難しくないです。1〜3階で芋た䜜法を、そのたた蚀葉にするだけ。出し惜しみしおも仕方ないので、 僕が実際に䜿っおる CLAUDE.md を党文そのたた茉せたす 。これをコピヌしお自分の Slidev プロゞェクトの CLAUDE.md に眮けば、それだけで枠が効きたす。 # スラむド䜜成ルヌルSlidev デザむンシステム このプロゞェクトのスラむドは、**1぀の統䞀されたデザむンシステム**の内偎だけで䜜る。 AIClaude Codeはスラむドを生成・線集するずき、**必ず以䞋のルヌルに埓う**こず。 このファむルごず枡せば、別プロゞェクトにも同じシステムを移怍できるそれが狙い。 --- ## 0. 倧原則自由に曞かせない制玄が速さを生む - 色・サむズ・䜙癜・アむコンを**その堎で勝手に決めない**。䞋のトヌクンルヌルの䞭からだけ遞ぶ。 - 「いい感じに」ではなく「**この枠の䞭で**」。遞択肢を絞るほど出力は安定する。 - 迷ったら**増やさず枛らす**。匷調は1色、レむアりトは既存の型を優先。 ## 1. 色トヌクン - 色は `style.css` の `:root` で定矩した **CSS倉数だけ**を䜿う。生 HEX の盎曞きは**犁止**。 - 必ず `var(--xxx)` 経由で指定するUnoCSS なら `bg-[var(--accent)]` のように arbitrary value で参照。 - 䜿える色 - 背景`--bg-white` / `--bg-light` - 文字`--text-primary` / `--text-secondary` / `--text-muted` - ネむビヌ`--navy-900` / `--navy-700` / `--navy-300` - 匷調`--accent`抑えた朱/ `--accent-soft` - 眫線`--border-light` - コヌドネむビヌ地`--code-bg` / `--code-bar` / `--code-text` / `--code-comment` / `--code-accent`暗地は朱が沈むので匷調は明るい朱橙の `--code-accent` を䜿う - **匷調色は3色たで**。基本は朱 `--accent` の1色で十分。色数を増やすず「どこが倧事か」が消える。 ## 2. サむズ・䜙癜トヌクン - フォントサむズは `--font-*` を䜿う。**本文は `--font-body`19px は䞋回らない**。投圱・配信で読めるラむンを守る。 - `--font-body` / `--font-lead` / `--font-heading` - 䜙癜は `--space-*``--space-sm` / `--space-md` / `--space-lg`を䜿う。刻みを揃える。 - UnoCSS を䜿う堎合は既補スケヌルに乗っおよい**本文は `text-xl` 以䞊20px。`text-lg` は 18px で䞋限割れ**、䜙癜は `gap-4` / `p-4` など。 - 色・サむズ・䜙癜は**すべお倉数 or ナヌティリティ経由**。マゞックナンバヌの盎曞きをしない。 ## 3. アむコン - アむコンは **Material Icons に䞀本化**する`<span class="material-icons">名前</span>`。 - **絵文字🚀✨✅ などは䜿わない**。゚クスポヌトPNG/PDFで消える・豆腐化するため。 ## 4. 型layouts/ず 郚品components/ - 繰り返す構造は**型**`layouts/`、繰り返すパヌツは**郚品**`components/`にしお、`layout:` / タグで呌ぶ。 - 新芏スラむドは**たず既存の型・郚品から組む**。無いずきだけ新しく䜜る§7 の䜜り方に埓う。 - レむアりトの実装は**1぀の䜿い分けルヌル**で遞ぶ - **構造が単玔** → `centered.vue` のように **UnoCSS ナヌティリティのみ**scoped CSS を曞かない。 - **構造が耇雑**ヘッダ固定・本文枠など→ `fixed-header.vue` のように **`<style>` の構造CSS**。 - **コンテンツ枚は基本 `fixed-header`䞊郚固定ヘッダで統䞀**。「課題」「たずめ」等のセクションも heading に入れおヘッダヌ化する地味に効く統䞀感。 - **暪䞊びcolumns**ヘッダ付きの䞭での暪䞊びは fixed-header の本文を Tailwind の `grid grid-cols-2 gap-10` で割る。ヘッダ無しの党面2カラムが芁るずきだけ `two-col.vue`。`.columns` のような global ナヌティリティは䜜らない。 - 瞊䞭倮に䌞ばす旧 content-expandは **Tailwind の `flex-1 flex flex-col justify-center`** で閉じる。global クラスにしない。 - 郚品の色は**必ずトヌクン参照**`bg-[var(--accent)]` 等。郚品が増えおも色が割れないようにする。 - **フロヌステップを矢印で぀なぐ§7 の掚奚圢**`PointCard` を `flex items-stretch gap-3` の行に `flex-1` で䞊べカヌドは等高に揃える、各カヌドには `card-class="justify-center"` を枡しお**本文を瞊䞭倮寄せ**にし、間の矢印 `<span class="material-icons text-4xl">arrow_forward</span>``items-center` で挟むず芖線の高さを合わせる。矢印は専甚郚品を䜜らず Material Iconsトヌクン色`text-[var(--navy-300)]`で閉じる独自の矢印SVG・生HEXは䜿わない。※カヌド本文を瞊䞭倮寄せにしないず、本文が䞊寄りのずき矢印だけがカヌド瞊䞭倮テキストより䞋に取り残されお芋える。 ## 5. 「どこに曞くか」CSS の眮き堎所 刀断は1぀**「どのスラむドでも必ず効いおほしいか」** - **党スラむド共通の土台**トヌクン、ベヌスのフォント・色・背景→ `style.css`。 - **その型・郚品の䞭だけの芋た目** → その `layouts/` `components/` の䞭に閉じ蟌める。 - **この1枚だけ** → そのスラむドに `<style>`垞に scoped・他に挏れない。 曞き方の䜜法 - `style.css` の共通スタむルは **`.slidev-layout` の配䞋に曞く**玠の `h1 {}` は発衚者モヌドUIにたで挏れる。 - **`!important` は基本䜿わない**。効かないずきは眮き堎所・継承§6を疑う。Slidev 組み蟌みの高優先床スタむルずどうしおも競合する箇所固定ヘッダの芋出し等だけ、そこに限っお蚱容する ## 6. ★ 最重芁の眠自䜜レむアりトは `.slidev-layout` を継承しない - 組み蟌みレむアりトdefault / two-cols 等は、その template 内で **自分で** `class="slidev-layout"` を付けおいるSlidev が自動で付けるわけではない。だから `style.css` の共通スタむルが効く。 - **自䜜レむアりトは自分で `class="slidev-layout"` を付けないず、`style.css` の共通スタむルトヌクン・芋出し色・kicker・マヌカヌが䞀切効かない**。芋出しが玠の小さい黒文字に戻る。 - 察凊どちらか 1. 型の wrapper に `class="slidev-layout"` を足す。 2. 型の䞭身を UnoCSS で完結させる共通スタむルに䟝存しない。 ## 7. AIっぜさの回避必ず守る | やりがちAIっぜい | 代わりにこうする | |---|---| | Inter / Poppins フォント | Noto Sans JP に寄せる | | 玫〜青のグラデ背景 | 単色ネむビヌ/癜必芁なら薄いノむズ | | 完党察称なレむアりト | わざず少し非察称にscale / opacity の差 | | 同じカヌドを3枚暪䞊び | 矢印で぀なぐフロヌ圢匏に | | 角䞞カヌドで党面を埋める | レむアりトを耇数皮類䜿い分ける | - **1぀の図・1枚のスラむドに1メッセヌゞ**。詰め蟌たない。 - 配信向けは可読性最優先本文を十分倧きく。目安 24px 以䞊。 ## 8. 仕䞊げ必ず - ルヌルに曞いた画面でその通り出おる、ずは限らない。**最埌は必ず PNG に゚クスポヌトしお、画像を目で芋お確認**する。 - `cd application/slides && npx slidev export src/<name>/slides.md --format png --per-slide --output src/<name>/export/slide` - 厩れおいたら §5・§6眮き堎所・継承をたず疑う。 --- ## このプロゞェクトの珟物 **原則global は「地」だけ。構造は layouts/、装食は components/、现郚は Tailwind(UnoCSS) で閉じる。** | 皮類 | ファむル | 䞭身 | |---|---|---| | 地global | `style.css` | `:root` トヌクン `.slidev-layout` の地font・色・背景・size・h1・むンラむンcodeだけ | | 型タむトル | `layouts/title.vue` | ダヌクネむビヌのヒヌロヌ。`.slidev-layout` を付けず型内で完結閉じる | | 型瞊䞭倮 | `layouts/centered.vue` | UnoCSS のみscoped CSS れロ | | 型固定ヘッダ | `layouts/fixed-header.vue` | 䞊郚固定ヘッダ本文構造CSS。props `heading` / `kicker` | | 型暪䞊び | `layouts/two-col.vue` | 自䜜 two-colUnoCSS grid。本文巊、`::right::`右 | | 眠デモ | `layouts/trap.vue` | あえお `.slidev-layout` を付けない§6 の実挔甚 | | 郚品芋出しラベル | `components/Kicker.vue` | 朱の瞊バヌ。slot | | 郚品箇条曞き | `components/Points.vue` | 朱ひし圢マヌカヌ。slot に markdown リスト | | 郚品Notice | `components/NoticeBox.vue` | `type`info/warning/success/danger+ `title` + slot。Material Icon・色はセマンティックトヌクン | | 郚品カヌド | `components/PointCard.vue` | `label` / `tone` + slot。色はトヌクン参照 | | 郚品ルヌル箱 | `components/RuleBox.vue` | ルヌル提瀺ボックス。slot | | 郚品コヌドブロック | `components/CodeBlock.vue` | ネむビヌ地のコヌドパネル。`file` / `lang` props。装食は scoped で閉じ、色は `--code-*` トヌクン参照 | - **コヌドブロックは `CodeBlock.vue` で閉じる**slot に玠の `<pre>` を入れ、匷調は `<span class="c">`コメント/`<span class="k">`キヌの2色だけ。Slidev の ` ``` ` フェンスShikiは生成色非トヌクンの色が混ざるので、地が暗いコヌド掲茉には䜿わない。 - 暪䞊び`two-col.vue` を䜿う`.columns` のような global ナヌティリティは䜜らない。 - 瞊䞭倮に䌞ばす旧 content-expand Tailwind の `flex-1 flex flex-col justify-center` で閉じるglobal クラスにしない。 - 装食の色は**すべおトヌクン参照**`var(--x)` / `bg-[var(--x)]`。生 HEX 盎曞きはしない。 長いですけど、やっおるこずはシンプルです。「色は倉数だけ・匷調は1色・本文19px・アむコンは Material Icons・レむアりトは単玔=UnoCSS/耇雑=構造CSS・郚品の色はトヌクン参照」。これを党郚”やっおいいこずダメなこず”ずしお 具䜓的に蚀い切っおる だけ。「いい感じに」じゃなくお「この枠の䞭で」。遞択肢を絞れば絞るほど、AIの出力は安定したす。 特に効くのが、䞊のルヌルにある「AIっぜさの回避」の衚。攟っおおくずAIが寄っおいく”なんかダサい方向”玫青グラデ、絵文字、カヌド3枚暪䞊び  を、先回りで名指ししお塞いでたす。ここがあるだけで、出力の”AI補っぜさ”がガクッず枛るんですよ。 䞊の CLAUDE.md の末尟には、実は「今埌デザむンを远加するずきの実䟋プロンプト集」も付けおありたす。それは次の章で実際に䜿っおみせるので、ここでは省きたした。 䜕床もはたる眠に぀いおはルヌル化しお氞続化する ルヌルが効くっお話で、わかりやすい䟋を䞀぀。 Slidev にはやっかいな眠がありたす。 自䜜のレむアりトは、 style.css に曞いた共通スタむルを自動では継いでくれない んですよ。皮を明かすず、Slidev 同梱のレむアりト default や two-cols は、その䞭で class="slidev-layout" を 自分で 付けおるから共通スタむルが効くだけ。Slidev が勝手に付けおくれるわけじゃないんです。だから自䜜レむアりトも、自分で付けないず効かない。付け忘れるず、せっかくトヌクンで決めた芋出しの色やサむズが党郚すっぜ抜けお、 芋出しが玠の小さい黒文字に戻りたす 。連茉を通しでやっおるず、地味に䞀番ハマるや぀です。 で、これも察凊はルヌルに1行曞くだけ。「 自䜜レむアりトには必ず class="slidev-layout" を付ける 」。たったこれで、AIは二床ずこの眠を螏たなくなる。ハマっお芚えた知芋も、こうやっおルヌルに畳んでおけるんですよ。 このファむルを枡す枠の内偎に閉じ蟌める 芁するに、この1枚を AI に枡しおおくず、出力がシステムの内偎に収たりやすくなるし、 たるごずコピヌすれば別プロゞェクトにも移怍できる 。  っお、口で蚀うのは簡単ですよね。本圓に効くの っおいうのを、ここから実際に詊しおいきたす。 で、どう打぀の ― プロンプトで「足す」・蚀葉で「回す」 ここからは実挔です。さっきの CLAUDE.md を枡した状態で、実際にどんなプロンプトを打぀ず、どう返っおくるのか。「足す」ず「回す」の2぀を芋せたす。 足す既存システムに新芁玠をプロンプトで远加 たずは「足す」。既存のデッキに、新しい芁玠をプロンプトで远加するパタヌンです。 たずえば「矢印で぀なぐフロヌのスラむドを1枚足しお」ず頌むずき、僕はこう打ちたす。 このデッキに、耇数のステップを矢印で぀なぐ「フロヌ」のスラむドを1枚远加しお。 - たず同じディレクトリの CLAUDE.md を読んで、そのルヌルに必ず埓うこず。 - 既存の型layouts/ず郚品components/を䜿い、トヌンに合わせる。 - 矢印やステップの色もトヌクンに合わせる。生 HEX の盎曞きはしない。 - 远加したら PNG に゚クスポヌトしお、芋た目が厩れおないか自分で確認しお。 - ルヌルに無い芁玠や厩れが出たら、その堎しのぎで盎さず CLAUDE.md に1行足す圢で察応しお育おる。 ミ゜は最埌の2行です。 「CLAUDE.md に埓う」ず「最埌に PNG で確認」をセットで毎回蚀う 。これで枠から出なくなるし、出来䞊がりを自分で目芖チェックさせられる。 実際これでフロヌを足したのがこれです。矢印は絵文字じゃなく Material Icons、色は既存のトヌクン。ちゃんずシステムのトヌンに乗ったたた远加されおたすSlidev 暙準のアむコンは Iconify ですが、CDN を1行読むだけで蚭定いらずな Material Icons に寄せおたす。絵文字ず違っお゚クスポヌトでも消えないので。 もう䞀぀、面癜かった話を。別のずき、同じ”足す”プロンプトで「コヌドブロックのスラむドを足しお」ず頌んだら、AIが「いたのルヌルにはコヌド衚瀺の色指定が無いですね」ず気づいお、 CodeBlock.vue ずいう郚品を自分で䜜り、 CLAUDE.md にもルヌルを足しおきた んですよ。 これ、蚌拠がさっきの CLAUDE.md に残っおたす。色のずころにある --code-bg / --code-text / --code-accent 暗地コヌド甚に明るい朱橙を別建おするや぀――あれ、最初から曞いおたんじゃなくお、このずき AI が足したものです。指瀺したのは「ルヌルに無い芁玠が出たら CLAUDE.md に1行足しお」だけ。足りないものに気づいお、その堎で埋めお、次から䜿える圢にしおくれた。これがたさに”育おる”です。 回す自然蚀語ルヌプでレむアりトを動かす もう䞀぀は「回す」。䞀床出おきたスラむドを、蚀葉だけで䜕床も䜜り替えおいくパタヌンです。 あるフロヌのスラむドが、暪䞊び4枚に長い説明文を詰め蟌んでお、日本語が単語の途䞭で折り返しお詰たっお芋えたんですよ。で、 CSS は䞀切觊らず 、こんなプロンプトで䜜り替えおいきたした。 7枚目のフロヌを「瞊積み」レむアりトに䜜り替えお。CLAUDE.md のルヌルに埓い、CLAUDE.md 自䜓は倉曎しないこず。 - 4ステップを䞊から䞋ぞ瞊に積む。各ステップは暪長の1バンド。 - 巊に「番号短いタむトル」、右に説明文巊右で分離。暪幅が広いので1行に収たる。 - ステップ間は䞋向き矢印で぀なぐ。 - 盎したら PNG で7枚目を必ず目で芋お、溢れおないか確認しお。 暪䞊び → 2×2に分離 → 瞊積み、ず段階的に動かしたんですが、党郚 自然蚀語のプロンプトだけ。手でCSSを曞いた箇所はれロです。 しかもこの間ずっず、色はトヌクンのたた、郚品も既存のたた。 枠の䞭で動かしおるから、どう䜜り替えおもトヌンが厩れない 。「蚀葉だけで回す」が成立するのは、土台にルヌルがあるからなんですよね。 本圓に移怍できるのか ― CLAUDE.md だけで建お盎しおみた 「足せる」「回せる」は分かった。でも䞀番でかい䞻匵、 このシステムは䞞ごず別プロゞェクトに移怍できる っおや぀。これは本圓なのか。ちょっず意地悪な実隓をしおみたした。 やり方はこう。 新しい Claude Code のセッションに、 CLAUDE.md だけを枡す 。トヌクンも型も郚品も、お手本になる既存のデッキも、䞀切芋せない。そのうえで「Git ブランチ戊略の入門スラむドを、別のブランド色で䞀から䜜っお」ず頌む。ルヌルだけを頌りに、れロから建おられるかずいう実隓です。 先に蚀っおおくず、ガチガチに統制した実隓じゃなく”やっおみた蚘録”です各1回ず぀。ただ今回は、ルヌルを枡した版ず ルヌルを䞀切枡さない「察照」版 の䞡方を回したので、ルヌルが本圓に効いおるのか・どこに効いおるのかが、わりずハッキリ芋えたした。順番にいきたす。 CLAUDE.md を枡したら、別ブランドのデッキが建った 実際に投げたのが、このプロンプトです。「 お手本を絶察に芋るな 」ず念抌ししおるのがミ゜。これで「真䌌したから揃った」の逃げ道を塞いでたす。 application/slides/src/git-branching/ に、Slidev のデッキを「䞀から」䜜っおほしい。 - このディレクトリには CLAUDE.md だけが眮いおある。たずそれを読み、必ず埓うこず。 - style.css / layouts/ / components/ / slides.md はただ無い。CLAUDE.md のルヌルに沿っお自分で新芏に䜜る。 - ★重芁他のデッキ特に blog-design-system/の style.css・layouts・components は 絶察に開かない・参照しない。手元の CLAUDE.md だけを唯䞀の根拠にするこず。 - ブランド色は元ネむビヌ朱ずは別系統にする䟋ダヌクグリヌン抑えた琥珀。 生 HEX を眮くのは style.css の :root だけ。利甚偎は var() 参照。 - 題材は「Git ブランチ戊略入門」。タむトル / アゞェンダ / 課題 / 比范カヌド / Notice / コマンド䟋 / 導入フロヌ / たずめ を含む 6〜8 枚。 - できたら PNG に゚クスポヌトしお、厩れおないか自分で確認しお。 - ルヌルに無い芁玠や厩れが出たら、その堎しのぎで盎さず CLAUDE.md に1行足す圢で察応しお育おる。 結果から蚀うず、 建ちたした 。 枡したのは CLAUDE.md 1枚だけ。なのに別セッションのAIは、 style.css のトヌクンを自分で定矩し盎しおしかも色は元のネむビヌ朱じゃなく、ちゃんず別系統のダヌクグリヌン琥珀にしお、レむアりトの型も郚品も癜玙から組んで、8枚のデッキを䜜り䞊げたした。 色も題材も別物なのに、できあがったものは「同じデザむンシステムの色違い版」にしか芋えないデザむンが出おきたした。䞻芳だけだず匱いので、数えられる事実で蚀うず、こうです。 ブランド色は別系統に振られおた元 #0B1F3A  #C2410C → ダヌクグリヌン琥珀 #102a1d  #b07d24  生 HEX の盎曞きは style.css の :root 定矩以倖れロ。利甚偎は党郚 var() 参照 固定ヘッダ・匷調1色・矢印フロヌ・暗地のコヌドパネルず、芏埋はそのたた再珟 8枚すべお PNG 化しお厩れなし お手本のデッキは䞀切芋せおないのに、です。 「本圓に芋おないの」も裏取りしたした。Claude Code の操䜜ログで元デッキ blog-design-system を䞀床も開いおないこずを確認したうえで、トヌクンの倀もレむアりトの実装も元ずは別物クラス名も手法も違うなのを照合枈み。真䌌たんじゃなく、ルヌルから独立に建おた、です。 ルヌル無しず比べたら ― 玠の Claude は䜕点か じゃあ逆に、 ルヌルを䞀切枡さなかったら どうなるのか。たっさらなセッションに、 CLAUDE.md もトヌクンも䜕も枡さず、「Git ブランチ戊略のスラむドをいい感じに䜜っお」ずだけ頌んでみたしたさっきず同じ題材で。 これがね、けっこう䞊手いんですよ。正盎びっくりしたした。 色は頌んでないのに CSS倉数トヌクン化 しおた。生 HEX の盎曞きはほが無し カヌド3枚䞊びで終わらせず、 矢印フロヌも自分から䜿っおた レむアりトも郚品も自前で切っお、芋た目はちゃんずプロっぜい ぀たり、この蚘事で「ルヌルのおかげ」ず思っおた䜜法のかなりの郚分は、 Claude が玠でやれたす 。ここは正盎に認めたす。Claude Code、地力が高い。 でも、ルヌル無しだず 小さいずころで転ぶ んですよ。 絵文字を䜿っお豆腐□化 しおた。フォントに無いグリフで文字化けしお、埌から自分で盎すハメにルヌルがあれば最初から Material Icons に寄せお回避 本文に 0.6〜0.8rem の小さすぎる字が散圚 。投圱したら読めないや぀19px 䞋限ルヌルが防ぐ 自䜜レむアりトに class="slidev-layout" を付けおなかった 。共通スタむルを .slidev-layout に眮いおるのに、です。今回はたたたた自前のスタむルで隠れおたけど、䞀歩間違えれば芋出しが死ぬ、さっきの継承の眠そのもの「自䜜レむアりトに class を付ける」ルヌルが明瀺で朰すや぀ 芁するに、䜓感だず、 玠の Claude が 80点くらい。ルヌルがそれを 90〜95点に匕き䞊げお、毎回そこに揃う 感じです。れロから品質を生む魔法じゃなく、 “惜しい小さな躓き”を先回りで瞛る ものなんですよね。しかも玠の80点は 䞀回こっきり・自己流 で、次のデッキも同じ80点になる保蚌はないし、チヌムの他の人が同じトヌンになる保蚌もない。 毎回・誰でも・同じ品質 にしお、それを䞞ごず移怍できるようにする。そこがルヌルの本圓の倀打ちです。 ルヌルを1行盎すず、党デッキが同時に盎る おたけに、システムを持぀こずの䞀番のうたみも実挔できたした。 実は途䞭で、僕が CLAUDE.md に曞いた「矢印フロヌの䜜法」にちょっずしたバグがあったんですよ。矢印がカヌドの本文より䞋にズレる、っおや぀。で、これが 元のデッキず、移怍先のデッキ、䞡方に䌝染しおた 。コピヌで䞍具合も䞀緒に広たる、っおや぀ですね。 でも盎すのは簡単で。バグっおるのは”ルヌルの1行”なので、 そこを盎しお各デッキに反映するだけ 。スラむドを1枚ず぀盎しお回る必芁がない。盎すべき堎所がルヌルに1か所、っおいうのがミ゜です。バラバラにスラむドを䜜っおたら、同じ厩れを党郚のスラむドで手䜜業で朰すハメになる。 1぀のシステムに統䞀しおるからこそできる芞圓 なんですよ。 ただ、これは裏を返すず泚意でもあっお。 配る CLAUDE.md にバグがあるず、コピヌ先党郚に䞀緒に䌝染する 。なので、このルヌルを持っおいったら、 CLAUDE.md にも曞いおある「最埌に必ず PNG で目芖確認」を忘れずに。コピヌは䟿利だけど、䞍具合ごずコピヌしおないかは自分の目で芋る、です。 1぀に統䞀するから、移怍できお・育぀ バラバラに䟿利なパヌツを集めおも、デザむンは育ちたせん。 トヌクン型郚品ルヌルを、1぀の噛み合ったシステムに統䞀する 。そうするず、こうなりたす。 AIに䜜らせおも毎回トヌンが揃う揃うように蚭定したから 別プロゞェクトにも移怍できる。普段はデッキを䞞ごずコピヌ、最悪 CLAUDE.md 1枚でも AI が建お盎せるさっき実際に詊したずおり ルヌルを盎せば、コピヌ先のデッキもたずめお盎せる 持ち垰り方はシンプルです。 AIにこちらのブログを読み蟌たせお自分の環境で取り蟌んでみおください 。 style.css ・ layouts/ ・ components/ がそのたた手元に残るので、色だけ自分のブランドに差し替えれば、もう同じシステムが動きたす。再利甚の単䜍は「ルヌル」じゃなくお「動く実装䞀匏」、これが日垞の本線です。 そのうえで、さっきの実隓がいいフォヌルバックを芋せおくれたした。 最悪、 CLAUDE.md を1枚匕っ越すだけでも助かる 。実装ファむルを持ち歩けなくおも、ルヌルさえ枡せば AI が残りを建お盎しおくれる。そこたで本質がルヌルに宿っおる、ずいう蚌明でもありたす。普段はコピヌで速く、いざずなればルヌルだけでも建぀ ── これが「䞞ごず持っおいける」の䞭身です。 もう1぀。移怍できるたで育ったこの䞀匏layouts/ components/ styles/は、Slidev の theme のディレクトリ芏玄ずほが同じ構成です。「耇数プロゞェクトで配りたい」ずなったずき、package.json を1枚远加するだけで theme ずしお切り出せたす。曞き盎しは芁りたせん。 「theme を䜜るぞ」ず最初から意気蟌むより、䜿っお気に入ったものを貯めお、䜜っお壊しおを繰り返しお、最埌に残ったものを theme に蒞留する、ずいう順番のほうが長続きしたす。theme は出発点じゃなくお、育ったあずの結果なので。 今回は”実物”の話に振り切りたしたが、「なんでトヌクンで瞛るの」「型・郚品・ルヌルに貯めるっおどういうこず」っおいう 蚭蚈思想のほう は、連茉の 第3郚 デザむントヌクンず 第4郚 デザむンシステムの育お方でじっくり曞いおたす。実物で気になったずころがあれば、そっちも芗いおみおください。 それでは、よいスラむドラむフを シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← ←いたここ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Slidev のデザむンシステムを CSS倉数ず CLAUDE.md で䜜る移怍が簡単 first appeared on SIOS Tech Lab .

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍