Shikuty - 市区町村パズル

Game

Game

読み込み中...

Screenshots

Shikuty - 市区町村パズル - 1

About

Shikuty - 市区町村パズル

日本の市区町村や都道府県のピースを、ドラッグ&ドロップで地図の正しい位置に置いていくパズルゲームです。

主な機能

  • 3つのモード: 全国(47都道府県)・地方(8地方から選んで市区町村を配置、95〜355ピース)・県内(都道府県を選んで配置、10〜194ピース)
  • 3段階の難易度: かんたん・ふつう・むずかしいで、ピースが吸い付く距離・お手本の表示・境界線の太さが変わります。かんたんでは、ピースの初期配置が地理的な位置を参考にしたものになり、時間がたつと段階的にヒントが点滅します
  • 選び方: 地図をクリックして選ぶか、名前の一覧から選ぶかを切り替えられます
  • 遊びやすさ: 市区町村名とよみがなのツールチップ(政令市は「京都市北区」の形)、完成形のプレビュー、0.5〜8倍のズーム、PC・タブレット・スマホへの対応

仕組み

  • 地図データ: 国土数値情報の行政区域(2024年版)を Python のスクリプトで整え、124,133 の図形を 1,905 の市区町村にまとめています。mapshaper で形を約88%軽くしてから TopoJSON に変換し、全市区町村で 720KB(gzip で 156KB)に収めています
  • よみがな: 政令市20市・169区のよみがなを別に付けています
  • API: Ruby on Rails 7.2(API モード)と PostGIS で、都道府県と市区町村のデータを返します
  • 描画: D3.js と TopoJSON で地図を描き、ピースを置くと名前のラベルを境界の内側に収めて表示します

技術構成

  • Vite・TypeScript・D3.js v7・topojson-client
  • Ruby on Rails 7.2・PostGIS
  • Python・mapshaper・Node.js(データの前処理)
  • Docker・GHCR・nginx-proxy・Let's Encrypt