newmo 技術ブログ

技術で地域をカラフルに

BI as Code で「確かな数字」を届けるために

はじめに

newmo では BI ツールとして Lightdash を導入しました。この記事はなぜ BI as Code をやるのか、その背景にある思いを書いています。ツールの使い方や導入手順の紹介ではありません。

GUI ベースの BI ツールで運用してきた中で感じた課題、データエンジニアリングにおけるソフトウェアエンジニアリングの原則の重要性、そして AI 時代における「確かな数字」の必要性について、newmo のデータ基盤担当者の視点からお伝えします。

「数字、合ってる?」という不安

newmo ではKPI や経営レポートなど、重要な数字を GUI ベースの BI ツールで可視化・共有してきました。最初はそれで十分でした。事業が拡大するにつれて、ある種の不安が静かに広がり始めました。

「この数字、合ってる?」

ダッシュボードの数字を見て、そう感じたことがある人は少なくないと思います。newmo でもまさにその状態でした。

複数のレポートが存在し、それぞれが微妙に異なるロジックで同じ指標を集計している。どれが正しいのかわからない。あるレポートでは売上を二重にカウントしていたことが後から発覚したこともありました。

GUI ベースの BI ツールには構造的な問題があります。

  • 変更管理ができない — いつ誰が何を変えたか追えない
  • 壊れやすい — データソースやカラム名の変更でダッシュボードが壊れ、原因特定に時間がかかる
  • レビューできない — 変更に対して PR レビューする手段がない
  • 属人化する — 作った人にしかロジックがわからない

ダッシュボードの数字がサイロ化し、微妙にロジックが違う。それは単なる技術的な不便さではなく、意思決定の土台が揺らいでいるということです。経営会議でも KPI 可視化の改善が課題として認識されるようになりました。

BI 周りの運用が特定の人に依存している状況を、いずれは是正しなければいけない。そういう危機感がずっとありました。

そしていま、状況はさらに複雑になっています。AI に聞けばアドホックに集計してそれらしい数字を出してくれる時代です。誰でも「それっぽい数字」を手に入れられます。管理されたダッシュボードの数字と、AI がその場で出した数字。どちらが正しいのか判断できないという新たな混乱が生まれつつあります。

「この数字が正しい」と胸を張って言える、道標のような確かな数字。それがいま、これまで以上に求められています。

データエンジニアリングもソフトウェアエンジニアリングである

ここで一歩引いて考えたいのは、データエンジニアリングやアナリティクスエンジニアリングは、ソフトウェアエンジニアリングの一領域であるということです。

ソフトウェアエンジニアリングでは当たり前とされていることがあります。

  • コードはバージョン管理する
  • 変更にはレビューを通す
  • テストを書く
  • CI/CD でデプロイする

これらはソフトウェアの品質と信頼性を担保するための基本的なプラクティスです。

では、BI やダッシュボードはどうか。

GUI でポチポチしてダッシュボードを作る行為は、構造的に言えば 本番サーバーに SSH して直接コードを書き換えているのと同じ です。変更履歴はない。レビューもない。テストもない。壊れたら作った人に聞くしかない。

データエンジニアリングだからといって、この基本を省略していい理由はありません。dbt が SQL のパイプラインにソフトウェアエンジニアリングのプラクティスを持ち込んだように、BI の領域にも同じことが必要です。

BI as Code — ダッシュボードの定義をコードで管理し、PR レビューと CI/CD のフローに載せる。それは新しい概念ではなく、ソフトウェアエンジニアリングの基本に立ち返るということに他なりません。

AI 時代に GUI ポチポチは持続しない

もう1つ、避けて通れないことがあります。

AI がコードを書き、PR を出し、レビューする。それはもう未来の話ではありません。

では、BI の世界はどうか。

GUI に閉じた定義では、バージョン管理・レビュー・CI/CD、そして AI の活用に載せられません。コードで定義されて初めて、そのすべてが可能になります。

逆に、メトリクスの定義が dbt の YAML にコードとして書かれていればどうでしょう。AI はその定義を理解し、新しいダッシュボードの提案や既存定義との整合性チェックが可能になります。

セマンティックレイヤーを整備し、指標の定義をコードで管理することは、人間のためだけではなく、AI と協働するための基盤づくりでもあるのです。

「定義はコードで、利用は自由に」

BI as Code を目指す中で、いくつかのツールを検討しました。可視化までコードで完結するアプローチもありますが、非エンジニアが置き去りになります。

私たちがたどり着いたのは 「定義はコードで管理し、利用は GUI で自由に」 という棲み分けの思想です。

  • データチーム がメトリクスの定義(KPI の計算式、ディメンション)を dbt YAML に書く。Git で管理し、PR レビューを経て CI/CD で自動デプロイする
  • ダッシュボード利用者 は、定義済みのメトリクスを GUI で組み合わせてダッシュボードを作る

この思想にもっとも合致したのが Lightdash でした。

Lightdash は dbt プロジェクトにネイティブ接続する OSS の BI ツールです。MIT ライセンスで、セルフホストが可能。dbt のモデル YAML にメトリクスを定義するだけで、Lightdash 上で探索・可視化ができます。さらに Dashboards as Code として、ダッシュボードやチャートの定義を YAML でエクスポート・インポートし、Git 管理できます。

newmo では Lightdash を Cloud Run 上にセルフホストし、既存の dbt + BigQuery パイプラインに接続しています。重要なダッシュボードは YAML でコード管理し、PR レビューを経て main マージで自動デプロイされます。

数字に責任を持つということ

Lightdash の導入は、ツールの入れ替えではありません。数字に対する責任の持ち方を変えるということです。

newmo では、Lightdash と既存の BI ツールを以下のように棲み分けていく予定です。

newmo のデータパイプライン構成図: AlloyDB → Datastream → BigQuery → dbt から Lightdash(保証された数字)と既存 BI ツール(参考値)に分岐する
newmo のデータパイプライン

  • Lightdash — 重要な KPI・経営レポート。作成メンバーは限られ、厳密なレビューを経て公開される「保証された数字」
  • 既存の BI ツール — アドホックな分析・一時的な可視化。各自の責任で自由に使う。ただし数字はあくまで「参考値」

「保証された数字」と「参考値」を明確に分けること。これが、サイロ化を防ぎ、意思決定の土台を守るための仕組みです。

そして、保証するためには仕組みが必要です。

  • メトリクスの定義は dbt YAML で一元管理し、Git でバージョン管理する
  • ダッシュボードの変更は PR レビューを経る
  • lightdash previewlightdash validate でダッシュボードの破損を CI で自動検知する
  • CI/CD で自動デプロイし、人手による反映ミスを防ぐ

これが、「保証された数字」を実現するための具体的な仕組みです。

これから

Lightdash の導入はまだ始まったばかりです。最初のダッシュボードとしてタクシー営業レポートを移行し、Slack への日次配信も動き始めたところです。

AI に聞けばアドホックに集計してそれらしい数字を出してくれる時代です。誰でも「それっぽい数字」を手に入れられます。だからこそ、「これが正しい」と胸を張って言える道標のような数字が必要になります。レビューを経て、定義が透明で、再現性のある数字。それが組織の意思決定を支える土台になると思っています。

過去の失敗があるからこそ、今度はソフトウェアエンジニアリングの原則に則って進めます。一人で抱え込まず、チームで Enabling していく。

まだ道半ばですが、「この数字、合ってる?」という不安を、「この数字は合っている」という確信に変えていきます。


書いた人: ota2000