Tailwind CSS
ユーティリティファーストの CSS フレームワークで、クラス名の組み合わせでスタイルを構築する
Tailwind CSS とは
Tailwind CSS は、bg-blue-500、text-lg、flex、gap-4 のようなユーティリティクラスを HTML に直接記述してスタイルを構築する CSS フレームワークである。Adam Wathan が中心となって開発し、最初のバージョンは 2017 年 11 月に公開された。ユーティリティファーストという設計を広めた代表的なフレームワークである。
従来の CSS との比較
従来の CSS はセマンティックなクラス名を定義して別ファイルにスタイルを書くが、Tailwind はユーティリティクラスを HTML に直接記述する。CSS ファイルの管理が不要になり、クラス名の命名に悩む必要もなくなる反面、HTML が冗長になる。
<!-- 従来の CSS: セマンティックなクラス名 + 別ファイルのスタイル -->
<button class="primary-button">Click</button>
<style>
.primary-button { background: #3b82f6; color: white; padding: 8px 16px; border-radius: 4px; }
.primary-button:hover { background: #2563eb; }
</style>
<!-- Tailwind: ユーティリティクラスを直接記述 -->
<button class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">Click</button>
メリットとデメリット
採用の判断は、HTML の読みにくさと引き換えに何を得るかの見極めになる。
| メリット | デメリット |
|---|---|
| CSS ファイルを別途管理しない | HTML が冗長になる |
| デザインの一貫性 (トークンベース) | 学習コスト (クラス名の暗記) |
| 使ったクラスの分だけ CSS が生成される | 複雑なスタイルは @apply が必要 |
レスポンシブが直感的 (md:flex) | カスタムデザインには設定が必要 |
レスポンシブデザイン
ブレークポイントはクラス名のプレフィックスで表すため、スタイルの分岐が HTML の中で完結する。
<!-- モバイル: 1列、タブレット: 2列、デスクトップ: 3列 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<div class="bg-white p-4 rounded shadow">Card 1</div>
<div class="bg-white p-4 rounded shadow">Card 2</div>
<div class="bg-white p-4 rounded shadow">Card 3</div>
</div>
md: (768px 以上)、lg: (1024px 以上) のプレフィックスでブレークポイントを指定する。モバイルファーストで、プレフィックスなしがモバイルのスタイルだ。
クラスはどう集まるのか
Tailwind はソースファイルをコードとして解析せず、単なるテキストとして走査する。クラス名になり得るトークンを拾い、そのうちフレームワークが知っているユーティリティに対応するものだけを CSS として出力する。だから設定なしでも出力が小さく保たれ、w-[327px] のような任意の値もその場で生成できる。
この仕組みには重要な落とし穴がある。文字列の連結や補間はテキスト走査では追えないため、クラス名を動的に組み立てても生成されない。
// 生成されない: text-red-600 というトークンがソースに現れない
<div className={`text-${color}-600`} />
// 生成される: 完全なクラス名がソースに現れる
<div className={color === 'error' ? 'text-red-600' : 'text-green-600'} />
条件分岐で完全なクラス名を書き分けるか、あらかじめ対応表を用意してその値を渡す。ビルドは通るのにスタイルだけが当たらないため、原因を掴みにくい類の不具合になる。
Tailwind v4 の変更点
v4.0 は 2025 年 1 月に公開され、設定の置き場所とビルドの仕組みが大きく変わった (2026 年 8 月時点の系列は 4.3 系)。
- 設定の既定が CSS 側へ移り、
tailwind.config.jsは自動では読まれなくなった。引き続き使う場合は CSS で@config "../../tailwind.config.js"と明示して読み込む - 新しいビルドエンジンにより、公式の測定でフルビルドが最大 5 倍、差分ビルドが 100 倍以上速くなった
- テーマ値は CSS の
@themeディレクティブで定義し、そのまま CSS 変数として使える
/* Tailwind v4: CSS ファイルで設定 */
@import "tailwindcss";
@theme {
--color-primary: #3b82f6;
--font-sans: 'Inter', sans-serif;
}
Bootstrap との比較
同じ CSS フレームワークでも、部品を与えるか材料を与えるかという方向が逆である。
| 観点 | Tailwind | Bootstrap |
|---|---|---|
| アプローチ | ユーティリティファースト | コンポーネントベース |
| カスタマイズ | 高い (テーマ変数の定義) | 中程度 (変数の上書き) |
| バンドルサイズ | 小さい (未使用を除去) | 大きい (全コンポーネント) |
| デザインの自由度 | 高い | Bootstrap らしい見た目になりがち |
Next.js との統合
create-next-app で Tailwind を選ぶと、必要な設定が入った状態でプロジェクトが生成されるため、導入時に手を入れる箇所はほとんどない (2026 年 8 月時点)。既存プロジェクトへ後から入れる場合は、ビルドツール側のプラグイン設定と、テーマを書く CSS の読み込みの 2 点を押さえれば動く。
なお、ユーティリティファーストは既存の手法と排他ではない。ブレークポイントの設計は レスポンシブデザイン の考え方をそのまま使い、色や余白の値をどう決めるかは デザインシステム の領域に残る。コンポーネント単位でスタイルを閉じ込めたい部分だけ CSS Modules と併用する構成も現実的である。
この記事は役に立ちましたか?
関連用語
レスポンシブデザイン
画面サイズに応じてレイアウトを自動調整し、あらゆるデバイスで最適な表示を実現する手法
デザインシステム
UI コンポーネント、デザイントークン、ガイドラインを体系化し、一貫した UI を実現する仕組み
CSS Modules
CSS ファイルのクラス名を自動的にスコープ化し、名前衝突を防止する CSS のモジュール化手法
CSS-in-JS とは - styled-components/Emotion の仕組みと選定基準
CSS-in-JS は JavaScript 内で CSS を記述しコンポーネントスコープのスタイルを実現する手法。ランタイム型とゼロランタイム型の違い / パフォーマンス比較を解説
CSS カスタムプロパティ
CSS で変数を定義し、スタイル全体で再利用できる仕組み
CSS
Web ページの見た目を定義する言語。レイアウト / 色 / 装飾を担う
関連する記事
Web デザイン本ガイド - HTML/CSS、Figma、Photoshop を学ぶ順番
Web デザインを独学する本の選び方を「コーディング、ツール、デザイン原則」の 3 本柱で整理。HTML/CSS の入門書、Figma と Photoshop の教本、レイアウトと配色の定番書を、2026 年 8 月時点の収載書から学ぶ順番つきで解説します。
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。