動作が重く共有しづらい「Excel」分析はもう卒業 データ視覚化に役立つ5つのOSSを紹介:視覚化のイメージやサンプルプログラム付き
先が見通せないビジネス環境で、最新かつ信頼できるデータから洞察を得る重要性はさらに高まっていますが、表計算ソフトウェアは大容量かつ最新のデータを分析するのに不向きです。そこでデータの視覚化に役立つ5つのOSSをまとめて紹介します。
現代においてデータはあふれかえっています。業務においてデータを扱うことは避けられないはずです。ビジネス部門は企業経営に関わるお金に関するさまざまなデータを扱いますし、ITエンジニアならシステムに関わるさまざまなデータを扱うことになるでしょう。
これらのデータを分析したり、誰かに説明したりしたいと考えたら、生のデータをそのまま扱うことはまれなはずです。少なくとも、不要なデータを削除したり集計したりしてデータを意味のあるまとまりとして扱うはずです。
ただ、このようにデータを意味のあるまとまりにしただけでは、情報から意味や重要性を見いだすことは容易ではありません。そこで「データの視覚化」が常々行われています。
データを視覚化することで理解が容易になることは一目瞭然です。
表計算ソフトウェアがデータの視覚化に不向きな3つの理由
データを見せるときは表計算ソフトウェアにデータを読み込ませ、グラフを作ることが多いでしょう。ただし、表計算ソフトウェアは視覚化ツールとして最適なものとはいえず、以下のような欠点を抱えています。
- 大容量のデータを扱いづらい:視覚化するに当たって数値を必ず表として表示する必要があり、大容量データを扱うと動作が不安定になりがち
- データの形式をそろえる必要がある:全て表計算ソフトウェアが認識できるCSVなどのデータの形式に変換して扱う必要があり、さまざまな種類のファイル形式やデータベース上のデータを扱うことができない
- リアルタイムにデータを扱うのに向いていない:表計算ソフトウェアを起動し、表形式にしなければ視覚化できない性質上、視覚化するまでにタイムラグが発生してしまう
これらの欠点を解消するために、近年では表計算ソフトウェア以外の選択肢が用意されています。代表的な例が有料版のビジネスインテリジェンスツール(BIツール)です。有料のためサポートも充実していますし、業務に応じてカスタマイズすることも可能です。ただし、導入、運用コストがかかるということ、軽く視覚化をしたいときには多機能過ぎるかもしれません。
表計算ソフトウェアでの問題を解消しつつ、コスト面での問題を解決しているのがオープンソースソフトウェア(OSS)による視覚化です。OSSは無料版BIツールとも言えますが、オープンソースであるという最大の特徴があります。
本記事ではデータの視覚化に役立つOSSを利用したことがない人向けにどのような視覚化ツールが存在しているのか解説していきます。
コラム:OSSをおさらい
OSSとは利用者の目的を問わず自由にソースコードを閲覧、使用、変更、再配布できるソフトウェアのことです(ソフトウェアごとに決められたライセンスを守る必要があります)。オプションを付けない限りは基本無料で、ソースコードも公開されているため透明性が高く、中身を理解することで技術力向上にも寄与します。一方で、有償サポートがあるOSSは少なく、基本的に問題発生時は自身で解決させる必要があります。OSSの開発者に問い合わせをしても返答が得られない可能性もあります。またセキュリティや脆弱(ぜいじゃく)性対応も確約されているものではないこと、開発が突如終了するなどの懸念もあります。OSSは「自由に使っていいけど自己責任」と考えましょう。
データの視覚化に役立つ5つのOSS 用途別に紹介
データの視覚化に役立つOSSは複数あります。本記事では3種類の用途でオススメできるOSSの紹介と導入手順を解説していきます。
- 汎用(はんよう)的に使えるもの:さまざまなグラフを描画させるのが得意
- ログを視覚化するのに向いているもの:ログの形式で出力されたデータを視覚化するのが得意
- 地図を使って視覚化するもの:緯度経度の情報を使って、地図上にデータを表示するのが得意
導入手順に沿ってサンプルデータを表示させると導入、活用イメージがよりつかめるはずです。
多種多様なデータソースに対応 汎用的に利用できる「Grafana」
「Grafana」は、データベース、ログ、クラウド監視サービスなどのデータソースに登録されたデータを視覚化するダッシュボードを作成できるUIを提供するOSSです。特徴としては、対応しているデータソースの種類やプラグインの豊富さ、アラート通知機能があるため、視覚化用途以外に監視用途としても使うことができる点などが挙げられます。中でも、対応データソースはニッチなところもカバーしており、とがった用途にも使える力を備えています。導入可能なプラグインの種類も豊富で、パネルを拡張するプラグインなどが公開されています(一部、有償版用のものもあります)。UIは日本語化には対応していません。
ツール名 | Grafana |
---|---|
視覚化の対象 | 棒グラフ、折れ線グラフ、統計表示、テーブル、ヒートマップ、リスト、時系列グラフ(β版)、有向グラフ(β版)など(プラグインあり) |
ツールの提供方法 | パッケージ |
データソース | 時系列データベース(Prometheus、Graphite、OpenTSDB、InfluxDB) ログ(Loki、Elasticsearch) 分散トレーシング(Jaeger、Zipkin、Tempo) データベース(MySQL、PostgreSQL、SQL Server) クラウド監視(Google Cloud Monitoring、CloudWatch、Azure Monitor、Grafana Cloud) エンタープライズプラグイン(Oracle、ServiceNow、Splunk、MongoDB、Datadogなど) |
データの取り込み方法 | データベースの追加 |
動作環境 | Debian / Ubuntu(APT、バイナリ《.tar.gz》)CentOS / Fedora / OpenSuse / Red Hat(YUM、RPM、バイナリ《.tar.gz》) Mac(Homebrew、バイナリ《.tar.gz》) Windows(インストーラ、バイナリ《.zip》) Dockerコンテナ Kubernetes |
サポート | 無償版: 公式サイトまたはメールからの問い合わせ Grafana Cloudユーザー: チケット起案(要ログイン) |
ライセンスの種類 | Apache 2.0 License |
公式サイト | https://grafana.com/ |
記事執筆時の使用バージョン | v7.4.3 |
視覚化の流れは以下のようになります。
- 環境の構築、初期セットアップ
- データソースの設定
- パネル、ダッシュボードの作成
「1. 環境の構築、初期セットアップ」については、公式ドキュメントに沿って容易に環境構築できますが、初回アクセス時のセットアップガイドのようなものはありませんので、設定画面から必要に応じてパスワード変更やその他の設定変更をすることになります。
「2. データソースの設定」は、視覚化したいデータが保存されているデータベースの接続情報などを設定してGrafanaから取り扱うことができるようにするものです。Grafanaで視覚化に取り組んでみたい人は「TestData DB」というサンプルデータソースを使って試すことができます。ただ、サンプルデータソースでは組み込み済みクエリの結果を視覚化することしかできないため、本記事では自前の時系列データベース(InfluxDB)をデータソースとして使用します。対応しているデータソースの最新情報は、公式サイトをご確認ください。
Grafanaでデータ視覚化してみよう
Grafanaではダッシュボードを作成して、その中にパネル(個別のグラフなど)を追加、配置することでデータを視覚化します。データベースをデータソースの対象にする場合、各パネル作成時にUIを操作してクエリを作成し、使用するデータを取得し視覚化するという流れになります。またダッシュボード内で複数の種類のデータソースを参照元としたパネルを配置することもできます。今回は、時系列データベースであるInfluxDBをデータソースとして視覚化する例を紹介します。
視覚化する対象のデータがデータソース上に存在している必要があるので、InfluxDB上に以下のような乱数生成した時系列データ(時間の変化を軸にしたデータ)を準備しました。time列が時刻を表しています。
データソースが準備できたらダッシュボードを作成し、そこにパネルを追加していきます。パネルの作成では、以下の図表のようにデータソースから視覚化する対象のデータを選択するクエリを作成します。直接SQLを記述するようなものではないですが、クエリを組み立てるのでデータベース操作に関する知識が必要になります。
上記図表の赤枠部分のクエリAでは、sample_dataというテーブル(InfluxDBでいうとMeasurement)からdata1列の20秒間隔の平均値をcategory列の値で絞って取得しています。
これは実際のクエリとしては以下のようなものであり、それをUI操作で組み立てるイメージとなります。テーブル(Measurement)名や列名は選択できるようになっているので簡単に組み立てられます。
SELECT MEAN(data1) FROM sample_data WHERE category='sample1' GROUP BY time(20s)
また、上の図表の中央上部で「Last 6 hours」と表示されている部分を選択すると表示する時間範囲を変更することができます。視覚化の方法(グラフの種類)もワンクリックで設定可能です(上記図表右側)。
同様にこういったパネルを追加していくと以下のようなダッシュボードを作成することができます。パネルのサイズや位置などはドラッグ&ドロップで調整できます。
このように、Grafanaではデータベースの操作に関する知識が多少必要になる場合もありますが、その点がクリアであれば簡単なUI操作でデータの視覚化を実現できます。また、幅広い種類のデータソースに対して視覚化を行うことができます。
Grafanaの強みは以下の2点が挙げられます。
- データベース操作に関する多少の知識が必要になる場合もあるが、簡単なUI操作でデータの視覚化を実現できる
- 幅広い種類のデータソースを視覚化できる。プラグインが数多く公開されている
対応データソースの種類が豊富なためInfluxDB以外にもさまざまなデータの視覚化ができるはずです。簡単な操作でさまざまな種類のデータソースの視覚化をしたい! といった方は使ってみるとよいでしょう。
直感的で分かりやすいUIを提供 日本語に対応する「Metabase」
「Metabase」は、データソース(データベース)に登録されたデータを視覚化するダッシュボードを作成できる UIを提供するOSSです。特徴としては、直感的で分かりやすいUIであること、環境セットアップが容易であること、2015年にプロジェクト公開された比較的新しいプロジェクトで2021年現在も開発コミュニティーが活発であること(当記事執筆時点でまだメジャーバージョンが1.0に達していない)などが挙げられます。中でもUIの操作感の良さは他のツールと比較しても特筆できる点で、視覚化ツールを初めて使う方などにもオススメできるものとなっています。また、UIは日本語にも対応しています。
ツール名 | Metabase |
---|---|
視覚化の対象 | 棒グラフ、折れ線グラフ、円グラフ、散布図、ピボットテーブル、ゲージ、統計表示、地図など |
ツールの提供方法 | パッケージ |
データソース | データベース(Amazon Redshift、BigQuery、Druid、H2、Google Analytics、MongoDB、MySQL、PostgreSQL、Presto、Snowfrake、Spark SQL、SQL Server、SQLite) |
データの取り込み方法 | データベースの追加 |
動作環境 | JARインストール(Java環境)Dockerコンテナ Macアプリケーション |
サポート | 無償版: 公式フォーラムでの質問など 有償版: メール問い合わせ、優先サポート |
ライセンスの種類 | AGPL |
公式サイト | https://www.metabase.com/ |
記事執筆時の使用バージョン | v0.38.1 |
Metabaseでの視覚化の流れとしては、以下のようになります。
- 環境の構築、初期セットアップ
- データソースの設定
- パネル、ダッシュボードの作成
「1. 環境の構築、初期セットアップ」については、公式ドキュメントに沿って容易に環境構築できますし、初期セットアップもアクセス時に表示されるガイドに沿って進める形で、手順としてそれほど困ることもないでしょう。
「2. データソースの設定」は、視覚化したいデータが保存されているデータベースへの接続情報などを設定してMetabaseから取り扱うことができるようにするものです。こちらもサンプルデータが用意されているので、使って試してみることができます(本記事でもサンプルデータを活用します)。対応しているデータベースの最新情報は、公式サイトをご確認ください。
Metabaseでデータ視覚化してみよう
Metabaseでは、パネル(Metabaseでは「質問」と呼ばれます)を集約して表示するダッシュボードによりデータを視覚化します。パネルはダッシュボードの構成要素で「過去5カ月間の商品Aの売上額」といった形でデータの視覚化をグラフなどで実現します。
パネルの作成方法は大きく2通りあり、一つはUIで操作する方法、もう一つはデータベースに対するクエリを画面上で書く方法があります。後者は、SQLなどデータベース操作の知識が必要ですが、クエリの入力補完機能が備わっていたり、テーブル構造や視覚化結果も並べたりして記述できるため扱いやすい印象です。本稿では、SQLなどの知識がなくても実施可能な前者の方法での視覚化の例を記載します。
MetabaseのサンプルデータベースにはProductsという製品に関するテーブルがあります。製品にはそれぞれカテゴリーが登録されています。今回は簡単な例として「カテゴリーごとの製品の割合」を視覚化してみます。
この程度なら、数クリックで視覚化できます。「簡単な質問」という機能で、データソースおよび参照するテーブルを選択するとそのテーブルの内容が表示されます。今回見たいのは製品カテゴリーに関する情報なので、Category列の「分布」を表示すればまずグラフを表示することができます。後は、グラフの種類をどうするかといった視覚化の設定を行い、パネルとして保存しておきます。今回は円グラフで視覚化してみました。グラフの種類はワンクリックで変更可能です(下記図表の左側)。
このようなパネルを作成していくと、それらをまとめて表示したいといった気持ちが湧いてくると思います。それを実現するのがダッシュボードです。同じように幾つかパネルを作成し、それらをまとめたダッシュボードを作成してみました。
このように、Metabaseでは簡単なUI操作でデータの視覚化を実現できます。強みとしては以下のようなことが大きいといえるでしょう。
- UIの操作感が良く、SQLなどの知識がなくても直感的なUI操作でデータを視覚化できる
- 環境構築や初期セットアップが容易にできる
今回ご紹介したのはごく簡単な例ですが、UI操作だけでもテーブル結合やカスタム列(列同士の計算で算出する加工データ列)の作成などの操作も可能です。さまざまな視覚化ができるはずなので、簡単な操作できれいなダッシュボードを作りたい! という人は使ってみるとよいでしょう。
Pythonでデータを視覚化できる「Matplotlib」
「Matplotlib」は、データの視覚化機能を提供するPythonのOSSライブラリです。GrafanaやMetabaseのようなUIは提供しておらず、プログラムを自身で記述することで視覚化が可能になります。とはいえ、そこまで難しいことをするわけでなく簡単な記述で済みます。また対応しているグラフの種類も豊富で、多種多様なグラフを出力できます。
ツール名 | Matplotlib |
---|---|
視覚化の対象 | 棒グラフ、折れ線グラフ、円グラフ、散布図、箱ひげ図、ヒストグラム、スペクトログラムなど。拡張ツール(mpl_toolkits)を使うことで3次元グラフなども対応可 |
ツールの提供方法 | ライブラリ(Python) |
データソース | データベース、CSVファイルなど |
データの取り込み方法 | データベースからのデータ取得やCSVファイル読み込みなど(プログラム内で行う) |
動作環境 | 公式リリースは PyPI より取得(Windows、Mac、 Linux 対応、要Python、pip) Anaconda環境 |
サポート | コミュニティーでの質問など |
ライセンスの種類 | Matplotlib license(Python Software Foundation licenseベース) |
公式サイト | https://matplotlib.org/ |
記事執筆時の使用バージョン | 3.1.3 |
視覚化の流れとしては、以下の流れのようになります。
- Python、pip、Matplotlibのインストール
- プログラミング
- 視覚化の結果を出力
「1. Python、pip、Matplotlibのインストール」については、Anaconda環境であればMatplotlibをpipでインストールすることで利用できます。そうでない場合、Pythonやpipもインストールが必要です。
以降では、「2. プログラミング」から「3.視覚化の結果出力」について例を示しながら視覚化の例を紹介していきます。
Matplotlibによる視覚化
前述した通り、Matplotlibを利用する視覚化ではPythonでのプログラミングが必要となります。今回は、データソースとしてデータ入りCSVファイルを用意し、それをプログラムで読み込ませてグラフを出力します。CSVファイルは以下のような内容のものを用意しました。
明細ID,製品名,売上高,カテゴリー,年度 1,A,41387,書籍,2002 2,B,19637,文具,2002 …(以下略)
製品名Aの年度ごとの売上高を折れ線グラフとして出力してみましょう。本記事ではプログラムの内容については解説しませんが、例として以下のような記述を行いました(データの読み込み、加工ではpandasというライブラリを使用しています)。
import argparse import pandas as pd from matplotlib import pyplot as plt # 実行時に引数として与えられたファイルパスのデータを取り扱う parser = argparse.ArgumentParser() parser.add_argument('path', help='読み込むデータのファイルパス') args = parser.parse_args() file_path = args.path # ファイルを読み込む。usecolsで使用する列を指定し、製品名がAのデータだけ抽出する df = pd.read_csv(file_path, usecols=['製品名', '売上高', '年度']) df = df[df["製品名"] == "A"] # 図を1つ用意し、その中に描画させる plt.figure(figsize=(10, 6)) # データを折れ線グラフで描画する plt.plot(df['年度'], df['売上高'], label = "A") # 凡例、ラベル、タイトルを設定 plt.legend() plt.xlabel("year") plt.ylabel("sales") plt.title('Annual sales of A') # グラフを出力する plt.show()
上記プログラムを実行した結果、以下のようなグラフを出力できました。結果は画像ファイルなどで保存することも可能です。
今回はMatplotlibのpyplot.plot関数を用いて折れ線グラフを出力していますが、これ以外にもさまざまな種類のグラフを出力する関数が用意されているので、目的に合った関数を使用して記述するイメージです。
またファイルから取得したデータでなくても、データベースから直接的に取得したデータをデータソースとして使用するといった記述も可能です。
Matplotlibを用いた視覚化では、上記のようにプログラムを記述する必要はありますが、多少分かる方であればお手軽にデータの視覚化をする手段の一つになると思います。
強みとしては以下のようなことが大きいといえるでしょう。
- 簡単なプログラミングでお手軽にデータを視覚化できる
- 多様なグラフに対応できる
ピンポイントでこういうグラフを出したい! というときに、ちょっとしたプログラムを書いて手軽に視覚化をするといった使い方ができると思います。
さまざまなログデータを視覚化できる「Kibana」
「Kibana」は「Elastic Stack」というElastic社が提供するツール群の一つであり、Elastic Searchに格納されているデータを分析し、さまざまな形式で可視化できるツールです。特徴としては、データソースをElastic Searchに絞っているため、Elastic Searchに最適化されたUI、DSLとElastic Searchのデータのリアルタイム監視機能を標準機能として利用できることが挙げられます。またOSS版は日本語に対応していません。
ツール名 | Kibana |
---|---|
視覚化の対象 | 棒グラフ、折れ線グラフ、円グラフ、テーブル、ヒートマップ、時系列データ、位置情報など(OSSのプラグイン多数あり) |
ツールの提供方法 | パッケージ |
データソース | Logstash/Beatsなどにより収集されElasticsearchに格納されたログ |
データの取り込み方法 | Elastic Searchへのデータ格納 |
動作環境 | Debian / Ubuntu(APT、バイナリ《.tar.gz》) CentOS / Red Hat(YUM、RPM、バイナリ《.tar.gz》) Mac(Homebrew、バイナリ《.tar.gz》) Windows(インストーラ、バイナリ《.zip》) Docker コンテナ |
サポート | OSS版、無償版: コミュニティー(discuss.elastic.coなど)での質問 有償サブスクリプション購読者:https://support.elastic.co/からチケット起票 |
ライセンスの種類 | デュアルライセンス: SSPL 1.0(GPLv3ベース)or Elastic License |
公式サイト | https://www.elastic.co/jp/kibana |
記事執筆時の使用バージョン | ver. 7.11.2 |
視覚化の流れは以下のようになります。
- 環境の構築、初期セットアップ
- Elastic Searchへのデータの格納
- Elastic Searchに格納されたデータを基にパネル(データを可視化したもの)を作成
- ダッシュボードの作成
「1. 環境の構築、初期セットアップ」については、公式ドキュメントに沿って実施してください。ツールのバージョンごとに環境や他のツールとの相性がまとめてある記事がありますので構築の際にはご参照ください。なお、Elastic SearchはJVM上で動作するので事前にJavaのインストールが必要です。
「2. Elastic Searchへのデータの格納」は、「Elastic Stack」内のツールBeats、Logstashを通してリアルタイムに取得および格納することが多い印象です。
Kibanaによる視覚化
Kibanaでは、グラフィカルにパネルを配置していきダッシュボードを作成します。各パネルは、Visualize(汎用的なグラフによる可視化)、マップ(位置情報データ可視化)、Discovery(複雑な条件で絞り込んだログの表示)の各機能でオリジナルのものを簡単に作成できます。
試しにログに含まれているHTTPレスポンスのステータスコードに着目し、200以外となっているものをピックアップしてみます。Discoveryでは、200以外のHTTPレスポンスのログのみ表示するパネル(図表左下)を作成し、Visualizationでは、200以外のHTTPレスポンスのログがいつ発生したか可視化するパネル(図表左上)を作成しました。
またマップでは200以外のHTTPレスポンスを返す原因となったリクエストがどこから送信されたか可視化するパネル(図表右上)を作成しました。作成したパネルをGUIで配置すればダッシュボードの完成です。
Kibanaを使えば、Elastic Searchに格納されたデータを基にした可視化を容易に実現できます。
Elastic Searchに保存されたデータの分析、可視化に特化したツールなのでElastic Searchを導入する際には、データの分析可視化のために合わせて導入すると良いでしょう。また、ダッシュボードの見栄えにこだわりたい方向けに、よりデザインにこだわったダッシュボードを作成できるCanvasという機能もあります。興味のある人はぜひ試してみてください。
地図データを扱うJavaScriptライブラリ「Leaflet」
「Leaflet」は、地図データを扱うためのJavaScript ライブラリで、地図の拡大縮小、指定座標へ移動するなど地図操作の機能や、地図上に図形、メッセージ、画像を表示する機能など、さまざまな地図アプリとしての機能を備えています。
ここで注意ですが、Leaflet自体は地図データを持ちませんので、何らかの地図データと組み合わせて使用する必要があります。今回は、地図としてOpenStreetMapというオープンデータを使用します。
ツール名 | Leaflet |
---|---|
視覚化の対象 | 地図データ |
ツールの提供方法 | JavaScriptライブラリ |
データソース | JavaScript内で指定する座標を含むデータ |
データの取り込み方法 | JavaScript内で座標を含むデータを読み込む |
動作環境 | 何らかのWebサーバにJavaScript実行環境を作成し、何らかのWebブラウザで閲覧 |
サポート | 公式ページからメールなどで問い合わせ |
ライセンスの種類 | 二条項BSDライセンス |
公式サイト | https://leafletjs.com/ |
記事執筆時の使用バージョン | v1.7.1 |
ツール名 | OpenStreetMap |
---|---|
視覚化の対象 | 地図データ |
ライセンスの種類 | Open Data Commons Open Database License |
公式サイト | https://www.openstreetmap.org |
記事執筆時の使用バージョン | - |
Leafletによる視覚化の流れは次のようになります。
- Webサーバの準備
- HTML/JavaScriptで地図表示のコードを記述
- Webブラウザで表示
今回はPythonでWebサーバを起動し、Leafletのソースコードを配置してみます。Pythonを使用すれば、以下のような簡単なコードでWebサーバの準備が可能です(※Python 3の実行環境を用意する必要があります)。
import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler httpd = socketserver.TCPServer(("", PORT), Handler) httpd.serve_forever()
$ python3 httpserver.py
動作確認のため、http://localhost:8000/をブラウザで起動してください。httpserver.pyを含むディレクトリ構造が表示されれば準備完了です。
Leafletのソースコード準備
今回はOpenStreetMapを使って東京駅付近の地図を表示してみます。以下のleaflet.htmlをhttpserver.pyと同じディレクトリに配置します。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Leaflet</title> <!-- leaflet.css、leaflet.jsの読み込み --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> </head> <body class=""> <div id="mapid" style="height: 500px;"></div> <script> <!-- 初期座標(東京駅)の指定と、OpenStreetMapを地図に指定する。コピーライト必須 --> var mymap = L.map('mapid').setView([35.6809591,139.7673068], 13); var tileLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors', }); tileLayer.addTo(mymap); </script> </body> </html>
ソースコードを補足すると「leaflet.css」と「leaflet.js」を読み込み、L.mapで初期座標を指定、L.tileLayerでOpenStreetMapを指定しています。最低限これらのコードを書く必要があるので、詳しくはLeaflet公式のクイックスタートガイドを参照してください。
Leafletによるデータ視覚化
http://localhost:8000/leaflet.htmlにブラウザでアクセスしてください。東京駅付近の地図が表示されるはずです。一般的なWebブラウザで見ることができる地図アプリのように、自由に操作できることが確認できます。
さて、地図アプリで表現したいことはそれぞれ異なるでしょう。例えば東京駅にマーカーを表示したければ、以下のように座標を指定してマーカーを追加するだけです。
L.marker([35.6809591,139.7673068]).addTo(mymap);
このようにWebアプリとして作り込むことができるため、さまざまな視覚化が実現できます。
- 訪れた観光地に、そこで撮った写真のサムネイルを表示する
- タッチすることでコメントを書き込める機能を追加し、吹き出しでログを残す
- 毎秒GPSトラッカーの座標を取得し、サークルで位置を可視化する
またJavaScriptで実装するため、React.jsなどのJavaScriptライブラリで記述することも可能です。
Leafletは数少ない地図表示のためのJavaScriptライブラリです。使い方も直感的で特に迷うこともないはずです。コストをかけずに地図アプリを作りたい人にオススメです。
最後に
ここまでデータの視覚化に役立つ5つのOSSを解説しました。対応しているデータソースや視覚化の方法(UI/ライブラリ、出力可能なグラフの種類など)はOSSごとに違うため「どのようなデータをどのように視覚化したいか」という目的を整理し、最適なOSSやツールを選択、検討することが重要です。
世の中には本記事で解説したOSS以外にもたくさんのOSSがありますが、オススメできるものをピックアップして紹介しました。皆さまのお役に立てば幸いです。
筆者紹介:
志田隆弘、前田陽平、安保裕太郎、佐藤雄飛(NTTデータ先端技術 APテクノロジー事業部)
NTTデータ先端技術(NTT DATA INTELLILINK)は、NTTデータグループの一員として、ミッションクリティカルな情報通信システム基盤を最新技術を活用して、設計、構築、運用をすることで、お客さまへの新たな価値の提供を目指しています。APテクノロジー事業部はソフトウェア技術を中心とした組織で、アジャイル開発技術、OSSを活用した基盤構築、グローバルパッケージ(SiteCore、ServiceNow等)の活用などに強みを持ち、お客さまに価値を提供しています(※2021年6月時点の組織情報となります)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 誤解や混乱を生む「よく見る」事例から学ぶ、UIデザインの改善方法――多くの人に伝わるデザインとは?
デザインを専門的に勉強したわけではないけれど、Webデザインも手掛けるエンジニアに向けて「よく見る」失敗例から改善案を提案する本連載。初回はさまざまな人に伝わるデザインとは何かを解説します。 - データ分析の基本を無料で学べる 総務省が「社会人のためのデータサイエンス入門」を開講
総務省は、データサイエンス・オンライン講座「社会人のためのデータサイエンス入門」を開講した。誰でも無料で利用でき、「統計データの活用」「統計学の基礎」「データの見方」「公的データの使い方とコースのまとめ」という4つのテーマを学べる。 - どのようなデータ基盤を作ったのか? データ収集/蓄積/加工/活用、パイプライン管理の設計
「ゼクシィ縁結び・恋結び」の開発現場において、筆者が実際に行ったことを題材として、「データ基盤」の構築事例を紹介する連載。今回は、データ基盤システムの構成要素や採用技術の選定理由などをお伝えします。