BIツール調査（自分用）

# 経緯
そろそろデータによる分析みたいなことやってみたいなと思った折、「自分でいろいろ作るより、既存のものを活用する方が良いよね」ということで、今どんなBIツールがあるのかを調べる。
（これを書きながらまとめる）

BIツールには厳密な定義があるのかもしれないが、私の理解は「たくさんあるデータを、自分の決めた軸で集計して、グラフとか表とかに見やすくするもの」という理解。

# Pentaho
昔、BIツールといえばこれ！みたいな感じに聞いたことがある。
実際にはETL（データを取ってきて変換したりするツール）とセットで扱われるような存在。
ETLで取ってきたものをレポーティングしていた部分がBIツールという感じだろうか。

日立グループに買収された変遷があるようなのでほんとにOSSでやってる？って疑いはしつつも、コミュニティ版は今でもダウンロードできるし、ソースはgithubにもありそうなのでOSSではあるのかなと。
https://community.hitachivantara.com/s/pentaho
https://sourceforge.net/projects/pentaho/
https://github.com/pentaho

事例では、重機のCATとか東証のJPXとか中外製薬とかNasdaqとか実業がITとは関係ないでかいところが使ってる当たり、カッチリしたものを作りたいところがつかうのかなという印象。
自分の知ってるITっぽい会社は見受けられなかった。
多分そっちの業界より、産業界とかに強いんだろうな。

## システム要件
ライセンス：LGPLv2、GPLv2、MPL1.1
言語：Java

詳しいことはここに書いてある。
https://www.hitachi.co.jp/products/it/bigdata/platform/pentaho/productinfo/index.html

## メリット
- 詳しくは見ていないが、SourceForgeに置いてあるファイルを見る限り、更新も進んでてドキュメントもありそう
- Javaだったらそこそこ安定して速かったりしないかなと期待
- 日本語に対応しているらしい
- 消極的な書き方をしているけど、NoSQLでもSQL92互換のクエリが使えれば接続できるらしい
    - MongoDBもこの範囲でサポートしてる様子（MongoDBにSQLが使えること自体知らなかったけど・・・）
        - どうやらそういうODBCドライバが存在しているようでそいつ依存ぽい
- テキストファイルやExcel、XMLなんかのファイルもデータソースに使えるらしい
    - 他ではあまり見ないな

## デメリット
- 全体としてデカい
    - 多分、Data IntegratorとReport Designerは最低でも必要で～とかのやつかと予想
    - サーバをダウンロードしたらそれだけで1.6GBあった
    - ファイルとかは重いけど実際にはインストールは楽だったりするのかもしれないけど、ちょっと萎える
- 高機能だろうけど、お手軽ではなさそう


# Grafana
サイトの内容を見る限り、OSSであることに重きを置いているらしい。
Pentahoも買収される前はこんな感じだったんだろうか。
（買収待ちだったりするのかな・・・？シリコンバレーってドラマを見るとそう思ってしまうな）

それもあってか、事例ではebayとかPayPal、redhat、Tinder、WixとかITの会社が使う印象が多い。
変わったところだとCRENとかSony PlayStationとかが使ってる。
実業系で目立つのは石油のShellとか、通信のベライゾンがいた。

https://grafana.com/
https://github.com/grafana/

## システム要件

ライセンス：Apache 2.0
言語：TypeScript

WindowsでもMacでもLinuxでもDockerでもいろいろな環境で動くようにインストール手順を色々公開している。

まじか！？と思うのは、ハードウェアスペックで必要なのは、256MBのメモリーと1コアのCPUらしい。
https://grafana.com/docs/grafana/latest/installation/requirements/#hardware-recommendations

## メリット
- なんといっても軽い
    - TypeScriptだからUI関係をクライアントで処理させているのがでかいだろうな
    - 多分node.jsベースのwebサーバ（expressとか）だろうけど、Node.jsといえば一つで数万アクセスに耐えられる（確かエラーになることはあっても止まらないとか）いう話を聞いた覚えが・・・（これは予想と記憶なので信憑性は怪しい）
    - だからサーバー再度の処理も軽くさせられるんだろうな
- インストールできる環境と方法が豊富
    - インストール手順がコマンドラインで説明されているとか、プログラマーライクで読みやすい
    - Dockerイメージもあるようなので、すぐ使えそう
    - なんかARMのCPUでも動くらしいので、組み込みLinuxとかでも使えるのかも？？？
        - ルーターに乗せたり、ラズパイに乗せたりすると面白いかも
- 今時な感じのデータソースが使える
    - AWS CloudWatchとかInfluxDBとか

## デメリット
- 日本語は対応してない（日本語データを扱えないわけではなく、画面項目が英語という話）
- ドキュメントを見る限り、MongoDBを標準サポートしてなさそう
    - 誰かが作ったプラグインは転がっている様子だけど、、

# Metabase
Grafanaみたいにプログラマーライクな感じ。
導入実績を見ると日本では耳慣れない企業が多い。（雰囲気新興IT企業かな？）
エンジニアが自分で勝手に入れてみたとかスタートアップが見える化するのに～とかスモールスタートで気軽に使い始める感じなのかな。
全体的に突っ込みどころというか情報が少ない感じがする。（特徴がよくわからん）

とは言え、ポイントの一つは「エンジニアでなくても使えるようにしている」と謳っているところだろうか。
（画面操作をしてないから実際使い易いのかはわからないのだけど）


https://www.metabase.com/
https://github.com/metabase/metabase

## システム要件

ライセンス：AGPL
言語：Clojure（Java上で動くLisp）

Javaを使うというとJREだのなんだのめんどくさい印象があるけど、インストール手順がシンプルに書かれているから、あまりめんどくさそうな印象は持たなかった。

https://www.metabase.com/docs/latest/operations-guide/installing-metabase.html

変わってるなーと思ったのは、Mac用にはアプリケーションのバイナリも提供されているところ。
多分、エンジニア以外の人が触るのにってことだろうけど、何故Windowsにはないんだ・・・？

最近は定番なのか、DockerやHerokuやKubernetesでのやり方も説明されている。

## メリット
- UIが簡単そうな印象はある
    - 取りたいデータの項目の選択や、集計方法の指定など、GUIでやれそう
- インストール手順が簡単そうに見える
    - インストール手順がコマンドラインで説明されているとか、プログラマーライクで読みやすい
    - Dockerイメージもあるようなので、すぐ使えそう
    - なんかARMのCPUでも動くらしいので、組み込みLinuxとかでも使えるのかも？？？
        - ルーターに乗せたり、ラズパイに乗せたりすると面白いかも
- 今時な感じのクラウドプラットフォーム上にデプロイする手順が提供されている
    - 自分は使わないけどAWS Elastic BeanstalkとかHerokuとかKubernetesを使うのは今時な印象

## デメリット
- 2020/7時点でバージョン0.36で、メジャーバージョンが付いてない辺り、まだ安定してなさそう
- 自分にとってのデメリットでしかないけど、Clojureという謎の言語を使ってるのでソースは見てみる気になれない

# Kibana
IoTのなんかのイベントに参加した時に、データの表示にKibanaを使っていた人がいたような。
導入実績で気になる会社はウォルマートテクノロジーくらいかな。
（ファイザー（製薬？）、Adobe、CISCO、Facebook、eBayとかの紹介もあるにはあるけど、Elasticsearchの方っぽい）

ElasticSearchについては結構使われてそうで、仕事でも登場しそう。名前だけ飛び交ってる。
（AWSのサービスの一つなのかと思ったらここの会社の製品だったんだ）

個人的な感想だけで言えば、見た目は一番頑張ってそう。

昨日の中で気になったのは、マシンラーニング（機械学習）機能。
異常値の検出とかをやってくれるらしいけど、機械学習という言葉だけで魅力的に見えてしまうな。

https://www.elastic.co/jp/kibana
https://github.com/elastic/kibana
https://www.elastic.co/guide/en/kibana/current/index.html

## システム要件

ライセンス：ELASTIC LICENSE（なんだそれΣ(ﾟДﾟ)）
言語：TypeScript/JavaScript

コードスタイルガイドでReactが書いてあって、「やっぱり見た目頑張るときってReactなのかなー」と思った。

https://www.elastic.co/jp/downloads/kibana

データソースには何が使えるのかなーと見ていたら、嘘かホントか単体で使うとファイルアップロードしか使えなそう。
DBからのデータ取得はElasticSearchを使う模様。
https://www.elastic.co/guide/en/kibana/current/connect-to-elasticsearch.html

## メリット
- UIが見た目が良い
- 機能がレポーティング機能が充実している（ように見えるドキュメント）

## デメリット
- ElasticSearchと組み合わせる前提っぽい

# Graylog
BIツールというより、ログ分析ツールかも。
BIツールで検索でした時に引っかかったけど、ここでは調査対象外。

日本語のマニュアルを作ってくれている会社さんがいた。
https://www.designet.co.jp/ossinfo/graylog/manual/

# Apache Superset
もともとAirBnBが作っていたものを、Apache財団が引き取ったってことなのかな？
サイトは質実剛健なThe プログラマー的な見た目。ほぼxDocにしか見えない。
https://superset.incubator.apache.org/
https://github.com/apache/incubator-superset

サイトが質実剛健過ぎて、何が良くて悪いのかよくわからない。

## システム要件

ライセンス：Apache-2.0 License
言語：バックエンドはPython、フロントエンドはTypeScript

今仕事のメインはPythonだから、親しみは覚えるな。
Dockerで使わないと、インストールは結構めんどくさそう。（ほぼ、PythonでWebシステム立ち上げる手順）
https://superset.incubator.apache.org/installation.html

SQLAlchemyでSQLを生成するi仕組みっぽいので、MongoDBは対応データソースの一覧に書かれてない。

Celeryとかでタスクキューイングしそうなので、結構リソースは使いそうな気がする。

## メリット
- 自分にとってだけのメリットだけど、Pythonなのでソースが読める
- グラフなどの機能は結構ありそう
    - AirBnBだからなのか、世界地図があったりした

## デメリット
- ある意味Pentaho並みにデカそう
    - Dockerですぐ使えるような印象ではあるが、中に入っているであろうミドル系のシステムがメモリを食いそうだし、CPUコアも複数要りそう
- エンジニアに寄りすぎな印象
    - 主にマニュアルの見た目だけど
- まだバージョン0.36なので、安定板が出るまでは不安
- MongoDBがサポートされてない
    - SQLの使えるデータソースであれば使えそうだからダメではないじゃないかなとも思えるけど、ODBCのドライバーがあるのか謎

# Redash
仕事でも使ったことのあるRedash。
BIをやりたいと思ったときに真っ先に思い浮かんだのはこのツールだった。

初めからNoSQLもRDBMSも対応していることは知っていたし、これよりいいものは他にあるのか？ということからこの調査を始めている。

最近databricksとかいうAI系のでかいイベントに出たらしくて、調子のよさをアピールしてる。
https://redash.io/
https://github.com/getredash/redash
https://redash.io/help/

## システム要件

ライセンス：BSD-2-Clause License
言語：バックエンドはPython、フロントエンドはTypeScript

構成はSupersetと似ている。
他のものと大きく違う点として、Dockerとかのイメージを使う前提のインストール手順であること。
https://redash.io/help/open-source/setup

一応、開発用にソースコードからビルドしたりする手順も奥を探せばあったけど、使うだけならいらないか？
まぁ外のデータソースアクセスできるように設定するところだけ頑張ればいいのか。（これは他のDockerやるやつも変わらない話だな）

どういうことをやると遅くなるとかはある程度知ってるつもり。

## メリット
- 自分にとってだけのメリットで最大のものは、使ったことがあること
- MongoDBがサポートされている（ていうかMongoDBで使ってたし）
- 2020/7現在でv8.0.0があり、v9.0.0がbeta版であるらしい
    - 結構安定してるんじゃないかと期待
- 普通に使えるのか知らないけど、マルチクライアントで使えた気がする
    - うちの会社で改造したのかもしれないけど・・・

## デメリット
- Dockerですぐ使えるような印象ではあるが、中に入っているであろうミドル系のシステムがメモリを食いそうだし、CPUコアも複数要りそう
- 自分が使ってた時はビジュアライゼーションの種類がちょっと物足りなかった記憶
    - 今回は色々な条件でデータを分析したいので使いたい表とかがないかもしれない
- 自分で生クエリ書くから、あんまり楽という感じがしない
    - まぁ逆に自分でクエリ書けるから楽というとらえ方もできなくはないけど。。


# 今回採用するのは？
Grafanaかな。

Redashと迷ったけど、軽そうなのが試してみたい衝動に駆られた。