インテージテクノスフィア技術ブログ

株式会社インテージテクノスフィアの社員達がシステム開発や仕事に関する技術情報を随時掲載いたします

Databricksの勉強用アプリを作ってDatabricks上で動かしてみた

Databricksを触っていると、「ノートブックで分析する」「ジョブで処理を回す」まではよくあるけれど、 “Databricks上でアプリを動かす” という体験は意外としたことがない人も多いのではないでしょうか。

Databricksのアプリ機能(Apps)は、StreamlitのようにPythonだけで手軽にUIを構築でき、しかもそのままワークスペース内で動かすことができます。

「アプリとして動かすとどう見えるのか」「どこにハマるのか」「権限の注意はあるのか」── そういった素朴な疑問を確かめながら、勉強ついでに楽しめる題材としてDatabricksに関する勉強用のアプリを作ってみました。

今回はその過程を簡単にまとめつつ、Databricks上でアプリを動かしてみて感じたことを紹介します。

アプリの概要

みなさんこんにちは、インテージテクノスフィアの若宮です。

今回、Databricks上でAppsを動かしてみるにあたって、載せるアプリを何にするか悩んだのですが、せっかくならばDatabricksにちなんだアプリにしようと思い、Databricks認定試験の学習を目的としたアプリを作ってみました。

裏側としては、Databricksのデルタテーブルに登録した練習問題を読み込み、ブラウザ上で回答・採点するというとてもシンプルな構成です。問題の種類は単一選択・複数選択の両方に対応、各問題には解説も付けました

使い方はとてもシンプルです。上部でデータベースやスキーマ、テーブルを選択し、問題をクリックして解いていくだけ。 「回答を表示」を押すと、正誤と解説が表示されます。

アプリの見た目はこんな感じ👇

アプリはPythonのフレームワークで構築しており、Databricks上のアプリ機能(Apps)で動作します。 構成は非常にシンプルで、UI、ロジック、設定ファイルを分離しただけの軽量な仕組みです。

実装の流れ

データ準備

まずはデータがないと始まらないので、練習問題を準備しました。 ここはChatGPTにお願いして、Databricks Associate試験を模した問題を数問作成してもらい、CSVに保存。 そのままDatabricksにアップロードし、テーブルに登録しました。

列は id, question, choices, answers, explanationの5項目だけ。 本当はもっと問題ジャンルなどいろんな情報を持たせて遊びたいところですが、今回は「アプリを動かす」ことが主目的なので、内容はシンプルにしています。

アプリ製作

データができたら、いよいよアプリ本体の開発。 今回は私と"3名のAI"の擬似チーム開発方式で進めました。

  • Claude Code:プロトタイプ担当エンジニア(UIの雛形と初期設計)
  • ChatGPT:要件定義&仕様整理(Copilotに伝わるように指示をまとめる)
  • GitHub Copilot:実装担当エンジニア(コードを書く)
  • 私:無茶な要望を出すクライアント

……という構成です。

会話の全員が私の頭を覗いてくれるので、驚くほど開発が早く回ります。 一人ハッカソン、というより一人エンジニアごっこのような感覚でした。

若宮+ "3名のAI" による体制で1時間ほどやり取りを繰り返し、最終的な構成は以下のように落ち着きました。

├── app.py # アプリのメイン

├── quiz_logic.py # 問題の読み込み・正誤判定

├── ui_components.py # UI構成

├── callbacks.py # イベント処理と状態管理

├── app.yaml # Databricks Apps用設定

└── requirements.txt # 依存ライブラリ

Databricks上で動かす

ここからが今回のメインテーマです。 作ったアプリをDatabricks上で動かすまでの流れを紹介します。

アップロード

まずはアプリ一式をZIPにまとめて、DatabricksのApps画面から新規アプリを作成します。

ZIPファイルをアップロードし、app.yamlを指定すれば準備完了。 この設定ファイルでは、エントリーポイントやPythonバージョン、環境変数などを定義します。

entry_point: app.py

runtime: "python:3.10"

env:

  • name: "DATABRICKS_WAREHOUSE_ID"

    valueFrom: "your-sql-warehouse-id"

これだけで、Databricksが自動でアプリ用のコンテナを立ち上げてくれます。 依存ライブラリは requirements.txt から自動インストールされるので、ローカル構築より圧倒的に手軽です。

デプロイと実行

数秒ほどでアプリがビルド・デプロイされ、 Databricks内にアプリのURLが発行されます。 クリックするとアプリがそのままブラウザで立ち上がり、Databricks上のテーブルをリアルタイムに参照する勉強用アプリとして動作します。

ここで非常にシンプルな注意点ですが、接続するスキーマやテーブルの権限をこのアプリを動かすサービスプリンシパルに与えなければなりません。 アプリ自体は構成次第ではデプロイ完了しますが、これができていないと当然アプリ側がDBを参照することはできません。

注意点は「操作するユーザー」ではなく、「アプリを実行するサービスプリンシパル」にスキーマ等の利用権限を付与する必要があります。

つまり、ユーザーがSELECT権限を持っていても、アプリ実行用のサービスプリンシパルに権限がないと見えません。 私はここで「なんで見えないんだ…?」と30秒ほど悩みました。

やってみた感想

アプリ製作の感想としては最近の生成AIの連携による開発工数の短縮に相変わらず驚かされるばかりだなぁという感じです。 正直、細かい部分やエラー管理など、本運用するにはだいぶお粗末なアプリになっていますが、軽く動かすだけのものを作るのは生成AIに速度も何も勝てる気がしません。

Databricksでアプリを動かすことに関する感想としては、デプロイ後は再起動や更新も非常にスムーズで、コード修正 → 再アップロード → デプロイ → 即動作確認、のサイクルを数分で回せます。コンピュートも一度起動しっぱなしにすればデプロイの時間も数秒レベルまで短縮されますしノンストレスでした。 あと個人的に感心したこととしては、この「アプリの実行をする」という一連に関して一切外部サイトで事前学習せずにUI上で導かれるままにできたことです。 普通なら「どこからアプリをデプロイするのか」「エラーログはどこからチェックするのか」等、事前学習を少しはする必要があると思うのですが、今回やってみる中ではそんなことはしなくとも終えることができました。DatabricksのUI/UXの素晴らしさを実感......!

まとめ

長々と書いてきましたが、いかがだったでしょうか? もし興味がわいてきた方はDatabricksのフリートライアルやフリーエディションなどでもいいので一度動かしてみてください!





🌟インテージテクノスフィアのDatabricks構築・活用ソリューションサービスサイトはこちら www.intage-technosphere.co.jp