Lovableとは
Lovableは、自然言語のプロンプトからフルスタックのWebアプリケーションを生成できるAIアプリビルダーです。コードを書くことなく、チャットでAIエージェントに指示するだけで、React/TypeScriptベースのアプリケーションを構築・デプロイできます。Supabaseによるデータベースや認証、GitHubとの連携、ワンクリックデプロイなど、本格的なアプリ開発に必要な機能を備えており、非エンジニアでもアイデアを素早くプロトタイプ化できるプラットフォームとして注目を集めています。
そのLovableがDatabricksとのネイティブ連携に対応しました。LovableからDatabricksのレイクハウスに保存されたデータを直接クエリし、ライブダッシュボードやデータドリブンなアプリを構築できます。
この記事では、DatabricksとLovableの連携手順を、実際にCOVID-19のセマンティックレイヤーダッシュボードを構築する流れに沿って紹介します。
連携の仕組み
LovableのDatabricksコネクタは、OAuth M2M(マシン間)認証を使用します。個々のユーザーとしてではなく、Databricksのサービスプリンシパルを介して接続する仕組みです。
連携により、Lovableアプリから以下のことが可能になります。
- ウェアハウスデータに対するSQLクエリの実行
- SQLウェアハウスの一覧取得と管理
- クラスターの一覧取得
- リアルタイムでデータをクエリするライブダッシュボードの構築
認証情報はLovableのゲートウェイにサーバーサイドで暗号化保存され、ブラウザやフロントエンドコードには公開されません。
前提条件
連携を設定するには、以下が必要です。
- Databricksワークスペース
- ワークスペースへのアクセス権を持つサービスプリンシパル
- サービスプリンシパル用のOAuthシークレット(クライアントIDとシークレットを控えておく)
- 既存のSQLウェアハウス(サービスプリンシパルがアクセス権を持つもの)
- Lovableアカウント
ステップ1: サービスプリンシパルの作成
まず、Databricksワークスペースでサービスプリンシパルを作成します。Lovable専用のサービスプリンシパルを用意することで、アクセス範囲を適切に制御できます。
今回はtaka_lovableというサービスプリンシパルを作成しました。
サービスプリンシパルを作成したら、OAuthシークレットを生成します。シークレットは一度しか表示されないため、必ずこの時点でコピーして安全な場所に保存してください。クライアントIDも控えておきます。
ステップ2: サービスプリンシパルへの権限付与
サービスプリンシパルがデータにアクセスできるよう、必要な権限を付与します。Unity Catalogのスキーマに対して、USE SCHEMA(前提条件)とSELECT、EXECUTE、READ VOLUME(読み取り)の権限を付与します。
今回はCOVID-19のデータが格納されているtakaakiyayoi_catalog.covidスキーマに対して、taka_lovableサービスプリンシパルにデータリーダーの権限プリセットを付与しました。
権限が不足していると、Lovableからテーブルを探索する際にUSE SCHEMAのエラーが発生します。接続前に権限の付与を済ませておきましょう。
ステップ3: Lovableでの接続設定
Lovableのアカウント設定
Lovableにログインし、Settings → Connectors → Shared connectorsからDatabricksを選択します。
Databricksコネクタのページで「+ Add connection」をクリックします。
接続情報の入力
以下の情報を入力します。
-
Display name: 接続の識別名(例:
Takaaki's Databricks) - Workspace URL: DatabricksワークスペースのURL
- Client ID: サービスプリンシパルのOAuthクライアントID
- Client Secret: 生成したOAuthシークレット
「Connect」をクリックすると、Lovableが認証情報を検証し、Databricksワークスペースに接続します。
接続が成功すると、ステータスが「Connected」に変わり、OAuth2 M2Mタイプの接続として表示されます。
ステップ4: Lovableでアプリを構築する
プロンプトの入力
接続が完了したら、Lovableのチャットインターフェースでアプリ構築を指示します。今回は以下のプロンプトを使用しました。
Databricksウェアハウスのセマンティックレイヤーをゼロから構築しましょう。
まずテーブルを探索し、データに対するあなた自身の理解を形成してください。
主要メトリクス、それらが使用するテーブル、各クエリの前提条件についての
分析を示すサンプルダッシュボードを作成してください。それらを一緒に確認し、
間違いがあれば修正していきます。以下のテーブルを主な出発点として使用してください:
takaakiyayoi_catalog.covid.covid_cases_base
Databricksへの接続確認
プロンプトを送信すると、LovableがDatabricksへの接続を求めるダイアログが表示されます。先ほど設定した接続を選択して「Connect」をクリックします。
テーブルの探索
Lovableのエージェントが自動的にテーブルの探索を開始します。SQLウェアハウスの一覧取得、テーブルスキーマの確認、カタログやスキーマの一覧取得など、データを理解するための一連の操作を自律的に実行します。
この過程で権限の問題が発生した場合(今回はUSE SCHEMA権限が不足していました)、エージェントは別のアプローチを試みます。権限を付与した後に再度試行することで、テーブルの探索が成功しました。
ダッシュボードの自動構築
テーブルの探索が完了すると、Lovableは以下の3つのステップでダッシュボードを自動構築しました。
- Databricksクエリのエッジファンクション作成 - Databricks REST APIを呼び出すためのサーバーサイド関数
- COVID-19ダッシュボードUIの構築 - React/TypeScriptベースのダッシュボードコンポーネント
- ダッシュボード用デザインシステムのセットアップ - CSSとスタイリング
完成したダッシュボード
KPIカードとトレンドチャート
完成したダッシュボードには、まず4つのKPIカードが表示されます。
- 累計感染者数: 全都道府県合計で32,010,256件
- 対象都道府県: 47都道府県
- データ期間: 2022/1/1 〜 2023/5/8
- 総レコード数: 23,171件(covid_cases_baseテーブル)
その下には月別感染者数推移のエリアチャートが配置され、感染の波の推移を視覚的に確認できます。
都道府県別ランキングと地方別分布
都道府県別の累計感染者数をTop 15の横棒グラフで表示し、東京、大阪、神奈川がトップ3であることが一目でわかります。
地方別のドーナツチャートでは、関東地方が33%、関西地方が19%、中部地方が16%と、感染者の地域分布を俯瞰できます。
都道府県別詳細テーブル
全47都道府県の累計感染者数と全体比率を地方区分付きで一覧表示するテーブルも生成されました。
セマンティックレイヤー定義
ダッシュボードの各メトリクスについて、使用テーブル、クエリロジック、前提条件を明示するセマンティックレイヤー定義セクションも自動生成されています。たとえば以下のようなメトリクスが定義されています。
累計感染者数 (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都道府県すべてをカバー
データアクセスに関する注意点
サービスプリンシパルの権限設計
Lovableではサービスプリンシパルの権限がそのままデータアクセス範囲になります。接続を使用するすべてのユーザーが同じデータを参照するため、用途別にサービスプリンシパルを分けることが推奨されています。
たとえば以下のような設計が考えられます。
-
databricks-engineering: ウェアハウス全体へのアクセス(エンジニア向け) -
databricks-sales: パイプラインと売上テーブルのみ(営業チーム向け) -
databricks-company: 全社メトリクス(全員向け)
公開アプリのセキュリティ
Lovableでアプリを公開(Publish)すると、アプリのURLを知っていれば誰でもアクセスできます。接続レベルのアクセス制御は、プロジェクトの編集権限を管理するものであり、公開後のアプリへのアクセスは制御しません。機密データを扱う場合は、アプリ側で独自の認証レイヤーを追加する必要があります。
まとめ
LovableとDatabricksの連携により、レイクハウスのデータを活用したアプリやダッシュボードを、コードを書かずに自然言語だけで構築できるようになりました。
今回の検証では、サービスプリンシパルの作成から接続設定、COVID-19データのセマンティックレイヤーダッシュボード構築まで、約15分で完了しました。Lovableのエージェントがテーブルを自律的に探索し、データの理解に基づいてKPIカード、トレンドチャート、ランキング、地方別分布、詳細テーブル、セマンティックレイヤー定義まで自動生成してくれるのは印象的です。
特に、各メトリクスの使用テーブルや前提条件を明示するセマンティックレイヤー定義を自動生成してくれる点は、データの信頼性を確保する上で非常に有用です。
参考リンク
- LovableをDatabricksに接続する(Databricks公式ドキュメント)
- Connect your app to Databricks(Lovable公式ドキュメント)
- サービスプリンシパル
- OAuthを使用してDatabricksへのサービスプリンシパルアクセスを承認する
- Lovable公式サイト















