design system reference

Tailwind
Design
System

最低限の標準化されたデザインへ、論理的でメンテナンス性の高いフロントエンド設計のための標準化ガイド。 標準化すべき要素と、あえて形式化しない領域を明確に整理します。

9
color tokens
3
animations
2
shadows
5
breakpoints
3
font stacks
01

標準化された領域

tailwind.config.jsglobal.css で定義された、プロジェクト全体の一貫性を担う要素群。これらが「デザインの文法」となります。

カラーシステム

生の色名(blue-500)ではなく役割ベースのセマンティック名で定義。 CSS変数を介して Tailwind クラスと紐付けるため、デザイン変更は global.css の変数一行だけで全体に伝播します。

brand — ブランドカラー
brand.primary
#3b82f6
--color-primary
brand.secondary
#64748b
--color-secondary
brand.accent
#f59e0b
--color-accent
surface — 背景・面のカラー(ライトモード値)
surface.base
#ffffff
--color-bg-base
surface.sunken
#f8fafc
--color-bg-sunken
surface.elevated
#ffffff
--color-bg-elevated
content — テキストカラー(ライトモード値)
content.main
#0f172a
--color-text-main
content.muted
#64748b
--color-text-muted
content.inverse
#ffffff
--color-text-inverse
☀ Light Mode  :root
bg-base: #ffffff
bg-sunken: #f8fafc
text-main: #0f172a
text-muted: #64748b
☾ Dark Mode  .dark
bg-base: #0f172a
bg-sunken: #020617
text-main: #f8fafc
text-muted: #94a3b8

タイポグラフィ

日英混在の現実を考慮した3段階のフォントスタック。 font-sans / font-mono / font-display で用途を使い分けます。display スロットは強いテーマデザイン用の差し替え口です。

font-sans "Inter", "Hiragino Sans", "Noto Sans JP", sans-serif
The quick brown fox. 日本語と English の混在テキスト。漢字・ひらがな・カタカナ全対応。
font-mono "JetBrains Mono", monospace
const config = { darkMode: 'class', theme: { extend: {} } }
font-display "YourCustomFont", cursive — カスタムスロット(未指定)
手書き・装飾・テーマフォントをここに差し込む

シャドウ

モダンデザインの「浮き感」を表現する2段階のシャドウ定義。 ダークモード時は自動的に強度が変わります(右上のトグルで確認できます)。

shadow-soft
ソフトシャドウ
0 4px 20px -2px rgba(0,0,0,0.05)
カード・インプット・サブ要素。主張しない浮き感。
shadow-elevated
エレベーテッド
0 20px 25px -5px rgba(0,0,0,0.1),
0 10px 10px -5px rgba(0,0,0,0.04)
モーダル・ドロップダウン・CTA ボタン。

アニメーション

サイトの「性格」を決めるコアアニメーション3種。ループ再生で動きを確認できます。 汎用的なものを config に登録し、 クラス名 animate-fade-in 等で使用します。

animate-fade-in
0.3s · ease-out
animate-slide-up
0.4s · cubic-bezier(0.16, 1, 0.3, 1)
animate-blob
7s · infinite · border-radius morph

ブレークポイント

モバイルファースト設計。sm: から始め、 大きな画面に向けてスタイルを上書きしていくアプローチ。Tailwind の標準値を継承しています。

sm640px
md768px
lg1024px
xl1280px
2xl1536px

ダークモード戦略

darkMode: 'class' を採用。 JavaScript から html 要素に .dark を付け外しするだけで全体が切り替わります。

// tailwind.config.js darkMode: 'class', // global.css — 変数の上書きのみでテーマ切り替えが完結 .dark { --color-bg-base: #0f172a; --color-bg-sunken: #020617; --color-text-main: #f8fafc; --color-text-muted: #94a3b8; } // JS — クラスの付け外しだけでOK document.documentElement.classList.toggle('dark');
02

意図的に
形式化しない領域

すべてを config に詰め込むとファイルが肥大化し、柔軟性が失われます。 以下の要素は「その場のコード」で書くべき領域として意図的に残しています。形式化しないことが表現力を守ります。

一過性のレイアウト調整 任意値で記述

特定の場所だけで必要な微調整。Tailwind の任意値(Arbitrary Values)構文でその場に書きます。 config に登録すると、再利用されない値でファイルが汚れるうえ、他のパーツにも波及するリスクがあります。

<!-- その場で書く ✓ --> <div class="top-[13px] left-[5%] w-[calc(100%-2rem)]"> <div class="mt-[3px] gap-[7px] translate-x-[2px]"> <!-- config に追加しない ✗ --> // 一回しか使わない spacing をグローバル定義しない
複雑なグラデーション インラインまたはユーティリティ組み合わせ

方向・色数・透明度が複雑に組み合わさるグラデーションは、ユーティリティの直接組み合わせか インラインスタイルの方が直感的です。セマンティクスよりビジュアルの正確さが優先されます。

<!-- ユーティリティ組み合わせ ✓ --> <div class="bg-gradient-to-br from-blue-500/20 via-purple-500/10 to-transparent"> <!-- 複雑な場合はインラインスタイル ✓ --> <div style="background: radial-gradient(circle at 30% 40%, #3b82f620, transparent 60%)">
特定ページ専用の装飾 コンポーネント内で完結

キャンペーンバナー・LP のヒーロー装飾・期間限定プロモーション要素など、全体で使い回さないパーツは 標準化の対象外です。必要な場所にそのまま書き、デザインシステムを汚染しません。

強い世界観を持つテーマデザイン テーマ専用の追加実装

Tailwind は「道具箱」であり「作風」ではありません。手書き風・コミック風などの世界観は Tailwind 単体では実現できず、別途追加実装が必要です。

テーマ Tailwind だけでは無理な部分 実装アプローチ
手書き風 完全に不規則な境界線・ガタガタした線 SVG フィルター + 歪んだ borderRadius の多用
コミック風 極太の枠線・二重オフセット影・スクリーントーン背景 box-shadow の多重定義 + カスタム背景画像
共通 独特なフォント(世界観の7割を決める) Google Fonts から font-display として読み込み Config で紐付け

なぜ形式化しないか: 手書き風の美しさは「不規則であること」が源泉です。config で「標準の角丸」として定義すると、 すべてのパーツが同じ歪み方になり、デジタルで不自然な印象になります。

推奨アプローチ: 「土台はモダンな Tailwind 設定で作りつつ、テーマパーツだけを自由に書き込む」スタイルが最も表現力が高くなります。

03

メンテナンスの指針

「何を変えたい時に、どこを触るか」を3つのルールで整理します。 このシステムに沿って運用すれば、変更の影響範囲が常に予測可能になります。

01
色を変えたい
CSS変数の値を書き換えるだけで、全コンポーネントに伝播します。コンポーネントを一つ一つ直す必要はありません。
global.css
02
新しいフォントを追加したい
fontFamily オブジェクトにキーを追加するだけでクラス名が自動生成され、font-* として使えます。
tailwind.config.js
03
新しいアニメーションを作りたい
汎用的なら config へ登録。その場限りなら animate-[...] でインライン記述します。
config or HTML