Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Webレンダリングの変化とどれ使うん

yuyays
February 24, 2025

 Webレンダリングの変化とどれ使うん

LTにての発表したことです。

yuyays

February 24, 2025
Tweet

Other Decks in Technology

Transcript

  1. 今日話すこと • CSR, SSR, SSR with Suspense, Server Islands などの説明と図解

    • それぞれの得意な点や苦手な点 • じゃあ実際に問題解決をしているの か
  2. CSR(Client side rendering): クライエントサイドレンダリン グとは • 最小限の HTML とタグつきの JavaScript

    をクライアン トに送信 • ブラウザで JavaScript を実行してペ ー ジをレンダリ ング SSR(Serve side rendering): サ ー バ ー サイドレンダリングとは • サ ー バ ー 上でペ ー ジをレンダリング • HTML をクライアントに送信
  3. • SSR モデルとたいだい同じであるが <Suspense> でかこ みコンポ ー ネント単位でサ ー バ

    ー よりストリ ー ミングで きる SSR with Suspense(IsomophicSSR Server Island ( サ ー バ ー アイランド ) • SSR モデルと似ているがサ ー バ ー より送られる静 的 HTML が最小のサイズの js バンドルをもってそ こからハイドレ ー ションしていく
  4. ブラウザ サ ー バ ー example.com リクエスト html をかえす ex.

    intex.html 1. すぐに静的 html をかえす 。 2. cache されているならそれを返す 。 html を読み込む JS バンドルを example.com/main.js をリクエス ト <!DOCTYPE html> <html lang="en"> <head> <title>My Static Page</title> </head> <body> <h1>Hello World!</h1> <!-- Bundler JS start --> <script src="scripts/main.js"></script> <!-- Bundler JS end --> </body> </html> Javascript バンドルのファイルをかえす JS ファイルを読み込む デ ー タを API などを通じてリクエストする デ ー タベ ー ス デ ー タを返す (json 等) 読み込み ( レンダリン グ ) 完成したペ ー ジをようやく表示する .!!!! CSR モデル
  5. 良い点 • ブラウザの中でのインタラクションが早くでき ること 例 )SSR モデルでは js ファイルが読み 込むまではマウスクリックなどのイベントリス

    ナなどはできない • ペ ー ジ移動した際には新しいペ ー ジがすぐに表 示される 例 ) 全体のペ ー ジを移動するたびに ロ ー ドする必要がない
  6. 良くないかもしれない点 • Js バンドルのファイルが肥大であるなら 、 ペ ー ジをレンダリングするのに時間がかかる • パワ

    ー がない端末はクライエントで処理を行う ので時間がかかる • ネットワ ー クにもよる • API などのリクエスト往復は時間がかかる
  7. ブラウザ サ ー バ ー example.com リクエスト html をかえす ex.

    intex.html html を読み込む JS バンドルを example.com/main.js をリクエス ト Javascript バンドルのファイルをかえす JS ファイルを読み込む デ ー タベ ー ス SSR モデル 完成したペ ー ジをようやく表示する .!!!!
  8. 良い点 • デ ー タが含んである html をクライエントにおく れる • SEO

    の向上: 検索エンジンはコンテンツが最初 の HTML で利用可能であるため簡単にクロ ー ル しインデックスすることが可能
  9. 良くない点 • hydration (ハイドレ ー ション)の問題点として Js ファイルがクライエント側でそれを実行して DOM にイベントハンドラ

    ー などのつけて html を インタラクティブにすること . しかし ,hydration を行うまではそれらの動作は できない .... • CDN に静的 html をおけないまたは vercel などに たよるしかない
  10. SSR with Suspense(isomorphic SSR) • Suspense によりペ ー ジの各 々

    こコンポ ー ネント をレンダリング可能にし , サ ー バ ー よりストリ ー ミングされる . • なのでペ ー ジを移動した際にはすぐにロ ー ドの スピ ー ナ ー などを表示できる
  11. ブラウザ サ ー バ ー example.com リクエスト html をかえす ex.

    intex.html html を読み込む JS バンドルを example.com/main.js をリクエス ト Javascript バンドルのファイルをかえす JS ファイルを読み込む デ ー タベ ー ス Isomophic SSR モデル
  12. サ ー バ ー example.com/engineercafe リクエスト json 等を送る ブラウザ React

    server runtime DB loading state 変化した部分の html を 送る 前の続き
  13. • SSR モデルでは静的 html を CDN におけない CSR モデルでは CDN

    に置けていたがリクエ ストにすぐ答えらたが 良くないかもしれない点
  14. ブラウザ サ ー バ ー example.com リクエスト html をかえす ex.

    intex.html json かえす html を読み込む JS バンドルを example.com/main.js をリクエスト ( ここがサ ー バ ー アイランドの部分) db 完成したペ ー ジを表示する .!!!! Server Island サ ー バ ー 静的 html を送り返す Astro server runtime server island の部分 の html とか えす
  15. 良い点 • 静的 html を cdn におけるので ssr モデルと比べる と設計が楽

    • Javascript の量が少ないのでパフォ ー マンスも いい • React, Vue, Svelte など好きなフレ ー ムワ ー クを 使用可能
  16. 実際に問題解決してますか? • ただ単に複雑にエンジニアして , いらない問題をつくって 解いている? • Frontend framework なんでべつにフォ

    ー ムとレンダリ ングなんだからなんでそんな複雑なの? • 学習コスト ? 新しい人雇わないといけないの? • また 2,3 年で消えるんでしょとか .... • frontend は宗教戦争がありすぎる ... 状態ライブラリから フレ ー ムワ ー クなどまで
  17. • CSR は非常にインタラクティブなシングルペ ー ジアプ リケ ー ションを作成するという問題を解決しました • SSR

    は CSR の SEO と初期ロ ー ド性能の問題に対処した • Isomorphic SSR は CSR と SSR の両方の利点を組み合わ せようとしています • Server Island は JS を最小化してパフォ ー マンスを最適 化しようとします 適したツ ー ルを使いましょう
  18. • CSR : Gmail や Facebook のフロントエンドのような多くの SPA • SSR

    : E コマ ー スサイト 、 コンテンツの多いプラットフォ ー ム • Isomophic SSR : Next.js を使ったサイト( TikTok のウェ ブアプリなど) • Server Island model : コンテンツに特化したサイトやブロ グ 使用例