業務システム例 : セルフサービスダッシュボード環境の作り方

概要

CRM / SFA / ERP / HRM などの各種業務システムに対する定番のビジネスとして、BI(Business Inteligence)による可視化(見える化)がある。特にセルフサービスダッシュボードと呼ばれる、エンドユーザーが自分自身で可視化したチャート(グラフ)を一か所にまとめたダッシュボードの提供は、いつの時代にも生じる定番になる。ここでは、BIツールの「Metabase」を用いて「Metabase」にてデータを可視化するダッシュボード環境の作り方を紹介する。

こうしたBIツールの環境をセットアップすることで、データサイエンティストが活躍することができる。

Metabase について

オープンソースソフトウェアライセンスが適用されているBI(Business Inteligence)ツールの1つ。もともとは、Uberの共同創業者Garrett Campが2013年に設立したスタートアップスタジオ、Expaが開発した内製ツールだった。様々なデータベースを接続し、データを可視化できることが特長で、分析に必要な情報やキーワードをMetabase上で問い合わせることで、データを可視化することができる。

https://www.youtube.com/channel/UCvg53nhM-xPUiFGqDJDhjaw << 動画

オープンソースソフトウェア版は無料で使える。
その他に有料でSaaS型のクラウドサービスとして使う契約と、オンプレミス環境やパブリッククラウドのIaaSで運用するための有償契約も存在する。>> https://www.metabase.com/pricing/

使い方などの関連ドキュメント

https://www.metabase.com/docs/latest/ << 公式ドキュメント

英語で書かれた公式ドキュメントを読んだ方が最新かつ正確だが、補助資料としてユーザーが作成したブログ等のコンテンツも参考になる。
公式ドキュメント以外は、古い情報があるので、鵜呑みにせず、記事の内容を自分で確認して動かすことが望ましい。

Metabase等のBIツール向けサーバー構成について

AWS を使ったシンプルな構成と、VirtualBoxやHyper-V等の仮想マシン向けハイパーバイザーを使った構成を述べる。

AWSで構築する場合

仮想サーバーを2台使うか、DB(データベース)用の仮想サーバーを、AWS RDS に置き換えて使う構成がある。負荷が小さいうちは仮想サーバーで良いが、大人数で使い出す場合は、Kubernetes を使って運用した方が良い

データベースの量が少ない場合は、上記の図のように、DB用仮想サーバー内に複数の分析用データベースを作っても良いが、Metabase等のBIツールの本領発揮には、AWSをフル活用する場合は、Metabaseに備わっている、Amazon RedShiftととの連携機能を使い、AWS以外を含めた様々なSaaS上のデータをMetabaseで分析・可視化することが、ベストプラクティス。

ETL(ELTとも)は、「Extract (抽出)」「Transform (変換)」「Load (書き出し)」の頭文字をつなげた略語で、データの倉庫となるデータウェアハウス(DWH)に、様々なサービスからデータを集め、フォーマットを調整し、時には加工し、DWHにデータを格納することを指す。

パソコン上のVirtualBox上で構築する場合

AWS部分が、パソコンとVirtualBox(ハイパーバイザー)に置き換わったくらいで、仮想サーバーを使うだけであれば、似た構成と考えることができる。パソコンとVirtualBox(ハイパーバイザー)の組み合わせを、プライベートクラウド上のベアメタルサーバーと、Hyper-V等のハイパーバイザーに置き換える場合は、プライベートクラウドでの運用になる。

データベースの量が少ない場合は、上記の図のように、DB用仮想サーバー内に複数の分析用データベースを作っても良いが、Metabase等のBIツールの本領発揮には、Metabaseを実行する仮想サーバー(この資料はでは、Docker Composeを使ってMetabase を起動)に、ETL(ELT)経由で、様々な業務システムをつなぐ方が良い。

オープンソースソフトウェアで、DWH(データウェアハウス)で、仮想マシンとして運用が可能かつMetabaseとの接続機能があるものでは、「 」がある。

Metabaseを動かすための仮想マシンの用意

例として、仮想環境としてVirtualBoxを使っていますが、他の仮想環境でも構いません。

< 以下は、VirtualBoxを使った場合の例 >

仮想マシンのスペック例

  • OS:Ubutnu Server 22.04 もしくは、20.04

  • 仮想CPU割り当て数 : 1

  • 仮想メモリ割り当て:2048MB(2GB)以上

  • 仮想ディスク:40GB以上

  • ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。

  • デスクトップ環境:なし

  • SSH接続:必須 ( ユーザー名 + パスワードでもOK )

仮想マシンの設定例

  • ホストオンリーアダプタの固定IP例:192.168.125.150

  • Your server’s name (ホスト名):ubuntu1bitest

  • ユーザー名 : vboxuser

  • パスワード:任意のもの

作業環境

仮想マシンを実行しているパソコンから、ターミナルアプリ(Windowsなら「Tera Term」, Macなら「Terminal」)を使い仮想マシンの固定IPにSSH接続し、作業を行いましょう。

Docker Engine および Docker Compose 環境のセットアップ

既に、Docker Engine および Docker Compose をインストール済みの仮想マシンを使っている場合は、この作業は飛ばしてください。Docker を使えない場合は、Podman でも良いです。

Docker Engine および Docker Composeのインストール

次のコマンドを実行します。

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh

Dockerグループを作成します。既に作成済みの場合もあります。

sudo groupadd docker

sudoなしで実行できるように、作業用ユーザーをDockerグループに所属させます。

sudo usermod -aG docker $USER

再起動します。

Metabase 環境の構築

Ubuntu環境を最新版にアップデート

Metabaseの環境構築の前に、仮想マシンのOSに最新のアップデートを適用します。

JDKのセットアップ

Metabaseを手軽に使う手段として、Docker以外にJavaを使う手段があります。そこで、Javaをインストールしましょう。

Open JDK 17のインストール

以下のコマンドを実行。

動作確認

実行結果

JAVA_HOMEの設定

javaがどこに格納されているか確認

実行結果

パスを通して、JAVA_HOMEを設定する

末尾に追記

反映

Javaを使って手軽にMetabase 環境を使う方法

作業用ディレクトリを作成する。

Metabaseは、jar ファイルとして起動できるので、起動用ファイルをダウンロードする。バージョン 0.46.3 は、2023年5月時点の最新版。

Metabaseを起動する。Javaを使って起動する場合は、組み込みの「H2」データベースが使われる。

Webブラウザで、http://仮想マシンのIPアドレス:3000(例 http://192.168.125.150:3000 )にアクセス。

「開始しましょう」をクリックする。

言語は日本語であれば、「Japanese」を選び、「次へ」をクリックする。

最初のユーザーとなる、管理者情報を入力する。「名」と「氏」は、必ず英数字とすること。日本語をにした場合は、データベースでエラーが生じることになる。また、メール(例 admin@example.com)はログインに使用します。また「新しいパスワード」と「パスワードを確認」には、英数字による任意の文字列を入力(例 zxcvfr45meta )します。「次へ」をクリック。

 

使用するデータベースシステムを選択。すぐに触れるようにサンプルデータベースを使うので、「あとでデータを追加する」をクリック。

「Metabaseが匿名の情報収集をすることに同意する」のトグルボタンをオフにして、「フィニッシュ」をクリックする。

「Metabaseを使い始める」をクリック。

初回は自動でログインするので、H2データベースを用いたサンプルが表示される。

終了する場合は、ターミナルアプリ上で、Ctrl + c キーを押すことでMetabaseが終了します。

ハンズオン課題(1)

Metabase安定稼働のためにMetabaseの設定等を管理するデータベースを永続化してみよう

Metabaseは、起動時にデータベースを指定していない場合は「H2」データベースを使用します。「H2」データベースはデフォルトでは、インメモリのためアプリ(Metabase)終了時にデータベースからデータ消えます。自動で消えることで、データベースが必要なアプリケーションにおいて、手軽にデータベースを試せる利点でもあります。

環境構築でセットアップしておきながらまだ使っていない、「Docker Compose」を使って、Metabaseで使用するデータベースとして「PostgreSQL」を追加するとともに、「PostgreSQL」を永続化してみましょう。

回答のマニフェストファイル(Docker ComposeのYMLファイル)によるMetabaseの起動例

データベースのパスワードを記述したファイルを作成する。

英数字8文字以上で、パスワードになる文字列(例 metapwzse4rfv)を入力し、保存する。

データベースのユーザー名を記述したファイルを作成する。

英数字でユーザー名になる文字列(例 metadbuser1 )を入力し、保存する。

Docker Composeで使用するYMLファイルを作成する。

記述内容 << 公式ドキュメント記載のサンプルにカスタマイズした。データベース永続化のためのボリューム設定( /docker/metabase ディレクトリが作成され、永続化)や設定値の追記、またタイムゾーンの設定値を追記している。

Metabaseを起動する。

Webブラウザで、http://仮想マシンのIPアドレス:3000(例 http://192.168.125.150:3000 )にアクセス。「Metabaseへようこそ」と表示されるので、セットアップを行う。

Docker Composeによるコンテナの終了。

Docker Composeで使用するYMLファイル、定義ファイルを発展させる場合は、PostgreSQLをWebブラウザ上で管理できるUIの「pgadmin」を追加し、PostgreSQLをGUIで管理するようにしても良い。

データベース追加時の登録方法

Metabaseの画面右上の歯車のアイコンをクリックし、「管理者設定」をクリックする。

「Metabase 管理者」画面が表示される。「データベースを追加する」をクリック。もしくは「データベース」>>「データベースを追加」の順にクリック。

「データベースタイプ」から、分析のためにMetabaseに接続するデータベースを選ぶことができる。

下記の例では、PostgreSQLのデータベースに接続する場合で、各項目にPostgreSQL内のデータベースに接続するための設定値の例を入力したものである。入力後、「保存」をクリックする。

各項目の値は、各自によって異なることがあるので注意されたい。

例として、Metabaseの設定情報を管理するデータベースとしてPostgreSQL内のデータベースに接続してみた。

「あなたのデータベースを見ています。」というメッセージが表示される。「X」を押して閉じる。

「データベース」としてMetabase管理画面に登録されました。データベースの「名前(下図では、MyPostgreSQL)」をクリックすることで、設定を編集することができる。右上の「管理画面から離れる」をクリック。

Metabaseのトップ画面では、「データの閲覧」から、接続済みのデータベースを選ぶことで、データベースの各テーブルにアクセスすることができる。

「MyPostgreSQL」をクリックした場合は、「MyPostgreSQL」の名称で接続設定したPostgreSQL内の「Metabase」というデータベースにアクセスし、各テーブルが表示される。テーブル名をクリックすることで、テーブルの中身についてアクセスすることができる。

例として、Metabaseの設定情報を管理するデータベースとしてPostgreSQL内のデータベースに接続してみたところ、Metabaseの情報を管理する各テーブルにアクセスすることができた。

分析用データを格納しておくデータベース用仮想マシンの作成

仮想マシンの用意

例として、仮想環境としてVirtualBoxを使っていますが、他の仮想環境でも構いません。

< 以下は、VirtualBoxを使った場合の例 >

仮想マシンのスペック例

  • OS:Ubutnu Server 22.04 もしくは、20.04

  • 仮想CPU割り当て数 : 1

  • 仮想メモリ割り当て:2048MB(2GB)以上

  • 仮想ディスク:40GB以上

  • ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。

  • デスクトップ環境:なし

  • SSH接続:必須 ( ユーザー名 + パスワードでもOK )

仮想マシンの設定例

  • ホストオンリーアダプタの固定IP例:192.168.125.170

  • Your server’s name (ホスト名):ubunt1pgdb

  • ユーザー名 : vboxuser

  • パスワード:任意のもの

PostgreSQLのインストールと起動

用意したPostgreSQL用の仮想マシンにSSH接続を行い、以下のコマンドを実行する。

PostgreSQLの起動

postgresユーザーに切り替え

PostgreSQLに接続する。

実行結果

データベース操作ユーザーの作成

以下のコマンドを実行して、この後に作成するデータベースを操作するユーザーを作成する。

実行結果

データベースの作成

作成した「testdbuser」をオーナーとしたデータベースを作成する。

実行結果

作業終了なので、以下のコマンドを実行する。

postgres ユーザーから離脱するため、以下のコマンドを実行する。

外部からの接続許可の設定

postgresql.conf の編集

以下のコマンドを実行する。

編集前

編集後

pg_hba.conf の編集

以下のコマンドを実行する。

編集前

編集後

「0.0.0.0/0」とすることで、すべてのネットワークからパスワード接続認証を行うように指定。

PostgreSQLを再起動 & 自動起動設定

以下のコマンドを実行する。

サンプルデータベースのインポート

サンプルデータベースの取得URLをコピー

PostgreSQLのトレーニングコンテンツから、DVDレンタルショップのデータベースサンプルを取得する。

にアクセスし、「Download DVD Rental Sample Database」を右クリック。「dvdrental.zip」をダウンロードURLをコピーする。

サンプルデータベースのダウンロード

ターミナルアプリからデータベース用仮想マシンにSSH接続し、作業用ディレクトリを作成。

サンプルデータベースをダウンロードする。

「dvdrental.zip」が、zipファイルなので、解凍ツールをインストール。

「dvdrental.zip」を解凍する。「dvdrental.tar」が出てくる。これを、PostgreSQLのデータベースにインポートする。

PostgreSQLのデータベースにインポート

取り込むSQLファイルで指定している所有者(例 postgres)無視する「–no-ower」オプション、新しい所有者を指定出来る「–role」オプションを使い、testdbuser を新しい所有者に指定して、インポートする。

エラー等が表示されなければ、インポート完了。Metabaseにデータベースを接続し、取り込んだサンプルデータにアクセスしてみよう。

ハンズオン課題(2)

Metabase環境を起動し、上記で作成した「データベース用仮想マシン」内のPostgerSQLのデータベースに接続してみよう。

Metabaseの画面右上の歯車のアイコンをクリックし、「管理者設定」をクリックする。「Metabase管理者」画面で、「データベース」>>「データベースを追加」の順にクリックすることで、設定画面を呼び出し、下図のように設定することで接続ができる。「ホスト」は、接続するデータベース用仮想マシンの固定IPアドレス。

Metabaseで接続ができると、PostgreSQLのトレーニング用のサンプルデータベースを読み込んだデータベースに接続し、データベースが分析対象になる。追加したデータベースを選択(例 ubunt1pgdb )する。

読み込んだ、サンプルデータベースのテーブルが表示され、テーブル名をクリックすることで、読み込んだサンプルデータを表示することができる。

 

ハンズオン課題(3)

Docker Compose などのコンテナ技術を使わずに、Java環境でMetabaseを起動する際に、PostgreSQLを接続する方法でMetabaseを起動してみよう。Docker Composeで実施したことをコンテナなしで行う。自分でPostgreSQLのインストールができれば、シェルスクリプトをがんばれば実現できるお題。

Metabase公式ドキュメントの「 」の「Production installation」を確認すること。

ビジネス要素

もし、起業等に取り組むのであれば、Metabase については次のようなビジネスが考えられます。

主な顧客の種別は、企業や自治体、教育機関になる。

  • 商習慣や政府系の指示など、Metabaseが提供しているオフィシャルなSaaSを利用できない企業や自治体、教育機関向けのSaaS提供。具体的には、日本国内のデータセンターを使うもの。

  • Metabase、その他BIツールにおいて、ダッシュボードの作成代行、作成支援

  • Metabase、その他BIツールにおいて、データクレンジング

    • データの誤記や未入力、重複等の不備を修正し、データ分析・データ予測を行えるようにすること。

  • DWH(データの倉庫、データウェアハウス)の提供

  • ETL(ELT)ツールの提供

  • 業務において、BIツールを用いたデータ分析予測に関するコンサルティングなど