データを分析したり可視化するためのツールとして何を使えば良いか悩むことになりました。Grafana、kibana、Metabase、Apache Superset…、調査をしてわかったことを記載しています。悩んでいる人の参考になれば幸いです。
1. 背景
先程作成したランキングチェックツールを使っていて思いました。
- データだけだと理解できない
- データは可視化・分析されて初めて意味を持つ
可視化すること自体はすぐ決まりました。問題はどのツールを使ったら良いか、わからない事です。そこで一通り可視化・分析ツールについて調べてみました。
2. 可視化ツールの分類
可視化ツールと言っても色々あったので以下に分類してみました。
- ログやDBにデータアクセスして表示するダッシュボードやBI系ツール
- オフィス系ソフトウェア
- 言語固有のライブラリ
それぞれの特徴を考えた上で、利用者にとって、どの分類の可視化ツールを使のが良いか選定する必要があります。
2.1 ダッシュボード&BI系ツールによる可視化の特徴
元データはサーバやデータベースの中に格納されているため手元にあるデータのように容易に加工することはできません。その欠点を補うため元データを加工するツールを用意しているソリューションもあります。利点は大規模データでも分析が可能という点です。
グラフについては可視化ツール側で用意されているグラフから選んで可視化することになりますが、可視化専用のツールだけあってグラフの種類は比較的多い傾向にあります。どのデータをどのように可視化するかはユーザ側で設定可能になっていることが多く、比較的自由度の高い分析ができます。加工は勝手にしてほしくないけど分析はある程度自由におこなって欲しいという場合に最適です。
2.2 オフィス系ソフトウェアによる可視化の特徴
一般の人でも容易にデータを扱ったり再加工することができます。一方でPCの性能に影響をうけるため大規模データを扱いにくいという欠点があります。グラフについてはソフトウェア側で用意されている一般的なグラフから選んで可視化することになります。そのため可視化の幅は狭まります。
2.3 言語固有のライブラリによる可視化の特徴
ライブラリ系はプログラムから直接データを可視化する部品を呼び出しデータを可視化するのに用います。ライブラリが許す限り比較的自由度の高い分析が可能です。一方でプログラミング作成スキルが必須となるためハードルが高いという欠点があります。
3. ダッシュボード&BI系ツール
3.1 Grafana
ログやデータ可視化のためのツール。
LinuxやmacOS、Windowsで動作する。Dockerイメージも用意されており、ローカルPCの環境に影響を与えたくない人はdockerイメージを用いることで構築可能。
データソースプラグインが用意されており様々なデータソースからデータを取得することができる。監視系に強く、ビジネス系の可視化についてはいま一つという印象がある。
3.2 Kibana
言わずと知れたElasticsearch用のデータ可視化ツール。日本語情報も非常に多く充実している。一応ビジネス分析もうたっている。
Elasticsearchをインストールし分析用のデータを取り込む必要がある。Elasticsearchのクエリを別途覚える必要がありその学習コストをどうとらえるかが課題。
3.3 Metabase
Clojure(クロージャ)と呼ばれる言語で記述されている可視化ツール。ホームページには以下の文言がある。
「データへの問いかけがありますか?メタベースは答えをもっています」
サンプルを見る限り監視系ではなく営業などのKPIを追跡することを前提に設計されていると思われる。動作環境は以下のいずれかとなるため、自分にあった環境を選んで構築すれば良い。
- JVM上で動作するjarファイル
- Macアプリケーション
- Docker
ユーザガイドは英語だが難しい記載はない。Readonlyのデータベースにも接続して分析が可能。
3.4 Apache Superset
ホームページによると「Supersetは高速、軽量、直感的な(ユーザのために簡単にしたデータ探求のためのシンプルな折れ線グラフから高度に微細化された地理図までの全ての)スキルセットを用意しました」とある。対応しているデータベースも非常に多くGithub上にソースコードが公開されている。
flaskというPythonのフレームワークで作成されており、DB設定でSQLAlchemy URIと表示されることからデータアクセスについてはSQLAlchemyを用いていると思われる。書き込み権限のあるデーベースであれば導入しやすいと思われる。
書き込み権限がない場合はSuperset用に書き込み権限を付与したDBを用意しデータ同期する必要がある。
3.5 Re:dash
Pythonで開発されている。対応データベースは非常に多い。Windowsで実行するにはVMかdockerベースがよさそう。
3.6 Freeboard
ホームページは情報量が少ない。GitHubには比較的情報が多い。GitHub上からデモを動かすことができるため、そちらで動作を確認してからのほうが良い。
GitHub上では2018年以降は更新が止まっているように見えるため今後どうなるかは不明。
3.7 tipboard
JavascriptとPythonで記述されたダッシュボード。クイックスタートがUbuntu系のLinuxディストリビューションを仮定して記載されておりRedisをインストールしている。
ドキュメントはRSTと呼ばれる軽量マークアップ言語で記載されており、SPHINXというPythonのドキュメンテーション生成ツールをインストールする必要があったりとハードルは高いものになってる。
2014年にオープンソースとなったようだが、その後は2年に1回程度の更新のみ。最後のリリースは2018年7月と古く、用いないほうがよさそう。
3.8 Dashbuilder
RedHatがスポンサーとなっている可視化ツール。フィルタ、ソート、ドリルダウンなどが可能なビジネス用途のダッシュボード。
対応環境がJDK6+となっている。JDK6の環境がない場合にはOracleのサイトからダウンロードするようにとの記載がある。
RedHatスポンサーとは言えJDK6+という記載をみて不安になる人もいるかもしれない。逆に新しいJDKのインストールが許されずいまだにJDK6の環境だと良いのかもしれない。
最後の更新が2016年となっているためDashbuilderでなければ駄目な理由がない限り使わないほうが良い。
3.9 Stashboard
ステータスダッシュボード。ステータス以外のことを可視化するのは難しい。Github上の更新も7年前(2014年)に止まったままのため、避けたほうが無難。
4. オフィス系ソフトウェア
4.1 Excel
言わずとしれた表計算ソフト。可視化するにはVBAを用いてSQLiteなどからデータをシートに取り込む方法とODBCを用いる方法がある。いずれもExcelのグラフ機能を用いてグラフを描画する。
データが多いとExcel自体の動作が不安定となるため、用途は限られる。Excleのライセンスが必要なため、利用環境が限られるのが欠点。
4.2 Googleスプレッドシート
Googleが誇る表計算ソフト。データを投入するにはAPIでデータ投入する必要がある。ローカルのPCにインストールされているソフトウェアでないためデータ量が多くなると処理に時間がかかるようになるという欠点がある。Excelがなくても利用できるため不特定多数にデータを公開するような使い方では有益。
5. ライブラリ系
5.1 D3.js
Webページにグラフを埋め込む場合には有力な候補の一つ。Javascriptで動作。
Javascriptでの動作になるため。HTTPやAPI経由でデータを取得しホームページやHTMLに表示して使う形になる。SVGと呼ばれるベクトル画像フォーマットを生成・編集することでデータを可視化する。
180近いサンプルは圧巻。Javascript以外にもSVGを理解する必要があるためハードルは高いが、サンプルの美麗なグラフはその苦労を買ってでも習得しようというモチベーションを起こさせてくれる。
5.2 Google Charts
Webページにグラフを埋め込む場合には有力な候補の一つ。Javascriptで動作する。
D3.js同様にJavascriptでの動作になるため。HTTPやAPI経由でデータを取得しホームページやHTMLに表示して使う形になる。
英語ではあるがマニュアルも丁寧でサンプルコードが豊富にあるため困らない。サンプルのグラフの数は30通りと多めで必要なものは一通りそろっている。
5.3 matplotlib
PythonとNumPy用のグラフ描画ライブラリ。ドキュメントのサンプルプロットでは22通りのグラフの表現方法とサンプルが記載されている。
サンプルはそれほど多くないが、一通りそろっていると言える。グラフの種類をみていると科学技術論文向けのグラフが多い。
5.4 Plotly
Pythonのグラフ描画ライブラリ。カラフルで見た目の良いグラフが多い。サンプルも多く、どのように記載すれば良いかわかりやすい。グラフサンプルは多く63種類ある。
応用もグラフサンプルの下にありPythonで記述するのであればぜひ一度利用してみたいライブラリ。
6. まとめ
今回、データを可視化・分析するにあたりどのような方法が良いか検討してみました。ダッシュボード系のツールは上から5つを試用して決めようと思います。ライブラリ系はPlotlyを試してみようと思います。同じように悩む人の役に立てれば幸いです。
Comment on this article
コメントはまだありません。
Send comments