0
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?

Databricks Free Editionで始めるDatabricks Apps

Last updated at Posted at 2025-09-29

こちらのもくもく会で実施いただく流れを説明します。

イントロダクション

データアプリの構築と本番運用は困難でした

  • 複雑 アプリは特殊なリソースに起因したボトルネックを引き起こし、開発のペースをスローにし、長期にわたる維持管理を困難なものにします。
  • 時間の浪費 アプリはレビューや試行錯誤によってデプロイに時間を要し、多くの場合、市場への投入を遅延させます。迅速にデプロイするには、インフラストラクチャは複雑すぎます。
  • 脆弱 背後のデータと個別にアプリを管理することは、面倒でエラーの影響を受けやすいものであり、貧弱なガバナンスやセキュアでないアプリにつながります。

Databricks Appsのご紹介

  • シンプル 他の技術を学ぶのではなく、開発者がすでに知っている技術を用いたシンプルなアプリ開発によって構築を容易にします。
  • プロダクションレディ ITは開発者が構築しているアプリのプロダクションの準備状況に高い自信を持ち、それらをより迅速にデプロイし、クイックに市場に投入します。サーバレスによってインフラの管理は不要です。
  • ビルトインのガバナンス Unity Catalog統合によりデータアプリケーションは本質的にセキュアで、適切に管理され、より優れたセキュリティを提供します。

シンプル

  • Dash、Gradio、Streamlitのような馴染みのあるPythonフレームワークを使用
  • Databricks環境で直接実行し、データやAIモデルへのシームレスなアクセスを実現
  • アプリのディレクトリで検索やフィルタリングを用いることで内部アプリを発見

プロダクションレディ

Screenshot 2025-09-29 at 17.13.42.png

  • アプリは自動で配備されるサーバレスコンピュートで実行され、簡単なデプロイメントを実現
  • Gitバージョン管理とCI/CDパイプラインのビルトインサポート
  • 開発者が特定ユーザーに共有可能なデプロイメント固有のURLを生成

ビルトインのガバナンス

Screenshot 2025-09-29 at 17.14.33.png

  • 正確なデータ権限を保証するきめ細かいアクセスコントロール
  • セキュアなアプリ間通信のための自動管理のサービスプリンシパル
  • シームレスでセキュアなユーザーアクセスのためにOIDC/OAuth 2.0やSSOを活用した自動ユーザー認証

主要コンセプト

Databricks Appsのペルソナ

Screenshot 2025-09-29 at 17.15.09.png

以下のようなケースにDatabricks Apps…

  • ダッシュボードやノートブックでは不十分な時
  • Databricksを離れることなしにお客様データの完全な価値を解放するために
  • Databricksネイティブサービスの上でアプリケーションを構築するために
  • カスタムの機能でDatabricksワークスペースを拡張するために

アプリとは?

(主に)非技術ユーザー向けにデータとカスタムのツールを提供するインタラクティブなプログラムです。

Screenshot 2025-09-29 at 17.16.00.png

ノートブックやダッシュボードがあるのになぜアプリ?

ノートブック: 技術ユーザーにとっては素晴らしいですが、非技術ユーザーにとってはそれほどでもありません
Screenshot 2025-09-29 at 17.16.53.png

ダッシュボード: ビジュアライゼーションは素晴らしいですが、データのインタラクションは限定的で、柔軟性に欠けます
Screenshot 2025-09-29 at 17.17.12.png

以下のようなアプリを構築したいならDatabricks Appsを使いましょう…
Screenshot 2025-09-29 at 17.17.45.png

Databricks Appsユースケース例

Screenshot 2025-09-29 at 17.18.11.png

アーキテクチャ

Screenshot 2025-09-29 at 17.18.39.png

アプリのタイプ

フレームワーク 特徴 適用シーン
Streamlit Pythonネイティブ、簡単 データアプリ、プロトタイプ
Dash 高度なカスタマイズ可能 複雑なダッシュボード
Gradio ML特化、デモ向け MLモデルのUI
Flask/FastAPI 完全カスタム API、複雑なアプリ

リソース

アクセス許可をシンプルにします。

Screenshot 2025-09-29 at 17.21.04.png

  • 指定したリソースへのアクセスを自動で許可
    • アプリをデプロイするユーザーがアクセスを許可する権限を持っている場合
    • サービスプリンシパルに手動で権限を割り当てることも可能
  • リソースはアプリの新環境への移行を容易にします

シークレットの管理

外部サービスへのアクセスにDatabricksシークレット管理を活用します。

Screenshot 2025-09-29 at 17.22.01.png

  • シークレットへのアクセスを自動で許可
    • アプリをデプロイするユーザーがアクセスを許可する権限を持っている場合
    • サービスプリンシパルに手動で権限を割り当てることも可能

テンプレート

GitHub repoでも利用可能です。

Screenshot 2025-09-29 at 17.22.33.png

典型的なコードフロー

Screenshot 2025-09-29 at 17.23.03.png

ログ

pipとアプリの両方から確認できます。

Screenshot 2025-09-29 at 17.24.04.png

  • 標準出力、標準エラーのログ
  • コンピュートが停止すると削除
  • シークレットは検閲
  • デプロイメントタブも見ましょう

ベストプラクティス

問題をデバッグするには? 🪲

コードの失敗

  • Databricks Appsは(まだ)あなたのコード内の論理的な問題を修正することはできません
  • Copilot等のコーディングアシスタントを使用してください
  • アプリはデプロイ前にローカルでテストできます
  • デバッグには標準的なローカルIDEを使用してください
  • 特定の動作をキャッチするために詳細ログを追加ください

環境の設定ミス

  • 起動時に環境変数の利用可能性を確認してください
  • [JS/TSアプリ] CORSが適切に設定されていることを確認してください
  • PATは不要です。 WorkspaceClientを使用すれば、魔法のようにに動作します。

スタートアップコマンドの問題

  • これをローカルのDockerコンテナで実行してください
  • すべての関連ファイルがアップロードされていることを確認してください
  • コマンドが正しいフォルダで実行されることを確認してください
  • 相対パスを確認してください

その他のベストプラクティス

ほとんどのDatabricksベストプラクティスが適用されますが、追加があります。

Databricks

  • 重いデータ処理は、アプリではなく、SQLウェアハウス、ジョブ、モデルサービングで行いましょう。
  • dev、staging、productionを分離するために異なるワークスペースを使いましょう
  • アウトバウンドトラフィックを制限するためにサーバレスエグレスコントロールを使いましょう

ID

  • アプリのCan Manage権限を制限しましょう
  • アプリのサービスプリンシパルに権限を割り当てる際には、最小権限の原則に従いましょう
  • アプリの作成者が退社した場合には、アプリのサービスプリンシパルの資格情報をローテーションしましょう
  • 資格情報を格納、参照するにはシークレットを使いましょう
  • 疑わしいアクティビティのサインの監査ログを監視しましょう

SDLC

  • 異なる環境間でコード & アセットのプロモートにCI/CDを使いましょう
  • クエリーをパラメータ化し、SQLインジェクションに注意しましょう
  • コードの脆弱性を特定するために、regular static application security testing (SAST)を実施しましょう
  • 依存関係における脆弱性を特定し、必要に応じてパッチを当てるために定期的な静的解析を行いましょう
  • お使いのアプリフレームワーク(Gradio, Streamlit, Flask, Dash)に関係するベストプラクティスに従いましょう

参考資料

Databricks Appsのデプロイメント

Screenshot 2025-09-29 at 17.30.25.png

シンプルにするために、今回はローカルIDEでの開発は割愛します。
Screenshot 2025-09-29 at 17.30.49.png

ワークスペースでのコード作成からアプリのデプロイまでをメインとします。
Screenshot 2025-09-29 at 17.31.14.png

Databricks Appsのファイル構造

それぞれのファイルの役割を理解して(バイブ)コーディングしましょう。

my-databricks-app/
│
├── app.py                # 💜 ビジネスロジック(メインアプリケーション)
│                                    # - 環境変数を読み込んで実行
│                                    # - ローカル/本番で同じコード
│
├── databricks.yml  # 💙 リソース宣言(何を使うか)
│                                    # - SQLウェアハウス、シークレット等を定義
│                                    # - デプロイ時の設計図
│
├── app.yaml             # 💚 実行設定(どう動かすか)
│                                     # - 起動コマンド
│                                     # - 環境変数の設定(リソース参照)
│
└── requirements.txt     # 📦 Python依存関係
                         # - 必要なライブラリ

コードでのプラットフォームリソースへのアクセス

SQLウェアハウスのリソースキーを用いて、 app.yaml 設定ファイルでリソースのエントリーを追加します。これは、実際の値ではなくパラメータ値のソースの参照なので、value ではなく valueFrom を使います。

app.yaml
env:
  - name: "DATABRICKS_WAREHOUSE_ID"
    valueFrom: "sql-warehouse"

あなたのアプリのコードでリソースを参照するには、設定されたキー値を参照するためにnameフィールドの値(この例ではDATABRICKS_WAREHOUSE_ID)を使います。

import os
os.getenv('DATABRICKS_WAREHOUSE_ID')

まとめると、

  • app.py: (バイブコーディングの際)アプリケーションロジック、GUIの変更はapp.pyを明示的に編集するようにガイドした方がいいです。
  • databricks.yml: SQLウェアハウスやエンドポイントなどのリソースはこちら。アプリ
    作成時に定義しておく方がいいです。
  • app.yaml: 環境変数はこちら。
  • requirements.txt: ライブラリはこちら。

もくもく会

アプリを作りましょう!

streamlitでいきましょう(他のが慣れている場合にはそちらでも)。

Lakebaseは日本で動かないので以下の順でアプリを作成、デプロイしてみましょう:

  • Hello World
  • Data app
  • Chatbot

Screenshot 2025-09-29 at 17.37.01.png

Free Editionをお使いの場合はアプリの個数に1個という制限があるので都度削除してください。停止ではだめです。

まずは、サイドメニューのコンピュートにアクセスし、アプリタブを開きます。アプリを作成をクリックします。
Screenshot 2025-09-29 at 18.51.43.png

テンプレートからStreamlitを選択し、Hello worldをクリックします。
Screenshot 2025-09-29 at 18.53.22.png

必要に応じて名前や説明文を変更して、インストールをクリックします。
Screenshot 2025-09-29 at 18.54.41.png

アプリの計算リソースがデプロイされるので数分待ちます。
Screenshot 2025-09-29 at 18.55.22.png

デプロイが完了するとアプリにアクセスできるようになります。実行中の右のURLにアクセスしましょう。
Screenshot 2025-09-29 at 19.09.50.png

これで初めてのアプリが動きました!
Screenshot 2025-09-29 at 19.11.06.png

しかし、これだけでは物足りないですよね。せっかくなので機能を変更していきましょう。アプリの画面のデプロイメントのソースをクリックします。上で説明したアプリのコードにアクセスすることができます。app.pyを開くとGUIのコードを確認できます。

app.py
import streamlit as st
import pandas as pd

st.set_page_config(layout="wide")

st.header("Hello world!!!")
apps = st.slider("Number of apps", max_value=60, value=10)
chart_data = pd.DataFrame({'y':[2 ** x for x in range(apps)]})
st.bar_chart(chart_data, height=500, width=min(100+50*apps, 1000), 
             use_container_width=False, x_label="Apps", y_label="Fun with data")

普通であれば、ここから直接Pythonを編集して機能を変更することになります。しかし、今はバイブコーディングが流行りなので、その流れに乗りましょう。

コードを開いた際に右上に4頂点の星のマークと編集があります。これは、Databricksアシスタントを活用できることを意味しています。
Screenshot 2025-09-29 at 19.15.25.png

クリックするとプロンプトの入力ボックスが表示されます。例えば、

日本語表記にして

というプロンプトを入力することで、タイトルなどが日本語に翻訳されます。承認をクリックして提案を確定させます。
Screenshot 2025-09-29 at 19.17.44.png

コードを変更した際には、再度のデプロイが必要となります。アプリの画面にアクセスしてデプロイをクリックします。これによって、変更されたコードがアプリに反映されます。
Screenshot 2025-09-29 at 19.22.55.png

注意
コードの変更が保存されたことを確認してからデプロイを行ってください。以下のようなアイコンが表示されている場合は保存中の状態です。
Screenshot 2025-09-29 at 19.24.43.png

以下のような表示に変わるまで待ってください。
Screenshot 2025-09-29 at 19.26.03.png

プロンプト集

バイブコーディングする際には、app.pyにフォーカスすることをお勧めします。

全般

日本語表記にして

Hello World

irisデータセットを読み込んでstreamlitで可視化

このままではエラーになるはずなのでrequirements.txtscikit-learnを追加してください。

Data app

workspace.default.sales_dataという売上データがあるので売上ダッシュボードにして

アプリのサービスプリンシパルのテーブルやSQLウェアハウスに対するアクセス権を確認下さい。

売上データのテーブルを作りたいなら、ノートブックやSQLエディタでworkspace.default.sales_dataというテーブルを作成。date, category, product, sales_amount, quantityという列を持ち100行のダミーデータを格納というプロンプトを指示しましょう。以下のようなクエリーが生成されるはずです。
Screenshot 2025-09-29 at 19.27.32.png

Chatbot

過去のやり取りを参照できるようにメモリーを搭載してください

まとめ

本記事では、Databricks Free Edition(無料版)でDatabricks Appsを実際に構築・デプロイする手順を解説しました。

Databricks Appsが無料で試せることで、以下のような活用が期待できます:

  • 個人学習: エンタープライズ機能を自己学習で習得
  • プロトタイピング: アイデアを素早く形にして検証
  • 技術評価: 本格導入前の技術検証をリスクなく実施
  • コミュニティ貢献: 作成したアプリを他の学習者と共有

Databricks Appsの一般提供開始により、データアプリケーション開発の敷居が大きく下がりました。Databricks Free Editionという無料の入口があることで、より多くの開発者がDatabricksエコシステムに参加し、データとAIを活用したアプリケーション開発の裾野が広がることが期待されます。

ぜひ皆さんも、まずはFree Editionで気軽にDatabricks Appsを試してみてください!

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
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
0
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?