Dockerを使ってHERE SKD for Pythonの環境を構築する
はじめに
本エントリーは、HERE Advent Calendar 2022の4日目の記事です。
今回はHERE Data SDK for Pythonの環境をDockerコンテナ上に構築する方法について書こうと思います。
HERE SDK for Pythonについて
HERE SDK for Pythonは、HERE Platform上のコンテンツにアクセスし、データの分析や視覚化を可能にするPythonのライブラリです。Jupyter NotebookやJupyter Lab上のウィジェットで地理空間データを可視化できるほか、Pandas (GeoPandas)を使ってデータ分析等が可能です。
詳しくは公式ドキュメント (開発者ガイド - HERE Data SDK for Python - HERE Developer) をご確認ください。英語版もあります。
HERE Platformやアカウント作成の手順については以下が参考になります。
環境
以下の環境で構築しています。LinuxやmacOSでも動作すると思いますが、試していません。
- Windows 11 Pro バージョン21H2 (OSビルド22000.795)
- Docker Desktop バージョン 4.15.0 (93002)
Micromambaについて
HERE SDK for Pythonの公式ドキュメントではCondaを使用してインストールする方法が掲載されていますが、今回はMicromambaのイメージをベースにして構築します。
MambaはC++で実装されたConda環境を管理するCLIツールです。MicromambaはMinicondaみたいなものです。並列でパッケージファイルをダウンロードするのでCondaに比べてパッケージのインストールがかなり速くなります。
Dockerfile等を作成
以下のようなディレクトリ構成でDockerfile等を配置します。
here-pysdk/ ├ Dockerfile ├ docker-compose.yml ├ env.yml └ credentials/ └ credentials.properties
- 今後拡張するかもしれないので、docker-compose.ymlを書いています。
- Docker-compose.yml内ではvolumeの設定を行っています。任意のホストのディレクトリとコンテナ上のディレクトリを紐づけてください。: の左側にホストマシンの任意のディレクトリを、右側にコンテナ上のディレクトリを指定します。
volumes: \\wsl$$\Ubuntu\home\user_xxx\data_in_host:/home/mambauser/data_in_container
- コンテナ上のディレクトリは、data_in_containerの部分は任意のものに変更可能ですが、Dockerfile内で設定しているWORKDIRと同じディレクトリ名にしてください。
- Dockerfile内ではmatplotlib等でグラフを作成する際に日本語が文字化けしないように日本語環境の設定も行っています。
- env.ymlには必要なPythonのライブラリを記載します。HERE SDK for Pythonのライブラリもここに記載しておきます。
- credentials.propertiesは後述するHERE Platfromの認証情報を記載したファイルです。このファイルをコンテナ内のディレクトリに配置する必要があるので、コンテナ作成時にコンテナ内にコピーします。
詳細はGitHubからご確認ください。 github.com
HERE PlatformのCredential fileについて
HERE SDK for Pythonを利用するにはHERE Platformの認証情報が記載されているCredential fileをコンテナ上のディレクトリに配置する必要があります。公式ドキュメントにも記載がありますが、ここではスクリーンショット付きで説明します。
Credential fileは以下の手順でHERE Platformからダウンロードできます。
- HERE Platform Applications and Keysにアクセス
- [新しいアプリを登録]をクリック \
- [OAuth 2.0]をクリックし、[資格情報を作成]をクリック
- 認証情報が作成されるので、[ダウンロード]をクリックし上述のcredentialsディレクトリ内に保存
起動
docker-compose up
で起動します。Jupyter Labが起動するので、ターミナルに表示されたURLをブラウザにコピペするなどしてアクセスしてください。
サンプルコード等
HERE SDK for Pythonのサンプルコードも公開されています。
開発者ガイド - HERE Data SDK for Python - HERE Developer
以下のようにウィジェット上で地図を表示することもできるようになっています。
mapplotlibを使う際などの日本語表示もできるようになっています。
その他注意点等
Dockerfile等は適当に改変していただいて構いません。GitHubに上げる際は.gitignoreにcredentials/を追加して認証情報を共有しないようにしましょう。