0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「公的オープンデータで作るDB型SEOサイト」— J-SHIS・不動産情報ライブラリAPIで数万ページを月140円で量産する本を書いた

0
Posted at

住所を入れると、その地点の災害リスク(地震・洪水・土砂・津波・高潮・液状化)を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 にも同じ内容を投稿しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?