住所を入れると、その地点の災害リスク(地震・洪水・土砂・津波・高潮・液状化)を1ページにまとめて返す。そんなデータベース型サイトを、公的機関が無料で公開しているオープンデータAPIだけで作った。その実装を13章・約6万字の有料本にまとめた。
どんな本か
個人開発でツールサイトを運営していて、ずっと引っかかっていたのが「ツールは1機能=1ページで、ページが増えない」というSEOの構造的な天井だった。一方、1つのテンプレートに大量のデータを流して数万ページを自動生成するデータベース型サイトなら、その天井を外せる。
これを、一次データが公的機関から無料で取れて、合法に加工でき、検索需要が恒常的にあるテーマ——住所単位の災害リスク——で検証した記録が本書。裏側はこうなっている。
公的API(J-SHIS / 不動産情報ライブラリ / 地理院 / 国土数値情報 / e-Stat)
→ Python ETL で取得・正規化 → SQLite(単一ファイル)
→ Astro が SQLite を読んで数万ページを静的生成
→ Cloudflare Pages + R2 で配信(固定費は月140円)
コードはすべて、実際に動いているサイトの実装から抜き出したもの。机上のサンプルではなく、規約の解釈・欠損データ・タイルAPIの罠と戦いながら削られてきた実装で解説している。(本文中はサービス名・ドメインを伏せ、公的APIの叩き方と数万ページ化の技術に絞っている。)
見どころ ── 数万ページを月140円で回すための「3つの壁」
1. 公的データの「商用可否」という地雷
公的データは無料でも、データセット単位で商用可否が違う。使うつもりだった洪水ポリゴンが非商用で使えず、別のタイルAPIに組み替える——が何度も起きる。ETLで「商用OKのデータしか格納しない」制御を構造で持たせ、代替に差し替えやすくする設計を書いた。規約のクレジット文言(一字一句指定あり)をDBに持ってフッターを自動生成する話も。
2. Cloudflare Pagesの「2万ファイル制限」をR2で超える
Cloudflare Pagesは1サイト2万ファイルまで。数万ページを目指すと即座に頭を打つ。主力は静的配信のまま、それを超える分は404を _middleware.ts で受けてR2から配る二段構えで、月140円のまま制限を実質無効化する。live_areas ビューで「静的公開/R2公開」の違いをDBレベルで隠す設計も併せて解説した。
3. 「何をスコア化してよいか」というYMYLの線引き
災害リスクは人の命・資産に関わる領域。地震・洪水など6次元を1つのスコアに畳む集約設計(致命的な単一ハザードを埋没させない最弱リンク凸混合)を書く一方で、「住みやすさ」「将来性」「資産価値」はスコア化しない。客観値と主観の線を、テーブル構造とコードの届く範囲で機械的に強制する——ここを外すとサイトごと詰む。景表法・宅建業法・出典義務まわりの実務も1章割いた。
13章の全体像
| # | 章 | わかること |
|---|---|---|
| 1 | なぜ公的データでDB型SEOサイトを作るのか | 動機・全体像・免責(無料公開) |
| 2 | 月140円で数万ページを回すアーキテクチャ | Astro + Cloudflare全寄せ + SQLite + Python |
| 3 | 公的オープンデータの地図と規約の読み方 | 6ソースの商用可否・クレジット文言の実務 |
| 4 | J-SHIS Web APIで地震ハザードを取る | 申請不要・震度超過確率・AVS30から液状化を近似 |
| 5 | 不動産情報ライブラリAPIで水害・避難所・地価を取る | タイルAPI・浸水深ランク変換・避難所タイルの罠 |
| 6 | 地理院・国土数値情報・e-Stat を叩く | 住所検索・商用可否の自動仕分け・人口 |
| 7 | Python ETLの設計 | fetcher / normalizer / pipeline・Haversine |
| 8 | 6次元の災害リスクを1スコアに畳む | 最弱リンク凸混合・スコア化する/しない線引き |
| 9 | Astro × SQLiteで数万ページを静的生成する | 4階層ルート・重複対策・内部リンク自動化 |
| 10 | 2万ファイル制限をR2フォールバックで超える | 二系統ビルド・middleware・live_areasビュー |
| 11 | MapLibreで地理院タイルにハザードを重ねる | Astroアイランド・レイヤー切替・地図UI |
| 12 | 出典クレジットの自動生成と法務設計 | 出典自動生成・YMYL/景表法/宅建業法 |
| 13 | 止めずに回す運用と副業としての設計 | 月次バッチ・段階公開・振り返り |
第1章は無料で読める。 なぜ公的データのDB型SEOサイトを作ったか、全体像、そして本全体を貫く「何をスコア化してよいか」の線引き——骨格を凝縮した章なので、まず読んで合うか判断してほしい。
誰に向けた本か
- 個人開発でデータベース型のSEOサイトを作ってみたいエンジニア。 テンプレート1つ+データ件数でページが生える仕組みを、動くコードで示した
- 日本の公的オープンデータAPIの叩き方を、規約の解釈まで含めて知りたい人。 J-SHIS・不動産情報ライブラリ・地理院・国土数値情報・e-Statを、商用可否とクレジット文言まで
- Astro + Cloudflare Pages で数万ページ規模の静的サイトを無料枠で運用したい人
TypeScript / Python の基本文法と REST API の一般知識は前提とする。GISや防災の専門知識は前提としない。
まとめ
1,000円・13章・約6万字。公的オープンデータは、個人開発者にとって「合法で、無料で、競合が手を付けきれていない」希少な鉱脈だ。規約の監視コストさえ払えば、月140円で数万ページのサイトが回る。その最初の一歩の地図として使ってほしい。
同じ「個人開発で無料・公的データを使い倒す」路線で、株式分析システムを題材にした本も書いている。データ基盤の設計思想はこのサイトと地続き。
この記事は Zenn にも同じ内容を投稿しています。