Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Heroes Map 秘伝のレシピ

AWS Heroes Map 秘伝のレシピ

MIERUNE 朝LT 発表資料

Yasunori Kirimoto

October 28, 2024
Tweet

More Decks by Yasunori Kirimoto

Other Decks in Technology

Transcript

  1. Yasunori Kirimoto AWS DevTools Hero MapLibre Voting Member OSGeo Charter

    Member Owner of dayjournal MapLibre User Group Japan Amplify Japan User Group Notion Sapporo dayjournal  dayjournal_nori Co-Founder and COO of MIERUNE
  2. ©Project PLATEAU / MLIT Japan さまざまなコメント • 公開してくれてありがとう! • これはとてもクールだ!こういうのが好き

    なんだ! • これは魔法なのか?なぜ私が住んでいる場 所を知っているんだ君は! • あなたは文字通り私を地図に入れた。 素 晴らしい仕事だ! • もっとヒーローが必要だ!どこの国も! • どんな技術を使っているんだ? • 地図のビジュアライゼーションは本当にイ ンタラクティブだ! AWS Heroes Mapとは
  3. ©Project PLATEAU / MLIT Japan さまざまなコメント • 262名だけ? 400名以上いると思っていた ◦

    公式サイトも人数は書かれていな い... • 私はすでに引っ越している ◦ 公式サイトが更新されていない... • 俺がいない! ◦ 同一地域は拡大すると見える • 拡大すると多くの人々が表示されるぞ! ◦ ぱっと見わかりづらい • 私が違う場所にいるようだ ◦ 住所情報が不十分で同一名称の他 地域に表示されているよ... AWS Heroes Mapとは
  4. ©Project PLATEAU / MLIT Japan 利用技術 • マップライブラリ ◦ MapLibre

    GL JS • 背景地図 ◦ Amazon Location Service ◦ Open Data Style • ホスティング ◦ AWS Amplify • ドメイン ◦ Cloudflare • データ前処理 ◦ Python • 秘伝のレシピ
  5. ©Project PLATEAU / MLIT Japan スクレイピング • Pythonで公式サイトをスクレイピングし CSVを作成 •

    候補の中からSeleniumを選択し実装したが すべてのデータが取れない... • ページング等でうまく取得できていなかっ た • Playwrightに切り替えて再実装 (Playwright はE2Eテストツールでも利用されている) • 一覧データをCSVに保存した ChatGPTで取得した一覧の例 秘伝のレシピ
  6. ©Project PLATEAU / MLIT Japan スクレイピング • 下記データを取得しCSV作成 • Hero

    Category ◦ AWS DEVTOOLS HERO • Hero Name ◦ Yasunori Kirimoto • Hero Since ◦ Hero since 2022 • Location ◦ "Sapporo, Japan" • Photo Link • Detail Link • 秘伝のレシピ
  7. ©Project PLATEAU / MLIT Japan ジオコーディング • PythonでデータのLocationから対象地域の 中心座標を求めてCSVに追記 •

    候補の中からGeoPyを選択し実装した • GeoPyはさまざまなジオコーディングAPI を利用できる • 今回は位置精度も市町村レベルまでで良い のでNominatim (OSM)を選択した • 経緯度データをCSVに追記した 秘伝のレシピ
  8. © 地理院地図 全国最新写真(シームレス) 通常: Sapporo, Japan アレ: Vancouver, Canada /

    Sydney, Australia これはイレギュラー対応だな... 😇 秘伝のレシピ
  9. ©Project PLATEAU / MLIT Japan 重複データ削除 • PythonでデータのHero Nameの重複を削 除しCSVを再作成

    • 候補の中からPandasを選択し実装した • AWSチームに重複データがあることを報 告し現在は公式サイトも修正済 • 重複データを削除しCSVを再作成した • 秘伝のレシピ
  10. ©Project PLATEAU / MLIT Japan 同一座標データの調整 • Pythonでデータのlatとlonが同一のものを ランダムに調整しCSVを再作成 •

    候補の中からNumPyとPandasを選択し実 装した • 同一座標データを調整しCSVを再作成した • 秘伝のレシピ
  11. ©Project PLATEAU / MLIT Japan GeoJSONに変換 • PythonでCSVデータをGeoJSONデータに 変換 •

    候補の中からPandasを選択し実装した • CSVデータからGeoJSONデータを作成し た • 秘伝のレシピ
  12. ©Project PLATEAU / MLIT Japan マップアプリケーション構築 • AWS Heroesの所在地と情報を可視化した マップアプリケーションを構築

    • maplibregljs-amazon-location-service-start erを利用し構築した • Amazon Location ServiceのOpen Data Styleを背景地図で利用した • AWS AmplifyでホスティングしCloudflare のドメインを利用し連携した • データ更新時はGeoJSONファイルの入れ 替えのみ 秘伝のレシピ
  13. © 地理院地図 全国最新写真(シームレス) 課題を一つずつ解決 • スクレイピング • ジオコーディング • 重複データ削除

    • 同一座標データの調整 • GeoJSONに変換 • マップアプリケーション構築 秘伝のレシピ