Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第7章 Tailwind CSS の導入方法

7.1 導入経路の地図

Tailwind の導入経路は、大きく次の 4 つです。最初にこの地図を持っておくと、自分が何を選んでいるのかを見失いません。

経路何のためか向いている人
Play CDNビルドなしでブラウザだけで試すとにかく今すぐ試したい・学習用
Vite プラグインVite を使うプロジェクトに組み込むReact / Vue / Svelte など Vite ベースのほとんど
PostCSS プラグインPostCSS を使うビルドに組み込むNext.js や、PostCSS 前提のツール
Tailwind CLITailwind 単体で CSS をビルドするビルドツールを増やしたくない・小規模

このうち、本番プロジェクトで主役になるのは Vite プラグインです。v4 で最も手軽かつ高速な経路として公式が推奨しています。Rails のような独自のアセットパイプラインを持つフレームワークは、これとは別に専用の経路(gem)が用意されています(第8章)。

Tailwind CSS の導入経路を、学習用の Play CDN、本番向けの Vite プラグイン、PostCSS、Rails gem、CLI に分けて選ぶ流れを示す図。
図 7-1 Tailwind の導入経路は、目的とビルド主体で選ぶ。

7.2 最速の入口: Play CDN と Tailwind Play

「まず Tailwind がどんなものか触りたい」なら、ビルド環境を作らずに始められる方法が 2 つあります。

(1) Play CDN(自分の HTML ファイルで試す)

HTML の <head> に次のスクリプトを 1 行入れるだけで、その場でユーティリティが効くようになります。

<!doctype html>
<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
  </head>
  <body>
    <h1 class="text-3xl font-bold underline">Hello world!</h1>
  </body>
</html>

これは v4 のパッケージ @tailwindcss/browser を使う方法です。ブラウザ上でその場で CSS を生成するため、開発・学習用と割り切ってください(本番には使いません。ページ表示のたびに生成コストがかかります)。テーマも <style type="text/tailwindcss"> の中に @theme { ... } を書けば試せます。

(2) Tailwind Play(ブラウザ上のエディタ)

ファイルすら用意したくないなら、公式のオンライン環境 Tailwind Playhttps://play.tailwindcss.com/)が便利です。左に HTML、右にプレビューが出て、生成された CSS も確認できます。第2部で学んだ「どんな CSS が生成されるか」を確かめるのにも最適です。

7.3 推奨: @tailwindcss/vite での導入手順

ここからが実プロジェクト向けです。まずは推奨経路である Vite から見ます。手順は 3 ステップです。

ステップ 1: パッケージをインストールする

npm install tailwindcss @tailwindcss/vite

ステップ 2: Vite に Tailwind プラグインを登録する

vite.config.ts(または .js)にプラグインを追加します。

import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'

export default defineConfig({
  plugins: [
    tailwindcss(),
  ],
})

ステップ 3: CSS で Tailwind を読み込む

プロジェクトの CSS エントリ(たとえば src/style.css)に、次の 1 行を書きます。

@import "tailwindcss";

あとは npm run dev で開発サーバーを起動すれば完了です。第2部で見たとおり、この時点で content 配列のような走査対象の指定は不要です(v4 の自動コンテンツ検出)。

7.4 PostCSS(@tailwindcss/postcss)での導入

ビルドが PostCSS を前提にしている場合(代表例は次章の Next.js)は、PostCSS プラグインを使います。

ステップ 1: インストール

npm install tailwindcss @tailwindcss/postcss postcss

ステップ 2: PostCSS の設定ファイルを作る

postcss.config.mjs を作成します。

export default {
  plugins: {
    "@tailwindcss/postcss": {},
  },
}

ステップ 3: CSS で読み込む

@import "tailwindcss";

v3 を知っている人へ: v3 では postcss.config.jstailwindcssautoprefixer を並べて書くのが定番でした。v4 では、ベンダープレフィックス付与などを内蔵の Lightning CSS が担うため(第4章)、autoprefixer を別途書く必要はありません。

7.5 CLI(@tailwindcss/cli)での導入とウォッチ

「Vite も PostCSS も使いたくない、Tailwind だけで CSS を作りたい」場合は、Tailwind CLI を使います。

ステップ 1: インストール

npm install tailwindcss @tailwindcss/cli

ステップ 2: 入力 CSS を用意する

/* src/input.css */
@import "tailwindcss";

ステップ 3: ビルド(ウォッチ)する

入力ファイルを指定し、出力先を決めて実行します。--watch を付けると、ファイルの変更を監視して自動で再ビルドします。

npx @tailwindcss/cli -i ./src/input.css -o ./src/output.css --watch

生成された output.css を HTML から読み込めば完成です。

<link href="./output.css" rel="stylesheet">

CLI は仕組みが分かりやすいので、「Tailwind が実際に何をしているか」を理解する学習用途にも向いています。

7.6 @import "tailwindcss" と最小の CSS エントリ

ここまでのどの経路でも、CSS エントリは次の 1 行から始まります。

@import "tailwindcss";

第4章で見たとおり、この 1 行が theme / base / components / utilities の各レイヤーを読み込みます。あなた独自のスタイルやテーマは、この下に足していきます。

@import "tailwindcss";

/* テーマのカスタマイズ(第5章) */
@theme {
  --color-brand: oklch(0.45 0.24 264);
}

/* 必要なら自前のスタイルやカスタムユーティリティ(第22章・第26章) */

この「@import してから、必要なものを足す」という形が、v4 のすべてのプロジェクトの出発点になります。

7.7 v3 からの移行ツール(@tailwindcss/upgrade)の概要

既存の v3 プロジェクトを v4 に上げるなら、公式の移行ツールが用意されています。

npx @tailwindcss/upgrade

このツールは、面倒な変換の大部分を自動でやってくれます。具体的には、

  • @tailwind base; @tailwind components; @tailwind utilities;@import "tailwindcss"; に置き換える
  • tailwind.config.js の内容を、可能な範囲で CSS の @theme に移す
  • 名前が変わったユーティリティを書き換える(例: shadow-smshadow-xsoutline-noneoutline-hidden

といったことを行います。実行には Node.js 20 以上が必要です。なお、v4 はモダンブラウザ(Safari 16.4+ / Chrome 111+ / Firefox 128+ など)を対象としているため、古いブラウザを手厚くサポートする必要があるプロジェクトは v3.4 に留まる判断もありえます。移行の詳細や破壊的変更は第29章でまとめて扱います。

7.8 よくある初回トラブル(クラスが効かない・検出されない)

最後に、導入直後にハマりがちな問題と対処をまとめます。多くは第2部の仕組みを思い出せば解決できます。

(1) クラスを書いたのにスタイルが効かない

最も多い原因は、クラス名を動的に組み立てていることです。第4章で見たとおり、Tailwind はソースを「ただのテキスト」として走査し、完全なクラス名の文字列だけを拾います。

// NG: text-${color} は文字列として検出されない
<div className={`text-${color}-600`} />

// OK: 完全なクラス名で書く
<div className={color === 'error' ? 'text-red-600' : 'text-green-600'} />

この落とし穴は第27章でも改めて扱います。

(2) 一部のファイルのクラスだけ効かない

自動コンテンツ検出の対象外(.gitignore 配下、node_modules 内のライブラリなど)にあるファイルのクラスは拾われません。その場合は CSS 側で @source を足して、走査対象に含めます(第4章)。

@import "tailwindcss";
@source "../node_modules/my-ui-library";

(3) そもそも何も効かない

CSS エントリに @import "tailwindcss"; を書き忘れている、あるいはその CSS をページから読み込んでいない、というケースです。また、古い記事を見て @tailwind base; ... と書いてしまうのも v4 では動きません。@import "tailwindcss"; に直してください。

(4) ビルドは通るが、変更が反映されない

ウォッチ(監視)プロセスが動いていない可能性があります。npm run dev や CLI の --watch、Rails なら bin/dev(次章)が起動しているか確認します。

参考資料