このドキュメントでは、SvelteKitにおけるサーバーサイドレンダリング(SSR)とデータの受け渡し方法について解説します。特に、以下のポイントに重点を置きます。
SSRは、ブラウザではなくサーバーでページを生成し、その結果をクライアントに送信する仕組みです。
SSR(サーバーサイドレンダリング) | CSR(クライアントサイドレンダリング) | |
---|---|---|
処理場所 | サーバー上 | ブラウザ(クライアント側) |
ページの読み込み速度 | 初回表示が速い | 初回表示が遅くなることがある |
SEO(検索エンジン最適化) | 検索エンジンに最適 | JavaScript依存のため不利 |
セキュリティ | サーバー側で処理するため安全 | クライアント側で処理するためリスクあり |
レストランで食事をする際に、「フルサービスのレストラン(SSR)」 と 「セルフサービスのビュッフェ(CSR)」 の違いを考えてみましょう。
✅ 初回表示が速い → ウェイターが料理を全て運んでくれるので、一度受け取ればすぐ食べられる。
✅ 検索エンジン(SEO)に強い → 料理が完成された状態で提供されるため、どんな料理か一目で分かる。
✅ セキュリティが高い → キッチン(サーバー)で料理を作るので、お客さんはレシピ(コードの処理)を知ることができない。
❌ サーバーの負荷が高い → 料理を作る時間がかかり、たくさんの注文があると遅くなる。
❌ ページ遷移のたびに再読み込みが発生する → 新しい料理(ページ)を頼むたびに、一から作り直す必要がある。
✅ サーバーの負担が少ない → シェフ(サーバー)は基本セット(HTML)を渡すだけで、お客さんが好きなように料理(データ)を取れる。
✅ ページ遷移がスムーズ → 一度食器(基本コード)を受け取れば、後は自由に動けるので、待ち時間が少ない。
✅ 動的なコンテンツに向いている → 例えば、SNSのようにリアルタイムでデータが変わる場合は便利。
❌ 初回表示が遅い → お客さんが自分で料理を取りに行くため、最初に準備が必要(JavaScriptをダウンロード)。
❌ SEOに弱い → 料理(コンテンツ)が完成する前に検索エンジンが見に来ると、空っぽに見えてしまう。
❌ セキュリティリスクがある → 料理のレシピ(コード)がクライアントに公開されるため、不正アクセスのリスクが高い。
SSR(サーバーサイドレンダリング) | CSR(クライアントサイドレンダリング) | |
---|---|---|
例 | フルサービスのレストラン | セルフサービスのビュッフェ |
処理の場所 | サーバー側 | クライアント側 |
初回表示の速さ | 速い(料理が全て提供される) | 遅い(食器の準備が必要) |
ページ遷移の快適さ | 遅い(毎回新しく料理を作る) | 速い(好きなタイミングで料理を取れる) |
SEO(検索エンジン対策) | 強い(料理が完成した状態で提供) | 弱い(料理が準備中だと見えない) |
セキュリティ | 高い(レシピはシェフのみが知っている) | 低い(レシピが公開される) |
適した用途 | ニュースサイト・ブログ・企業サイト | SNS・Webアプリ・ダッシュボード |
利用ケース | SSR(サーバーサイドレンダリング) | CSR(クライアントサイドレンダリング) |
---|---|---|
SEOが重要なサイト | ✅ 適している | ❌ 不向き |
初回ロードを速くしたい | ✅ 適している | ❌ 遅くなる |
動的データを扱いたい(リアルタイム更新) | ❌ 不向き | ✅ 適している |
サーバーの負担を減らしたい | ❌ 負担が大きい | ✅ 負担が小さい |
SPA(シングルページアプリ)を作りたい | ❌ 不向き | ✅ 適している |
SSR = フルサービスレストラン 🍽️
CSR = セルフサービスのビュッフェ 🥗
🔹 どちらを選ぶかは、サイトの目的や要件によって決まる! 🚀
SvelteKitでは、URLパラメータを +page.server.js
で処理できます。しかし、GETリクエストでのパラメータの扱いには注意が必要です。
?user_id=1234
→ 他人のIDを入力すると情報が見えてしまう)+page.server.js
)import { error } from '@sveltejs/kit';
export function load({ url }) {
const userId = url.searchParams.get('user_id');
if (!userId || isNaN(Number(userId))) {
throw error(400, '不正なユーザーID');
}
return { userId };
}
page.server.js
のコードはクライアントには送信されないため、安全性が高まる。✅ SSRの活用でセキュリティとパフォーマンスを向上 ✅ URLパラメータは安全に処理(機密情報を含めない・バリデーションを行う) ✅ SvelteKitのファイル構造を理解し、適切にデータを処理する ✅ クライアントサイドでのロジックを減らし、サーバーサイドで処理することでセキュリティを強化
+page.server.js
を使ったデータ取得と表示の練習[slug]
)を利用した動的ルートの作成このドキュメントを活用しながら、SvelteKitのSSRとデータハンドリングの理解を深めていきましょう! 🚀