Runesシステム(基礎編)
Svelte 5では、新しいリアクティビティシステム「Runes」が導入されました。Runesは、より明示的で予測可能なリアクティビティを提供し、TypeScriptとの統合も向上しています。
Runesとは何か
Runesは、Svelte 5で導入された新しいリアクティビティシステムです。$
で始まる特別な関数を使用して、リアクティブな状態やロジックを明示的に宣言します。
なぜRunesが必要か
Svelte 4以前の問題点
- すべての
let
変数が自動的にリアクティブになり、どれがリアクティブか分かりにくい - パフォーマンスの観点で無駄がある場合がある
- TypeScriptとの統合が複雑
- リアクティビティの挙動が暗黙的で予測しにくい
Svelte 5(Runes)の改善点
$state
で明示的にリアクティブな状態を宣言- より予測可能で理解しやすい
- TypeScriptの型推論が向上
- パフォーマンスの最適化
- 他のフレームワーク経験者にも理解しやすい
主要なRunes
Runesシステムには、以下の主要な機能があります:
$state
- リアクティブな状態を作成$derived
- 他の値から派生する計算値$effect
- 副作用の実行$props
- コンポーネントのプロパティ定義$bindable
- 双方向バインディング可能なプロパティ
このセクションで学ぶこと
📦
$state - リアクティブな状態 →
リアクティブな状態変数の作成と管理方法を学びます。
- 基本的な使い方
- オブジェクトと配列の扱い
- 深いリアクティビティ
- クラスとの統合
🔄
$derived - 派生値 →
他の値から自動的に計算される値の作成方法を学びます。
- 計算プロパティの作成
- 複数の依存関係
- 最適化とメモ化
- 非同期派生値
⚡
$effect - 副作用 →
リアクティブな値の変更に応じて副作用を実行する方法を学びます。
- 副作用の基本
- クリーンアップ処理
- 依存関係の自動追跡
- 実行タイミングの制御
🔍
他フレームワークとの比較 →
React、Vue、Angularとの比較でRunesを理解します。
- React Hooksとの比較
- Vue Composition APIとの比較
- Angularシグナルとの比較
- 移行のヒント
学習の前提知識
このセクションを始める前に、以下の知識があることを前提としています:
- JavaScript(ES6+)の基本的な構文
- TypeScriptの基本的な型定義(推奨)
- HTML/CSSの基本的な知識
Svelteの基本知識について
Runesシステムを学んだ後、 Svelteの基本 セクションでコンポーネントの構造やテンプレート構文について詳しく学びます。Runesは基礎となる概念なので、まずこちらを理解することが重要です。
クイックスタート
簡単な例でRunesの使い方を見てみましょう:
<script lang="ts">
// リアクティブな状態を作成
let count = $state(0);
// 派生値(自動的に更新される)
let doubled = $derived(count * 2);
// 副作用(countが変更されると実行)
$effect(() => {
console.log(`Count is now: ${count}`);
});
function increment() {
count++;
}
</script>
<button onclick={increment}>
カウント: {count}
</button>
<p>2倍: {doubled}</p>
svelte
他のフレームワークとの類似性
- Reactの
useState
に似た$state
- Vueの
computed
に似た$derived
- Reactの
useEffect
に似た$effect
これらの概念に慣れている方は、Runesも直感的に理解できるでしょう。
次のステップ
準備ができたら、 $state - リアクティブな状態 から始めましょう。Svelte 5の新しいリアクティビティシステムの核心を学びます。