【マイレース開発記録(9)】47都道府県の緯度経度実装                       

マイレースは、入力項目に「出生地(都道府県)」があります。

  • 生年月日
  • 出生時間
  • 出生地(都道府県)
  • 眺めたい日(占いたい日)

このうち「出生地」は、最初は正直、入れるか迷いました。

理由はシンプルで、扱いが難しいからです。

  • 都道府県は“文字”でしかない
  • 天体計算や占星術の計算側では、最終的に 緯度経度 が必要になる
  • しかも47個ある
  • UI側の入力の手軽さも捨てたくない

「出生地を入力させたい」と「実装できる形にしたい」の間に、深い谷がありました。

ここで、私はいったん方針を決めました。

マイレースは医療でも測量でもありません。
求めたいのは、厳密な緯度経度そのものではなく、

“出生地を選べる”という体験を崩さず、
バックエンド側で破綻しない形に落とし込むこと

です。

つまり、最初から100点を狙わない。

  • まずは「都道府県 → 代表地点の緯度経度」を持つ
  • 後から差し替えられる設計にする
  • 入力UIは簡単にする(都道府県のプルダウン)

この決断で、前に進めるようになりました。

私は prefectures.py を切り出し、ここに辞書でデータを持たせました。

都道府県名をキーにして、県庁所在地(代表都市)の緯度経度を値にする。

例:

  • 東京都 → (35.6895, 139.6917)
  • 大阪府 → (34.6937, 135.5023)

この方式にした理由は、作業が一気に現実的になるからです。

  • 47個なら“人力でも”作れる
  • データが1ファイルにまとまる
  • 後でCSVやAPIに置き換えることも可能

「今はまず動く形を作る」
ここをAIと一緒に割り切れたのが、今回の大きな前進でした。

HTMLでは都道府県を <select> で選べるようにしました。

テンプレート(Jinja)で prefectures を回して選択肢を出す方式です。

これにより、

  • 入力ミス(誤字)が起きない
  • バリデーションが簡単になる
  • 画面が直感的になる

というメリットが一気に手に入ります。

発達特性がある自分にとって、
「自由入力を減らす」設計は、実はかなり重要です。

人は意志でミスをゼロにできないけれど、
仕組みで“ミスが起きにくい形”にはできます。

Flask側では、受け取った都道府県が辞書に存在するかを必ず確認しています。

「存在しない出生地」が入ってきたら、即エラーを返す。

これは地味ですが、後々効いてきます。

  • フロントの表示が崩れたとき
  • JavaScript側で空値が送られたとき
  • 将来、入力UIを変えたとき

こういう時に、APIが最後の砦になるからです。

この回で私が一番助けられたのは、
「緯度経度のデータをどう持つか」を考える場面でした。

私は、仕様が曖昧なままだと固まってしまう傾向があります。

  • もっと良い方法がある気がする
  • ちゃんとやらなきゃいけない気がする
  • でも決められない
  • 手が止まる

昔は、この状態が続くと焦って疲れ、
「自分は向いていない」と思ってしまいました。

でも今は、AIとの対話で、こう整理できました。

  • 今の段階で必要な精度は?
  • 代替案は?(CSV、外部API、住所入力…)
  • “後で差し替え可能”な設計にできる?
  • まずは動く形で進めても問題ない?

結果として、私は“最適解探しの沼”から抜けられました。

AIが代わりに実装してくれたというより、
止まりかけた思考を、前に戻してくれた感覚です。

次回は、マイレースの中でも「占いっぽさ」を支える部分です。

ゾーン(追い風/慎重/楽しさ/整える)ごとのメッセージを、
ランダムではなく “同じ条件なら同じ結果になる” ように固定する。

そのために導入したのが、seedとハッシュです。

次の記事では、

【マイレース開発記録(10)】seedによるメッセージ固定化
――「占いの一貫性」を作る――

で書いていきます。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です