メインコンテンツに移動

開発

アプリ開発

このページは、Databricks Apps と AppKit の CLI およびワークフローのリファレンスです。プラグインの追加、scaffold、デプロイ、管理、トラブルシューティングまでを解説します。

以下の各コマンドでは、代表的な実行例、利用可能なフラグの一覧、および各フラグの説明表を示します。CLI が信頼できる情報源であるため、フラグの最新の挙動は databricks <command> --help を実行して確認してください。

ローカルセットアップ

npm run dev を実行する前に、.env.example.env にコピーし、ワークスペースの URL とリソース ID を記入してください。AppKit はこれらの値を読み取り、Databricks リソースへのローカル接続に使用します。

Lakebase Postgres を使用するアプリの .env の例:

DATABRICKS_HOST=https://<workspace>.cloud.databricks.com
LAKEBASE_ENDPOINT=projects/<project>/branches/production/endpoints/primary

アプリが Lakebase を使用している場合は、ローカルで実行する前にローカルユーザーにも databricks_superuser ロールを付与してください。スキーマとテーブルは初回デプロイ時にアプリのサービスプリンシパルが作成し、その所有者になります。このロールを付与しないと、ローカルの ID ではこれらのオブジェクトにアクセスできません。

GRANT databricks_superuser TO "<your-email>";

ローカルアクセスのワークフロー全体については、Lakebase 開発を参照してください。

再デプロイせずに本番データに対してテストする方法については、リモートブリッジを参照してください。

プラグインを追加する

既存のアプリにプラグインを追加するには、server/server.tscreateApp でプラグインをインポートして登録します。

import { createApp, genie, lakebase, server } from "@databricks/appkit";

const AppKit = await createApp({
  plugins: [server(), lakebase(), genie()],
});

次に、更新されたリソース要件を反映して appkit.plugins.json を再生成します。

npx @databricks/appkit plugin sync --write

これは npm run dev および npm run build の実行時に自動的に行われます。更新された appkit.plugins.json はコードと一緒にコミットしてください。このファイルによって、デプロイパイプラインはどのリソースをプロビジョニングするかを判断します。

各プラグインの設定オプションについては AppKit プラグインリファレンス を、独自のプラグインを追加する方法については カスタムプラグインの作成 を参照してください。

プラグインを探す

利用可能なプラグインと、それぞれに必要なリソースフィールドを一覧表示します。

databricks apps manifest
オプション説明
--branchGit のブランチまたはタグ (GitHub テンプレートの場合。--version とは併用不可)
--templateテンプレートのパス (ローカルディレクトリまたは GitHub URL)
--versionデフォルト テンプレートで使用する AppKit のバージョン (デフォルト: main、main ブランチを使う場合は 'latest')
--debugデバッグログを有効にする
--output, -o出力形式: text または json (デフォルトは text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット (該当する場合)
--varバンドル設定で定義された変数に値を設定する。例: --var="key=value"

Scaffold オプション

新しい AppKit プロジェクトを scaffold するには、databricks apps init を使用します。最短の手順については Apps クイックスタート を参照してください。非対話的な scaffold や高度な scaffold を行う場合は、以下のオプションを使用します。

databricks apps init --name my-app
オプション説明
--branchGit のブランチまたはタグ (GitHub テンプレートの場合。--version とは排他)
--deploy作成後にアプリをデプロイする
--descriptionアプリの説明
--features有効化する機能/プラグイン (カンマ区切り。テンプレートマニフェストで定義されたもの)
--output-dirプロジェクトの出力先ディレクトリ
--run作成後にアプリを実行する (none、dev、dev-remote)
--setリソースの値を設定する (形式: plugin.resourceKey.field=value。複数指定可)
--skip-installプロジェクトの依存関係のインストール (npm install / uv sync など) をスキップする。--run とは併用不可。
--templateテンプレートのパス (ローカルディレクトリまたは GitHub URL)
--version使用する AppKit のバージョン (デフォルト: 自動検出。main ブランチを使うには 'latest')
--debugデバッグログを有効にする
--output, -o出力形式: text または json (デフォルトは text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット (該当する場合)
--varバンドル設定で定義された変数に値を設定する。例: --var="key=value"

--name を指定するとプロンプトは表示されず、指定しなかったオプションにはデフォルト値が使われます。アプリ名は小文字とハイフンのみで、26 文字以内にする必要があります。利用可能なプラグインとその --set キーを確認するには databricks apps manifest を実行してください。

環境設定

ローカル (npm run dev) : プロジェクトルートの .env で定義した変数が使われます。

デプロイ時: app.yamlenv エントリで定義した変数が使われます。単純な文字列には value、リソースバインディングには valueFrom を指定します:

env:
  - name: LAKEBASE_ENDPOINT
    valueFrom: postgres
  - name: WAREHOUSE_ID
    valueFrom: sql-warehouse
  - name: APP_LOG_LEVEL
    value: info

valueFrom で参照するリソースは databricks.yml で宣言する必要があります。リソースの一覧については 設定 を参照してください。

デプロイ前チェックリスト

本番環境へデプロイする前に、以下を確認してください。

  • アプリが DATABRICKS_APP_PORT0.0.0.0 にバインドしている
  • app.yaml の command が配列構文になっている(シェル文字列ではない)
  • プロジェクト内に 10 MB を超えるファイルがない
  • シークレットに valueFrom を使用している(value は使わない)
  • databricks.yml に必要なリソースがすべて宣言されている
  • databricks apps validate が成功する(--skip-tests を指定するとテストをスキップして実行を短縮できます)
  • ローカルで npm run build が成功する

検証

デプロイ前に、アプリのプロジェクトディレクトリから検証を実行します。

databricks apps validate --profile $DATABRICKS_PROFILE

検証ではビルド、型チェック、リントを実行します。実行時間を短縮するには --skip-tests を指定してください。

デプロイ

databricks apps deploy
オプション説明
--auto-approveデプロイに必要となる可能性のある対話的な承認をスキップします。
--deployment-idデプロイの一意な ID。
--forceGit ブランチの検証を強制的に上書きします。
--git-branchデプロイ元となる Git ブランチ。
--git-commitデプロイ元となる Git コミット SHA。
--git-source-code-pathGit リポジトリ内のアプリソースコードへの相対パス。既定値はリポジトリのルートです。
--git-tagデプロイ元となる Git タグ。
--jsonリクエストボディとしてインライン JSON 文字列または @path/to/file.json を指定 (既定値 JSON (0 bytes))
--modeデプロイがソースコードを管理する方式。サポートされる値: [AUTO_SYNC, SNAPSHOT]
--no-waitSUCCEEDED 状態への到達を待機しません
--skip-tests検証中のテスト実行をスキップします (既定値 true)
--skip-validationプロジェクトの検証 (ビルド、型チェック、lint) をスキップします
--source-code-pathアプリのデプロイ作成に使用するソースコードのワークスペースファイルシステム上のパス。
--timeoutSUCCEEDED 状態に到達するまでの最大待機時間 (既定値 20m0s)
--debugデバッグログを有効にします
--output, -o出力形式: text または json (既定値 text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット (該当する場合)
--varバンドル設定で定義された変数に値を設定します。例: --var="key=value"

CLI は設定を検証し、プロジェクトをビルドしてアップロードしたうえでアプリを起動します。既定では databricks apps validate と同じプロジェクト検証 (ビルド、型チェック、lint) を実行します。この手順をスキップするには --skip-validation を指定してください。scaffold した AppKit プロジェクトからデプロイする場合、--source-code-path の指定は不要です。

デプロイを確認する

アプリが正常にデプロイされたことを確認します。

databricks apps get my-app -o json
オプション説明
--debugデバッグログを有効にする
--output, -o出力形式: text または json (デフォルトは text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット (該当する場合)
--varバンドル設定で定義された変数に値を設定する。例: --var="key=value"
出力例
{
  "name": "my-app",
  "url": "https://my-app-1234567890.us-west-2.databricksapps.com",
  "description": "A Databricks App powered by AppKit",
  "compute_size": "MEDIUM",
  "app_status": {
    "message": "App has status: App is running",
    "state": "RUNNING"
  },
  "compute_status": {
    "message": "App compute is running.",
    "state": "ACTIVE"
  },
  "active_deployment": {
    "deployment_id": "a1b2c3d4e5f6",
    "source_code_path": "/Workspace/Users/you@example.com/.bundle/my-app/default/files",
    "status": {
      "message": "App started successfully",
      "state": "SUCCEEDED"
    }
  },
  "resources": [
    {
      "name": "postgres",
      "postgres": {
        "branch": "projects/my-project/branches/production",
        "database": "projects/my-project/branches/production/databases/db-abc123",
        "permission": "CAN_CONNECT_AND_CREATE"
      }
    }
  ],
  "service_principal_client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

ログの確認:

databricks apps logs my-app
オプション説明
--follow, -f中断されるまでログのストリーミングを継続します。
--tail-linesストリーミング開始前に表示する直近のログ行数。すべて表示する場合は 0 を指定します。(デフォルト 200)
--timeout--follow 指定時にストリーミングを継続する最大時間。0 を指定するとタイムアウトを無効化します。
--searchストリーミング前にログサービスへ検索語を送信します。
--sourceログを APP または SYSTEM のソース(あるいはその両方)に限定します。
--output-file標準出力に加えてログを書き出すファイルパス(任意)。
--debugデバッグログを有効化します
--output, -o出力形式: text または json (デフォルト text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット(該当する場合)
--varバンドル設定で定義された変数に値を設定します。例: --var="key=value"
ログ出力の例
[SYSTEM] [INFO] Starting Databricks Apps runtime...
[SYSTEM] [INFO] Starting deployment a1b2c3d4e5f6...
[SYSTEM] [INFO] Downloading source code from /Workspace/Users/.../src/a1b2c3d4e5f6
[SYSTEM] [INFO] Installing dependencies...
[BUILD] added 899 packages, and audited 900 packages in 21s
[SYSTEM] [INFO] Dependencies installed successfully.
[SYSTEM] [INFO] Running build script npm run build:server && npm run build:client
[BUILD] ✔ Build complete in 30ms
[BUILD] ✓ built in 2.80s
[SYSTEM] [INFO] Build completed successfully.
[SYSTEM] [INFO] Starting app with command: [npm run start]
[APP] [appkit:lakebase] Lakebase pool initialized
[APP] [appkit:server] Server running on http://0.0.0.0:8000
[APP] [appkit:server] Mode: production (static)

アプリの管理

databricks apps stop my-app
databricks apps start my-app
databricks apps delete my-app

apps stop のオプション

オプション説明
--no-waitSTOPPED 状態になるまで待機しない
--timeoutSTOPPED 状態になるまでの最大待機時間(デフォルト 20m0s)
--debugデバッグログを有効にする
--output, -o出力形式: text または json(デフォルト text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット(該当する場合)
--varバンドル設定で定義された変数に値を設定する。例: --var="key=value"

apps start オプション

オプション説明
--no-waitACTIVE 状態になるまで待機しない
--timeoutACTIVE 状態になるまでの最大待機時間(デフォルト 20m0s)
--debugデバッグログを有効にする
--output, -o出力形式: text または json(デフォルト text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット(該当する場合)
--varバンドル設定で定義された変数に値を設定する。例: --var="key=value"

apps delete のオプション

オプション説明
--auto-approveリソースとファイルの削除時の対話的な承認をスキップします
--force-lockデプロイロックを強制的に取得します。
--debugデバッグログを有効にします
--output, -o出力形式: text または json(デフォルトは text)
--profile, -p~/.databrickscfg のプロファイル
--target, -t使用するバンドルターゲット(該当する場合)
--varバンドル設定で定義された変数に値を設定します。例: --var="key=value"

apps delete は確認プロンプトを表示します。CI では --auto-approve を指定してプロンプトをスキップしてください。

CI/CD

CI で自動デプロイを行う場合は、DATABRICKS_HOSTDATABRICKS_TOKEN を設定します (または DATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET を使って OAuth を利用します) :

DATABRICKS_HOST=https://<workspace>.cloud.databricks.com \
DATABRICKS_TOKEN=dapi... \
databricks apps deploy

または、事前に構成済みのプロファイルを使用します。

databricks apps deploy --profile ci-profile

すべての認証方法については、Databricks CLI の認証ドキュメントを参照してください。

トラブルシューティング

その他のトラブルシューティングについては アプリのデプロイ を、ローカル接続の問題については AppKit リモートブリッジ を参照してください。

  • アプリのデプロイに失敗する: ログのエラーメッセージを確認し、app.yaml の構文を検証したうえで、env セクションのシークレットや環境変数が正しく解決されるかを確認してください。依存関係がすべて含まれている、またはインストールされていることも確認します。
  • 401 エラー(認証): トークンが有効であること(databricks auth token --profile <PROFILE>)、有効期限が切れていないこと、必要な OAuth スコープが含まれていることを確認してください。トークンのスコープは、アプリのユーザー認可に設定されたスコープを包含している必要があります。
  • 403 エラー(権限拒否): アプリに対する CAN USE 権限があることを確認してください。権限が十分でも、OAuth スコープが不足していると 403 が発生することがあります。
  • 404 エラー(アプリが見つからない): アプリ名とワークスペース URL が正しいこと、アプリがデプロイされて実行中であること、エンドポイントのパスが存在することを確認してください。
  • Git デプロイに失敗する: プライベートリポジトリの場合は、アプリのサービスプリンシパルに Git 資格情報が設定されているかを確認してください。CLI/API/DABs 経由でデプロイする場合は、先にアプリを作成してから Git 資格情報を追加します。

AppKit ドキュメント

AppKit の API リファレンス、コンポーネントドキュメント、プラグインドキュメントには、ターミナルからアクセスできます。

npx @databricks/appkit docs                        # ドキュメントの索引を表示
npx @databricks/appkit docs --full                 # すべてのAPIエントリを含む完全な索引
npx @databricks/appkit docs "<query-or-doc-path>"  # 特定のセクションまたはファイルを表示

引数なしで実行すると、インデックスを閲覧できます。AI コーディングアシスタントを使って開発する際に便利です。API の形式を推測させるのではなく、ここを参照させるか、本サイトの AppKit リファレンス を参照してください。

次のステップ

テンプレートカタログを見て開発を始めるか、アプリに機能を追加しましょう。永続ストレージには Lakebase Postgres、AI 機能には Agent Bricks を利用できます。

Databricks Developer Hub

次のエージェント型アプリを数分でリリースする準備はできていますか?

ドキュメントを読む