概要
- Tailwind から バニラCSS +セマンティックHTMLへの移行体験談
- Tailwindで学んだCSS設計の知見と再実装の工夫
- 独自の色管理やコンポーネント設計、グリッドによるレスポンシブ対応
- Tailwind依存から脱却した理由とCSS技術への再評価
- 今後学びたいCSSの新機能や、CSSコミュニティへの感謝
TailwindからバニラCSSへの移行と学び
- 8年前、 Tailwind を発見し、CSS設計が分からない中で混乱よりもTailwindを選択
- Tailwindは小規模サイト制作に役立ち、多くの知見を得るきっかけ
- 最近、複数サイトを バニラCSS+セマンティックHTML へ移行し、学びと楽しさを実感
- フロントエンド専業ではなく、CSS学習は断続的に進行
Tailwindで学んだCSS設計の本質
- CSSコードベースは レイアウト・フォント・色・共通コンポーネント など多要素で構成
- 各要素の管理指針やシステムがないと混乱を招く
- Tailwindのシステム(リセット、カラーパレット、フォントスケール等)が有用
- 好きなシステムは 自作CSS設計 にも模倣・応用可能
CSS設計の各ポイント
1. Reset(リセット)
- Tailwindのpreflight styles (リセットCSS)を流用
- 例:
* { box-sizing: border-box; }
- 例:
- 長年リセットCSSに慣れていて、無意識に依存している部分も多い
2. コンポーネント設計
- CSSを コンポーネント単位 で整理
- 各コンポーネントに 一意のクラス名 を付与
- 他コンポーネントのCSSを上書きしない運用
- 各コンポーネントごとにCSSファイルを分割
- 編集時の影響範囲が明確になり、メンテナンス性向上
3. 色管理
- colours.css で全色をCSS変数で一元管理
- サイトで使う色は全てこのファイルに明記
- 例:
--pink: #fea0c2;
- 例:
4. フォントサイズ
- Tailwind同様、 フォントサイズ・行間 をCSS変数で定義
- 例:
--size-lg: 1.125rem;
- 例:
- 変数で管理することで、単位や値の迷いを解消
5. ユーティリティクラス
- 複数コンポーネントで使うクラス (例:
.sr-only)をutilityとして管理 - 必要最小限に留め、変更は慎重に
6. ベーススタイル
- サイト全体に適用する 最小限の共通スタイル を設定
- 例:
sectionの中央カラム幅や、aタグの色指定
- 例:
- 基本はベーススタイルを極力少なくし、共通化したいものだけ移動
7. スペーシング(余白管理)
- 外側のレイアウトコンポーネント が余白を決める設計にシフト
- 例:
section > *+* { margin-top: 1rem; }
- 例:
- Tailwind時代の行き当たりばったりな余白設定からの脱却
8. レスポンシブデザイン
- Tailwindの メディアクエリ多用 から、 CSS Grid 中心の柔軟なレイアウトへ
- 例:
grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), max-content));
- 例:
- grid-template-areas など、Tailwindでは難しい機能も活用
9. ビルドシステム
- 開発時は CSSのimportやネスト を活用し、ビルド不要
- 本番用には esbuild でバンドル
- 例:
esbuild style.css --bundle ... --outfile=/tmp/out.css
- 例:
- esbuildはWeb標準準拠&Goバイナリで導入が容易
Tailwindから離れた理由
- Tailwindが ビルドシステム依存 になり、v2を長年使い続ける状況
- ビルドせずに使うと 巨大なCSSファイル が生成され、非効率
- CSSスキルが向上し、 Tailwindの制約 が物足りなくなった
- プロジェクト内で バニラCSSとTailwindが混在 し、保守が困難
- セマンティックHTML での開発体験を試したくなった
今後学びたいCSS機能
- @layer (カスケード管理)
- @scope (スコープ付きスタイル)
- container queries (コンテナクエリ)
- subgrid (サブグリッド)
CSSに対する姿勢の変化とTailwind批判
- CSSは「簡単」ではなく 本質的に難しい問題 を解決する技術
- Tailwindの普及が CSSの専門性の価値低下 につながる懸念
- CSS技術を真剣に学び、 自分の技術として尊重
- 最新CSS機能の進化と、学習による成長体験
- LLM時代 における人間の専門性重視の重要性
コミュニティへの感謝
- wizardzines.comのCSS設計者 Melody Starling への謝辞
- CSS TricksやSmashing Magazineなど、 CSSコミュニティの情報発信 への感謝