<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>jpzip blog (ja)</title>
    <link>https://jpzip.nadai.dev/blog/</link>
    <atom:link href="https://jpzip.nadai.dev/blog/feed.xml" rel="self" type="application/rss+xml" />
    <description>jpzip 開発の裏側・Cloudflare Pages 設計・MCP server・AI 駆動開発の記事</description>
    <language>ja</language>
    <lastBuildDate>Mon, 25 May 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>ken_all / jpostcode gem から jpzip-ruby へ移行する</title>
      <link>https://jpzip.nadai.dev/blog/0011-migrate-from-jpostal-ruby/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0011-migrate-from-jpostal-ruby/</guid>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <description>KEN_ALL.csv をローカル展開する Ruby gem(ken_all=DB へ import、jpostcode=git submodule 同梱)から、CDN フェッチの jpzip-ruby へ移す手順。フィールド対応表、月次更新運用の撤去、移行できない 1 点まで解説します。</description>
      <category>Migration</category>
      <category>Ruby</category>
      <category>Rails</category>
      <category>CDN</category>
    </item>
    <item>
      <title>Cloudflare Workers で jpzip-js を動かす — キャッシュ層をどう選ぶか</title>
      <link>https://jpzip.nadai.dev/blog/0010-cloudflare-workers-edge/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0010-cloudflare-workers-edge/</guid>
      <pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate>
      <description>jpzip-js を Cloudflare Workers の Edge で動かし、郵便番号 → 住所のルックアップを配信する設計。Cache API・Workers KV・Durable Objects のどれをキャッシュ層に選ぶべきかを、コストと実測 p50/p99 で判断します。</description>
      <category>Use Case</category>
      <category>Cloudflare</category>
      <category>Workers</category>
      <category>TypeScript</category>
      <category>Edge</category>
    </item>
    <item>
      <title>zipcoda から jpzip-js へ移行する: 外部 API 依存を切る</title>
      <link>https://jpzip.nadai.dev/blog/0009-migrate-from-zipcoda-js/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0009-migrate-from-zipcoda-js/</guid>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
      <description>zipcoda.net の郵便番号 API を実行時に叩く構成から、jpzip-js の静的 CDN 配信へ移行する手順。レスポンスのフィールドマッピング、JSONP/CSP の整理、レート制限対策の撤去、実測レイテンシまでを Before/After のコードで具体的に解説します。</description>
      <category>Migration</category>
      <category>JavaScript</category>
      <category>TypeScript</category>
      <category>CDN</category>
    </item>
    <item>
      <title>Next.js App Router の Server Actions で住所自動入力フォームを作る</title>
      <link>https://jpzip.nadai.dev/blog/0008-nextjs-server-actions/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0008-nextjs-server-actions/</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <description>Next.js 16 App Router の Server Actions で、郵便番号から都道府県・市区町村を引いて自動入力するフォームの作り方。JS 無効でも動く Progressive Enhancement、Edge Runtime での実行、use cache ディレクティブとの組み合わせまで解説します。</description>
      <category>Framework Integration</category>
      <category>Next.js</category>
      <category>TypeScript</category>
      <category>Forms</category>
      <category>Edge</category>
    </item>
    <item>
      <title>Rails + Hotwire + jpzip-ruby で住所自動入力フォームを作る</title>
      <link>https://jpzip.nadai.dev/blog/0007-rails-hotwire-form/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0007-rails-hotwire-form/</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <description>Turbo Frame と Stimulus の 2 パターンで、郵便番号から都道府県・市区町村を自動入力する Rails フォームを作る手順。jpzip-ruby の L1/L2 キャッシュで Puma プロセスをまたいだ CDN への重複フェッチを潰す構成まで含めて解説します。</description>
      <category>Framework Integration</category>
      <category>Ruby</category>
      <category>Rails</category>
      <category>Hotwire</category>
      <category>Forms</category>
    </item>
    <item>
      <title>React Hook Form + Zod + jpzip で住所自動入力フォームを作る</title>
      <link>https://jpzip.nadai.dev/blog/0006-react-hook-form-zod/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0006-react-hook-form-zod/</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <description>React Hook Form と Zod で郵便番号バリデーションを組み、jpzip-js の lookup と setValue で都道府県・市区町村・町域を埋める手順。二重 lookup の抑制と aria-busy によるアクセシビリティ対応も含む。</description>
      <category>Framework Integration</category>
      <category>React</category>
      <category>TypeScript</category>
      <category>Forms</category>
      <category>Zod</category>
    </item>
    <item>
      <title>Yubinbango から jpzip-js へ移行する: JSONP 脱却と型安全化</title>
      <link>https://jpzip.nadai.dev/blog/0005-migrate-from-yubinbango-js/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0005-migrate-from-yubinbango-js/</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <description>jQuery を使わない古典的な Yubinbango から jpzip-js への移行ガイド。JSONP・CSP 制約・TypeScript 型欠如を解消し、microformats h-adr のフォームを薄い互換層で再利用する具体的な手順。</description>
      <category>Migration</category>
      <category>JavaScript</category>
      <category>TypeScript</category>
      <category>Forms</category>
    </item>
    <item>
      <title>Claude Code 1 人開発で 6 時間で 8 言語 SDK を実装した話</title>
      <link>https://jpzip.nadai.dev/blog/0004-claude-code-8-sdks-6-hours/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0004-claude-code-8-sdks-6-hours/</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description>jpzip の Go / TypeScript / Python / Rust / Ruby / Dart / PHP / Swift SDK を Claude Code と 6 時間で実装した話。プロトコル先行設計、翻訳タスクとしての多言語移植、言語固有の落とし穴。</description>
      <category>Claude Code</category>
      <category>AI</category>
      <category>SDK</category>
      <category>多言語</category>
      <category>OSS</category>
    </item>
    <item>
      <title>KEN_ALL.csv を Cloudflare Pages から 120,677 件配信する設計</title>
      <link>https://jpzip.nadai.dev/blog/0002-cloudflare-pages-static-zipcode-delivery/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0002-cloudflare-pages-static-zipcode-delivery/</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description>日本郵便 KEN_ALL.csv を Cloudflare Pages 上の静的 JSON ファイル群として配信する設計の話。ファイル分割戦略、ETL、Worker/R2/KV を使わない理由まで。</description>
      <category>Cloudflare</category>
      <category>CDN</category>
      <category>ETL</category>
      <category>Go</category>
    </item>
    <item>
      <title>MCP サーバーを書いて Claude が日本の郵便番号を扱えるようにした</title>
      <link>https://jpzip.nadai.dev/blog/0003-mcp-server-japanese-postcode/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0003-mcp-server-japanese-postcode/</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description>stateless な MCP サーバーで Claude が日本の郵便番号を引けるようにした話。Tool 設計、キャッシュ寿命の分離、漢字/カナ/ローマ字の 3 言語横断検索。</description>
      <category>MCP</category>
      <category>Claude</category>
      <category>TypeScript</category>
      <category>AI</category>
    </item>
    <item>
      <title>Cloudflare Pages の無料枠だけで郵便番号データセット配信サービスを作った話</title>
      <link>https://jpzip.nadai.dev/blog/0001-cloudflare-pages-micro-saas/</link>
      <guid isPermaLink="true">https://jpzip.nadai.dev/blog/0001-cloudflare-pages-micro-saas/</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description>jpzip という個人プロジェクトの全体像と、なぜそれが「課金軸ゼロ」で成立しているのかを書きます。Cloudflare Pages の無料枠だけで 120,677 件の郵便番号データを配信する設計。</description>
      <category>Cloudflare</category>
      <category>OSS</category>
      <category>個人開発</category>
      <category>micro-SaaS</category>
    </item>
  </channel>
</rss>
