見出し画像

Reactのモダンスタイリングソリューションをご紹介します!🎨

みなさん、お疲れさまです。
nakamoto(@zksytmkn)です!

フロンエンド開発にReactを用いるとき様々なスタイリングソリューションがありますよね。今回は素のCSSTailwind CSSCSS-in-JSのどれを使用するかという観点から、それぞれおすすめのスタイリングソリューションをご紹介させていただきます。

素のCSS

素のCSSならMantineというコンポーネントライブラリがおすすめです。
Mantineはもともと他のコンポーネントライブラリと比較しコンポーネントがかなり充実してましたが、v7.4.0よりチャート系のコンポーネントも追加されました。それによりMantineの隙はなくなりましたし、チャート系までサポートしてるコンポーネントライブラリはMantineと後述のTremorくらいです。しかし、Tremorはチャート系などの管理画面のコンポーネントは充実しててもその他のコンポーネントが不足してる為、Mantineはユーザー画面と管理画面の開発どちらにも対応できるという点で優れてます。内部的にはどちらのチャート系のコンポーネントもRechartsが使われてます。

さらにMantineにはv7.6.0よりHeadlessMantineProviderというMantineをヘッドレスUIライブラリ(スタイルを持たず機能のみのUIコンポーネント)として使用できる機能が提供されてます。これによって、今までMantineを使ってみたかったけれどもスタイルが好きじゃなかった開発者の皆さんにも自らスタイルを適用しご使用いただけます(スタイルを適用するというのは大変ではありますが。。)

Tailwind CSS

Tailwindならshadcn/uiというコンポーネントライブラリがおすすめです。
shadcn/uiRadix UITailwind CSSによって作られており、npmによって管理せず、自らのコードベースで管理するという特徴があります(この特徴をRe-usableといいます)。つまりカスタマイズできるのでコンポーネントを頻繁に微調整する場合には使いやすいです。しかし、ユーザーの皆さんが欲してるのは特に独自のUIではないですし、ビジネスのことを考えるのならいち早く機能を実装できるMantineがいいとも思われます。ただMantineTailwind CSSとは相性が悪いのです。。併用できない認識なので、Tailwind CSSを使いたいという場合にはshadcn/uiの選択は適切と思われます

管理画面ならTremorというコンポーネントライブラリがおすすめです。TremorTailwind CSSで管理画面を作るためのコンポーネントライブラリです。datepickervisualization(chartなど)もあります。

CSS-in-JS

CSS-in-JSならStyleXがおすすめです。StyleXはMeta公式のCSS-in-JS(JS内にスタイルを定義し、コンポーネントに直接適用します。)で今後このStyleX製のコンポーネントライブラリが増えそうです。RSCの登場によってStyled ComponentsEmotionのようなCSS-in-JSは推奨されませんが、StyleXはゼロランタイムなCSS-in-JSとしてRSC対応しております。

ゼロランタイムなCSS-in-JSライブラリであるStyleXRSC(React Server Components)と互換性を持つ理由は、StyleXによって生成されるスタイルがビルド時に静的ファイルとして処理され、ランタイムで追加のJavaScript実行を必要としないためです。RSCの主な目的は、サーバーサイドだけでも完結できるものを事前に処理し、クライアントサイドのレンダリング負荷を減らすことにあります。一方で、Styled ComponentsEmotionなどの従来のCSS-in-JSライブラリは、クライアントサイドでスタイルを動的に生成し適用する為にJavaScriptの実行を必要とします。これはRSCが目指す方向性とは逆行します。しかし、StyleXはビルド時にスタイルを完全に処理して、ランタイムでのJavaScript実行を不要にすることで、RSCとの互換性を実現しています。

まとめ

今回はReactのスタイリングソリューションについてモダンなものを幾つかご紹介させていただきました。いずれもRSC(React Server Components)に対応しておりますので、ご安心ください!🙏
今回もこちらの記事を読んでいただき、誠にありがとうございました!

この記事が気に入ったらサポートをしてみませんか?