たつのおとしごのしっぽ

技術に楽しくしがみつく えんじにあ の備忘録

UIT meetup vol.11『フロントエンド紅白LT合戦』を聞いた感想

はじめに

UIT meetup vol.11『フロントエンド紅白LT合戦』 - connpass
ここ最近見たLTの中で一番面白かったです。

Twitterのつぶやきはこちら。
https://twitter.com/search?q=%23uit_meetup%20since%3A2020-12-18_19%3A00%3A00_JST%20until%3A2020-12-18_22%3A00%3A00_JST&src=typed_query&f=live

セッション

Chakra UI ではじめる Tailwind CSS へのささやかな抵抗

Headless Components Design

  • Headless UI
    • Tailwind CSS のクラスを渡して使う
    • Utility-firstのCSSを使って機能だけ持ったコンポーネントを作っていくのではないか

選ばれたのは Next.jsでした - Next.jsによるServer Side OGP ⽣成 / Next.js was chosen - Server Side OGP generation with Next.js - Speaker Deck

  • OGPとは、サーバー側へリクエストした際にOGP用のmetaタグ(og:image)を含む
  • HTMLを生成することでOGPカードを生成するようになっている

  • Next.jsはデフォルトでSSG対応が可能(pages下のページコンポーネントをプレレンダリングする)

  • SSGはビルド時のみデータ取得を行うため変化のあるデータには向かない
  • SSRはリクエストごとにデータ取得を行う

Build you a static site generator - Speaker Deck

SSGの自作の話でした。

  • SSGはブログ利用が初めに思いつく
  • 学ぶなら自作しよう
  • SSGはファイルのパイプラインになっている
  • いくつかのパイプラインを作って組み合わせて実現していく

Roconで実現する超型安全なルーティング / Super Type-safe routing with Rocon - Speaker Deck

ルーティングの説明がわかりやすいので、そこだけでもすごく価値があるなと思います。

  • SPAを作るときページが動くたびにアドレスが変わっていく部分は標準はHTML5HistoryAPIだが、生では扱いにくい
  • URIに対してコンポーネントを表示するということの橋渡しをやるのがRouteingライブラリ。
  • Reactではreact-routerがデファクト
  • Next.jsはファイルシステムベースなのでファイル名がパスになる。

画面間のデータ受け渡し方法のメリットデメリット

  • グローバルなステートに入れる
    • 簡単で型安全
    • フロー特有のステートをグローバルに入れるなどステート設計の悪化する恐れ
    • 再読み込み時に消える、進む戻るに連動しない
  • URLに入れる
    • 耐久性のあるURLになる
    • 大きいデータは入れられない
    • 型制限できない
  • History Stateに入れる
    • 再読み込み、進む戻るに連動する
    • URLに入らず耐久性のあるURLにならない
    • 型制限できない
  • =>現状のデファクトになっている画面遷移の実装方法だと間違ったURLに飛ばす可能性がある

  • Roconなど型安全に作ることができる

  • Next.js/Nuxtはファイルシステムベースのルーティングで固定のためルーティングの型安全は保障できない

Reactルーター選定術 2020年のファイナルアンサー - Speaker Deck

  • OGPのためにSSR時にコンポーネント呼び出し前のfetch処理が必要…
    • (OGPは苦労しそうなイメージ)
  • react-routerなどはCSRだけでなら有力
  • TwitterクローラーがJSの実行に対応していなためog:imageの設定が必要
    • =>SSRが必要
    • =>SSR時は事前fetchが必要
  • React SuspenseはSSR対応できていない。CPU負担大。

  • CSRだけでいいならuseSWRを使うほうがReduxよりお手軽

  • そもそもuseSWRとは、Reactでデータフェッチを行えるHooks
  • stale while revalidateの略で、古くなったデータは再取得するというキャッシュ戦略の略称なんだそう。

嬉しいことに、useSWRは第二引数で与えたfetcherが一度取得したデータをクライアント側でキャッシュしてくれます。これで、APIを通じて取得したデータをstoreに格納せずに済むのです。

【React】useSWRはAPIからデータ取得をする快適なReact Hooksだと伝えたい - パンダのプログラミングブログ より

  • なんと…べんり…。
  • 素のReduxでSSRは大変
  • Next.jsを使おうということでやはりモダンな開発環境はベストプラクティス詰まっているからパフォーマンスや諸々含めて良いってことですね。
  • SSR/CSR/SSGに対応できるってすごいですね。