<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SvelteKit on じるラボ</title>
    <link>https://jiru-labo.com/tags/sveltekit/</link>
    <description>Recent content in SvelteKit on じるラボ</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 29 Jun 2026 03:00:00 +0900</lastBuildDate>
    <atom:link href="https://jiru-labo.com/tags/sveltekit/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>家計簿アプリを作る #34：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-34-deploy9/</link>
      <pubDate>Mon, 29 Jun 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-34-deploy9/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第34回です。前回実装したレスポンシブ対応を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #33：レスポンシブ対応</title>
      <link>https://jiru-labo.com/posts/kakeibo-33-responsive/</link>
      <pubDate>Mon, 29 Jun 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-33-responsive/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第33回です。スマートフォンでも使いやすいようにレスポンシブ対応を行います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #32：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-32-deploy8/</link>
      <pubDate>Mon, 29 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-32-deploy8/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第32回です。前回実装したダークモード対応を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #31：ダークモード対応</title>
      <link>https://jiru-labo.com/posts/kakeibo-31-darkmode/</link>
      <pubDate>Mon, 29 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-31-darkmode/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第31回です。flowbite-svelte の &lt;code&gt;DarkMode&lt;/code&gt; コンポーネントを使ってダークモードの切り替え機能を実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #30：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-30-deploy7/</link>
      <pubDate>Sun, 28 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-30-deploy7/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第30回です。前回実装した月次推移グラフ機能を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #29：収支の月次推移グラフ</title>
      <link>https://jiru-labo.com/posts/kakeibo-29-monthly-chart/</link>
      <pubDate>Sun, 28 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-29-monthly-chart/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第29回です。前回の選択月の収支グラフに加えて、複数月にわたる収支の月次推移グラフを追加します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #28：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-28-deploy6/</link>
      <pubDate>Sat, 27 Jun 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-28-deploy6/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第28回です。前回実装した収支グラフ機能を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #27：収支グラフの表示</title>
      <link>https://jiru-labo.com/posts/kakeibo-27-chart/</link>
      <pubDate>Sat, 27 Jun 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-27-chart/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第27回です。Chart.js を使って月別の収支を棒グラフで可視化します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #26：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-26-deploy5/</link>
      <pubDate>Sat, 27 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-26-deploy5/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第26回です。前回実装したCSVエクスポート機能を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #25：収支データのCSVエクスポート</title>
      <link>https://jiru-labo.com/posts/kakeibo-25-csv-export/</link>
      <pubDate>Thu, 25 Jun 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-25-csv-export/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第25回です。月別の収支データをCSVファイルとしてダウンロードできる機能を実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #24：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-24-deploy4/</link>
      <pubDate>Thu, 25 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-24-deploy4/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第24回です。前回のデプロイ（#21）以降に追加したページネーション・キーワード検索機能を Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #23：収支一覧のキーワード検索</title>
      <link>https://jiru-labo.com/posts/kakeibo-23-search/</link>
      <pubDate>Wed, 24 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-23-search/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第23回です。収支一覧にキーワード検索機能を追加します。月フィルタと組み合わせて、メモ・カテゴリを対象に絞り込みができるようにします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #22：収支一覧のページネーション</title>
      <link>https://jiru-labo.com/posts/kakeibo-22-pagination/</link>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-22-pagination/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第22回です。データが増えたときに全件表示では見づらくなるため、ページネーションを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #21：Cloudflare Pages への再デプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-21-deploy3/</link>
      <pubDate>Mon, 22 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-21-deploy3/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第21回です。前回のデプロイ（#15）以降に追加した機能をまとめて Cloudflare Pages にデプロイします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #20：flowbite-svelte コンポーネントで UI を統一する</title>
      <link>https://jiru-labo.com/posts/kakeibo-20-flowbite-svelte/</link>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-20-flowbite-svelte/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第20回です。今回は全ページのUIを &lt;code&gt;flowbite-svelte&lt;/code&gt; コンポーネントに置き換えて統一します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #19：削除の確認ダイアログ</title>
      <link>https://jiru-labo.com/posts/kakeibo-19-delete-confirm/</link>
      <pubDate>Fri, 19 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-19-delete-confirm/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第19回です。今回は削除ボタンに確認ダイアログを追加して、誤削除を防ぎます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #18：フォームのバリデーション強化</title>
      <link>https://jiru-labo.com/posts/kakeibo-18-validation/</link>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-18-validation/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第18回です。今回は収支の登録・編集フォームにバリデーションを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #17：複数ユーザー対応</title>
      <link>https://jiru-labo.com/posts/kakeibo-17-multiuser/</link>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-17-multiuser/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第17回です。今回は複数ユーザー対応を実装します。これまで全ユーザーのデータが共有されていたため、ログインユーザーのデータのみ表示・操作できるように修正します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #16：UI全体の見直し</title>
      <link>https://jiru-labo.com/posts/kakeibo-16-ui/</link>
      <pubDate>Mon, 15 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-16-ui/</guid>
      <description>&lt;p&gt;家計簡アプリ作成シリーズの第16回です。機能実装が一通り完了したので、全ページの UI を見直します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #15：再デプロイと最新月の自動選択</title>
      <link>https://jiru-labo.com/posts/kakeibo-15-deploy2/</link>
      <pubDate>Mon, 15 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-15-deploy2/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第15回です。ここまでの実装を Cloudflare Pages に再デプロイし、あわせてログイン直後に最新月が自動選択される UX 改善を実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #14：登録・編集後の月フィルタ維持</title>
      <link>https://jiru-labo.com/posts/kakeibo-14-month-persist/</link>
      <pubDate>Sat, 13 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-14-month-persist/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第14回です。今回は収支の登録・編集後に元の月フィルタ状態に戻る処理を実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #13：登録・編集フォームの改善</title>
      <link>https://jiru-labo.com/posts/kakeibo-13-form/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-13-form/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第13回です。今回は収支の登録・編集フォームのカテゴリ入力をテキストから &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; に変更し、収入・支出で選択肢が切り替わるようにします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #12：月別フィルタの実装</title>
      <link>https://jiru-labo.com/posts/kakeibo-12-filter/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-12-filter/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第12回です。今回は収支一覧に月別フィルタを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #11：収支の集計表示</title>
      <link>https://jiru-labo.com/posts/kakeibo-11-summary/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-11-summary/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第11回です。今回は収入合計・支出合計・残高の集計をトップページに表示します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #10：Tailwind CSS v4 &#43; Flowbite でUI スタイリング</title>
      <link>https://jiru-labo.com/posts/kakeibo-10-ui/</link>
      <pubDate>Wed, 10 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-10-ui/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第10回です。今回は Tailwind CSS v4 と Flowbite Svelte を導入して UI をスタイリングします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #9：Cloudflare Pages へのデプロイ</title>
      <link>https://jiru-labo.com/posts/kakeibo-09-deploy/</link>
      <pubDate>Tue, 09 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-09-deploy/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第9回です。今回は Cloudflare Pages へのデプロイを行います。ハマりポイントが多かったので詳しくまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #8：ログイン・ログアウトの実装</title>
      <link>https://jiru-labo.com/posts/kakeibo-08-auth-login/</link>
      <pubDate>Mon, 08 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-08-auth-login/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第8回（後編）です。前回に引き続き、ログイン・ログアウトを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #7：Better Auth のセットアップ &#43; サインアップ実装</title>
      <link>https://jiru-labo.com/posts/kakeibo-07-auth-setup/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-07-auth-setup/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第7回（前編）です。今回は Better Auth を使った認証の土台を作り、サインアップまでを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #6：収支の編集を実装する</title>
      <link>https://jiru-labo.com/posts/kakeibo-06-edit/</link>
      <pubDate>Wed, 03 Jun 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-06-edit/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第6回です。今回は登録済みの収支データを編集できるようにします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #5：収支の削除を実装する</title>
      <link>https://jiru-labo.com/posts/kakeibo-05-delete/</link>
      <pubDate>Wed, 03 Jun 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-05-delete/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第5回です。今回は一覧をテーブル表示に変更し、各行に削除ボタンを追加します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #4：収支の登録フォームを実装する</title>
      <link>https://jiru-labo.com/posts/kakeibo-04-form/</link>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-04-form/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第4回です。今回は SvelteKit の Form Actions を使って収支の登録フォームを実装します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #3：D1 への接続 &#43; 収支一覧の表示</title>
      <link>https://jiru-labo.com/posts/kakeibo-03-fetch/</link>
      <pubDate>Tue, 02 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-03-fetch/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第3回です。今回は Drizzle ORM 経由で D1 に接続し、収支データをトップページに一覧表示するところまでを実装しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #2：Drizzle でスキーマ設計 &#43; D1 マイグレーション</title>
      <link>https://jiru-labo.com/posts/kakeibo-02-schema/</link>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-02-schema/</guid>
      <description>&lt;p&gt;家計簿アプリ作成シリーズの第2回です。今回は Drizzle ORM でスキーマを定義し、Cloudflare D1 にマイグレーションを適用するところまでを記録します。ハマりポイントが多かったので詳しくまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家計簿アプリを作る #1：SvelteKit × Cloudflare D1 × Drizzle の環境構築</title>
      <link>https://jiru-labo.com/posts/kakeibo-01-setup/</link>
      <pubDate>Sun, 31 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/kakeibo-01-setup/</guid>
      <description>&lt;p&gt;SvelteKit + Cloudflare Workers（D1 + Drizzle ORM）を使って家計簿アプリを作っていきます。この記事はその第1回で、プロジェクトの環境構築をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitHub ActionsでSvelteKitをCloudflare Workersに自動デプロイした話</title>
      <link>https://jiru-labo.com/posts/github-actions-cloudflare/</link>
      <pubDate>Sun, 31 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/github-actions-cloudflare/</guid>
      <description>&lt;p&gt;GitHub Actionsを使うと、mainブランチへのプッシュで自動的にCloudflare Workersへデプロイできます。手動での &lt;code&gt;wrangler deploy&lt;/code&gt; が不要になります。&lt;/p&gt;</description>
    </item>
    <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>Drizzle ORMのリレーションでテーブルを結合して取得した話</title>
      <link>https://jiru-labo.com/posts/drizzle-relations/</link>
      <pubDate>Sat, 30 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/drizzle-relations/</guid>
      <description>&lt;p&gt;Drizzle ORMの &lt;code&gt;relations&lt;/code&gt; を使うと、テーブル間の関係を定義してシンプルなコードで結合データを取得できます。&lt;code&gt;posts&lt;/code&gt; と &lt;code&gt;comments&lt;/code&gt; を例に実装しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKit × Cloudflare WorkersでWebSocketを実装した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-websocket/</link>
      <pubDate>Sat, 30 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-websocket/</guid>
      <description>&lt;p&gt;WebSocketを使うと、一度接続したら切断するまで双方向にリアルタイムで通信し続けられます。SvelteKit + Cloudflare Workersでエコーサーバーを実装しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>DrizzleでマイグレーションとSeedを実装した話</title>
      <link>https://jiru-labo.com/posts/drizzle-migration-seed/</link>
      <pubDate>Fri, 29 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/drizzle-migration-seed/</guid>
      <description>&lt;p&gt;drizzle-kitを使ってマイグレーションを生成し、Cloudflare D1に適用する方法と、seed.sqlで初期データを流し込む方法をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKit × Cloudflare D1にDrizzle ORMを導入した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-drizzle/</link>
      <pubDate>Fri, 29 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-drizzle/</guid>
      <description>&lt;p&gt;Drizzle ORMはTypeScript向けの軽量ORMです。&lt;code&gt;platform.env.DB.prepare(&#39;SELECT ...&#39;)&lt;/code&gt; と書いていた生SQLを、型安全なTypeScriptのコードに置き換えられます。今回は既存のCloudflare D1テーブルに対してDrizzleを導入しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare QueuesのプロデューサーをSvelteKitで実装した話</title>
      <link>https://jiru-labo.com/posts/cloudflare-queues/</link>
      <pubDate>Fri, 29 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/cloudflare-queues/</guid>
      <description>&lt;p&gt;Cloudflare Queuesを使うと、処理を非同期でバックグラウンド実行できます。重い処理をQueueに投げることで、ユーザーを待たせずにレスポンスを返せます。&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>Cloudflare Workers AIをSvelteKitで使った話</title>
      <link>https://jiru-labo.com/posts/cloudflare-workers-ai/</link>
      <pubDate>Tue, 26 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/cloudflare-workers-ai/</guid>
      <description>&lt;p&gt;Cloudflare Workers AIを使うと、Cloudflareのエッジネットワーク上でAIモデルを直接実行できます。外部のAI APIを別途契約しなくても、Cloudflareアカウントだけで利用できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare Workersのシークレット管理を整理した話</title>
      <link>https://jiru-labo.com/posts/cloudflare-secrets/</link>
      <pubDate>Tue, 26 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/cloudflare-secrets/</guid>
      <description>&lt;p&gt;Cloudflare Workersでシークレット（APIキーなど秘密の値）を扱う方法を整理します。ローカルと本番で管理方法が異なります。&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のAPIルートにCORS対応を追加した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-cors/</link>
      <pubDate>Mon, 25 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-cors/</guid>
      <description>&lt;p&gt;SvelteKitの &lt;code&gt;+server.ts&lt;/code&gt; で作ったAPIを別オリジンから呼び出すには、CORSヘッダーの設定が必要です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare KVをSvelteKitで使った話</title>
      <link>https://jiru-labo.com/posts/cloudflare-kv/</link>
      <pubDate>Sat, 23 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/cloudflare-kv/</guid>
      <description>&lt;p&gt;Cloudflare KV（Key-Value Storage）はシンプルなキーと値のペアを保存するストレージです。D1のようなSQLクエリは不要で、&lt;code&gt;get&lt;/code&gt; / &lt;code&gt;put&lt;/code&gt; / &lt;code&gt;delete&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 × Cloudflare R2 でファイルアップロードを実装した話</title>
      <link>https://jiru-labo.com/posts/cloudflare-r2-upload/</link>
      <pubDate>Fri, 22 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/cloudflare-r2-upload/</guid>
      <description>&lt;p&gt;SvelteKit + Cloudflare Workers の構成でCloudflare R2を使ったファイルアップロード機能を実装しました。&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>TypeScriptのユーティリティ型（Partial・Pick・Omit・ReturnTypeなど）を整理した話</title>
      <link>https://jiru-labo.com/posts/typescript-utility-types/</link>
      <pubDate>Thu, 21 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/typescript-utility-types/</guid>
      <description>&lt;p&gt;TypeScriptには型を変換・加工するユーティリティ型が組み込まれています。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>
    <item>
      <title>SvelteKit &#43; GitHub OAuthをCloudflare Workersにデプロイした話（躓きポイントまとめ）</title>
      <link>https://jiru-labo.com/posts/sveltekit-github-oauth-deploy/</link>
      <pubDate>Fri, 15 May 2026 08:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-github-oauth-deploy/</guid>
      <description>&lt;p&gt;ローカルで動作確認済みのGitHub OAuth認証をCloudflare Workersにデプロイする際、環境変数まわりで複数の躓きポイントがありました。&#xA;同じ構成（SvelteKit + adapter-cloudflare + wrangler deploy）を使う場合の参考になるようにまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitでGitHub OAuthログインを実装した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-github-oauth/</link>
      <pubDate>Fri, 15 May 2026 06:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-github-oauth/</guid>
      <description>&lt;p&gt;固定パスワードによる簡易認証をGitHub OAuthを使った本格的な認証に置き換えました。&#xA;Arcticライブラリを使ってOAuthの実装をシンプルに保ちつつ、セッション管理にはCloudflare D1を使っています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKit &#43; D1をCloudflare Pagesにデプロイした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-d1-deploy/</link>
      <pubDate>Fri, 15 May 2026 05:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-d1-deploy/</guid>
      <description>&lt;p&gt;D1（CloudflareのSQLite）を導入したSvelteKitプロジェクトをCloudflare Pagesにデプロイしました。&#xA;ローカルで動作確認済みでも、デプロイ時にD1まわりでハマりやすい点があるため、手順とトラブルシューティングをまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitにCloudflare D1を導入してDBからデータを取得した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-d1-database/</link>
      <pubDate>Fri, 15 May 2026 04:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-d1-database/</guid>
      <description>&lt;p&gt;&lt;code&gt;$lib/posts.ts&lt;/code&gt; に書いていた静的なデータをCloudflare D1（サーバーレスSQLite）に移行しました。&#xA;この記事ではDB作成からマイグレーション、SvelteKit側でのデータ取得までの手順をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitにTailwindCSS v4を導入した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-tailwindcss/</link>
      <pubDate>Fri, 15 May 2026 03:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-tailwindcss/</guid>
      <description>&lt;p&gt;SvelteKitプロジェクトにTailwindCSS v4を導入しました。&#xA;v4はVite専用プラグインが用意されており、v3と比べて設定が大幅にシンプルになっています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitで$libを使ってデータと型を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-lib-basics/</link>
      <pubDate>Fri, 15 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-lib-basics/</guid>
      <description>&lt;p&gt;SvelteKitの基礎を学ぶ中で、同じデータが複数ファイルに重複して書かれている問題に気づきました。&#xA;この記事では &lt;code&gt;src/lib/&lt;/code&gt; フォルダと &lt;code&gt;$lib&lt;/code&gt; エイリアスを使ってデータと型を整理する方法をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitアプリをGitHubからCloudflare Workersにデプロイした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-deploy-github-cloudflare/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-deploy-github-cloudflare/</guid>
      <description>&lt;p&gt;SvelteKitで作ったアプリをGitHubにプッシュし、Cloudflare Workersにデプロイしました。&#xA;Cloudflareのダッシュボードが新UIに変わっており、いくつか躓いたポイントがあったので手順と合わせて残しておきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitをCloudflare Pagesにデプロイした話</title>
      <link>https://jiru-labo.com/posts/sveltekit-deploy-cloudflare/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-deploy-cloudflare/</guid>
      <description>&lt;p&gt;SvelteKitで作ったTODOアプリを実際に公開するため、Cloudflare Pages へのデプロイ設定を行いました。&#xA;アダプターの役割と環境変数の扱いを中心に整理します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitで記事一覧・詳細ページを作った話</title>
      <link>https://jiru-labo.com/posts/sveltekit-routing-basics/</link>
      <pubDate>Wed, 13 May 2026 01:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-routing-basics/</guid>
      <description>&lt;p&gt;SvelteKitのチュートリアルを一通り終えた後、実際に手を動かして定着させるために記事一覧・詳細ページを作りました。&#xA;この記事では、そこで学んだ動的ルーティングとload関数の基礎をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitでTODOアプリを作った話</title>
      <link>https://jiru-labo.com/posts/sveltekit-todo-actions/</link>
      <pubDate>Wed, 13 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-todo-actions/</guid>
      <description>&lt;p&gt;SvelteKitの動的ルーティングとload関数を学んだ次のステップとして、フォームでデータを追加・削除できるTODOアプリを作りました。&#xA;この記事では &lt;code&gt;+page.server.ts&lt;/code&gt; の &lt;code&gt;actions&lt;/code&gt; を中心に、フォーム処理の仕組みをまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitで認証・セッション管理を実装した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-auth-hooks/</link>
      <pubDate>Wed, 13 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-auth-hooks/</guid>
      <description>&lt;p&gt;TODOアプリにログイン機能を追加しました。&#xA;SvelteKit独自の仕組みである &lt;code&gt;hooks.server.ts&lt;/code&gt; と &lt;code&gt;locals&lt;/code&gt; を使い、ライブラリなしでCookieベースの認証を実装しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SvelteKitのフレームワーク構造を整理した話</title>
      <link>https://jiru-labo.com/posts/sveltekit-architecture/</link>
      <pubDate>Tue, 12 May 2026 12:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/sveltekit-architecture/</guid>
      <description>&lt;p&gt;Next.jsと並んでよく使うフレームワークがSvelteKitです。&#xA;基本的な層の考え方はNext.jsと共通していますが、ルーティングの仕組みや状態管理の方法が異なります。&#xA;この記事では、SvelteKit特有の構造を意識しながら、層ごとの役割を整理します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
