【Looker】Google mapを利用した位置情報の可視化

こんにちは、GMOあおぞらネット銀行でデータエンジニアをしているT.Kです。
分析基盤業務を中心に担当して暫く経つので、当社肩書にはありませんが自己紹介時には"データエンジニア"とさせて頂いている今日この頃です。

ChatGPT登場以降、人工知能ブームが続いていますが、当社分析基盤もやはりブームに乗る事で次のステージに上がれると感じています。

当社環境は比較的クローズドな環境ではありますが、Gemini様であれば導入可能と考えており、特にエンジニア外利用の多いLookerへの導入は大きなインパクトを出せるのではと期待しています。

…と、Gemini様の期待度は高いのですが、今回はAML機能の一機能として構築したATM利用状況の可視化に関して紹介させて頂こうと思います。

この機能は、"出来れば"レベルの要件でしたが、以前よりLooker×Google Mapの知見を得る機会を窺っていた為、検証を兼ねて開発を行ってみたところ、想定外に評判が良くAML業務以外の利用も検討されている機能となります。

取組みの背景

背景としては冒頭でも少し触れた通りですが、ATMの利用状況可視化を行う事でAML精度向上が期待できるのではと言う事が取組みの発端となります。

  • 業務要件 :当社提携ATM利用状況の可視化
  • 検証要件 :Looker×Google Mapを利用知見取得

目標設定

今回の取組みで、目的(やりたい事)は下記としました。

主目的
ATM利用状況をGoogle Mapを利用して可視化
副目的1
Google Map利用に関する知見を得る
副目的2
Looker + Google Mapの当社における可能性検討

準備・調査

Looker × Google Map利用方法

ビジュアライゼーションとしてGoogle Mapを選択する方法は認識していたので、利用に必要なデータに関して調査を行いました。

Lookerのドキュメントから、最低限緯度経度データがあればGoogle Mapへのプロットは可能であり、各ポインタに任意の文字を表示可能である事が確認出来ました。
文字項目は、ATMの設置先店舗名等を想定して要件整理を行いました。

緯度経度データの取得方法について

緯度経度データの取得方法に関しては、多くの選択肢があるかと思います。
当社分析基盤から利用する事が前提となる為、少し選択肢は限られる状況ではありましたが、選択肢の一つとなるgooglemapsのgeocodeの利用には問題は無かったので、こちらを利用することにしました。

1点、当時取得対象となるデータを全て取得するのに数十万円程度の費用が発生する概算となったのですが、当時はGoogle Cloud環境は月額数万円程で運用していたので、数ヵ月分のコストを掛ける価値があるかと言う事が少し課題となりました。
結論、初期から全データ取得する必要はないと言う事で、geocodeの月次無料枠の範囲内で取得を進める方針となりました。

下記、geocodeの費用となりますが、今回のブログに辺り再度確認したところ、無料枠に少し変更があったようです。
無料枠外の費用は変わっていないかなと思います。

作成当時(2022年頃)
月28,500回(?)まで無料
2025年2月3日時点
$200(※月40,000回)まで無料

緯度経度データを取得したい住所について

今回の取組みに必要となる緯度経度データはATM設置場所と顧客住所となります。
顧客住所は当社内で管理されていますが、ATM設置場所住所は今まで利用していない状況であった為、一部欠落データに関しては担当者に依頼して連携ATM管理会社より取得して頂きました。
ATMに関するデータは将来的な増減は想定されますが、一旦断面データで対応を進める事としました。

緯度経度データ収集処理

前述の方針通り、緯度経度データ収集は無料枠の範囲内で行いたい為、月次無料枠数から余裕をみて1日の取得件数は900件(※月27,000件)としました。
また、Cloud Run 関数の『対象住所取得~geocode API呼出~BigQueryへ登録』処理は爆速と言う訳ではない為、Cloud Run 関数の540秒制約を加味し、1回の実行件数を150件としました。

仕組みの構成としては下記イメージとなり、Cloud Schedulerで日中に6回実行するように設定しました。

事前準備

Google Cloudでgeocode API利用の為、geocode APIを有効化します。

Cloud Run 関数

geocode APIは、検索対象の住所が不明な場合、空レスを返す仕様なので、空レス時には緯度経度データをNULLで登録し、別途手動で検索&更新する事としました。
※ビル名や部屋番号などによって、住所が特定できないケースがあるようです。

当仕組み導入時は空レスが1日5件ほど発生していましたが、最近は発生率が激減しており、月に1件ほどとなっています。

Lookerを利用した可視化

可視化に関しては、下記2ケースを紹介させて頂きます。

  1. 特定住所をポインタ表示
  2. map layerを利用した領域表示

1. ポインタ表示

Google Map上にポインタ表示する為には、location型項目を利用します。
location型項目は、viewに緯度経度データを利用して作成を行います。

dimension: target_location {
	type: location
	description: "対象位置情報"
	sql_latitude: ${latitude} ;;
	sql_longitude: ${longitude} ;
}

あとは、ビジュアリゼーションで作成したlocation項目を選択し、Googleマップを選択選択する事で、下記のように表示されます。

Googleマップのビジュアリゼーションは、下記のような設定を行う事が可能です。
可視化に辺りATMとその他で別アイコン表示をイメージしていたのですが、この設定はうまくいきませんでした。
表示アイコンの切り分けは、UXの向上が期待できる手段だと思いますが、今回の目的からは少し外れる為、一旦ペンディングとしました。

Plot

表示方法を選択

ポイントやヒートマップ等
Map

ベース地図種類を選択

地図や写真等
Points

ポイント種類等を選択

点や範囲での表示選択、及びアイコンの切替

2. 領域表示

領域表示を行う為には、追加で表示対象とする領域データ(geojson)をLookerへアップロードする必要があります。
ポインタ表示よりも一手間必要となりますが、その価値はある表示方法となります。

領域表示は、下記のようにGoogle Mapの上にデータレイヤーを被せて表示するイメージとなります。

被せる領域データによって表示範囲を切り替える事が可能となります。
下記は、都道府県と東京都の領域データを展開した時のサンプルとなります。

領域イメージ

領域表示を行う手順は下記4 STEPとなります。

領域データ(geojson)は、さまざまな種類(領域)のものが、多くのサイトにアップされています。注意点としては、同じ領域を対象としていても精度によってファイルサイズが大きく異なる為、適した粒度のファイルを利用する必要があります。
国土地理院のデータなどは非常に精度が高いのですが、ファイルサイズも大きく、全国都道府県のデータでは650MB超となります。一方で、簡易的なものであれば3MB程度のモノもあります。

今回利用するLookerではアップロード可能ファイルのサイズが250MBと言う制限があるので、精度は適度なものを利用しています。
※Lookerでは、20MB程度のファイルサイズでも利用は出来ますが、Looker上で内容確認や変更が出来ないので注意が必要です。

領域データ(geojsonファイル)をLookerで利用する為の設定を行います。

領域データと表示対象データとの紐付け設定を行います。
この設定を行う事で、各領域に対して各種値が反映されて表示されます。

ダッシュボードに各領域に紐づくデータを表示します。

目的結果

主目的である『ATM利用状況をGoogle Mapを利用して可視化』に関しては、"ポインタ"表示でイメージした事を実現する事が出来ました。
利用方法に関しては基本的な知見から、領域表示まで視野を広げる事が出来ました。
領域表示は大きな効果が期待できる印象ですが、利用場所をよく考えないと無駄にrichが画面になってしまいそうなので、注意が必要と感じています。

また細かなところでは、Google Map上のアイコン表示の切り分けや特定ポイント間のみで線を引く、2点間の距離表示など、Google Map上で表現したい事は多くあるので、これらは継続して調査していたいと考えています。

まとめ

今回の取組みは、個人的に知見を得る機会を窺っていた機能と業務要件がマッチし、且つ成果物が実業務で評価を頂く事が出来、満足度の高い取り組みとなりました。
領域表示は一手間必要な表示方法ではありますが、"データの可視化"手段としては効果的な手段なので、適切なデータに対して用いる事で大きな価値を出せると感じました。
また、当社分析基盤は外部データを利用する事が難しい環境ではありますが、領域データのようなデータを利用する事で大きな付加価値を創出する事が出来る可能性がある事にも気づく事が出来ました。
昨年よりLookerを利用していますが、冒頭でも触れました通り、今年はLooker×Geminiの導入も行いたいと考えています。
日々刺激的な新技術やサービスが出てくる為、取り組みたい事も日々増えていく今日この頃ですが、今後も当社にとって有益と考える技術を中心に学んでいきたいと思います。

参考サイト

https://datumstudio.jp/blog/1216_looker_googlemap/#i-7:title


一緒にGMOあおぞらネット銀行で働いてくれる仲間を募集しています。
社内勉強会はもちろん、GMOグループの勉強会にも参加できます。ご興味のあるエンジニアの方は、当社採用ページをぜひ一度ご覧ください。

gmo-aozora.com