この記事はアイドルマスター Advent Calendar 2020 の23日目の記事です。
こんにちは、.ごっちです。
2020/12/05にアイマスハッカソン2020 ONLINE!というイベントがありました。
去年はスタッフ業をしていたんですが、今年は一般参加Pとして参加しました。
つくったもの
What3Idolsです。
(まだ本番サーバにデプロイしていません。)
使用した技術
- フロント: Nextjs + Bulma
- DB: SQLite3
実際に本番リリースするときはPostgreSQLにする見込みです。
プロダクトの概要
アイドルマスターシリーズに登場するアイドル(354人(本当は332人))の中から3人選択したらユニークな緯度経度が帰ってきてGoogleMapにピンが刺さるというやつです。
アイドルの名前は IM@Sparqlのクエリをたたいて抽出しました。
サービスの元ネタは What3Words になっています。
表示範囲は日本の東西南北のそれぞれの緯度経度で囲まれば部分になります。東西/南北に0.0107度ずつ区切るようにしているので、だいたい1km×1kmになっています。(What3Wordsは世界を3メートル四方の正方形に区切りにしています。)
このことから位置情報の数は7268130レコードあります。354人から3人選ぶ組み合わせの数は 354C3 = 7331104 通りあるのでデータ量としては十分です。
ただ下図を見てもらえればわかりますが、全体の8割以上が海です。したがって、せっかく3人のアイドルを選択したとしても、ほとんど海にピンがささるという結果になります。。
今後
本当は332人なので332C3 = 6044060通りなので正しいデータで作り直します。(Sparqlのクエリを間違えてました)
1km四方では位置情報のピンポイントな特定にはあまり使えないので、What3Wordsのように最大でも10m四方に収まるようなデータ情報にしたいと考えてます。
10m四方ためには当然332C3通りでは当然足りないので、332C5通りのデータを用意する必要がありそうです。(まだ計算していないので過剰なのか不足なのかわかりませんが。。)
緯度経度からアイドルの組み合わせが帰ってくるAPIを作りたいです。
332C3 = 6044060通り (332C5 = 32611330136(326億)通り)程度のレコードを保存できる/呼び出せる程度のサーバーを用意したい。。。。💸
参考
- What3Wordsについて: https://what3words.com/ja/about-us/
- 緯度経度の2点から距離を計算: https://s-giken.info/distance/distance.php
- IM@Sparql: https://sparql.crssnky.xyz/imas/
- ☆ピコピコプラネット☆ SPACE: https://space.pikopikopla.net/