memo @240222*
Edge Computing
とは我々ユーザーの地理的にもっとも近い距離で色んな処理を行うこと。Vercel
にはサーバー側の機能が大きく2つあって、まず1つはServerless Functions
というNode.js
ランタイムのサーバー。もう1つはEdge Functions
というEdge
ランタイムのサーバーである。Edge
ランタイムはNode.js
のAPIが使えない代わりにめっちゃ早いしコールドスタートもない。Serverless Functions
はNode.js
のAPIが使えるし、重い処理をさせたいならServerless Functions
を使って、基本的にはEdge Functions
を使用する。
因みにNext.js
はデフォルトでNode.js
ランタイムになってるためデフォルトで遅くなる。なのでNext.js App Router
のroot layout
にSegment Config
のruntime
というconfig
を設定できるのでそれをedge
にするのがおすすめ。基本的にedge
にすることによってパフォーマンスがめっちゃいいアプリ作れるし安いのでそれでいいけどもページによってはにNode.js
のランタイムが欲しくなる時もある。そしたらそのレイアウトやページだけruntime
をNode.js
にするといい。Vercel
の意図はedge
をデフォルトにするとNode.js
が動かないなあって混乱のもとになるためちょっと遅いけどServerless Functions
をデフォルトにしてる(ユーザーの認知度の問題)
PlanetScale
のようなDBaaS
はリードレプリカ(本番DBのレプリカ)
をRead権限で各エッジに置いてるため、一緒に使うとユーザーはReadなら
リードレプリカにアクセスできてエッジコンピューティングとしては尚良し。
BUNDLERS FOR REACT: TURBOPACK VS VITE
Turbopack
はWebpack
の後継でNext.js
の本番環境には使用できないが、
ローカル環境には使用できるしVercel
はTurbopack
を使ってDFを進めてたりする。
Rust
製でTree shaking
(使われてないコードを削ぎ落とす機能)とキャッシュも
Turbopack
ではファーストクラスでサポートされてる。
Webpack
でも色んなことできたけれどもRSC
出てきたりと
色々考えないといけないことが多くなってTrubopack
が誕生。
Turbopack
を使うイコールNext.js
を使うということ。
それ以外のバンドラはVite
が一強。ちなVite
の作者はVue.js
の作者。
自分らの欲しい機能を速攻Turbopack
に入れられるためNext.js
はTurbopack
作ってそう。
HEADLESS UI LIBRARIES FOR REACT
ほとんどのケースでshadcn/ui
よりもMantine UI
の方が良い。
カスタマイズするならshadcn/ui
がいいけど基本的にカスタマイズしなくていいし、
ユーザーが欲してるのも特に独自のUIではない。ビジネスのことを考えるなら、
一番早く機能実装できるMantine UI
の方が良い。
RSC
の登場によってStyled Components
Emotion
のようなCSS-in-JS
はもう使われない。
但しStyle X
は別である。CSS-in-JS
ならStyle X
Tailwind CSS
ならshadcn/ui
素のCSSならMantine UI
という意思決定が良さそう。