Metabaseを使ってみてるよ!!便利だよ!!みんなもぜひ試してみてね!!というお話

この記事は[エイチームブライズ/エイチームコネクト/エイチーム引越し侍 Advent Calendar 2018](https://qiita.com/advent-calendar/2018/hikkoshi)10日目の記事です。

# 背景
+ データ分析用にre:dashを使っているけれど、バージョンが古く、簡単にバージョンアップできる構成でもなかった
+ せっかくなので新しいデータ分析ツール(BIツール)を試してみようか、となる
+ じゃあMetabaseにしようぜ!となる(適時意訳してます)

# Metabaseとは

公式サイトにはTOPに以下の記述があります。
https://www.metabase.com/

> Metabase is the easy, 
> open source way for everyone in your company to ask questions and learn from data.

画面はこんな感じです。
<img width="1260" alt="TOPはこんな感じです" src="https://qiita-image-store.s3.amazonaws.com/0/62796/2723af53-219a-238d-bde9-22b179861395.png">
一言で表すとなると、自分たちで保存・保管しているデータをUIベース(もしくはクエリ)で容易に集計・グラフ化・可視化できるツール、だと思っています。

Qiitaや日本語の記事では

+ WebベースBIツール
+ データ分析ツール
+ データ可視化ツール
などと言われているようです。

## Metabase v0.30.x でできること
Metabaseですが、現在活発に開発が行われており、どんどんバージョンも上がっています。
現時点の最新版は、v0.31.2 です。(私が確認できた限りで)以下の機能があります。

+ 認証まわり
    + Googleアカウントを使用したサインイン
    + LDAPを使用したサインイン
    + Roleグループによる権限管理
+ 通知まわり
    + メール設定
    + Slackによる通知
+ データ分析まわり
    + テーブル・カラム単位の表示・非表示設定
    + カテゴリコードのマッピング(1,2,3と保存されているデータで1:かれん、2:じゅんな、3:ばなな、のようにマッピングして表示できる)
        + カスタムマッピングを有効にできるカラムには条件があり、①数値型であること②NULLレコードがないこと、が必要みたい
    + 結果データのダウンロード

## 簡単な使用イメージ
サンプルデータで subtotal >= 200 でsubtotal降順で検索するとこんな感じです。
<img width="1234" alt="スクリーンショット 2018-12-10 1.52.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/62796/a7cd235c-39c8-8fcc-ad07-4d54d88bf84e.png">

上記条件を時系列・週単位でグルーピングした結果の線グラフ
<img width="1218" alt="スクリーンショット 2018-12-10 1.59.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/62796/f920fdc4-48c1-4694-8776-de5d84f9a126.png">

結果セットのダウンロードも可能です。(xlsxでダウンロードできるのは非エンジニアにはかなりありがたいかと思います)
<img width="304" alt="スクリーンショット 2018-12-10 1.52.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/62796/7ad3e1fd-09d3-5e82-d543-2bdb2a5c997b.png">

## とりあえず触ってみたい方向け
(当初は私がherokuDeployしたMetabaseにguestアカウントを作成してそれを公開しようかと思っていたのですが、諸々あって断念しました)
heroku deployに対応しています。
ただし、Githubのmetabaseページにあるdeployボタンは(ちゃんと記載のある通り)使わず、以下のページにあるDeployボタンを使いましょう。
https://metabase.com/start/heroku.html
herokuのアカウントを持っている場合は、上記ページの Deploy to Heroku リンクよりheroku上にmetabaseをすぐ構築できます。heroku便利ですよね。

ローカルマシン上で試したい場合はDockerイメージもあるためそちらも簡単です。
https://metabase.com/start/docker.html
Mac用のイメージファイルも準備されています。Windowsなどでも起動可能なjarファイルも配布されているので、大体のOS・環境で動くのではないかと思います。
https://metabase.com/start/

# やったこと
## インフラチームにmetabaseの環境作って!と依頼
「時間が空いているときにでも環境作っておいてください」と依頼しておいたら、次の日には検証用の環境を準備してくれていました。感謝。
AWS Fargateを使用しているとのことでした。

## 初期設定のおすすめ

**管理者機能 > 一般 > 「わかりやすいテーブル名とフィールド名」 を「アンダースコアとダッシュをスペースに置き換える」に設定**
上記機能ですが、有効だと(テーブル名にもよるかもしれませんが)なぜか妙なところでテーブル名がスペースで区切られてしまい返ってわかりにくくなってしまいました。なので、アンダースコアとダッシュを置き換える設定がおすすめです。
また、DB接続時のオプションはplaceholderで表示されているサンプル通りに設定しておくと後々なるほどあの設定はこう生きるのか、となるのでサンプルに従っておくほうが良いと思います。

## (私が抱えている)課題
### Metabaseにおける仕様・使い方の言語化
Metabaseですが、(私の主観ですが)若干言葉遣いが特殊で、メトリクス、セグメント、質問などぱっと直感的に理解し辛い部分があります。それをわかりやすい言語に落とし込む事ができていません。
「この機能はこういう用途のために使う」ということはなんとなく理解できてはいるのですが、それを明文化できていないので、今後わかりやすく明文化していきたいです。

## Metabaseに改善してほしいと思って いた こと
Metabaseを構築・検証していた頃のバージョンでは、日本語化していると結果データのグラフ化に使用する、「ビジュアライゼーション」という機能があるのですが、その機能が翻訳後の文字数が増えた影響でクリックできなくなっており使いづらかったです。
よーしおじさんコントリビュートしちゃうぞーと思っていたら次のバージョンでちゃんと改善されていました。
こういう改善の速度が早いのはOSSでは珍しい(大抵日本語でのみ発生する事象などは後回しにされがち)ので、おそらく日本の方で尽力されている方がいるのかと思います。圧倒的感謝・・・!

今回の記事とは関係無いですが、先日、[OSS GATE](https://oss-gate.github.io/)というイベントに参加し、metabaseにPullRequestを出しました(公式ドキュメントに対してこういう風に修正したほうがいいのでは?というものです。詳細は[こちら](https://github.com/oss-gate/workshop/issues/1002))
OSSは便利だと思ったもの、便利に使っているものに個人で感謝・貢献(コントリビュート)できるのがいいですね。

## おまけ
社内の一部で公開したところ、metabaseくん(仮名)が妙になれなれしいよね、という感想を複数いただきました。実際なれなれしいと思います。
<img width="308" alt="絶対これ全員に言ってるよね!" src="https://qiita-image-store.s3.amazonaws.com/0/62796/b6183f4d-c0c4-d1c4-fc29-041998a254e4.png">

# お知らせ
エイチームグループでは一緒に活躍してくれる優秀な人材を募集中です。
興味のある方はぜひとも[エイチームグループ採用ページ](https://www.a-tm.co.jp/recruit/)（[Webエンジニア詳細ページ](https://www.a-tm.co.jp/recruit/requirements/career/lifestylesupport-webengineer/)）よりお問い合わせ下さい！

# 明日
明日は 爆速エンジニアの@shgktさんが「若手エンジニアが「一人前になった」と思われるために意識したいこと７選！」についての記事をお届けします。お楽しみに!