全員が Tailwind CSS v4 について争っている本当の理由

Tailwind CSS v4 を巡る議論が至る所で巻き起こっています。しかし、ほとんどの人は的外れな議論をしています。

真の問題は、ユーティリティクラスかインラインスタイルかという対立ではありません。スタイリングがどこに存在し、誰がその認知コストを支払うのか、という点にあります。

Tailwind v4 は、設定を CSS ファイルへと移行させます。JavaScript の設定ファイルの代わりに @theme を使用します。これにより、ワークフローがよりクリーンになります。

しかし、これが騒動の直接的な原因ではありません。騒動の本質は、v4 が 2 つの異なるパターンをより使いやすくしたことにあります。

パターン 1:コンポーネント内でのユーティリティクラス。 HTML や JSX に直接クラスを記述します。これにより、要素がどのように見えるかが一目でわかります。

パターン 2:@apply によるアプローチ。 CSS ファイル内で .alert や .alert--error のようなセマンティックなクラスを作成します。これにより、その要素が「何であるか」がわかります。

どちらの方法も機能します。どちらが間違っているわけでもありません。それぞれ異なる哲学に基づいています。

グループ A はコロケーション(共存)を重視します。すべてを一つの場所にまとめます。 グループ B はセマンティックな命名を重視します。目的を表す名前を求めます。

デザイナーがエラーの色を赤からオレンジに変更する場合、グループ A はコードファイルを検索して探します。グループ B は CSS ファイルの 1 行を書き換えるだけです。

Tailwind v4 は @apply をより自然なものにします。これが、両者の対立をより強めているのです。

チームの規模に応じた選び方は以下の通りです:

  • 小規模チーム:ユーティリティクラスを使用する。クラス名の命名に時間を費やす必要はありません。全員が同じファイルで作業することで、開発スピードが上がります。

  • コンポーネントライブラリ:@apply または CSS 変数を使用する。利用者に内部のデザイントークンを意識させる必要はありません。

  • 大企業:ハイブリッドモデルを採用する。デザインシステムチームにセマンティックなクラスを管理させ、アプリケーション開発者は素早いレイアウトのためにユーティリティを使用するようにします。

長いクラス文字列を読むのを避けるためだけに @apply を使ってはいけません。それは戦略ではなく、単なる回避です。

最も声高に批判する人々は、フレームワークではなく、自分たちのツールと戦っていることがよくあります。エディタに IntelliSense が不足していたり、チームにデザイントークンシステムがなかったりすると、ワークフローが壊れているように感じてしまいます。

フレームワークを責める前に、ワークフローを改善しましょう。

Tailwind v4 は強力なリリースです。CSS ファーストの設定はより優れています。この議論は、チームが明確な意思決定を行う必要があるという兆候に過ぎません。

選択し、文書化し、次に進みましょう。

あなたのチームのアプローチは何ですか? ユーティリティクラスを使いますか、それとも @apply を使いますか?

出典: https://dev.to/enjoy_kumawat/the-real-reason-everyones-fighting-about-tailwind-css-v4-4o0g