Tailwindは最高です。でも、使うのをやめます。

MMaximilian Schwarzmüller
Computing/SoftwareSmall Business/StartupsAdult EducationInternet Technology

Transcript

00:00:00最近取り組んでいる新しいプロジェクトのいくつか、というか、ほとんどにおいて
00:00:05実はTailwindを使うのをやめました。今のプロジェクトではもう使っていません。
00:00:11それに伴い、Shadcnも使っていません。それには理由があります。Tailwindが悪いからという理由では
00:00:18もちろんありません。むしろその逆で、素晴らしいライブラリだとはっきり言っておきます。
00:00:22今回このような動画を撮ることに、少し心苦しさも感じています。というのも
00:00:27ほんの数週間前、Tailwindが直面していた深刻な財政難について話したばかりだからです。
00:00:32ありがたいことに、それ以来状況は好転しました。多くの新スポンサーがつき、今は
00:00:38財政的にもかなり安定したはずです。Tailwindは明らかに素晴らしいものですからね。
00:00:43情熱とエネルギーを持ってプロジェクトに取り組んでいる人々がいます。私の言いたいのは、
00:00:49それが悪いとか、使うなと言いたいわけではありません。単にこのチャンネルを通じて
00:00:56自分の考えや意見、仕事の進め方の一部を共有したいだけなのです。興味を持ってもらえるかと思いまして。
00:01:01では、素晴らしいと思っているのになぜTailwindを使わないのか? 少し話を戻しましょう。
00:01:07数年前、AI革命が起きる前、あるいはAIのコーディング能力が今ほど高くなる前は、
00:01:15私も世の多くの開発者と同じように、ある主な理由でTailwindを使っていました。
00:01:21それは、コードの反復(イテレーション)を素早く行えるからです。私はFigmaのような
00:01:28ツールをあまり使いません。そもそもほとんど一人で作業しているという状況もあります。
00:01:34一人でプロジェクトを進めるなら、デザインツールを使う必要はあまりありません。私にとって
00:01:40デザインを試行錯誤するには、直接コードを書くのが一番速かったのです。
00:01:45Tailwindなら、DOMやJSXのコード内にインラインでクラスを書くので、
00:01:50すぐにコードを書き換えて、スタイルを更新し、色々なデザインを試せます。マージンの微調整も簡単です。
00:01:57それが非常に効率的なフローでした。それが私や、おそらく他の多くの開発者が
00:02:04Tailwindを使っていた主な理由です。また、かなりの数、もしかすると過半数の開発者にとっては、
00:02:10「CSSが嫌いだから」というのも強い理由でしょう。Web開発者の間でCSSが不評なのは知っています。
00:02:17その気持ちも分かります。非常に複雑に見えますし、何百、何千ものプロパティや値があり、
00:02:23気が遠くなる作業に感じられます。しかし、最近のモダンCSSは
00:02:31大きく進化しました。昔に比べれば、多くのことが簡単になっています。Flexboxも今では
00:02:37決して新しいものではありませんが、多くのことを簡素化しました。他にもFlexboxのように
00:02:44色の派生なども、以前よりずっと簡単になりました。今のCSSには「相対色」があります。
00:02:51ちなみに、私のAkatamineチャンネルでは、色や相対色、あるいはコンテナクエリといった
00:02:55モダンなブラウザ・CSS機能についての動画をいくつか公開しています。コンテナクエリは
00:03:01ビューポートではなく、コンポーネントが使えるスペースに応じてサイズが変わる仕組みを作るのに最適です。
00:03:08CSSはここまで進化したのです。ただ、こうしたモダンCSS機能のほとんどは、
00:03:14基本的にはTailwindでも使えます。ですが、今はAIを使ってバニラCSSを
00:03:23より簡単に書くこともできます。たとえCSSを書くのが嫌いでも、
00:03:28特定の機能やブラウザのサポート状況を知ってさえいれば十分です。使いたい機能をAIに指示し、
00:03:34その機能を説明するドキュメントやMDNの記事を添えれば、AIがコードを書いてくれます。
00:03:39「なぜそんなことをするのか?素直にTailwindを使えばいいじゃないか」と思うかもしれません。
00:03:45Tailwindにもモダンな機能はありますからね。私には、そうする理由が1.5個ほどあります。
00:03:51あまり重要でない方の理由は、Tailwindが常に最新機能をすべてサポートしているとは限らないこと。
00:03:58そしてより重要なのが、AIがTailwindの全機能を把握しているわけではないという点です。Tailwindには
00:04:05多くの機能がありますが、AIはすべてを使いこなせません。いつも同じようなクラスばかり使い、
00:04:13古い構文を使うこともしばしばで、便利な機能を見逃してしまいます。もちろん、
00:04:17バニラCSSでも同じことが起こり得ます。AIに特定の機能を使うよう指示しなければ、
00:04:22AIはそれを使わないでしょう。しかし、重要なCSS機能をいくつか学んで
00:04:29AIに指示するだけで済みます。もちろん、Tailwindについても同じように、
00:04:34特定の機能を使うようAIに指示すればいいという意見は分かります。ただ、Tailwindのクラス名より
00:04:40主要なCSS機能の名前を挙げる方が簡単かもしれません。ただ、これは本質的なポイントではありません。
00:04:48私の主な目的は、プロジェクトで使用するライブラリの数を減らすことです。
00:04:53その理由は2つあります。1つは、私が教育コンテンツを作っているため、
00:05:01余計なライブラリが弊害になることに慣れているからです。例えばReactのコースを作る際、
00:05:07そこでTailwindも使っていたとします。もしTailwindに破壊的な変更があると、
00:05:12メインのトピックであるReactは変わっていないのに、コードの多くが動かなくなり、受講生から質問が殺到します。
00:05:17これは私特有の非常に特殊な問題であり、大抵のWebサイトには当てはまらないでしょう。
00:05:23しかし、普通のWebサイトを構築する場合でも、サードパーティのライブラリは
00:05:29妥当な範囲で、可能な限り少なくするのが良い考えだと私は主張します。
00:05:38もちろん、あらゆるライブラリを意地でも排除しろと言っているわけではありません。特定のライブラリを使う
00:05:44正当な理由はあります。例えば、リッチテキストエディタを備えたサイトを
00:05:50作るなら、TipTapのようなものを使うのは非常に理にかなっています。
00:05:54エディタを自作するのは大変ですからね。AIを使えばある程度は楽になりますが、
00:05:59自分で解決しなければならないエッジケースや問題に直面することになります。AIを使って解決するにしても、
00:06:06使ったことがあれば分かる通り、AIがすべてを正しくこなせるわけではありません。
00:06:11ですから、外部ライブラリを使う理由はあります。ただ、スタイリングに関しては、
00:06:16説明した通り、代替が可能なものなのです。皆がそうすべきだとは言いませんが、
00:06:21私にとっては、自前でやるのが非常にうまくいっています。だから、ライブラリを1つ減らせるのです。
00:06:28AIが生成したCSSをチェックしたり、問題が起きた時に生のCSSで
00:06:37スタイリングの問題を修正したりすることに、私は抵抗がありません。AIを使えばいつか問題は起きますが、
00:06:44それでも構いません。もしCSSコードを見るのが心底嫌いなら、この選択肢はないでしょう。
00:06:50しかし私の場合、Tailwindを省くことができます。コンポーネントを自作するので、
00:06:56例えばShadcnも不要になります。Shadcnは厳密には伝統的なライブラリではありませんが、
00:07:00内部でRadix UIを使用しています。私の知る限り、Radix UIのメンテナンス状況には疑問があります。
00:07:08教育コンテンツの話を除いたとしても、これがライブラリを避けたい本当の理由です。
00:07:16プロジェクトに追加するすべてのライブラリは、メンテナンスが止まれば負債になる可能性があります。
00:07:21その時点で、セキュリティの問題やバグが修正されなくなるかもしれません。例えばTailwindなら、
00:07:29表示のバグなどですね。新しい機能も追加されなくなります。もし新しいCSS機能が登場しても、
00:07:35Tailwindのメンテナンスが止まっていれば(実際は継続されていますが)、その機能は使えないかもしれません。
00:07:41Tailwindでも、それに近い状況になりかけたことがありました。
00:07:46私が以前公開した動画でも触れましたが、Tailwindのメイン開発者が投稿した内容によると、
00:07:52もし資金繰りの問題を解決できなければ、Tailwindは「アバンダンウェア(放棄されたソフト)」になるかも、
00:07:58とのことでした。少し大げさな表現で、注目を集めるための意図もあったかもしれませんが、
00:08:03それでも、サードパーティのライブラリには常に、将来メンテナンスされなくなるという
00:08:11リスクがつきまといます。誰が開発しているかにもよりますがね。
00:08:17だからこそ、個人的には再びバニラCSSを使うのが好きなのです。昔もそうしていましたし。
00:08:22何度も強調しますが、Tailwindの成功を願っていますし、多くのプロジェクトで
00:08:28今も使い続けています。嫌いになったわけではありません。単に、一部のプロジェクトで
00:08:35使わない実験をしているだけです。それがTailwindであれ、他の全く違うものであれ、
00:08:41AI時代以前から言えることですが、サードパーティのライブラリを使う前には
00:08:46二度検討すべきです。使うべき良い理由はたくさんあります。例えば認証用の「Better Auth」などは
00:08:53素晴らしいので、私なら間違いなく使います。ただ、もし代わりがきくライブラリなら、
00:08:57考え直してみる価値はあるのではないでしょうか。
00:09:04it might be worth a second look or thought, I guess.

Key Takeaway

AIの進化とモダンCSSの向上により、メンテナンスリスクや依存性を減らすため、あえてTailwind等のライブラリを使わずバニラCSSと自前実装を選択するスタイルへの転換。

Highlights

Tailwind CSSは依然として素晴らしいツールであるが、特定の理由から使用を中止した

かつては開発の反復を速めるためにTailwindを使用していたが、AIの台頭で状況が変わった

現代のCSS(Flexbox、相対色、コンテナクエリ等)は非常に強力で、AIの助けを借りればバニラCSSの記述も容易になっている

サードパーティ製ライブラリへの依存を減らすことで、将来のメンテナンスリスク(アバンダンウェア化)を回避できる

教育コンテンツ制作においては、ライブラリの破壊的変更が受講生の混乱を招くため、自前での実装がより安全である

Shadcnなどのライブラリも、背後にあるRadix UIのメンテナンス状況への懸念から使用を控えている

ライブラリの使用を完全に否定するのではなく、代替可能かどうかを慎重に検討すべきである

Timeline

Tailwind CSSの使用停止とその背景

スピーカーは、最近のプロジェクトにおいて長年愛用してきたTailwind CSSとShadcnの使用をやめたことを告白します。これはTailwindが悪いライブラリだからではなく、むしろその卓越した価値を認めつつも、自身の開発手法を再考した結果です。以前話したTailwindの財政難については、現在は新スポンサーの獲得により安定しているという補足もなされています。このセクションでは、自身の個人的な意見や仕事の進め方の変化を視聴者に共有することが目的であると強調されています。ライブラリへの否定ではなく、一人の開発者としての選択の変化が語られる導入部となっています。

かつてのTailwindの役割とAIによる変化

数年前、AIがコーディングを支援する前は、デザインツールを介さずコード上で直接試行錯誤するためにTailwindが不可欠でした。インラインでクラスを記述できるTailwindは、一人で開発を行う際の反復作業(イテレーション)を劇的に高速化する手段だったと説明されています。また、多くの開発者がCSSの複雑さを嫌ってTailwindに逃げていた側面についても触れています。しかし、AIが登場した現代では、この「スピード」という優位性に変化が生じ始めています。かつての手法が最適だった背景を振り返りつつ、現在の技術環境との対比が描かれています。

モダンCSSの進化とAIによるバニラCSSの記述

現代のCSSは、Flexboxや相対色、コンテナクエリといった強力な新機能を備えており、かつてほど複雑で扱いにくいものではなくなっています。スピーカーは、AI(LLM)に対してMDNのドキュメントや特定の機能を指示することで、バニラCSSを簡単に生成できるようになったと主張します。たとえCSSに詳しくなくても、ブラウザのサポート状況さえ把握していれば、AIが適切なコードを書いてくれる時代です。この変化により、Tailwindの抽象化レイヤーを介さずとも効率的な開発が可能になりました。モダンなCSS機能がTailwindのクラス名よりも、AIに対して指示しやすいという側面についても言及されています。

教育者としての視点とライブラリ削減の理由

ライブラリを減らす最大の目的の一つは、教育コンテンツの品質維持にあります。ReactのコースなどでTailwindを使用していると、ライブラリの破壊的変更によって本質ではない部分でコードが動かなくなり、受講生を混乱させるリスクがあります。これは教育者に特有の問題ではありますが、一般的なプロジェクトにおいても外部依存を減らすことは健全な判断であると説いています。ライブラリを導入する際には、それが真に必要かどうかを常に自問自答すべきだと主張しています。柔軟性を保ちつつ、プロジェクトをシンプルに維持するための戦略的な選択が語られています。

ライブラリのメンテナンスリスクとアバンダンウェアの懸念

リッチテキストエディタのような自作が困難なものはライブラリ(TipTap等)を使うべきですが、スタイリングは自前で代用可能な領域です。Shadcnが依存するRadix UIのメンテナンス状況を例に挙げ、サードパーティ製ライブラリが「負債」になる可能性を警告しています。開発が止まればセキュリティ問題やバグが放置され、最新のCSS機能への追従も不可能になります。Tailwind自身も過去に資金難から開発放棄の危機が囁かれたことがあり、どんなに人気のあるツールでもリスクはゼロではありません。ライブラリを選ぶことは、その開発者の将来に賭けることと同義であるという厳しい現実を指摘しています。

結論:AI時代のライブラリとの付き合い方

最後に、スピーカーはTailwindを嫌いになったわけではなく、現在も多くのプロジェクトで使用中であると再確認しています。今回の話はあくまで一部のプロジェクトでの実験的な試みであり、バニラCSSへの回帰を楽しんでいるというスタンスです。認証ライブラリの「Better Auth」のような非常に有用なものは今後も積極的に使うべきだと述べています。重要なのは、AIの助けがある今、慣習的にライブラリを導入するのではなく、一度立ち止まって検討する価値があるということです。開発者一人ひとりが自分のツールセットを再評価することを促して、動画を締めくくっています。

Community Posts

View all posts