What3Idolsなるものを作った

2020年12月23日

この記事はアイドルマスター Advent Calendar 2020 の 23 日目の記事です。

アイドルマスター Advent Calendar 2020 - Adventar *アイドルマスターシリーズの Advent Calendar です アイマスに関係する内容であればなんでも大丈夫です 今年の Advent Calendar でも、アイマスですよ! アイマス! 過去のアイドルマスター Advent Calendar…*adventar.org

こんにちは、.ごっちです。

2020/12/05 にアイマスハッカソン 2020 ONLINE!というイベントがありました。

アイマスハッカソン 2020 ONLINE! (2020/12/05 10:00〜) *プロデューサーの皆さん、お疲れ様です。 今年もアイマスハッカソンやっていきましょう!! 今回はコロナの影響もあり初のオンラインハッカソンです!…*imas.connpass.com

去年はスタッフ業をしていたんですが、今年は一般参加 P として参加しました。

アイマスハッカソンでミリシタの UI を作ったお話 *この記事はアイドルマスター Advent Calendar 2019 の 8 日目の記事です。*medium.com

つくったもの

What3Idols です。

(まだ本番サーバにデプロイしていません。)

使用した技術

  • フロント: Nextjs + Bulma

  • DB: SQLite3

実際に本番リリースするときは PostgreSQL にする見込みです。

プロダクトの概要

アイドルマスターシリーズに登場するアイドル(354 人(本当は 332 人))の中から 3 人選択したらユニークな緯度経度が帰ってきて GoogleMap にピンが刺さるというやつです。 アイドルの名前は IM@Sparql のクエリをたたいて抽出しました。 im@sparql 広がるアイマスワールドをオープンデータ化 Web やアプリから SPARQL で検索・利用可能なエンドポイントsparql.crssnky.xyz アイドルマスターシリーズに登場するアイドルとスタッフ by yougoto - ☆ ピコピコプラネット ☆ SPACE *☆ ピコピコプラネット ☆ SPACE は、SPARQL クエリの共有サイトです。*space.pikopikopla.net

サービスの元ネタは What3Words になっています。 The simplest way to talk about location *Every 3 metre square of the world has been given a unique combination of three words. Used for e-commerce and delivery…*what3words.com

表示範囲は日本の東西南北のそれぞれの緯度経度で囲まれば部分になります。東西/南北に 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 億)通り)程度のレコードを保存できる/呼び出せる程度のサーバーを用意したい。。。。💸

参考

ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。