<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Svelte on じるラボ</title>
    <link>https://jiru-labo.com/tags/svelte/</link>
    <description>Recent content in Svelte on じるラボ</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 30 May 2026 02:00:00 +0900</lastBuildDate>
    <atom:link href="https://jiru-labo.com/tags/svelte/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SvelteKitでi18n（多言語対応）を実装した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-i18n/</link>
      <pubDate>Sat, 30 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-i18n/</guid>
      <description>&lt;p&gt;SvelteKitでi18n（国際化・多言語対応）を実装しました。まずシンプルな実装で概念を理解し、本番向けのアプローチも紹介します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5のSvelteMap・SvelteSetでリアクティブなデータ構造を使った話</title>
      <link>https://jiru-labo.com/posts/svelte5-reactive-collections/</link>
      <pubDate>Fri, 29 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-reactive-collections/</guid>
      <description>&lt;p&gt;Svelte 5では &lt;code&gt;$state&lt;/code&gt; でオブジェクトや配列をリアクティブにできますが、&lt;code&gt;Map&lt;/code&gt; や &lt;code&gt;Set&lt;/code&gt; は &lt;code&gt;.set()&lt;/code&gt; や &lt;code&gt;.add()&lt;/code&gt; などの操作では画面が更新されません。これを解決するのが &lt;code&gt;svelte/reactivity&lt;/code&gt; のクラスです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5の$inspectでリアクティブ値をデバッグした話</title>
      <link>https://jiru-labo.com/posts/svelte5-inspect/</link>
      <pubDate>Thu, 28 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-inspect/</guid>
      <description>&lt;p&gt;Svelte 5の &lt;code&gt;$inspect&lt;/code&gt; を使うと、リアクティブな値（&lt;code&gt;$state&lt;/code&gt; や &lt;code&gt;$derived&lt;/code&gt;）が変化するたびに自動でコンソールにログを出力できます。&lt;code&gt;console.log&lt;/code&gt; を手動で仕込む必要がなくなります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKit × Resendでメール送信を実装した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-resend/</link>
      <pubDate>Thu, 28 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-resend/</guid>
      <description>&lt;p&gt;ResendはシンプルなAPIでメール送信できるサービスです。無料枠で月3,000通まで送れます。SvelteKit + Cloudflare Workersとの組み合わせでお問い合わせフォームを実装しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitでSEOとOGPのメタタグを設定した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-seo-ogp/</link>
      <pubDate>Wed, 27 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-seo-ogp/</guid>
      <description>&lt;p&gt;SvelteKitでは &lt;code&gt;&amp;lt;svelte:head&amp;gt;&lt;/code&gt; タグの中にメタタグを書くだけでSEOやOGPの設定ができます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのhandleFetchフックでサーバー側fetchをカスタマイズした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-handle-fetch/</link>
      <pubDate>Wed, 27 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-handle-fetch/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;handleFetch&lt;/code&gt; フックを使うと、&lt;code&gt;load&lt;/code&gt; 関数内で実行されるサーバー側の &lt;code&gt;fetch&lt;/code&gt; をインターセプトしてリクエストを変更できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのsnapshotでページ離脱時の入力内容を復元した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-snapshot/</link>
      <pubDate>Mon, 25 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-snapshot/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;snapshot&lt;/code&gt; を使うと、ページを離れるときに状態を保存し、ブラウザの「戻る」で戻ったときに復元できます。フォームに入力中に誤って別ページに遷移してしまっても、戻ったときに入力内容が残ります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの$app/navigationでプログラムからナビゲーションを制御した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-app-navigation/</link>
      <pubDate>Sat, 23 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-app-navigation/</guid>
      <description>&lt;p&gt;SvelteKitでは &lt;code&gt;$app/navigation&lt;/code&gt; から関数をインポートすることで、JavaScriptからナビゲーションを制御できます。&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; タグでは対応できない条件付き遷移や離脱確認などに使います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの$app/stateでページ情報にアクセスした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-app-state/</link>
      <pubDate>Sat, 23 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-app-state/</guid>
      <description>&lt;p&gt;SvelteKitでは &lt;code&gt;$app/state&lt;/code&gt; から &lt;code&gt;page&lt;/code&gt; オブジェクトをインポートすることで、コンポーネントのどこからでも現在のURL・パラメータ・ルート情報にアクセスできます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのストリーミング（遅延ロード）を試した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-streaming/</link>
      <pubDate>Sat, 23 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-streaming/</guid>
      <description>&lt;p&gt;SvelteKitでは、&lt;code&gt;load&lt;/code&gt; 関数から &lt;code&gt;Promise&lt;/code&gt; をそのまま返すことで、データの一部を後から流し込む&lt;strong&gt;ストリーミング&lt;/strong&gt;が実現できます。重いクエリが完了するまでページ全体を待たせずに、段階的に表示できるのがメリットです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの名前付きアクション（Named Actions）でフォームを整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-named-actions/</link>
      <pubDate>Thu, 21 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-named-actions/</guid>
      <description>&lt;p&gt;SvelteKitでは、1つのページに複数のフォームアクションを定義できます。これを &lt;strong&gt;Named Actions（名前付きアクション）&lt;/strong&gt; と呼びます。TODOアプリの「追加・完了・削除・ログアウト」を例に整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの高度なルーティング（オプショナルパラメータ・レストパラメータ・マッチャー）を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-advanced-routing/</link>
      <pubDate>Thu, 21 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-advanced-routing/</guid>
      <description>&lt;p&gt;SvelteKitの応用的なルーティングパターンを整理します。ページネーションや可変長パスなど、実務でよく必要になる場面で使います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのページオプション（prerender・ssr・csr）を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-page-options/</link>
      <pubDate>Thu, 21 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-page-options/</guid>
      <description>&lt;p&gt;SvelteKitはページごとにレンダリング方式を切り替えられます。実務でパフォーマンスやSEOの要件に応じて使い分けます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのフォームバリデーションにZodを導入した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-zod/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-zod/</guid>
      <description>&lt;p&gt;フォームのバリデーションをif文で手書きすると項目が増えるたびにコードが複雑になります。Zodを使うとスキーマで宣言的に書けます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitにPlaywrightでE2Eテストを導入した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-playwright/</link>
      <pubDate>Tue, 19 May 2026 04:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-playwright/</guid>
      <description>&lt;p&gt;PlaywrightはE2Eテスト（End-to-End）のツールです。実際のブラウザを動かしてユーザー操作をシミュレートします。Vitestのユニットテストと組み合わせることで、ロジックから画面全体まで幅広くテストできます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのパフォーマンス最適化（preloadData・preloadCode・goto）を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-preload/</link>
      <pubDate>Tue, 19 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-preload/</guid>
      <description>&lt;p&gt;SvelteKitのリンク先読み機能（preload）を整理します。リンクにカーソルを乗せた瞬間にデータを先読みして、ページ遷移を体感的に速くします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのhooksを深掘りした話（handle・handleError・handleFetch・sequence）</title>
      <link>https://jiru-labo.com/posts/sveltekit-hooks/</link>
      <pubDate>Tue, 19 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-hooks/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;hooks.server.ts&lt;/code&gt; に書く関数を整理します。認証以外の実用的なユースケースも含めて解説します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5のコンテキストAPI（setContext/getContext）を整理した話</title>
      <link>https://jiru-labo.com/posts/svelte5-context/</link>
      <pubDate>Tue, 19 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-context/</guid>
      <description>&lt;p&gt;Svelte 5のコンテキストAPI（&lt;code&gt;setContext&lt;/code&gt; / &lt;code&gt;getContext&lt;/code&gt;）を整理します。propsとstoreに続く3つ目の状態共有の方法で、コンポーネントツリー内だけで状態を共有したいときに使います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKit &#43; Svelte 5でVitestのテスト環境を構築した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-vitest/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-vitest/</guid>
      <description>&lt;p&gt;SvelteKit + Svelte 5 の環境に Vitest でテストを導入しました。セットアップ時にいくつか躓きポイントがあったのでまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの&#43;server.tsでAPIエンドポイントを作った話</title>
      <link>https://jiru-labo.com/posts/sveltekit-server-ts/</link>
      <pubDate>Mon, 18 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-server-ts/</guid>
      <description>&lt;p&gt;SvelteKitでは &lt;code&gt;+server.ts&lt;/code&gt; を使うとREST APIのエンドポイントを作れます。&lt;code&gt;load&lt;/code&gt; 関数や &lt;code&gt;actions&lt;/code&gt; ではカバーできない場面で使います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのload関数の詳細（depends・invalidate・parent）を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-load-function/</link>
      <pubDate>Mon, 18 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-load-function/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;load&lt;/code&gt; 関数を深掘りします。&lt;code&gt;+page.ts&lt;/code&gt; と &lt;code&gt;+page.server.ts&lt;/code&gt; の使い分け、&lt;code&gt;parent()&lt;/code&gt; で親のデータを受け取る方法、&lt;code&gt;depends&lt;/code&gt; と &lt;code&gt;invalidate&lt;/code&gt; によるリロードなしのデータ再取得を整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのuse:enhanceによるフォームの段階的強化を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-use-enhance/</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-use-enhance/</guid>
      <description>&lt;p&gt;SvelteKitのフォームはデフォルトでフルページリロードして送信されます。&lt;code&gt;use:enhance&lt;/code&gt; を使うとリロードなしで送信できるようになります。仕組みと使い分けを整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitの&#43;layout.svelteと&#43;page.svelteの役割の切り分けを整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-layout-vs-page/</link>
      <pubDate>Sat, 16 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-layout-vs-page/</guid>
      <description>&lt;p&gt;SvelteKitで迷いやすい &lt;code&gt;+layout.svelte&lt;/code&gt; と &lt;code&gt;+page.svelte&lt;/code&gt; の役割の切り分けを整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのレイアウト（&#43;layout.svelte）を深掘りした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-layout/</link>
      <pubDate>Sat, 16 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-layout/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;+layout.svelte&lt;/code&gt; の応用パターンを整理します。ネストしたレイアウト・レイアウトデータの取得・ルートグループ・レイアウト無効化を解説します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのエラーハンドリング（&#43;error.svelteとerror()）を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-error-handling/</link>
      <pubDate>Sat, 16 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-error-handling/</guid>
      <description>&lt;p&gt;SvelteKitでエラーが起きたときの処理方法を整理します。&lt;code&gt;+error.svelte&lt;/code&gt; でエラー画面を作り、&lt;code&gt;error()&lt;/code&gt; ヘルパーでエラーを投げる方法と、コンポーネント内でのエラー処理の違いを解説します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5のスニペット（{#snippet}と{@render}）を整理した話</title>
      <link>https://jiru-labo.com/posts/svelte5-snippet/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-snippet/</guid>
      <description>&lt;p&gt;Svelte 5では&lt;strong&gt;スロット（slot）が廃止&lt;/strong&gt;され、代わりに&lt;strong&gt;スニペット&lt;/strong&gt;という仕組みになりました。&lt;code&gt;{#snippet}&lt;/code&gt; で定義して &lt;code&gt;{@render}&lt;/code&gt; で呼び出します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5の$props()の型定義と$bindableを整理した話</title>
      <link>https://jiru-labo.com/posts/svelte5-props-bindable/</link>
      <pubDate>Fri, 15 May 2026 11:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-props-bindable/</guid>
      <description>&lt;p&gt;Svelte 5で &lt;code&gt;$props()&lt;/code&gt; にTypeScriptの型を付ける方法と、子コンポーネントから親の値を変更できる &lt;code&gt;$bindable&lt;/code&gt; の使い方を整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5のコンポーネント間の状態共有（propsとstore）を整理した話</title>
      <link>https://jiru-labo.com/posts/svelte5-state-sharing/</link>
      <pubDate>Fri, 15 May 2026 10:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-state-sharing/</guid>
      <description>&lt;p&gt;Svelte 5でコンポーネント間の状態を共有する方法は主に2つあります。&#xA;&lt;strong&gt;props&lt;/strong&gt;（親から子へ渡す）と &lt;strong&gt;store&lt;/strong&gt;（どこからでも参照できる共有ファイル）です。&#xA;それぞれの実装方法と使い分けの判断基準を整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svelte 5のリアクティビティ（$state・$derived・$effect）を整理した話</title>
      <link>https://jiru-labo.com/posts/svelte5-reactivity/</link>
      <pubDate>Fri, 15 May 2026 09:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/svelte5-reactivity/</guid>
      <description>&lt;p&gt;Svelte 5からリアクティビティの仕組みが「ルーン（Rune）」という新しい方式に変わりました。&#xA;&lt;code&gt;$state&lt;/code&gt;・&lt;code&gt;$derived&lt;/code&gt;・&lt;code&gt;$effect&lt;/code&gt; の3つを中心に、実際に動かしながら挙動を整理します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
