🖥️
【イベントレポート】CSS設計完全ガイド × Tailwind CSS実践入門 著者に聞く!負債にならないCSSの書き方とは
公開
2025-02-19
文章量
約3776字
2025年2月12日、エンジニア向けサービス「Offers」が主催するオンラインイベント「CSS設計完全ガイド/Tailwind-CSS実践入門著者に聞く 負債にならないCSSの書き方とは」が開催されました。
一見シンプルなようで奥が深いCSS。
時として、メンテナンス性が低下し“負債”になってしまうケースも珍しくありません。
本イベントでは、CSSにまつわる負債の原因や、代表的なフレームワークであるTailwind CSSが本当に負債を生みやすいのかどうかを掘り下げる機会となりました。
登壇者として、「CSS設計完全ガイド」の著者である半田 惇志(@assialiholic)氏と、「Tailwind CSS実践入門」の著者である工藤 智祥(@f_subal)氏を迎え、それぞれの立場から「CSS負債の本質」と「負債を回避するアプローチ」を紹介。
多くの参加者にとって「CSSをどのように捉え、どう使うべきか」を再考する充実のイベントとなりました。
セッション1: CSSによる“スタイリング”コントロールの苦悩と変遷(半田 惇志)氏
1人目の登壇者は、『CSS設計完全ガイド』の著者として知られるフリーランスエンジニアの半田氏。「CSSが当たり前に使われるようになるまでの歴史」から振り返り、時代ごとに起こったパラダイムシフトを噛み砕いて解説しました。
- HTML構造とスタイリングの分離:当初は
<font>
タグやbgcolor
属性など、HTMLそのものにスタイルを埋め込む手法が主流だった。そこにCSSが登場し、HTMLは構造、CSSは見た目という分業が確立。これが第1のパラダイムシフトとなった。 - CSS設計論とOOCSSの台頭:しかし、CSSファイル単位での管理はすぐに「衝突」「上書きの混乱」を招く。そこでモジュール化や命名規則を体系化する“OOCSS”が提唱され、大きなインパクトをもたらした(第2のパラダイムシフト)。BEMやSMACSSなどもこの流れを汲み、クラス命名・構造分割・再利用の仕方を確立していった。
- コンポーネント化時代の到来:ReactやVueなどのフレームワークが普及したことで、JSレイヤー上に「コンポーネントスコープ」が生まれた。これによりクラス命名の衝突問題は大幅に解消。しかし「スタイリングの設計」は依然として人のノウハウや意識に委ねられているため、完全には解決していない。
結論として半田氏は「コンポーネント環境があっても、CSSが再利用しづらい・上書きが煩雑になるケースは残る。
CSS設計論の精髄は『コンポーネントに何を持たせ、何を持たせないか』を考える力だ」と強調しました。
セッション2: 負債になりにくいCSSをデザイナとつくるには?~Tailwind CSS実践の視点( f_subal氏)
続いての登壇者は、『Tailwind CSS実践入門』著者でありピクシブ社でデザインシステム開発を担うf_subal氏。
「ユーティリティファースト」アプローチとして知られるTailwind CSSがなぜ負債を防ぐフレームワークになりうるのかを、デザインシステムと絡めて解説しました。
- なぜCSSが負債化するのか:CSSコーディング規約だけで状況を改善しようとしても、デザイナーとエンジニアの意図が噛み合っていなければ不整合が起きる。“ドメイン知識”としてのデザインを反映する仕組みが重要。
- デザインシステムは「契約」である:カラーやスペースといったトークン、コンポーネント命名などの定義をエンジニア・デザイナーが共有し、逸脱を防ぐ。それが真にCSSの負債を減らす本質。
- Tailwind CSSの強み: カスタマイズを前提とした“デザインシステム支援”:多くの人がテイルウンドCSSを“クラス名をHTMLに直接並べるだけのツール”と捉えがちだが、真価は「
tailwind.config.js
」を通じた徹底的なカスタマイズ機能にある。 - デザイナーが定義したトークンをTailwindの設定へ落とし込み、既存のプリセットを使わない
- こうして「フィグマにも、HTML側にも同じデザイントークンしか存在しない」状態が作れる
- 結果として「クラスが勝手に増えたり衝突する」ことが起きにくくなり、余計なCSSが残ることも避けられる
f_subal氏は「Tailwindをデフォルトテーマのまま使い、デザイナーは別ルールで進める状態では、結局“CSSフレームワークの負債”が発生する」と指摘。
「テイルウンドこそ、デザイナーとの共通言語を構築しやすい。
ただし、それを実装するために“誰が責任をもつのか”は組織によって違う」とまとめました。
ディスカッション: CSS負債の正体と解決策
Q1. CSSが負債化して困った経験は?
- 半田氏:
- 昔のCMSサイトで、HTMLにスタイルを埋め込む形の運用が長期化し、どこに何が使われているかが分からなくなった
- 部分改修のたびに全ページをgrepするしかなく、納品後のメンテが大変だった
- f_subal氏:
- 個人で書いている分にはスコープを作りやすく問題ないが、既存大規模サイトのレガシーCSSは消せないクラスが大量に残っていた
- 新規ページでコンポーネントスコープを活用した設計に切り替えて以降は大きな負債を感じない
Q2. どうやってCSSフレームワークを選べばいい?
- f_subal氏:
- まずは「デザイナーの有無」で二分。いない場合はマテリアルデザインやBootstrapなど“出来合いのデザインシステム”を重視するフレームワークが便利
- デザイナーがいるなら、設計を自分たちが主導できるフレームワークが良い。Tailwindは設計の自由度が高く、デザイントークンを揃えやすい
- 半田氏:
- フレームワークの思想を理解できているか、プロジェクトの規模や要件にマッチしているか、情報量が豊富か、といった基準で選ぶ
- “CSSをほぼ書きたくない”という動機ならBootstrap的なプリセット系を、カスタム重視ならTailwind、など状況次第
Q3. ユーティリティファーストだとHTMLが読みにくい…?
- f_subal氏:
- たしかにHTML内のクラスが膨大になるが、ReactなどのJSX環境なら
clsx
等で分割したり、Prettierで整形すればそこまで煩雑ではない - 半田氏:
- 人が直接HTMLソースを大量に読む運用を想定しているなら、やや厳しい面はある
- ただしコンポーネント化して開発者ツールやデバッガを活用する運用なら、クラスベースで把握するケースは減るだろう
まとめ
本イベントを通じて、次のような重要なポイントが浮き彫りになりました。
- CSS設計論の大前提は「デザイナー(UIのドメインエキスパート)の意図と乖離しない」こと
- コードでのセレクタ命名だけ整えても根本解決にはならない
- “共通言語”をデザイナー&エンジニアで共有できる仕組み(デザインシステム)が鍵
- コンポーネントスコープ時代でも「スタイリング設計」は不可欠
- React/Vueなどでクラス衝突の問題は緩和されたが、「どのプロパティをコンポーネント内に含めるか」「上書きが必要な場合の対応」などは人間の判断が要る
- Tailwind CSSは“デザインシステム化”をサポートしやすい
tailwind.config.js
でトークン(色や余白など)をカスタマイズ → デザイナーが扱うフィグマ等の値と厳密に合わせられる- デフォルトテーマまま使いはほぼBootstrapと変わらず、結果的に負債化しがち。必ず「デザイナー視点のルール」を設定してこそ真価が発揮される
- 誰が責任をもつのか?
- 大規模組織なら「デザインシステムチーム」を置く例もあるが、そうでない場合はデザイナーorエンジニアが兼任でもOK
- 大切なのは、デザイントークンやコンポーネント管理がバラバラにならないよう、運用とアプデを主導する“責任者”を明確にすること
「CSSは“単なるスタイリング”を超えて、チームの開発効率やユーザ体験を左右する重要な要素」と再認識できた今回。
“コードとデザインの乖離こそが負債の正体” という共通認識が印象的で、単純な命名規則やフレームワークの採用だけでは解決しないというメッセージが強調されました。
しかし同時に、Tailwindのようにカスタマイズを前提にしたフレームワークや、React/Vueによるコンポーネントスコープの活用で“負債”は大きく抑えられる可能性があります。
“CSSが辛い”で終わらせず、自社のデザイナーやプロダクトの文脈に合わせたデザインシステムへ落とし込み、チームの共通言語を築いていく。本イベントで得た知見を活かし、CSSで悩む時間を減らしてよりプロダクト本質に注力できる開発現場を目指してみてはいかがでしょうか。
Yardでは、テック領域に特化したスポット相談サービスを提供しています。
興味がある方は、初回の無料スポット相談をお申し込みください。
また、資料請求やお問い合わせもお待ちしております。テック領域の知見を獲得し、事業成長を一緒に実現していきましょう。