【2026年版】Svelteの始め方 — SvelteKit環境構築からコンポーネント作成まで完全ガイド
🎚 難易度 ★☆☆ 初心者向け
⏱ 学習時間の目安 読むだけ10分、環境構築込み30〜60分
📚 前提知識 javascript-getting-started の基礎知識・html-css-getting-started の基礎知識
✅ このガイドで学べること
- SvelteKitプロジェクトの作成と起動
- リアクティブ変数($state)とテンプレート構文
- コンポーネントとpropsの使い方
- SvelteKitのファイルベースルーティング
セットアップ手順
npm create svelte@latest my-svelte-app
cd my-svelte-app
npm install
npm run dev # http://localhost:5173 で起動
コンポーネントの基本(Svelte 5)
<!-- src/lib/Counter.svelte -->
<script lang="ts">
let count = $state(0);
let doubled = $derived(count * 2);
</script>
<button onclick={() => count++}>
クリック: {count}(2倍: {doubled})
</button>
<!-- src/lib/Greeting.svelte(propsを受け取るコンポーネント) -->
<script lang="ts">
let { name, color = 'blue' } = $props();
</script>
<p style="color: {color}">こんにちは、{name}さん!</p>
<!-- 使い方(親コンポーネント) -->
<!-- <Greeting name="ひよこ" color="green" /> -->
SvelteKitのフォルダ構成:
src/routes/
+page.svelte # / (ルートページ)
+layout.svelte # 共通レイアウト
about/
+page.svelte # /about
blog/
[slug]/
+page.svelte # /blog/:slug (動的ルーティング)
+page.server.ts # サーバーサイドデータ取得
よくある詰まりポイント
Q: Svelte 4とSvelte 5の書き方が混在して混乱する
→ Svelte 5(2024年リリース)では $state()・$derived()・$props() というRunesが導入されました。古い記事はSvelte 4の書き方(let count = 0 で自動リアクティブ)です。新規プロジェクトはSvelte 5推奨です。
Q: +page.server.ts でデータを取得したのにコンポーネントで受け取れない
→ load 関数が返した値は +page.svelte で let { data } = $props() として受け取ります。data.xxx でアクセスできます。
Q: TypeScriptで $state の型エラーが出る
→ let count = $state<number>(0) のようにジェネリクスで型を指定できます。