戻る
Fudoki

このサイトについて

47 都道府県・1,747 市区町村・県庁所在地と、世界 250 の国と首都・6,355 都市を一覧で引き、4 択と記述のクイズで確かめる学習アプリ。

データの出典

ここにある地名・読み・県庁所在地は、すべて公開された出典から取っている。各一覧から出典に辿れる。

県庁所在地・地方区分・都道府県の英語表記は手入力で、各都道府県の公式サイトを参照して確認した。公式サイトへのリンクは各都道府県のページにある。

市区町村の英語表記は、公式のカナからヘボン式で生成している(長音記号は使わない。Tōkyō ではなく Tokyo)。出典側が拗音を大きい仮名で書いている数件と、母音の連続が長音ではない数件(松浦・勝浦)は、リポジトリに持っている一覧で補正している。

つくった理由

地理のクイズはたいてい「何問正解したか」は教えてくれるが、「何が残っているか」は教えてくれない。Fudoki は母集団——47 都道府県、1,747 市区町村、首都を持つすべての国——から始める。まず一覧として見せ、そのうちどれだけを埋めたかとして進み具合を返す。10 問中 7 問正解は忘れてしまうが、1,747 件のうち 122 件は次にどこへ行くかの地図になる。

つくり

Cloudflare Workers の上で Bun + Hono + hono/jsx、データセットは D1。ページは全行を SSR で出し、JavaScript は既にあるものを絞り込み・並べ替えるためだけに後から足す。だから一覧は JavaScript 無しでも読める。クイズとアカウント画面だけが React のアイランド。スタイルは Tailwind、検査は Biome と TypeScript と Vitest。

なぜこのつくりにしたか

クイズは DB にランダムな 1 行を要求しない。それをやると 1 問ごとに母集団を全件走査することになり、無料枠は 1 日あたりの読み取り行数で決まっている。代わりに出題プールを事前計算して密な連番を振ってあるので、母集団がどれだけ大きくても 1 問のコストは決まった数の主キー検索で済む。同じ理由で、クイズは URL に状態を持たせない。絞り込みをクエリ文字列にすると URL が組み合わせで増え続け、クローラーがそれを辿り続ける。