第3回まで無料

Svelte & SvelteKit 入門コース

sv での環境構築から、テンプレート構文・コンパイラの出力の読み方・$state と $derived・スニペットと bind・SvelteKit のルーティングと load・フォームアクション・TypeScript・テスト・アダプタとデプロイまで。全30レッスンで、「仮想 DOM を使わない」という選択が何を変えるのかを自分の言葉で説明し、React / Vue / Svelte のどれを選ぶかを判断できるところまで進みます。コンパイル結果もビルドサイズもテストの出力も、すべて Svelte 5.57.1・SvelteKit 2.70.3 で実際に動かした実測値です。

カリキュラム

全30レッスンを6つの章に分けています。第1章から順に進めるのがおすすめですが、 気になるところだけ拾い読みしてもかまいません。 ※ .svelte ファイルはブラウザ内で実行できないため、第2回で作るプロジェクトで試してください。考え方だけを確かめる回は、素の JavaScript で実行できるようにしてあります。前提は JavaScript の基本で、TypeScript と React または Vue を知っていると、最終回の比較がより効きます。

Chapter 1 — Svelte を始める(第1〜5回)

Svelte が「ライブラリ」ではなくコンパイラであることを、実際の出力を見て確かめます。環境を作り、テンプレート構文とスコープ付き CSS まで押さえます。

Chapter 2 — Runes とリアクティビティ(第6〜12回)

$state・$derived・$effect・$props の 4 つで、値が変わると画面が変わる仕組みを組み立てます。最後は Svelte 4 の $: と export let を「読めるように」しておきます。

6

$state — 値が変わると画面が変わる

ふつうの let を $state に変えるだけで画面が追従する仕組みを、ミニ実装と生成コードの両方から見る。$state が使える場所と、代入しないと何も起きないという原則まで。

🔒 ベーシック
7

$state は中まで反応する($state.raw との使い分け)

配列やオブジェクトの中身を書き換えても画面が追いかける仕組みを、テストの実測で確かめる。反応させたくないときの $state.raw と、外へ渡すときの $state.snapshot まで。

🔒 ベーシック
8

$derived で派生値を作る

他の値から計算できるものは state ではなく $derived にする。読まれたときだけ計算されてキャッシュされることを実測で確かめ、式が長いときの $derived.by まで。

🔒 ベーシック
9

$effect は最後の手段

$effect を「外の世界と同期させる道具」として位置づけ、クリーンアップの走る順番を実測で確かめる。state の同期に使ってはいけない理由と、代わりに何を使うかまで。

🔒 ベーシック
10

$props() でデータを受け取る

親から渡された値を分割代入で受け取り、既定値と残りのまとめ取りを使う。props をそのまま $state に入れると更新が止まる理由と、コンパイラが出す警告まで。

🔒 ベーシック
11

Runes は .svelte の外でも使える

.svelte.js / .svelte.ts という名前にすると、コンポーネントの外でも $state が使える。状態とロジックをまとめて持ち出す書き方と、クラスのフィールドに置くやり方まで。

🔒 ベーシック
12

Svelte 4 のコードを読む($: と export let)

ネット上の記事や既存のリポジトリに残る Svelte 4 の書き方を、Runes に読み替える。$: が書いた順に走らないこと、runes モードで何がエラーになるかまで。

🔒 ベーシック

Chapter 3 — コンポーネントを組む(第13〜18回)

イベント・bind・$bindable・スニペットで、部品を組み合わせる道具をそろえます。リストの key とトランジションまで進みます。

13

イベントは、ただの props

onclick は特別な構文ではなく属性のひとつだという見方を押さえる。親へ知らせるコールバックの渡し方、修飾子が無くなった代わりの書き方、イベント委譲の実物まで。

🔒 ベーシック
14

bind: で入力と値を結ぶ

bind:value が「渡す」と「変わったら教えてもらう」の 2 つをまとめた省略記法であることを押さえる。checkbox・select・group の書き方と、bind:this で DOM を掴むところまで。

🔒 ベーシック
15

$bindable で子から親へ値を返す

子コンポーネントの props を $bindable にすると、親が bind: で結べるようになる。既定値の置き方と、コールバックで書くべきときとの使い分けまで。

🔒 ベーシック
16

スニペットで中身を差し込む

slot の後継であるスニペットを、引数を取れる「見た目を返す関数」として押さえる。children の受け取り方、省略可能なスニペット、テストで確かめるところまで。

🔒 ベーシック
17

リストの key と {#await}

each に key を付ける理由を、位置での照合と id での照合の違いから理解する。非同期の値をそのままテンプレートに置ける {#await} と、その 3 つの分岐まで。

🔒 ベーシック
18

トランジションとアニメーション

transition: で出入りに動きを付け、in: / out: で別々に指定する。svelte/transition に何が入っているかを実測で確かめ、jsdom でテストできない理由まで。

🔒 ベーシック

Chapter 4 — SvelteKit(第19〜25回)

フォルダの形がそのまま URL になるルーティングと、load・フォームアクション・API を扱います。最後は SSR・CSR・プリレンダリングの切り替えまで進みます。

19

SvelteKit のルーティング(フォルダが URL になる)

src/routes のフォルダ構成がそのまま URL になる仕組みと、+ で始まる特別なファイルの役割を押さえる。動的ルート [slug] でパラメータを受け取り、実際に配信して確かめるところまで。

🔒 ベーシック
20

レイアウトとエラーページ

+layout.svelte で配下のページを囲み、入れ子にして部分的な枠を作る。children の受け取り方と、+error.svelte が出る条件、page.status の読み方まで。

🔒 ベーシック
21

load でデータを用意する

+page.js の load が返したものが、ページの data になる仕組みを押さえる。ページが表示される前にデータがそろう利点と、依存の無効化・ナビゲーション時の再実行まで。

🔒 ベーシック
22

サーバーだけで動く load

+page.server.js に置いた load はブラウザに配られない。秘密の値を扱える理由と、戻り値がどうやってブラウザへ渡されるか(JSON では足りない理由)まで。

🔒 ベーシック
23

フォームアクションで受け取る

+page.server.js の actions に書いた関数が POST を受け取る。JavaScript が無くても動く形、fail で入力エラーを返す書き方、実際の応答を curl で確かめるところまで。

🔒 ベーシック
24

+server.js で API を作る

HTML ではなく JSON を返すエンドポイントを +server.js で作る。GET / POST を関数名で分け、URLSearchParams でクエリを読み、実際に叩いて応答を確かめるところまで。

🔒 ベーシック
25

SSR・CSR・プリレンダリングを切り替える

既定ではサーバーで HTML を作ってからブラウザで動き出す仕組みを押さえ、ページ単位で ssr・csr・prerender を切り替える。ビルド時に HTML を書き出した実物まで。

🔒 ベーシック

Chapter 5 — 実務で使う(第26〜28回)

TypeScript・状態の共有・テストという、仕事で必ず出てくる 3 つを押さえます。最後は Vitest と Testing Library で振る舞いを確かめられるようになります。

Chapter 6 — 仕上げ(第29〜30回)

アダプタを選んでビルドし、公開できる形にします。最後は React / Vue / Svelte の三つを並べて、どれを選ぶかを自分で説明できるようにします。

全30レッスンを終えたら、次はコンポーネントを型で守る TypeScript へ。React・Vue と読み比べると、最終回の対応表がそのまま使えます。メンバーシップで全コースが解放されます。