ユーティリティファーストとは何か
CSSフレームワークには大きく2つのアプローチがあります。
- コンポーネントベース(Bootstrap・Foundation):
.btn・.cardのような完成されたコンポーネントクラスを提供する - ユーティリティファースト(Tailwind CSS):
flex・pt-4・text-gray-700のような単機能クラスを組み合わせてUIを作る
Tailwind CSSは後者の代表格であり、「HTMLから離れずにスタイルを書く」という哲学に基づいています。
なぜ開発が速くなるのか
クラス名を考えるコストがゼロ
BEM記法(.block__element--modifier)のようなクラス名命名に費やす時間がなくなります。text-blue-600 hover:text-blue-800 font-bold と書くだけでスタイルが決まります。
CSSファイルの肥大化が起きない
従来のCSS開発では、機能追加のたびにCSSファイルが増え続けます。Tailwindではクラスを使い回すため、CSSのサイズは一定を保ちます。本番ビルドではPurgeCSSが未使用クラスを自動削除し、数KB〜数十KBの小さなCSSファイルが生成されます。
コンテキストスイッチが減る
HTMLとCSSを行き来する必要がなく、HTMLファイルだけを見ればデザインの全体像がわかります。チームでの開発においても、どのスタイルがどの要素に適用されているかが一目でわかるため、コードレビューが容易になります。
レスポンシブ対応が圧倒的に楽
Tailwindのブレークポイントプレフィックスを使えば、メディアクエリなしでレスポンシブデザインが実現します。
<!-- モバイルは縦並び、mdサイズ以上で横並び -->
<div class="flex flex-col md:flex-row gap-4">
<div class="w-full md:w-1/3">サイドバー</div>
<div class="w-full md:w-2/3">メインコンテンツ</div>
</div>
| プレフィックス | ブレークポイント |
|---|---|
sm: |
640px以上 |
md: |
768px以上 |
lg: |
1024px以上 |
xl: |
1280px以上 |
2xl: |
1536px以上 |
ダークモード・ホバー・フォーカスが直感的
状態バリアントを組み合わせることで、インタラクティブなUIを簡潔に記述できます。
<button class="
bg-blue-600 text-white
hover:bg-blue-700
focus:ring-2 focus:ring-blue-500 focus:outline-none
dark:bg-blue-500 dark:hover:bg-blue-400
px-4 py-2 rounded transition-colors duration-200
">
送信する
</button>
カスタマイズ性が高い
tailwind.config.js でテーマを拡張することで、デザインシステムに沿った独自の色・フォントサイズ・スペーシングを定義できます。
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
'brand-gold': '#d4b896',
'brand-dark': '#1c1c14',
'brand-bg': '#faf9f7',
'brand-muted': '#6b6b55',
},
fontFamily: {
serif: ['Cormorant Garamond', 'serif'],
sans: ['Noto Sans JP', 'sans-serif'],
},
spacing: {
'18': '4.5rem',
'72': '18rem',
'84': '21rem',
'96': '24rem',
},
},
},
}
Bootstrapとの使い分け
| 観点 | Bootstrap | Tailwind CSS |
|---|---|---|
| 学習コスト | 低い(コンポーネントを覚えるだけ) | 中程度(クラス体系を覚える必要あり) |
| カスタマイズ性 | 低〜中 | 非常に高い |
| 独自デザイン | 難しい(Bootstrap臭が出る) | 自由 |
| ファイルサイズ | 大きめ | 最小限(PurgeCSS後) |
| 向いている用途 | 管理画面・プロトタイプ | コーポレートサイト・プロダクト |
実際のコンポーネント例
<!-- カードコンポーネント -->
<div class="bg-white border border-gray-200 rounded-xl shadow-sm p-6 hover:shadow-md transition-shadow">
<div class="flex items-center gap-4 mb-4">
<div class="w-12 h-12 bg-amber-100 rounded-full flex items-center justify-center">
<svg class="w-6 h-6 text-amber-700" ...></svg>
</div>
<h3 class="font-bold text-gray-900 text-lg">Webシステム開発</h3>
</div>
<p class="text-gray-600 text-sm leading-relaxed">
PHP/LaravelとPostgreSQLを使った業務システム・ECサイト・予約システムの開発
</p>
<a href="/service"
class="inline-block mt-4 text-amber-700 text-sm font-medium hover:text-amber-900 transition-colors">
詳細を見る →
</a>
</div>
v4の新機能——CSS変数ベースの設定
Tailwind CSS v4(2025年リリース)では設定方法が大幅に変わり、tailwind.config.js を使わずにCSSファイル内でテーマを定義できるようになりました。
/* resources/css/app.css */
@import "tailwindcss";
@theme {
--color-brand-gold: #d4b896;
--color-brand-dark: #1c1c14;
--font-serif: "Cormorant Garamond", serif;
}
弊社での採用実績
弊社が開発・運用するすべてのWebプロジェクトにTailwind CSSを採用しています。
- 株式会社アンカーリンクのコーポレートサイト
- マルキュウ商事の業務管理システム
- 美容院・歯科・サウナ等の予約管理システム
- 弊社(株式会社WR)のコーポレートサイト(本サイト)
デザインの自由度と開発スピードのバランスが最も優れたフレームワークとして、今後も使い続けていきます。
まとめ
Tailwind CSSはユーティリティファーストという哲学によって、開発スピード・保守性・カスタマイズ性を同時に実現します。最初は冗長なクラス名が気になるかもしれませんが、使い始めると手放せなくなるフレームワークです。
Webサイト・Webアプリの開発についてはお気軽にご相談ください。