Business Intelligence Software - OSS の BIツール を比較してみる

OSSのBIツールについてまとめてみました。

## はじめに

2019年2月現在、「データサイエンティスト」や「データアナリスト」という言葉が聞かれるようになってからしばらく経ちます。また、BIツールと呼ばれるデータ解析・データ分析を手助けするツールが、パッケージ製品やSaaS型の製品として数多く提供されるようになりました。

今回、多量データを解析するにあたって、OSS利用が可能なツールを調べてみました。

## BIツール とは？

BIツールは、乱暴にまとめてしまうと、様々なデータを分析する手助けをしてくれます。
ツールは、様々な企業がパッケージ型やSaaS型で提供しており、OSSでも主要な機能を含めた形で提供したものもあります。

今回は、種々のデータを効率的に分析したい要求と、OSSでも調査をしながら実行環境を構築出来るだろうという背景から、有効なOSSの選択をしたいと考えて情報をまとめてみました。

## 比較

OSSツール４種について比較を行いました。

||Metabase|Re:dash|Superset|Kibana|
|:--|:--|:--|:--|:--|
|公式サイト|[コチラ](https://www.metabase.com/)|[コチラ](https://redash.io/)|[コチラ](https://superset.incubator.apache.org/index.html)|[コチラ](https://www.elastic.co/jp/products/kibana)|
|Lisence|AGPL|BSD-2-Clause|Apache 2.0 [^1]|Apache 2.0<br>ELASTIC LICENSE|
|GitHub|[metabase/metabase](https://github.com/metabase/metabase)|[getredash/redash](https://github.com/getredash/redash)|[apache/incubator-superset](https://github.com/apache/incubator-superset)|[elastic/kibana](https://github.com/elastic/kibana)|

## 環境

次章以降で Docker コンテナを構築する際は、以下のスクリプトを使用して Vagrntで仮想環境を構築し、その中で Dockerコンテナ を起動しています。

```bash
git clone https://github.com/anfangd/docker-on-vagrant-script.git
cd docker-on-vagrant-script

vagrant up
vagrant ssh
```

## Metabase

Metabase は、今回調べた中では一番使いやすい印象を受けました。

```bash:
// このコマンドだけで環境構築できます
docker run -d -p 3000:3000 --name metabase metabase/metabase
```

構築が完了したら、以下の URL にアクセスすることで初期ページにアクセス出来ます。

- URL : http://192.168.33.10:3000/

初期ページはこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/46bf306a-a300-9308-9b3d-a1ba76b10f64.png)

管理者情報を入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/011cd8fe-0e04-4bf4-ba77-53bd38a23bef.png)

データベースを選択します。ここでは「あとでデータを追加する」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/b53a1d65-dc7a-bcbe-ef6d-b6a82afb59f7.png)

ホーム画面はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/e97b7789-5780-246b-e75f-b6887dad328c.png)

「People」テーブルのサマリ情報はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/cdbcc6a7-3213-bf07-37a4-efbf6ad5eb04.png)

管理画面はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/99b1fc32-5e85-dcb2-3157-664bd4623257.png)

### 感想

起動が簡単で使いやすさも非常に良さそうでした。

### 参考

- [OSSのデータ可視化ツール「Metabase」が超使いやすい - Qiita](https://qiita.com/acro5piano/items/0920550d297651b04387)
- [MetabaseがRedashの苦労を吹き飛ばすくらい熱い - Qiita](https://qiita.com/Ponzmild/items/adc6b8248e1e54e5e1f4)
- [kuronekonet/metabase_mysql.md](https://gist.github.com/kuronekonet/39bf5dc170022ca32b8f336cac75fc1c)

## Re:dash

Re:dash は使いこなすことが出来れば使いやすそうですが、簡単に試すという目的だと少し時間がかかりそうです。

```
// このコマンドだけで環境構築できます
docker run -d -p 8125:80 maedamikio/redash
```

構築が完了したら、以下の URL にアクセスすることで初期ページにアクセス出来ます。

- URL : http://192.168.33.10:8125/

初期ページはこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/de279eb8-2689-6d3a-b983-06bf13f3b68c.png)

ホーム画面はこんな感じ。ダミーデータがないので、 Metabase のように初期構築段階でサンプルのグラフを確認することは出来ないようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/6d65a306-12a3-f9c4-77cc-9f69be7548b5.png)

管理画面はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/ca43981e-43f6-7683-0b85-1ca2626257b3.png)

### 感想

起動は簡単でしたが、データの確認にはひと手間ありそうなでした。
良さを知るにはもう少し時間をかける必要がありそうです。

### 参考

- [RedashをDocker上に今更だけどインストールしてみた – MISO](https://www.tdi.co.jp/miso/redash-docker-install)
- [Redash on Docker - Qiita](https://qiita.com/maeda_mikio/items/fe873f82784e37d0d3a3)
- [redash/redash - GitHub](https://hub.docker.com/r/redash/redash/)

## Superset

Superset は、 Metabase と同様に使いやすい印象を受けました。

```bash
docker run -d -p 8088:8088 maedamikio/superset
```

構築が完了したら、以下の URL にアクセスすることで初期ページにアクセス出来ます。

- URL : http://192.168.33.10:8088/

初期ページはこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/a77dcd67-8882-7283-42b4-63056d42f61a.png)

- Username : admin
- Password : admin

ログイン後の画面はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/4dce852b-6fe5-9d84-1229-82a2d84b0f49.png)

ユーザホーム？はこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/5862cb95-c649-0e4b-f894-3e8864e0e757.png)

サンプルグラフ（１）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/1e7b83cf-a726-d634-b2a3-549a2692d6a1.png)

サンプルグラフ（２）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/5e6ac2ac-633f-e14a-4fec-23e8907d8f84.png)

サンプルグラフ（３）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/6c604da4-0e1d-602f-7e15-dc85148f19b8.png)

サンプルグラフ（４）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/ce64da90-ddac-d740-550b-861a82385e92.png)

### 感想

簡単な動作確認のレベルでは、 Metabase と同じくらいの使い心地でした。

### 参考

- [BIツール superset をdockerでインストール - Qiita](https://qiita.com/suzukihi724/items/07b6a871af9ce593d3af)
- [Superset on Docker - Qiita](https://qiita.com/maeda_mikio/items/d3c9c4809bc82eb284f8)

## Kibana

Kibana は、 Elasticsearch とセットで構築する必要があり、今回の調査作業の中では一番時間がかかりました。

```
$ git clone https://github.com/d0d0npa/docker-compose-EEK.git
$ cd docker-compose-EEK

$ docker-compose build

$ docker-compose up
```

- URL : http://192.168.33.10:5601

初期ページはこんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/dd8197ff-458e-56d1-2d42-a2d7fd736747.png)

```bash
PUT nikkei225
{
  "template": "nikkei225*",
  "mappings": {
    "nikkei_schema":{
      "properties": {
          "NIKKEI225": { "type": "double" },
          "DATE": {"format" : "YYYY-MM-dd", "type": "date" },
          "DJIA": { "type": "double" },
          "DEXJPUS": { "type": "double" }
      }
    }
  }
}
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79222/513d9348-27c6-3f1e-0473-c7e939a30cfc.png)

```bash
// データを流し込む
docker-compose exec embulk bash -c "cd logs && embulk run config.yml"
```

※データを入れたは良いが、グラフの表示まで至りませんでした。。

### 感想

構築時間は一番時間がかかりました。サンプルデータの投入後、グラフ表示を確認出来ていない点も課題です。

### 参考

- [Docker-composeを使ってEmbulk,Elasticsearch,Kibana環境を構築する - Qiita](https://qiita.com/d0d0npa/items/16ff1a8d48fc52ffd340)
- [Elasticsearch Cluster and Kibana using docker-compose - Medium](https://medium.com/@maxy_ermayank/elasticsearch-cluster-and-kibana-using-docker-compose-4f9c4d6c5470)
- [Elasticsearch + KibanaをDocker Composeで動かす - Qiita](https://qiita.com/sugikeitter/items/f3b2c57bf8bbdc47a8bc)

## まとめ

どのツールも使いこなすことが出来れば非常に使いやすそうです。
ただ、今回の自分の状況を考えると、まずはお手軽に構築して動作の確認ができそうな `Metabase` か `Superset` を選択することになりそうです。

## 参考

- [Metabase](https://www.metabase.com/)
- [商用利用できるオープンソースライセンスはけっきょくどれで何をすればいいのか？ - Qiita](https://qiita.com/0xfffffff7/items/efbb65521d7708f2db7d)
- [Affero General Public License - ウィキペディア](https://ja.wikipedia.org/wiki/Affero_General_Public_License)
- [GPLとSaaSの抜け道について（2018年8月6日）](https://www.ashisuto.co.jp/product/category/compliance-security/whitesource/column/detail/ws-column-20180806.html)

[^1]: Apache Superset に含まれるコンポーネントには、複数のライセンスが含まれるため注意が必要