見出し画像

地理院地図VectorとMapLibreで、推し駆動開発

この記事は、みす老人会 Advent Calendar 2023 11日目の記事です。

 ソフトウェア工学の分野では「○○駆動開発」という言葉をよく耳にします。テスト駆動開発、データ駆動開発、スキーマ駆動開発、締め切り駆動開発……。今回は「推し駆動開発」についてです。


第0章 モーニング娘。について

 愛をください—。2001年12月31日午後8時45分、モーニング娘。新メンバーの新垣里沙さんは歌った。同月にハイビジョン画質のBSデジタル放送がスタートしたが、秋田県某町にはまだやって来ていない。東北では大晦日に一年で一番豪華な食事をする風習があり、家族は壊れかけのブラウン管など気にせずに黙々とカニを食べている。
 しかし、カニの美味しさなど分からない7歳児は、スノーノイズの向こうの存在に、圧倒されていた。

第1章 モーニング娘。'23と、モスバーガーがコラボした

 あれから22年。絶対的な憧れ モーニング娘。も、あの頃に比べると世間への露出は減りました。沼があるなら溺れたい。そんな中、目に飛び込んできた1件の投稿。

 ヲタクは与えられた供給を全力で受け止めたい生き物。しかし、実施店舗は「どこかの店舗」らしい。よろしい、ならば、マップを作ろう。

第2章 JSONを抽出し、モスバーガー全店舗のリストを作った

 マップを作る上で必要になるデータは以下の通りです。

  • モスバーガーの全店舗名

  • 店舗住所もしくは緯度経度

    • 地図上にプロットするためには緯度経度の情報が必要ですが、住所さえ分かればGoogle Maps APIなどを用いることで緯度経度に変換できます(ジオコーディング)

  • 開店時刻

    • 今回のキャンペーンは「朝モス」限定のため、この情報は非常に重要でした

  • キャンペーンの実施有無

欲しかったデータを発見! でも……

 まず最初に「モスバーガー 店舗 リスト」で検索したところ、以下のダウンロード商品がヒットしました。

「モスバーガー国内店舗リスト」のCSVファイル
(税込44,000円)

 まさに欲しかったデータです。しかし高い。いくら社会人パワーを行使できるようになったとはいえ、この金額には躊躇してしまいます。しかし、サンプルデータを眺めていると気づいたことが2つあります。
 第一に、更新頻度がやたら高い。おおむね月一回程度のペースで更新されているようです。この手のデータは商圏分析に使われることが多そうですが、月に一回更新して採算が合うほど売れているとは思えません。
 第二に、備考カラムに「マンハッタンクラムチリは○月○日より発売」のようなタイムリーな情報が記載されている。商圏分析にこの手の情報は必要なさそうですが、労力を掛けてシートにまとめる意味があるのでしょうか。需要の割に、やたらと豪華なデータです。

 恐らくこのデータは、人間が手入力でまとめたものではありません。モスバーガーの公式サイトあたりから、スクレイピングなどの手法を用いて自動生成しているのでしょう。そこで、データ元のモスバーガー公式サイトを調べてみることにしました。

公式ホームページを解析する

 まず「店舗一覧」のページを開き、ブラウザの開発者ツールを立ち上げました。
 サイト管理者の立場になって考えてみると、全国1000店舗以上の情報を手作業で更新するのは相当骨が折れる作業です。省力化を図るなら、社内システム等から出力された店舗マスタをAPI的に取得して、クライアントサイドでレンダリングする構成が自然です。もしこの構成を採用していたら、店舗一覧を取得する通信が発生しているはずですが、果たしてどうでしょう。

開発者ツールで見つけた「shop.json」

 見つけました。想像していた通り、JavaScriptが店舗一覧をJSON形式で取得しています。中身を覗いてみると、北海道から沖縄まで全店舗のデータが揃っていました。これを使います。

日本では、店舗名や住所のような単純なデータは著作物にあたりません。
ただし著作権法上は問題がなくても、有料データベースの中身を公開すると不正競争防止法(営業秘密の侵害)に抵触する可能性があるほか、明示的にスクレイピングが禁止されているサイトでの同様の行為は、債務不履行(利用規約違反)や民法上の不法行為にあたります。

JSONをスプレッドシートに展開する

 ここまで来れば話が早いです。最近のExcelには、JSONをインポートする機能が搭載されています。

 できました。

モスバーガー公式サイトのJSONを、スプレッドシートに変換


第3章 ハロヲタの集合知を、Googleスプレッドシートで拾い上げた

 次に、ハロヲタの集合知を一箇所にまとめます。管理人が一人でデータ集約作業を行うのは非現実的ですから、大人数で同時編集できるGoogleスプレッドシートを採用しました。

 さきほど作成したExcelシートをGoogleスプレッドシートに貼り付け、Twitter上で協力を呼びかけたところ約42万インプレッションの反響がありました。百人力どころではありません。
 しかし協力者が増えるにつれて、問題も発生しました。



第4章 ハロヲタの集合知を、地理院地図VectorとLibreMapで可視化した

12/12中に加筆予定です。

第5章 推し駆動パイプラインの完成

12/12中に加筆予定です。

(MIS.W49代幹事長=emolga)

この記事が気に入ったらサポートをしてみませんか?