データを細かく分析!metabaseについて

医療情報システムmetabase, oss, Redmine

各部署からの依頼はメールでくる場合もありますが、部署宛でメールが来ているので届いた後、誰が担当するのか部署内で問題に上がっていました。自分としてはその作業割り当てを管理職にしてほしかったのですが、管理者の仕事を増やしているだけのように思えると言われてしまいました。 解決案として、各人のタスク量を見える化して、ミーティングなどで負荷が少ない担当者に作業を割り当てられないかを考えました。

タスクの内容はRedmineに登録していますが、ぱっと見るだけでは抱えているチケット数だけしか見えず、どれぐらい時間がかかっていて今後の予定工数なども見えづらい状態でした。これを見やすくするためにmetabaseというツールを使ってみたので紹介いたします。

metabaseとは

無料で使えるでOSS(オープンソース)のBI(Business Inteligence)ツールです。ビジネスインテリジェンスという言葉だけでは分かりにくいですが、膨大に蓄積している様々なデータを分析・見える化して業務や経営に役立てていこうというものらしいです。

たまにお昼のニュース番組を見ていると、コロナの感染者などのグラフが出ますが、そこに小さくmetabaseのロゴが出ているのを見たことがあります。テレビ局のような大手でも使っている信頼できるツールだと思います。

簡単な分析をするだけだったら、数クリックするだけでグラフにしてくれるので非エンジニアの方でも使えますが、複雑な条件を絡めたグラフにする場合はSQLを使える必要があるので、使いこなすためにはSQLの勉強が必要になってきます。

導入方法

導入方法は大まかに2種類あり、クラウドで使うかオンプレミスで使うかが選べます。クラウドで使うには基本的に有料で、無料で試しに使ってみるにはオンプレミスで使ってみることをお勧めします。また、病院では気軽にクラウドシステムが使えないのでその点でもオンプレミスがいいと思います。

オンプレミスの無料で使うには、Dockerという仮想環境を使ったセットアップと、Javaを使ったセットアップの方法があります。Dockerも比較的簡単に導入できますが、今回はすでに使っていたJavaを使った方法で導入しました。

まず初めにJavaをインストールします。Java 8以上からサポートしているので、java公式サイトなどからインストーラーをダウンロードしてインストールします。インストール後にパスの設定などを行ってください。

次に公式ページにjarファイルのダウンロードページがあるので、そこからmetabase.jarファイルをダウンロードします。

https://www.metabase.com/start/oss/

ダウンロードしたjarファイルを実行するだけでもサーバーを起動することが出来ますが、コマンドプロンプトから起動すると、実行中のコマンドの流れや、サーバーを止めやすい(Ctrl+C)、コマンドプロンプトからの実行をお勧めします。次のコマンドでjarファイルを実行します。下記のコマンドのbatを作っておけばダブルクリックですぐに起動できます。

java -jar metabase.jar

そうすると、コマンドライン上で色々流れてサーバーが起動されます。無事に起動出来たらブラウザで localhost:3000ポート をURLで開くと、metabaseのページが表示されます。別のPCでも見たい場合には サーバーマシンのIP:3000 で開けます。

スタートページ

初期設定を行い、接続するDBの情報を入力すると、分析を行ってくれて各種テーブル情報などが一覧で見れるようになります。 私は最初DBへの接続をRedmineのローカルサーバーだけに制限していたので、metabase用にDBユーザーを作成して接続できるようにしました。

使い方例

データの分析法として、Metabaseでは3つの手法が用意されています。

1つ目が簡単な質問。これは単一のテーブルを選択してデータをまとめてみたり、必要な項目を選んでグラフ化するのが簡単にできます。

2つ目はカスタム質問で、複数のテーブルのデータ結合や計算などを用いてグラフ化することが出来ます。最後にネイティブクエリでは、SQLを一から組んで、必要なデータをSQL文で抽出する必要があります。SQL文に慣れている方はネイティブクエリがやりやすいかもしれませんが、普段からSQLを使っていない方でも簡単な質問からデータを俯瞰することが出来ます。

私はこのmetabaseを使ってRedmineのチケット数を分析して業務量の負担を見える化し、メールや現場からの依頼を負荷が少ない職員に割り当てることを考えました。

まず、各人が抱えているチケット数をグラフ化します。Redmineのチケットのステータスには保留というのがあり、現在は対処できないが問題や備忘録として記録している場合があるので、これを除いたチケット数もグラフ化しました。 次に先週分の活動記録として、先週新たに起票したチケット、終了させたチケット、更新したチケットをそれぞれ担当者ごとにグラフ化しました。そうすることで各担当者の活動量が見えるので、作業の進捗具合も把握しやすくなります。 更に担当者によっては、重要なチケットを抱えている場合があるので、Redmineのチケットで優先度が高いものだけを抜粋してグラフ化しました。これにより期日が近いなどの重要な課題を抱えている職員も把握できます。

最後にこれらのグラフをダッシュボードという機能で1画面に並べて表示することができるので、定例会などで報告してチケットの割り振りや、進捗が止まっているチケットの再配分などを行ってもらいました。

問題としては個々のチケット内容が分かりにくいことです。ダッシュボードの機能で特定のグラフをクリックしたら指定したURLへジャンプさせる機能があるので、チケット一覧に飛ぶようにしたのですが、グラフと一緒に見えないのは少し難点でした。

最後に

導入も簡単でやり方次第では複雑なデータ解析も行えるのに、無料で使えるOSSツールなのでどんな業種であっても役に立つかと思います。

電子カルテシステム自体には、もともと用意されている条件で抽出できるツールがあるのですが、グラフ化はできなかったので、電子カルテのDBへ接続しても、色々な方面で活用できると感じました。今度活用方法が見つかれば上司へ提案してみたいと思います。

ちなみに今回metabaseでのタスク割り当ては見送られて、メールの対応はその日の電話当番が担当するようになりました。採用はされませんでしたが、無料で簡単にデータを分析するツールがあることや、導入・使用方法が分かったので、別の場面で使えればと思います。