2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lovable × Databricks連携でノーコードのセマンティックレイヤーダッシュボードを構築する

2
Posted at

Lovableとは

Lovableは、自然言語のプロンプトからフルスタックのWebアプリケーションを生成できるAIアプリビルダーです。コードを書くことなく、チャットでAIエージェントに指示するだけで、React/TypeScriptベースのアプリケーションを構築・デプロイできます。Supabaseによるデータベースや認証、GitHubとの連携、ワンクリックデプロイなど、本格的なアプリ開発に必要な機能を備えており、非エンジニアでもアイデアを素早くプロトタイプ化できるプラットフォームとして注目を集めています。

Screenshot 2026-04-15 at 9.42.20.png

そのLovableがDatabricksとのネイティブ連携に対応しました。LovableからDatabricksのレイクハウスに保存されたデータを直接クエリし、ライブダッシュボードやデータドリブンなアプリを構築できます。

この記事では、DatabricksとLovableの連携手順を、実際にCOVID-19のセマンティックレイヤーダッシュボードを構築する流れに沿って紹介します。

連携の仕組み

LovableのDatabricksコネクタは、OAuth M2M(マシン間)認証を使用します。個々のユーザーとしてではなく、Databricksのサービスプリンシパルを介して接続する仕組みです。

連携により、Lovableアプリから以下のことが可能になります。

  • ウェアハウスデータに対するSQLクエリの実行
  • SQLウェアハウスの一覧取得と管理
  • クラスターの一覧取得
  • リアルタイムでデータをクエリするライブダッシュボードの構築

認証情報はLovableのゲートウェイにサーバーサイドで暗号化保存され、ブラウザやフロントエンドコードには公開されません。

前提条件

連携を設定するには、以下が必要です。

ステップ1: サービスプリンシパルの作成

まず、Databricksワークスペースでサービスプリンシパルを作成します。Lovable専用のサービスプリンシパルを用意することで、アクセス範囲を適切に制御できます。

今回はtaka_lovableというサービスプリンシパルを作成しました。

Screenshot 2026-04-15 at 9.40.15.png

サービスプリンシパルを作成したら、OAuthシークレットを生成します。シークレットは一度しか表示されないため、必ずこの時点でコピーして安全な場所に保存してください。クライアントIDも控えておきます。

Screenshot 2026-04-15 at 9.41.03.png

ステップ2: サービスプリンシパルへの権限付与

サービスプリンシパルがデータにアクセスできるよう、必要な権限を付与します。Unity Catalogのスキーマに対して、USE SCHEMA(前提条件)とSELECT、EXECUTE、READ VOLUME(読み取り)の権限を付与します。

今回はCOVID-19のデータが格納されているtakaakiyayoi_catalog.covidスキーマに対して、taka_lovableサービスプリンシパルにデータリーダーの権限プリセットを付与しました。

Screenshot 2026-04-15 at 9.49.35.png

権限が不足していると、Lovableからテーブルを探索する際にUSE SCHEMAのエラーが発生します。接続前に権限の付与を済ませておきましょう。

ステップ3: Lovableでの接続設定

Lovableのアカウント設定

Lovableにログインし、Settings → Connectors → Shared connectorsからDatabricksを選択します。

Screenshot 2026-04-15 at 9.43.01.png

Databricksコネクタのページで「+ Add connection」をクリックします。

Screenshot 2026-04-15 at 9.43.08.png

接続情報の入力

以下の情報を入力します。

  • Display name: 接続の識別名(例: Takaaki's Databricks)
  • Workspace URL: DatabricksワークスペースのURL
  • Client ID: サービスプリンシパルのOAuthクライアントID
  • Client Secret: 生成したOAuthシークレット

Screenshot 2026-04-15 at 9.43.38.png

「Connect」をクリックすると、Lovableが認証情報を検証し、Databricksワークスペースに接続します。

Screenshot 2026-04-15 at 9.43.49.png

接続が成功すると、ステータスが「Connected」に変わり、OAuth2 M2Mタイプの接続として表示されます。

ステップ4: Lovableでアプリを構築する

プロンプトの入力

接続が完了したら、Lovableのチャットインターフェースでアプリ構築を指示します。今回は以下のプロンプトを使用しました。

Databricksウェアハウスのセマンティックレイヤーをゼロから構築しましょう。
まずテーブルを探索し、データに対するあなた自身の理解を形成してください。
主要メトリクス、それらが使用するテーブル、各クエリの前提条件についての
分析を示すサンプルダッシュボードを作成してください。それらを一緒に確認し、
間違いがあれば修正していきます。以下のテーブルを主な出発点として使用してください:
takaakiyayoi_catalog.covid.covid_cases_base

Screenshot 2026-04-15 at 9.46.26.png

Databricksへの接続確認

プロンプトを送信すると、LovableがDatabricksへの接続を求めるダイアログが表示されます。先ほど設定した接続を選択して「Connect」をクリックします。

Screenshot 2026-04-15 at 9.46.44.png

テーブルの探索

Lovableのエージェントが自動的にテーブルの探索を開始します。SQLウェアハウスの一覧取得、テーブルスキーマの確認、カタログやスキーマの一覧取得など、データを理解するための一連の操作を自律的に実行します。

Screenshot 2026-04-15 at 9.51.01.png

この過程で権限の問題が発生した場合(今回はUSE SCHEMA権限が不足していました)、エージェントは別のアプローチを試みます。権限を付与した後に再度試行することで、テーブルの探索が成功しました。

ダッシュボードの自動構築

テーブルの探索が完了すると、Lovableは以下の3つのステップでダッシュボードを自動構築しました。

  1. Databricksクエリのエッジファンクション作成 - Databricks REST APIを呼び出すためのサーバーサイド関数
  2. COVID-19ダッシュボードUIの構築 - React/TypeScriptベースのダッシュボードコンポーネント
  3. ダッシュボード用デザインシステムのセットアップ - CSSとスタイリング

Screenshot 2026-04-15 at 9.51.01.png

完成したダッシュボード

KPIカードとトレンドチャート

完成したダッシュボードには、まず4つのKPIカードが表示されます。

  • 累計感染者数: 全都道府県合計で32,010,256件
  • 対象都道府県: 47都道府県
  • データ期間: 2022/1/1 〜 2023/5/8
  • 総レコード数: 23,171件(covid_cases_baseテーブル)

その下には月別感染者数推移のエリアチャートが配置され、感染の波の推移を視覚的に確認できます。

Screenshot 2026-04-15 at 9.54.50.png

都道府県別ランキングと地方別分布

都道府県別の累計感染者数をTop 15の横棒グラフで表示し、東京、大阪、神奈川がトップ3であることが一目でわかります。

地方別のドーナツチャートでは、関東地方が33%、関西地方が19%、中部地方が16%と、感染者の地域分布を俯瞰できます。

Screenshot 2026-04-15 at 9.54.58.png

都道府県別詳細テーブル

全47都道府県の累計感染者数と全体比率を地方区分付きで一覧表示するテーブルも生成されました。

Screenshot 2026-04-15 at 9.55.08.png

セマンティックレイヤー定義

ダッシュボードの各メトリクスについて、使用テーブル、クエリロジック、前提条件を明示するセマンティックレイヤー定義セクションも自動生成されています。たとえば以下のようなメトリクスが定義されています。

累計感染者数 (covid_cases_base)

SUM(Cases)

前提条件:

  • Casesは日別・都道府県別の新規感染者数
  • 重複カウントなし(日×都道府県でユニーク)

月別感染者数推移 (covid_cases_base)

SUM(Cases) GROUP BY DATE_TRUNC('month', date_timestamp)

前提条件:

  • date_timestampはUTCタイムスタンプ
  • 月の区切りはUTC基準

都道府県別累計 (covid_cases_base + pref_area)

SUM(Cases) GROUP BY Prefecture, LEFT JOIN pref_area ON Prefecture

前提条件:

  • Prefecture名は両テーブルで一致(英語表記)
  • pref_areaは47都道府県すべてをカバー

Screenshot 2026-04-15 at 9.54.33.png

データアクセスに関する注意点

サービスプリンシパルの権限設計

Lovableではサービスプリンシパルの権限がそのままデータアクセス範囲になります。接続を使用するすべてのユーザーが同じデータを参照するため、用途別にサービスプリンシパルを分けることが推奨されています。

たとえば以下のような設計が考えられます。

  • databricks-engineering: ウェアハウス全体へのアクセス(エンジニア向け)
  • databricks-sales: パイプラインと売上テーブルのみ(営業チーム向け)
  • databricks-company: 全社メトリクス(全員向け)

公開アプリのセキュリティ

Lovableでアプリを公開(Publish)すると、アプリのURLを知っていれば誰でもアクセスできます。接続レベルのアクセス制御は、プロジェクトの編集権限を管理するものであり、公開後のアプリへのアクセスは制御しません。機密データを扱う場合は、アプリ側で独自の認証レイヤーを追加する必要があります。

まとめ

LovableとDatabricksの連携により、レイクハウスのデータを活用したアプリやダッシュボードを、コードを書かずに自然言語だけで構築できるようになりました。

今回の検証では、サービスプリンシパルの作成から接続設定、COVID-19データのセマンティックレイヤーダッシュボード構築まで、約15分で完了しました。Lovableのエージェントがテーブルを自律的に探索し、データの理解に基づいてKPIカード、トレンドチャート、ランキング、地方別分布、詳細テーブル、セマンティックレイヤー定義まで自動生成してくれるのは印象的です。

特に、各メトリクスの使用テーブルや前提条件を明示するセマンティックレイヤー定義を自動生成してくれる点は、データの信頼性を確保する上で非常に有用です。

参考リンク

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?