1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Genie Code時代のDatabricks開発 Declarative Automation BundlesとCI/CDを考える

1
Last updated at Posted at 2026-09-18

Databricksの開発体験は、ここ最近かなり変わってきました。

特に大きいのが Genie Code です。

Genie CodeはDatabricks Workspace上でコードを生成・実行し、エラーのデバッグやPipelineの構築まで行えます。

さらにUnity Catalogのテーブル、カラム、LineageといったDatabricks内部の情報も利用できます。

一方、本番環境まで考えると Declarative Automation Bundles(旧Databricks Asset Bundles) も重要です。

Bundleを使うと、JobやLakeflow PipelineなどのDatabricksリソースをYAMLとしてコード管理できます。

Databricks自身もBundleを、Source Control、Code Review、Test、CI/CDといったSoftware EngineeringのプラクティスをDatabricksプロジェクトへ適用するためのIaCアプローチとして位置付けています。

ここで少し悩ましい問題があります。

Genie Codeを最大限使うならDatabricks Workspace上で開発したい。
しかしIaCやCI/CDを考えると、Gitにあるコードを基準にDatabricks環境を作りたい。

AIを使ったDatabricks開発では、この2つをどう組み合わせるのがよいのでしょうか。


Bundleを使うとDatabricksもコード中心の開発になる

Declarative Automation Bundlesを使うと、例えば次のような構成にできます。

project/
├── databricks.yml
├── resources/
│   ├── jobs.yml
│   └── pipelines.yml
├── src/
│   ├── bronze/
│   │   └── customer.py
│   ├── silver/
│   │   └── customer.py
│   └── gold/
│       └── customer.py
└── tests/
    └── test_customer.py

Bundleでは、

  • Python / SQL
  • Job
  • Pipeline
  • 環境ごとの設定
  • Test

などを1つのプロジェクトとして管理できます。

JobやPipelineの設定もWorkspace上のGUIだけではなく、Repository上のコードになります。

そのため開発フローも、

feature branch
      ↓
実装
      ↓
Test
      ↓
Pull Request
      ↓
Review
      ↓
Merge
      ↓
Bundle Deploy

という一般的なソフトウェア開発に近い形になります。

Databricks環境が必要なIntegration Testについても、必要に応じてtest用targetへBundleをdeployし、CIから実行できます。

重要なのは、

GitにあるコードからDatabricks環境を再現できる状態にしておくこと

です。


そこでGenie Codeをどう使うかが難しい

Genie CodeはDatabricks Workspaceの中で動きます。

そのため、

Databricks Workspace
       ↓
   Genie Code
       ↓
Pipelineを修正
       ↓
実行して確認

という開発体験は非常に便利です。

特にデータエンジニアリングでは、

このテーブルにはどんなデータが入っている?

このPipelineが失敗している原因を調べて

このテーブルを使ってSilverを作って

といった、Databricks環境そのものを見ながら作業したい場面が多くあります。

Genie Codeはコードだけではなく、Unity CatalogやPipelineなどDatabricks内部の情報を利用できるため、このような作業と相性が良いです。

ただ、BundleによるIaCを前提にすると少し考える必要があります。


Workspaceを直接変更するとGitとの役割が曖昧になる

例えばGenie CodeでWorkspace上のPipelineを直接変更したとします。

Genie Code
     ↓
WorkspaceのPipelineを変更
     ↓
動作確認
     ↓
Gitにも変更を反映

これでも開発はできます。

ただしBundleを利用している場合、本来は、

Git
 ↓
Bundle
 ↓
Databricks

という流れでDatabricks環境を作りたいところです。

Workspace上でも変更し、Git上でも変更するようになると、

GitとWorkspaceのどちらが最新なのか

が分かりにくくなります。

例えばWorkspace側だけPipelineを変更した後に、

databricks bundle deploy

を実行すれば、Git側の定義によって変更が上書きされる可能性があります。

そのためBundleを使う場合は、

基本的にはGit側を変更し、Bundleを通してDatabricksへ反映する

という流れにした方がシンプルです。


Workspace内でGit + Bundleを使う方法もある

とはいえ、現在のDatabricksではBundleをWorkspace内で直接作成・編集できます。

Git Folder内にBundleプロジェクトを配置し、

Databricks Workspace

Git Folder
├── databricks.yml
├── resources/
├── src/
└── tests/

という構成にできます。

Databricks公式でも、Workspace上のGit FolderからBundleを作成し、編集・デプロイする方法が提供されています。

つまり、

GitHub
   ↕
Databricks Git Folder
   ↓
Genie Code
   ↓
Bundle

という開発も可能です。

Genie CodeとGit、BundleをすべてDatabricks Workspace内で扱えるので、DatabricksをIDEのように利用する開発スタイルです。

この方法はかなり便利そうです。

ただ、ここで別の選択肢も出てきます。

BundleによってDatabricksの大部分をコード管理するのであれば、Repositoryを直接扱えるCoding Agentで開発してもよいのではないか?

という考え方です。


Codex / Claude Code + Bundleという選択肢

Bundleを採用すると、JobやPipelineを含めてDatabricksプロジェクトの多くがRepository内に入ります。

例えば、

databricks.yml

resources/
  jobs.yml
  pipelines.yml

src/
  bronze/
  silver/
  gold/

tests/

という状態です。

この構成は、CodexやClaude CodeのようなRepository全体を扱うCoding Agentとかなり相性が良いです。

例えば、

customerにcountry_codeを追加する。
Bronze、Silver、Pipeline定義、Testまで必要な変更を行って。

と依頼した場合、

src/bronze/customer.py
        ↓
src/silver/customer.py
        ↓
resources/pipelines.yml
        ↓
tests/test_customer.py

のように、Repository全体を横断して変更できます。

Bundleを使わずWorkspaceのGUIでJobやPipelineを管理していると、Coding Agentからはその設定が見えません。

しかしBundleを利用すれば、

Python
SQL
Job
Pipeline
Test
CI/CD

をRepository側へ寄せることができます。

Databricks自身も現在、外部AI Coding Agent向けのAgent Skillsを提供しています。

Databricks CLIでは、

databricks aitools install

によって、Codex CLI、Claude Code、GitHub CopilotなどにDatabricks用のskillsやpluginsを導入できます。

つまり、

Codex / Claude Code
        ↓
Databricks Agent Skills
        ↓
Bundle / Job / SQL
        ↓
Databricks

という開発方法も、Databricksが公式にサポートし始めています。


Coding AgentとGenie Codeは得意なものが違う

ここまで考えると、Genie CodeとCodex / Claude Codeを競合として考える必要はなさそうです。

大きく分けると、

Coding AgentはRepositoryに強く、Genie CodeはDatabricks環境に強い

と考えると分かりやすいです。

作業 向いているもの
Bundle YAMLの変更 Codex / Claude Code
Repository全体の変更 Codex / Claude Code
Unit Test / Integration Testの実装 Codex / Claude Code
リファクタリング Codex / Claude Code
CI/CDの修正 Codex / Claude Code
実データの調査 Genie Code
Unity Catalogの探索 Genie Code
SQLの試行錯誤 Genie Code
Pipeline実行エラーの調査 Genie Code
Notebookでの分析 Genie Code

例えば、

この変更によって影響するコードを全部修正して

という依頼ならCoding Agentが向いています。

一方、

なぜこのPipelineが遅い?

という調査では、

  • 実データ量
  • Table Schema
  • Unity Catalog
  • Lineage
  • Pipelineの状態

など、Repositoryだけでは分からない情報が必要になります。

このような場面ではGenie Codeの方が自然です。


役割を分けると開発フローがシンプルになる

例えば次のように役割を分けます。

                  Developer
                      │
          ┌───────────┴───────────┐
          │                       │
     Genie Code            Codex / Claude Code
          │                       │
Databricks環境の調査          Repository編集
          │                       │
          └───────────┬───────────┘
                      │
                     Git
                      │
                    Test
                      │
                   Bundle
                      │
                 Databricks

Genie Codeでは、

このテーブルにはどんなデータが入っているか

Pipelineがどこで失敗しているか

どのSQLがボトルネックになっているか

といったDatabricks側の情報を調査する。

その結果をもとに、実際の変更はRepository側で行います。

Codex / Claude Code
        ↓
Git
        ↓
Test
        ↓
Bundle
        ↓
Databricks

こうすればWorkspace上の変更とGit上の変更が混在しにくくなります。


CI/CDもAIが入っても基本は変えない

AI Coding Agentを使ってコードを書くようになっても、CI/CDそのものを変える必要はありません。

例えば、

Developer
    │
Codex / Claude Code
    │
    ▼
feature branch
    │
    ├── Unit Test
    ├── bundle validate
    └── 必要に応じてIntegration Test
    │
    ▼
Pull Request
    │
  Review
    │
    ▼
  Merge
    │
    ▼
GitHub Actions
    │
bundle deploy
    │
    ▼
Databricks

という流れです。

Databricks環境が必要なTestであれば、

CI
 ↓
Bundle test target
 ↓
Integration Test

という構成にできます。

AIがコードを書いたとしても、

AI
 ↓
Git
 ↓
Test
 ↓
Review
 ↓
Bundle
 ↓
Databricks

という流れは変えません。


現時点で考えられる構成

ここまでを整理すると、Databricksのデータ基盤では例えば次のような役割分担が考えられます。

領域 ツール 主な役割
Cloud / Workspace基盤 Terraform Network、IAM、Workspaceなど
Databricksプロジェクト Declarative Automation Bundles Job、Pipeline、コード、環境差分
コード管理 Git Databricks環境を再現するコードを管理
Repository開発 Codex / Claude Code 実装、Bundle、Test、CI/CD
Databricks調査 Genie Code 実データ、Unity Catalog、SQL、Pipelineの調査

開発フローは、

Codex / Claude Code
        ↓
       Git
        ↓
      Test
        ↓
      Review
        ↓
      Bundle
        ↓
    Databricks

を基本にする。

その横でGenie Codeを、

Databricks
     ↕
Genie Code

として使い、Databricks内部の情報が必要な調査やデバッグを担当させます。


まだ開発スタイルは一つに収束していない

現在のDatabricksを見ると、

Genie Code
+
Git Folder
+
Bundle in Workspace

というWorkspace中心の開発を強化しています。

その一方で、

Codex
Claude Code
Cursor
GitHub Copilot
+
Databricks Agent Skills
+
Databricks CLI

という外部Coding Agentからの開発も強化しています。

少なくとも現在の公式機能を見る限り、

Workspace中心で開発する

or

外部Coding Agent中心で開発する

という一つの形にはまだ収束していません。

AIをDatabricks開発のどこに置くかについては、まだ過渡期にあるように見えます。


まとめ

Declarative Automation Bundlesを使うことで、

Python
SQL
Job
Pipeline
Test

といったDatabricksプロジェクトの多くをRepository上のコードとして管理できます。

これはCodexやClaude CodeのようなRepository全体を扱うCoding Agentと非常に相性が良いです。

一方でGenie Codeには、

実データ
Unity Catalog
Lineage
Pipeline
Databricksの実行環境

といった、Repositoryだけでは得られないDatabricks内部のコンテキストがあります。

そのため現時点では、

Codex / Claude CodeはRepositoryを変更する。
Genie CodeはDatabricks環境を調査する。

という役割分担が一つの使いやすい形だと考えています。

そして、どのAIを使う場合でも、

AI
 ↓
Git
 ↓
Test
 ↓
Bundle
 ↓
Databricks

という開発フローを維持しておけば、今後Coding AgentやGenie Codeが進化しても、CI/CD全体を大きく変える必要はありません。

DatabricksのAI開発は、まだちょうど過渡期にいるように感じます。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?