<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>じるラボ</title>
    <link>https://jiru-labo.com/</link>
    <description>Recent content 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/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>ブログ記事をテーマ別に整理したドキュメントページを作った話</title>
      <link>https://jiru-labo.com/posts/blog-docs-page/</link>
      <pubDate>Sat, 30 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/blog-docs-page/</guid>
      <description>&lt;p&gt;ブログを書き続けていると、記事が増えてきたときに「あの記事どこだっけ？」となるのが悩みでした。&#xA;とくにSvelteKitやCloudflare関連の記事は、シリーズとして順番に読んでほしいものが多く、ブログの新着順一覧では体系がわかりにくい状態になっていました。&lt;/p&gt;&#xA;&lt;p&gt;そこで、既存のブログはそのままに、テーマ別に整理した&lt;strong&gt;ドキュメントページ&lt;/strong&gt;を追加しました。&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>OAuthのトークンの種類とBearer認証を整理した話</title>
      <link>https://jiru-labo.com/posts/oauth-token-bearer-auth/</link>
      <pubDate>Fri, 15 May 2026 07:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/oauth-token-bearer-auth/</guid>
      <description>&lt;p&gt;GitHub OAuthのログインを実装する中で、複数の種類のトークンが登場しました。&#xA;それぞれの役割・寿命・保存場所が異なるため、整理してまとめます。&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>XServerのドメインをCloudflareに移管した話</title>
      <link>https://jiru-labo.com/posts/transfer-domain-from-xserver-to-cloudflare/</link>
      <pubDate>Wed, 13 May 2026 02:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/transfer-domain-from-xserver-to-cloudflare/</guid>
      <description>&lt;p&gt;XServerのWordPressブログをCloudflare Pagesに移行したのに伴い、&#xA;ドメイン（jiru-labo.com）の登録もXServerからCloudflare Registrarに移管しました。&lt;/p&gt;&#xA;&lt;p&gt;今回のドメインはXServerの&lt;strong&gt;独自ドメイン永久無料特典&lt;/strong&gt;で取得したものだったため、&#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>
    <item>
      <title>Next.jsのフレームワーク構造を整理した話</title>
      <link>https://jiru-labo.com/posts/nextjs-architecture/</link>
      <pubDate>Tue, 12 May 2026 11:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/nextjs-architecture/</guid>
      <description>&lt;p&gt;Next.jsでアプリを開発していると、「このコードはどこに書くべきか」で迷うことがあります。&#xA;この記事では、自分なりに整理した層構造とそれぞれの役割をまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS認定資格を全制覇するまでの約3年間の話</title>
      <link>https://jiru-labo.com/posts/aws-all-certifications/</link>
      <pubDate>Tue, 12 May 2026 10:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/aws-all-certifications/</guid>
      <description>&lt;p&gt;2023年10月から2026年5月にかけて、AWS認定資格を12個すべて取得しました。&#xA;この記事では、全制覇を目指したわけでもなかった自分が、気づけばコンプリートしていたその経緯を振り返ります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HugoサイトにCloudflare WorkersとResendでお問い合わせフォームを実装した話</title>
      <link>https://jiru-labo.com/posts/contact-form-cloudflare-workers/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/contact-form-cloudflare-workers/</guid>
      <description>&lt;p&gt;Hugoで作った静的サイトにお問い合わせフォームを実装しました。静的サイトはサーバーサイドの処理ができないため、フォームの送信処理には別の仕組みが必要です。今回は &lt;strong&gt;Cloudflare Workers&lt;/strong&gt;（サーバーレス関数）と &lt;strong&gt;Resend&lt;/strong&gt;（メール送信API）を組み合わせた構成にしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HugoのMainroadテーマをカスタマイズしてコーポレートサイト風にした話</title>
      <link>https://jiru-labo.com/posts/hugo-layout-customization/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/hugo-layout-customization/</guid>
      <description>&lt;p&gt;XServerのWordPressブログをHugo＋Cloudflare Pagesに移行した後、デフォルトのMainroadテーマのままでは味気なく、コーポレートサイト風のレイアウトに作り直しました。&#xA;この記事では、その試行錯誤の経緯を記録として残します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>XServerのWordPressブログをCloudflare Pagesに移行した話</title>
      <link>https://jiru-labo.com/posts/migrate-wordpress-to-cloudflare/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/migrate-wordpress-to-cloudflare/</guid>
      <description>&lt;p&gt;長年XServerでWordPressブログを運営していました（と言っても記事の投稿はすっかり止まってましたが…汗）が、思い切ってHugo＋Cloudflare Pagesに移行しました。&#xA;表示速度の向上、ランニングコストゼロ、Markdownでの執筆環境など、メリットが多く大満足です。&lt;/p&gt;&#xA;&lt;p&gt;この記事では、実際に移行した手順とハマったポイントをまとめます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>お仕事</title>
      <link>https://jiru-labo.com/pages/work/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/pages/work/</guid>
      <description>&lt;div class=&#34;work-notice&#34;&gt;&#xA;  &lt;p&gt;現在、お仕事のご依頼はお受けしていません。準備が整い次第、あらためてご案内いたします。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;work-cards&#34;&gt;&#xA;  &lt;div class=&#34;work-card&#34;&gt;&#xA;    &lt;img class=&#34;work-card__img&#34; src=&#34;https://jiru-labo.com/img/work/homepage.jpg&#34; alt=&#34;ホームページ制作&#34;&gt;&#xA;    &lt;h3 class=&#34;work-card__title&#34;&gt;ホームページ制作&lt;/h3&gt;&#xA;    &lt;p class=&#34;work-card__desc&#34;&gt;ビジネスの目的に合わせたホームページを制作します。デザインから公開まで一貫してサポートします。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;work-card&#34;&gt;&#xA;    &lt;img class=&#34;work-card__img&#34; src=&#34;https://jiru-labo.com/img/work/webapp.jpg&#34; alt=&#34;Webアプリケーション開発&#34;&gt;&#xA;    &lt;h3 class=&#34;work-card__title&#34;&gt;Webアプリケーション開発&lt;/h3&gt;&#xA;    &lt;p class=&#34;work-card__desc&#34;&gt;業務効率化ツールや社内システムなど、要件に合わせたWebアプリをフルスクラッチで開発します。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>お問い合わせ</title>
      <link>https://jiru-labo.com/pages/contact/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/pages/contact/</guid>
      <description>&lt;div class=&#34;contact-form-wrap&#34;&gt;&#xA;&lt;form id=&#34;contact-form&#34; class=&#34;contact-form&#34; novalidate&gt;&#xA;  &lt;div class=&#34;contact-form__field&#34;&gt;&#xA;    &lt;label for=&#34;cf-name&#34;&gt;お名前 &lt;span class=&#34;contact-form__required&#34;&gt;*&lt;/span&gt;&lt;/label&gt;&#xA;    &lt;input type=&#34;text&#34; id=&#34;cf-name&#34; name=&#34;name&#34; placeholder=&#34;山田 太郎&#34; required&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;contact-form__field&#34;&gt;&#xA;    &lt;label for=&#34;cf-email&#34;&gt;メールアドレス &lt;span class=&#34;contact-form__required&#34;&gt;*&lt;/span&gt;&lt;/label&gt;&#xA;    &lt;input type=&#34;email&#34; id=&#34;cf-email&#34; name=&#34;email&#34; placeholder=&#34;example@email.com&#34; required&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;contact-form__field&#34;&gt;&#xA;    &lt;label for=&#34;cf-subject&#34;&gt;件名&lt;/label&gt;&#xA;    &lt;input type=&#34;text&#34; id=&#34;cf-subject&#34; name=&#34;subject&#34; placeholder=&#34;ご相談・お見積もりなど&#34;&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;contact-form__field&#34;&gt;&#xA;    &lt;label for=&#34;cf-message&#34;&gt;メッセージ &lt;span class=&#34;contact-form__required&#34;&gt;*&lt;/span&gt;&lt;/label&gt;&#xA;    &lt;textarea id=&#34;cf-message&#34; name=&#34;message&#34; rows=&#34;7&#34; placeholder=&#34;お問い合わせ内容をご記入ください&#34; required&gt;&lt;/textarea&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;contact-form__actions&#34;&gt;&#xA;    &lt;button type=&#34;submit&#34; class=&#34;contact-form__submit&#34;&gt;送信する&lt;/button&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div id=&#34;cf-status&#34; class=&#34;contact-form__status&#34; aria-live=&#34;polite&#34;&gt;&lt;/div&gt;&#xA;&lt;/form&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  var WORKER_URL = &#39;https://contact-worker.jiru-labo.workers.dev&#39;;&#xA;&#xA;  var form = document.getElementById(&#39;contact-form&#39;);&#xA;  var status = document.getElementById(&#39;cf-status&#39;);&#xA;&#xA;  form.addEventListener(&#39;submit&#39;, function(e) {&#xA;    e.preventDefault();&#xA;    status.className = &#39;contact-form__status&#39;;&#xA;    status.textContent = &#39;&#39;;&#xA;&#xA;    var name = form.elements[&#39;name&#39;].value.trim();&#xA;    var email = form.elements[&#39;email&#39;].value.trim();&#xA;    var subject = form.elements[&#39;subject&#39;].value.trim();&#xA;    var message = form.elements[&#39;message&#39;].value.trim();&#xA;&#xA;    if (!name || !email || !message) {&#xA;      status.className = &#39;contact-form__status contact-form__status--error&#39;;&#xA;      status.textContent = &#39;お名前・メールアドレス・メッセージは必須です。&#39;;&#xA;      return;&#xA;    }&#xA;&#xA;    var btn = form.querySelector(&#39;.contact-form__submit&#39;);&#xA;    btn.disabled = true;&#xA;    btn.textContent = &#39;送信中...&#39;;&#xA;&#xA;    fetch(WORKER_URL, {&#xA;      method: &#39;POST&#39;,&#xA;      headers: { &#39;Content-Type&#39;: &#39;application/json&#39; },&#xA;      body: JSON.stringify({ name: name, email: email, subject: subject, message: message })&#xA;    })&#xA;    .then(function(res) { return res.json(); })&#xA;    .then(function(data) {&#xA;      if (data.ok) {&#xA;        form.reset();&#xA;        status.className = &#39;contact-form__status contact-form__status--success&#39;;&#xA;        status.textContent = &#39;お問い合わせを送信しました。ありがとうございます。&#39;;&#xA;      } else {&#xA;        status.className = &#39;contact-form__status contact-form__status--error&#39;;&#xA;        status.textContent = data.error || &#39;送信に失敗しました。しばらくしてから再度お試しください。&#39;;&#xA;      }&#xA;    })&#xA;    .catch(function() {&#xA;      status.className = &#39;contact-form__status contact-form__status--error&#39;;&#xA;      status.textContent = &#39;通信エラーが発生しました。しばらくしてから再度お試しください。&#39;;&#xA;    })&#xA;    .finally(function() {&#xA;      btn.disabled = false;&#xA;      btn.textContent = &#39;送信する&#39;;&#xA;    });&#xA;  });&#xA;})();&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>プライバシーポリシー</title>
      <link>https://jiru-labo.com/pages/privacy-policy/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/pages/privacy-policy/</guid>
      <description>&lt;p&gt;じるラボ（以下「当サイト」）は、個人情報の取り扱いについて以下のとおりプライバシーポリシーを定めます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;運営者情報&#34;&gt;運営者情報&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;サイト名：じるラボ&lt;/li&gt;&#xA;&lt;li&gt;サイトURL：https://jiru-labo.com&lt;/li&gt;&#xA;&lt;li&gt;運営者：じる&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;収集する個人情報と利用目的&#34;&gt;収集する個人情報と利用目的&lt;/h2&gt;&#xA;&lt;h3 id=&#34;お問い合わせフォーム&#34;&gt;お問い合わせフォーム&lt;/h3&gt;&#xA;&lt;p&gt;お問い合わせの際、お名前・メールアドレス・お問い合わせ内容を収集します。収集した情報は、お問い合わせへの回答のみに使用し、それ以外の目的には使用しません。&lt;/p&gt;&#xA;&lt;h3 id=&#34;アクセス解析&#34;&gt;アクセス解析&lt;/h3&gt;&#xA;&lt;p&gt;当サイトでは、サイトの利用状況を把握するためにアクセス解析ツールを使用することがあります。アクセス解析ツールはCookieを使用しますが、個人を特定する情報は収集しません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;第三者への提供&#34;&gt;第三者への提供&lt;/h2&gt;&#xA;&lt;p&gt;収集した個人情報は、法令に基づく場合を除き、第三者に提供することはありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;個人情報の管理&#34;&gt;個人情報の管理&lt;/h2&gt;&#xA;&lt;p&gt;収集した個人情報は適切に管理し、お問い合わせへの回答が完了した後は速やかに削除します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;cookie-について&#34;&gt;Cookie について&lt;/h2&gt;&#xA;&lt;p&gt;当サイトはCookieを使用することがあります。ブラウザの設定によりCookieを無効にすることができますが、一部の機能が利用できなくなる場合があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;免責事項&#34;&gt;免責事項&lt;/h2&gt;&#xA;&lt;p&gt;当サイトに掲載する情報は正確性を心がけていますが、その内容の完全性・正確性を保証するものではありません。当サイトの情報をもとに行動した結果について、当サイトは一切の責任を負いません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;プライバシーポリシーの変更&#34;&gt;プライバシーポリシーの変更&lt;/h2&gt;&#xA;&lt;p&gt;本ポリシーは必要に応じて変更することがあります。変更後のポリシーは当ページに掲載した時点で効力を生じるものとします。&lt;/p&gt;&#xA;&lt;h2 id=&#34;お問い合わせ&#34;&gt;お問い合わせ&lt;/h2&gt;&#xA;&lt;p&gt;本ポリシーに関するお問い合わせは、&lt;a href=&#34;https://jiru-labo.com/pages/contact/&#34;&gt;お問い合わせフォーム&lt;/a&gt;よりお願いします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>プロフィール</title>
      <link>https://jiru-labo.com/pages/profile/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/pages/profile/</guid>
      <description>&lt;h2 id=&#34;じるについて&#34;&gt;じるについて&lt;/h2&gt;&#xA;&lt;div class=&#34;profile-intro&#34;&gt;&#xA;&lt;img src=&#34;https://jiru-labo.com/img/profile.png&#34; alt=&#34;じる&#34; class=&#34;profile-intro__icon&#34;&gt;&#xA;&lt;div class=&#34;profile-intro__text&#34;&gt;&#xA;&lt;p&gt;IT企業に30年以上勤務しているエンジニアです。&lt;br&gt;&#xA;業務システムの開発からキャリアをスタートし、長年同じシステムの開発に携わっていましたが、50代でWebサービス開発の部署に異動。&lt;br&gt;&#xA;定年後はフリーランスエンジニアとして、好きな開発を続けることを目指しています。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;キャリア&#34;&gt;キャリア&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;年齢&lt;/th&gt;&#xA;          &lt;th&gt;内容&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;20代〜&lt;/td&gt;&#xA;          &lt;td&gt;IT企業に就職。業務システム（いわゆるレガシーシステム）の開発・保守に従事&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;30代〜&lt;/td&gt;&#xA;          &lt;td&gt;同分野の開発チームのリーダーを担当&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;40代〜&lt;/td&gt;&#xA;          &lt;td&gt;管理職に就任。同分野の開発チームのマネジメントを担当&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;50代〜&lt;/td&gt;&#xA;          &lt;td&gt;Webサービス開発部門に異動。クラウド・Webアプリ開発の世界へ&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;現在&lt;/td&gt;&#xA;          &lt;td&gt;Webアプリケーション開発に携わりながら、フリーランスに向けて準備中&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;スキル資格&#34;&gt;スキル・資格&lt;/h2&gt;&#xA;&lt;h3 id=&#34;aws認定資格&#34;&gt;AWS認定資格&lt;/h3&gt;&#xA;&lt;p&gt;クラウドへの理解を深めながら、一つひとつじっくりと取り組んできました。&lt;br&gt;&#xA;約3年かけて、全&lt;strong&gt;12個&lt;/strong&gt;を取得済みです。（2026年5月時点）&lt;/p&gt;&#xA;&lt;div class=&#34;aws-badges&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/clf.png&#34; alt=&#34;AWS Certified Cloud Practitioner&#34; title=&#34;AWS Certified Cloud Practitioner&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/saa.png&#34; alt=&#34;AWS Certified Solutions Architect – Associate&#34; title=&#34;AWS Certified Solutions Architect – Associate&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/dva.png&#34; alt=&#34;AWS Certified Developer – Associate&#34; title=&#34;AWS Certified Developer – Associate&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/soa.png&#34; alt=&#34;AWS Certified SysOps Administrator – Associate&#34; title=&#34;AWS Certified SysOps Administrator – Associate&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/sap.png&#34; alt=&#34;AWS Certified Solutions Architect – Professional&#34; title=&#34;AWS Certified Solutions Architect – Professional&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/dop.png&#34; alt=&#34;AWS Certified DevOps Engineer – Professional&#34; title=&#34;AWS Certified DevOps Engineer – Professional&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/ans.png&#34; alt=&#34;AWS Certified Advanced Networking – Specialty&#34; title=&#34;AWS Certified Advanced Networking – Specialty&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/scs.png&#34; alt=&#34;AWS Certified Security – Specialty&#34; title=&#34;AWS Certified Security – Specialty&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/aif.png&#34; alt=&#34;AWS Certified AI Practitioner&#34; title=&#34;AWS Certified AI Practitioner&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/mla.png&#34; alt=&#34;AWS Certified Machine Learning Engineer – Associate&#34; title=&#34;AWS Certified Machine Learning Engineer – Associate&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/mls.png&#34; alt=&#34;AWS Certified Machine Learning – Specialty&#34; title=&#34;AWS Certified Machine Learning – Specialty&#34;&gt;&#xA;  &lt;img src=&#34;https://jiru-labo.com/img/aws/dea.png&#34; alt=&#34;AWS Certified Data Engineer – Associate&#34; title=&#34;AWS Certified Data Engineer – Associate&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;技術スタック&#34;&gt;技術スタック&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;バックエンド&lt;/strong&gt;：TypeScirpt、Python、C#&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;フロントエンド&lt;/strong&gt;：HTML/CSS、TypeScript&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;フレームワーク&lt;/strong&gt;：Next.js、SvelteKit&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;インフラ&lt;/strong&gt;：AWS、Cloudflare&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;その他&lt;/strong&gt;：Hugo、Git/GitHub&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;このサイトについて&#34;&gt;このサイトについて&lt;/h2&gt;&#xA;&lt;p&gt;「じるラボ」は、定年後にフリーランスエンジニアとして活動するために立ち上げたサイトです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>検索</title>
      <link>https://jiru-labo.com/pages/search/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/pages/search/</guid>
      <description></description>
    </item>
    <item>
      <title>個人事業用にCloudflareアカウントを新規作成した話</title>
      <link>https://jiru-labo.com/posts/create-cloudflare-account-for-business/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/create-cloudflare-account-for-business/</guid>
      <description>&lt;p&gt;XServerで運営していたWordPressブログをCloudflare Pagesに移行するにあたり、&#xA;個人事業用のCloudflareアカウントを新規に作成しました。&lt;/p&gt;&#xA;&lt;p&gt;Cloudflareは無料プランでも非常に多くの機能が使えます。&#xA;この記事ではアカウント作成の手順と、実際に使った機能を紹介します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>個人事業用にGitHubアカウントを新規作成した話</title>
      <link>https://jiru-labo.com/posts/create-github-account-for-business/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/create-github-account-for-business/</guid>
      <description>&lt;p&gt;個人事業用のGoogleアカウントを作成したのと同様に、GitHubアカウントも新規に作成しました。&#xA;プライベートのコードと仕事用のリポジトリをきっちり分けたかったのが主な理由です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>個人事業用にGoogleアカウントを新規作成した話</title>
      <link>https://jiru-labo.com/posts/create-google-account-for-business/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate>
      <guid>https://jiru-labo.com/posts/create-google-account-for-business/</guid>
      <description>&lt;p&gt;個人事業を本格的に動かすにあたり、プライベート用とビジネス用のGoogleアカウントを分けることにしました。&#xA;同じアカウントで混在させると管理が煩雑になるため、新規に作成した手順をまとめます。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
