はじめに
「毎週の売上をSQLで抽出して、スプレッドシートに貼り付けてグラフを作り直す」——こんな作業を繰り返していないでしょうか。TableauやLooker Studioは強力ですが、有償プランやライセンス、あるいはデータを外部SaaSに預ける前提が導入のハードルになることも少なくありません。
Chartbrewは、SQL・NoSQLデータベースやREST APIから直接データを取得し、そのままチームで共有できるダッシュボードに変えられるオープンソースのレポーティングプラットフォームです。自分たちのサーバーにホストできるため、データを外部に出さずに運用できるのも大きな利点です。
この記事では、Chartbrewの特徴からインストール方法、実際にダッシュボードを組み立てるまでの流れを解説します。
Chartbrewとは
Chartbrewは「APIやSQL・NoSQLデータベースから、ライブなダッシュボードを構築・共有できるオープンソースのレポーティングプラットフォーム」です。GitHub上で公開されており、React・ReduxベースのフロントエンドとNode.js製のバックエンドで構成されるフルスタックのWebアプリケーションとして提供されています。
Metabaseやredashと同じ「セルフホスト型BIツール」の系譜に位置しますが、ChartbrewはAPIエンドポイントからのデータ取得やチャートの埋め込み共有に強みを持つのが特徴です。
主な特徴
- 多様なデータソースへの対応 - MySQL、PostgreSQL、MongoDB、Firestoreに加え、REST APIをクエリエディタで直接叩いてグラフ化できます
- チャートの埋め込み共有 - 作成したチャートをiframeとして外部サイトに埋め込んだり、公開URLで共有したりできます
- スケジュール更新 - データソースへの再取得タイミングをスケジューリングし、ダッシュボードを自動で最新化できます
- AIアシスタント - 自然言語での質問からクエリやチャートの提案を受けられるアシスタント機能を搭載しています
- チームでの共同作業 - プロジェクト単位でメンバーを招待し、権限を分けてダッシュボードを管理できます
インストール
Chartbrewはブラウザ上で完結するライブラリではなく、Node.js製のバックエンドとMySQLまたはPostgreSQL、Redisを必要とするセルフホスト型アプリケーションです。手元で試す場合は、Dockerイメージを使うのが最も手軽です。
docker run -d \
-p 4018:4018 -p 3210:3210 \
-e CB_ENCRYPTION_KEY="your-encryption-key" \
-e CB_DB_HOST="your-db-host" \
-e CB_DB_NAME="chartbrew" \
-e CB_DB_USERNAME="your-db-username" \
-e CB_DB_PASSWORD="your-db-password" \
-e CB_REDIS_HOST="your-redis-host" \
-e CB_API_HOST="0.0.0.0" \
-e CB_API_PORT=4019 \
razvanilin/chartbrew
ソースコードから直接動かしたい場合は、リポジトリをクローンしてセットアップスクリプトを実行します。
git clone https://github.com/chartbrew/chartbrew.git
cd chartbrew
npm run setup
# フロントエンド
cd client && npm start
# バックエンド(別ターミナル)
cd server && npm run start-dev
このほか、DigitalOceanのマーケットプレイスからワンクリックでデプロイする方法も用意されています。本番運用ではRedisとMySQL/PostgreSQLを別途用意し、環境変数で接続情報を渡す構成が基本です。
基本的な使い方
Chartbrewでダッシュボードを作る流れは、大きく分けて「プロジェクト作成」「データソース接続」「チャート作成」の3ステップです。
まずプロジェクトを作成し、その中にデータソース(Connection)を登録します。SQLデータベースであれば接続情報を入力するだけで、Chartbrewの管理画面からテーブルを参照しながらクエリを組み立てられます。
-- Connection作成後、クエリエディタでこのようなSQLを実行してチャート化できる
SELECT
DATE(created_at) AS day,
COUNT(*) AS signups
FROM users
WHERE created_at >= NOW() - INTERVAL 30 DAY
GROUP BY day
ORDER BY day;
クエリを実行すると結果セットがプレビューされ、そのまま棒グラフ・折れ線グラフ・円グラフなどのチャートタイプを選んで可視化できます。作成したチャートはダッシュボード上に自由に配置し、複数のチャートを組み合わせた1画面のレポートとして仕上げられます。
実践的なユースケース
REST APIをデータソースにする
社内向けのSaaSやマイクロサービスがREST APIを公開している場合、Chartbrewはそのレスポンスを直接グラフ化できます。データベースに接続できない外部サービスの指標を可視化したいときに便利なパターンです。
{
"connection": {
"type": "api",
"host": "https://api.example.com",
"options": [
{ "key": "Authorization", "value": "Bearer {{env.API_TOKEN}}" }
]
},
"dataset": {
"route": "/v1/orders?status=completed",
"method": "GET",
"fieldsToChart": {
"x": "created_at",
"y": "total_amount"
}
}
}
APIキーはConnectionの設定画面で暗号化して保存され、クエリ結果に含まれるJSONの任意のフィールドをX軸・Y軸に割り当ててチャート化できます。エンドポイントを変えるだけで、複数のマイクロサービスの指標を1つのダッシュボードにまとめられるのが強みです。
チャートを外部サイトに埋め込む
作成したチャートは、社内Wikiやランディングページなど外部のHTMLにそのまま埋め込めます。ステークホルダーにChartbrewのアカウントを発行せずに指標を共有したい場面で使うパターンです。
<iframe
src="https://your-chartbrew-instance.com/chart/123/embedded"
width="600"
height="400"
frameborder="0"
></iframe>
埋め込みURLはチャートごとに発行され、元データが更新されればスケジュール設定に従って埋め込み先の表示も自動的に更新されます。
スケジュール更新で常に最新化する
日次・週次のレポートを毎回手動更新するのは手間がかかります。Chartbrewはデータセットごとに更新間隔を設定でき、決まった時間にクエリを再実行してダッシュボードを最新の状態に保てます。
{
"dataset": "daily_signups",
"updateSchedule": {
"frequency": "daily",
"timezone": "Asia/Tokyo",
"time": "09:00"
}
}
朝会の前に自動更新を済ませておけば、その場でクエリを叩き直す必要がなくなり、レポート担当者の作業時間を削減できます。
まとめ
Chartbrewは、SQL・NoSQLデータベースやREST APIのデータを、コードを書かずにライブなダッシュボードへ変換できるオープンソースのレポーティングプラットフォームです。セルフホストできるためデータを外部に出さずに済み、埋め込み共有やスケジュール更新といった実務で使う機能も一通り揃っています。
BIツールの導入コストや外部SaaSへのデータ提供に抵抗があるなら、まずはDockerで手元に立ち上げて、社内の1つのSQLクエリをダッシュボード化するところから試してみてはいかがでしょうか。