Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めてのDatabricks Apps開発

初めてのDatabricks Apps開発

Databricks Appsのハンズオン資料です。

- イントロダクション
- 主要コンセプト
- デプロイメント
- ベストプラクティス
- Databricks Appsハンズオン
- Q&A

Avatar for Takaaki Yayoi

Takaaki Yayoi

October 19, 2025
Tweet

More Decks by Takaaki Yayoi

Other Decks in Technology

Transcript

  1. ©2025 Databricks Inc. — All rights reserved Databricks Apps 1

    初めてのDatabricks Apps開発 90分で学ぶ基本コンセプトと開発フロー 2025/10/17 Taka Yayoi
  2. ©2024 Databricks Inc. — All rights reserved 自己紹介 弥生 隆明

    (やよい たかあき) シニア スペシャリスト ソリューションアーキテクト ▪ 2020年からデータブリックス ジャパンにお いて、プレセールス、POCに従事 ▪ 生成AI、データエンジニアリング、 アプリが専門領域です。 ▪ 前職はコンサル、総合電機メーカー にてデータ分析・Webサービス構築 などに従事。インド赴任経験あり。 ▪ Databricks Certified (Data Engineer | Machine Learning) Professional, Generative AI Engineer Associate ▪ Qiitaでいろいろ書いています。 2 @taka_aki
  3. ©2025 Databricks Inc. — All rights reserved アジェンダ 3 •

    イントロダクション • 主要コンセプト • デプロイメント • ベストプラクティス • Databricks Appsハンズオン • Q&A
  4. ©2025 Databricks Inc. — All rights reserved アプリは特殊なリソースに起因したボト ルネックを引き起こし、 開発のペースをスローにし、長期にわ

    たる維持管理を困難なものにします。 5 データアプリの構築と本番運用は困難でした アプリはレビューや試行錯誤によって デプロイに時間を要し、 多くの場合、市場への投入を遅延させ ます。迅速にデプロイするには、インフ ラストラクチャは複雑すぎます。 複雑 時間の浪費 背後のデータと個別にアプリを 管理することは、面倒でエラーの影響 を受けやすいものであり、 貧弱なガバナンスやセキュアでないア プリにつながります。 脆弱
  5. ©2025 Databricks Inc. — All rights reserved 他の技術を学ぶのではなく、開発者が すでに知っている技術を用いたシンプ ルなアプリ開発によって構築を容易に

    します。 6 Databricks Appsのご紹介 ITは開発者が構築しているアプリのプ ロダクションの準備状況に高い自信を 持ち、それらをより迅速にデプロイし、 クイックに市場に 投入します。サーバレスによってインフ ラの管理は不要です。 シンプル プロダクションレディ Unity Catalog統合によりデータアプリ ケーションは本質的にセキュアで、適 切に管理され、より優れたセキュリティ を提供します。 ビルトインのガバナンス セキュアなデータアプリケーションをクイックに構築
  6. ©2025 Databricks Inc. — All rights reserved Dash、Gradio、Streamlitのような 馴染みのあるPythonフレームワークを使 用

    Databricks環境で直接実行し、データやAI モデルへのシームレスなアクセスを実現 アプリのディレクトリで検索やフィルタリン グを用いることで内部アプリを発見 シンプル 7
  7. ©2025 Databricks Inc. — All rights reserved アプリは自動で配備されるサーバレス コンピュートで実行され、簡単なデプロ イメントを実現

    Gitバージョン管理とCI/CDパイプライ ンのビルトインサポート 開発者が特定ユーザーに共有可能な デプロイメント固有のURLを生成 プロダクションレディ 8 dev 環境 CI 環境 prod ワーク スペース staging ワーク スペース dev ワーク スペース
  8. ©2025 Databricks Inc. — All rights reserved 正確なデータ権限を保証するきめ細かいアク セスコントロール セキュアなアプリ間通信のための

    自動管理のサービスプリンシパル シームレスでセキュアなユーザー アクセスのためにOIDC/OAuth 2.0やSSOを 活用した自動ユーザー認証 ビルトインのガバナンス 9
  9. ©2025 Databricks Inc. — All rights reserved データサイエンティスト や データアプリ開発者

    によって開発 セールス、マーケティング、財務、 その他の技術者以外のチーム が活用 11 Databricks Appsのペルソナ 󰠁󰞵 󰞴󰠅󰞲󰟻󰥗 👶󰨂
  10. ©2025 Databricks Inc. — All rights reserved 以下のようなケースにDatabricks Apps… •

    ダッシュボードやノートブックでは不十分な時 • Databricksを離れることなしにお客様データの完全な価値を解放するために • Databricksネイティブサービスの上でアプリケーションを構築するために • カスタムの機能でDatabricksワークスペースを拡張するために 12
  11. ©2025 Databricks Inc. — All rights reserved アプリとは? 13 (主に)非技術ユーザー向けに

    データとカスタムのツールを 提供するインタラクティブな プログラムです。 Example Plotly Dash apps
  12. ©2025 Databricks Inc. — All rights reserved ノートブック : 技術ユーザーにとっては素晴らしいです

    が、非技術ユーザーにとってはそれほどでもありません ダッシュボード : ビジュアライゼーションは素晴 らしいですが、データのインタラクションは限 定的で、柔軟性に欠けます ノートブックやダッシュボードがあるのに なぜアプリ? 14
  13. ©2025 Databricks Inc. — All rights reserved 以下のようなアプリを構築したいならDatabricks Appsを使いましょう… …

    and much more! インタラクティブ データアプリ 予測分析 生成AIアプリ 15
  14. ©2025 Databricks Inc. — All rights reserved Databricks Appsユースケース例 16

    インタラクティブ データアプリ MLモデル インタフェース RAG チャットボット ビジネスプロセス 自動化 複雑な可視化 データ収集 フォーム データ / AIの レビュー & 承認 What-if分析 生成AI エージェント ノーコード アプリケーション ビルダー APIのUI などなど…
  15. ©2025 Databricks Inc. — All rights reserved Databricksのジャーニー 🚀 Phase

    1 Spark クラウドにおける 完全なデータ サイエンス環境 どこからきたのか、どこに向かうのか Phase 2 Phase 3 Phase 4 Delta Lake Photon Unity Catalog レイクハウス 生成AI (LLM、エージェント ) Iceberg / UniForm アプリ AIネイティブアプリの開 発 アプリのマーケットプ レース Lakebase (OLTP) アプリによる加速 17
  16. ©2025 Databricks Inc. — All rights reserved アーキテクチャ 18 サーバレスコンピュート

    コントロールプレーン クラシックコンピュート Customer VPC クラスター (ETLやAI) SQL ウェアハウス (DWHやBI) SQLウェアハウス (DWHやBI) Webアプリ Unity Catalog Workflow Manager Compute Manager ユーザー コンピュート ストレージ クラウドストレージ モデルサービング (リアルタイム ) Databricks Apps
  17. ©2025 Databricks Inc. — All rights reserved アプリのタイプ 19 フレームワーク

    特徴 適用シーン Streamlit Pythonネイティブ、簡単 データアプリ、プロトタイプ Dash 高度なカスタマイズ可能 複雑なダッシュボード Gradio ML特化、デモ向け MLモデルのUI Flask/FastAPI 完全カスタム API、複雑なアプリ
  18. ©2025 Databricks Inc. — All rights reserved リソース 指定したリソースへのアクセスを 自動で許可

    • アプリをデプロイするユーザーがアクセスを 許可する権限を持っている場合 • サービスプリンシパルに手動で権限を割り当てる ことも可能 リソースはアプリの新環境への移行を容易にし ます 20 アクセス許可をシンプルに
  19. ©2025 Databricks Inc. — All rights reserved シークレットの管理 シークレットへのアクセスを自動で許可 •

    アプリをデプロイするユーザーがアクセスを許可 する権限を持っている場合 • サービスプリンシパルに手動で権限を 割り当てることも可能 21 外部サービスへのアクセスにDatabricks シークレット管理を活用
  20. ©2025 Databricks Inc. — All rights reserved 典型的なコードフロー 23 Your

    computer dev workspace Databricks App Git prod workspace Databricks App ソースコード ソースコード ソースコード デプロイ databricks sync デプロイ コードのスナップ ショット コードのスナップ ショット
  21. ©2025 Databricks Inc. — All rights reserved ログ 標準出力、標準エラーのログ コンピュートが停止すると削除

    シークレットは検閲 デプロイメントタブも見ましょう 24 pipとアプリの両方から
  22. ©2025 Databricks Inc. — All rights reserved 価格 💰 25

    標準キャパシティ: アプリあたり最大2 CPU • 0.5 DBU/hr • ~$0.375/hr on AWS & GCP • ~$0.475/hr on Azure • 上記の価格はプレミアムプランと新製品 プロモーション割引を反映しています • リージョンと利用可能性は異なる場合あり • 将来、異なるキャパシティを追加する可能性があり ます (4 CPUなど) 注意: アプリは停止するまで実行され続けます アプリのキャパシティに基づく 時間課金 請求には以下のように表示されます: • AWS: All-Purpose Serverless Compute • Azure: Interactive Serverless Compute システムテーブルには、アプリIDを含む各アプリの課 金エントリが記録されます Ref: https://www.databricks.com/product/pricing/compute-for-apps
  23. ©2025 Databricks Inc. — All rights reserved 価格 💰 26

    入力: • アプリ: 1 • Cloud/SKU: AWSプレミアムプラン (時間あたりのアプリキャパシティあたり ~$0.375) • 1日の稼働時間 : 24時間 • 1年の日数: 365 合計年間コストとブレークダウン: 1 x $0.375 x 24 x 365 = $3,285 USD (# Apps x $SKU x hour x days) 考慮事項: • 通常のSKUディスカウントが適用 - PubPr期間中、2025/4/30までは30%のプロモーション ディスカウント • 一般的なサーバレスコスト (ネットワーキング) 1年間1つのDatabricksアプリを実行した際のコストの例
  24. ©2025 Databricks Inc. — All rights reserved 問題をデバッグするには? 🪲 28

    • Databricks Appsは(まだ)あなた のコード内の論理的な問題を修 正することはできません • Copilot等のコーディングアシス タントを使用してください • アプリはデプロイ前に ローカルでテストできます • デバッグには標準的なローカル IDEを使用してください • 特定の動作をキャッチするため に詳細ログを追加ください • 起動時に環境変数の利用可能 性を確認してください • [JS/TSアプリ] CORSが適切に設 定されていることを確認してくだ さい • PATは不要です。 WorkspaceClientを使用すれ ば、魔法のようにに動作します。 • これをローカルのDocker コンテナで実行してください • すべての関連ファイルが アップロードされていることを確 認してください • コマンドが正しいフォルダで実行 されることを確認してください • 相対パスを確認してください コードの失敗 環境の設定ミス スタートアップ コマンドの問題
  25. ©2025 Databricks Inc. — All rights reserved - 異なる環境間でコード &

    アセットの プロモートにCI/CDを使いましょう - クエリーをパラメータ化し、SQL インジェクションに注意しましょう - コードの脆弱性を特定するために、 regular static application security testing (SAST)を実施しましょう - 依存関係における脆弱性を特定し、必要に 応じてパッチを当てるために定期的な静的 解析を行いましょう - お使いのアプリフレームワーク(Gradio, Streamlit, Flask, Dash)に関係する ベストプラクティスに従いましょう ベストプラクティス - アプリのCan Manage権限を制限 しましょう - アプリのサービスプリンシパルに権限を 割り当てる際には、最小権限の原則に従 いましょう - アプリの作成者が退社した場合には、ア プリのサービスプリンシパルの資格情報 をローテーションしましょう - 資格情報を格納、参照するには シークレットを使いましょう - 疑わしいアクティビティのサインの 監査ログを監視しましょう SDLC ID - 重いデータ処理は、アプリでは なく、SQLウェアハウス、ジョブ、 モデルサービングで行いましょう。 - dev、staging、productionを分離する ために異なるワークスペースを使いま しょう - アウトバウンドトラフィックを制限するた めにサーバレスエグレス コントロールを使いましょう Databricks ほとんどのDatabricksベストプラクティスが適用されますが、追加があります 29
  26. ©2025 Databricks Inc. — All rights reserved 参考資料 • Databricks

    Free Editionで始めるDatabricks Apps #DatabricksApps - Qiita • Databricks Apps | Databricks on AWS • Introduction | Databricks Apps Cookbook • databricks/app-templates
  27. ©2025 Databricks Inc. — All rights reserved Databricks Appのデプロイメント 32

    󰠁 ローカルIDEで の開発* 🔺 コードをワーク スペースに アップロード - app.py - app.yaml - requirements.txt (オプション) 🔨 UIでアプリ を作成** 🚛 UIでアプリ をデプロイ ** * ワークスペースエディタも使用可能ですが、推奨度は低いです ** 自動化およびCI/CD目的で利用可能なAPIがあります
  28. ©2025 Databricks Inc. — All rights reserved Databricks Appのデプロイメント 33

    󰠁 ローカルIDEで の開発* 🔺 コードをワーク スペースに アップロード - app.py - app.yaml - requirements.txt (オプション) 🔨 UIでアプリ を作成** 🚛 UIでアプリ をデプロイ ** * ワークスペースエディタも使用可能ですが、推奨度は低いです ** 自動化およびCI/CD目的で利用可能なAPIがあります 今日は割愛
  29. ©2025 Databricks Inc. — All rights reserved Databricks Appのデプロイメント 34

    󰠁 ローカルIDEで の開発* 🔺 ワークスペース でコードを作成 - app.py - app.yaml - requirements.txt (オプション) 🔨 UIでアプリ を作成** 🚛 UIでアプリ をデプロイ ** * ワークスペースエディタも使用可能ですが、推奨度は低いです ** 自動化およびCI/CD目的で利用可能なAPIがあります 今日のメイン
  30. ©2025 Databricks Inc. — All rights reserved Databricks Appsのファイル構造に注意が必要 無邪気にすべてのファイルをVibe

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

    SQLウェアハウスのリソースキーを用いて、 app.yaml 設定ファイルでリソースのエントリーを追加します。これは、実際の値 ではなくパラメータ値のソースの参照なので、 value ではなく valueFrom を使います。 YAML env: - name: "DATABRICKS_WAREHOUSE_ID" valueFrom: "sql-warehouse" 2. あなたのアプリのコードでリソースを参照するには、設定されたキー値を参照するために nameフィールドの値(この例では DATABRICKS_WAREHOUSE_ID)を使います。 Python import os os.getenv('DATABRICKS_WAREHOUSE_ID' ) 36
  32. ©2025 Databricks Inc. — All rights reserved Databricks Appsのファイル構造に注意が必要 無邪気にすべてのファイルをVibe

    Codingするとアプリが壊れます 37 my-databricks-app/ │ ├── app.py # 💜 ビジネスロジック(メインアプリケーション) │ # - 環境変数を読み込んで実行 │ # - ローカル/本番で同じコード │ ├── databricks.yml # 💙 リソース宣言(何を使うか) │ # - SQLウェアハウス、シークレット等を定義 │ # - デプロイ時の設計図 │ ├── app.yaml # 💚 実行設定(どう動かすか) │ # - 起動コマンド │ # - 環境変数の設定(リソース参照) │ └── requirements.txt # 📦 Python依存関係 # - 必要なライブラリ アプリケーションロジック、 GUIの変更 はapp.pyを明示的に編集するように ガ イドした方がいいです 環境変数はこちら ライブラリ SQLウェアハウスやエンドポイントなど のリソースはこちら。アプリ 作成時に定義しておく方がいいです
  33. ©2025 Databricks Inc. — All rights reserved アプリを作りましょう! 39 Lakebaseは日本で動かないので

    以下の順でアプリを作成、デプロイ してみましょう: • Hello World • Data app • Chatbot Free Editionをお使いの場合はアプリ の個数に1個という制限 があるので 都度削除してください。停止では だめです。 streamlitでいきましょう(他のが慣れている場合にはそちらでも)。
  34. ©2025 Databricks Inc. — All rights reserved プロンプト集 40 全般

    • 日本語表記にして Hello World • irisデータセットを読み込んでstreamlitで可視化 • このままではエラーになるはずなのでrequirements.txtにscikit-learnを追加 app.pyにフォーカスすることをお勧めします
  35. ©2025 Databricks Inc. — All rights reserved プロンプト集 41 Data

    app • workspace.default.sales_dataという売上データがあるので売上ダッシュボー ドにして • SPのテーブルやSQLウェアハウスへのアクセス権を確認下さい。 • 売上データのテーブルを作りたいなら「workspace.default.sales_dataという テーブルを作成。date, category, product, sales_amount, quantityという列 を持ち100行のダミーデータを格納」 Chatbot • システムプロンプトを設定できるようにしてください。システム プロンプトを毎リクエスト時に先頭へ差し込む方式にしてください。 app.pyにフォーカスすることをお勧めします