データウェアハウスでアプリ開発!? 新機能Databricks Appsで社内アプリを作った話
はじめに
本記事は、#IVRy_AIブログリレー の9月19日(13日目)の記事です。昨日は、デザイナーのtorimizunoさんが「AIと協業するデザイン実践──プロトタイピングで見えた変化」という記事を公開しました。ブログリレーの記事一覧はIVRy AIブログリレー全記事まとめをぜひご覧ください。
こんにちは! IVRyのデータサークルでインターンをしている、おおしろはるきと申します!
この記事では、インターンの期間中に取り組んだ「Databricks Appsを使った社内アプリ開発」について紹介します!
3行でまとめ
- 2025年7月にやってきた新機能Databricks Appsを使って社内アプリを開発した
- Databricks Appsなら簡単にアプリが作れる
- データ整備やコーディングにはCursorなどを活用して進めた
Databricks Appsとは?
Databricks Appsは、Databricks上でPythonやJavaScriptを使って手軽にアプリを作れる機能です。
たとえば……
- Databricksの認証をそのまま使えるので、面倒な認証管理が不要!
- インフラの設定やデプロイ作業もDatabricks内で完結するのでサーバー構築や運用の手間が激減!
さらに、従来のダッシュボードと比べて……
- ️ Python/JSが動くので自由度が高い!
- たいていのことはPython/JSで実現可能!
- デザインを凝ったり、インタラクティブなUIも作れる!
- データの書き込みも可能!
このように、Databricks Appsはデータに関わるアプリ開発をグッとシンプルにする機能です。
アイブリーとは
アイブリーは、電話業務を効率化する対話型音声AIのSaaSです [1]。
アイブリーでは、着信時の応答方法を「受電ルール」として柔軟に設計できます。
例えば、
- プッシュ分岐(「〜のかたは1番を押してください」のことです)に応じて対応を変える
- 音声認識で要件を判別して、要件に応じて対応を変える
- 分岐に応じてSMSを送信
- 分岐に応じて担当者に電話転送をする
- 営業時間などによって使う受電ルールを変える
など幅広い対応ができます。
アイブリーでできること
この柔軟さは強力ですが、クライアント数や機能数が増えるほど「どの企業がどのルールや機能をどう使っているか」を把握することは難しくなります。
IVRyのセールスやカスタマーサクセスにとって、それを俯瞰して把握することはとても重要です。
そこで、社内向けにクライアントの受電ルール設定を検索・可視化するアプリを作ることにしました!
Databricks Appsで作成した社内アプリの紹介
こうした背景から、アイブリーの受電ルール設定の検索・可視化アプリを作りました。
実際に作ったアプリの画面。使用している機能や業種でクライアントを絞り込んでいる
絞り込まれたクライアントの、機能の使用状況がグラフで可視化されている。機能名を隠したため抽象画のようになっている
コードを書く
今回のアプリ開発では、AI(特にCursor)を最大限に活用し、誇張なしに「AIと一緒に開発している」感覚すらありました[2]。
実装の多くはAIのサポートでサクサク進み、全体の8割ほどはAIに任せられました。
とはいえ、人が手を動かす必要があるところもいくつかありました。
主な人が行う必要があった作業は、
-
最初の環境構築
- ローカル/デプロイ先の両方で認証が通るようなコード・環境の設定
- 地味にハマりました
- ローカル/デプロイ先の両方で認証が通るようなコード・環境の設定
-
SQLクエリ作成の一部分
-
AIへの指示出し
などです [3]。
一度環境構築さえできればそのあとの手作業は非常に簡単で、databricks apps run-local
でアプリが動きますし、SQLウェアハウスの設定も app.yaml
に設定を書いて GUI/CUIから権限の設定をすれば完了します。
Databricksへのデプロイも、databricks sync
→ databricks apps deploy
と2コマンド打つだけでデプロイできるところがとても便利です。
LLMを使いデータ整備をした話
上述の「機能の利用割合」といった定量データだけでなく、定性的なデータの整理や可視化も進めるために、DatabricksのAI関数を使いました。
Databricksには、ai_query()
をはじめとするAI関数が用意されています。これらを使えば、SQLからそのままLLM(大規模言語モデル)に処理をさせて、その結果をデータとして取得できます。
汎用的な処理をするai_query()
以外にも、個人情報や人名といった特定の要素をマスクするai_mask()
や、翻訳をするai_translate()
といった関数もあります。
Document :
今回は、クライアントがどんな目的でアイブリーのルール設定をしているのかを知るために、
受電ルールをSQLで抽出して、ai_query()
で「問い合わせ対応(音声案内)」や「予約キャンセル対応(電話転送)」のようにタグ付けしました。
DatabricksのSQLで、ai_query()
関数を使うと、Gemma3やGPT-OSSといったLLMを呼び出せる
上の画像のように、Databricks上のSQLエディタで
SELECT
rule_description
,ai_query('model', concat('prompt here', rule_description))
AS ai_tag
FROM some_table;
などと実行すると、以下の画像のように受電ルールを一言で表したタグが複数得られます。
受電ルールをタグで表すクエリの実行結果(一部)
ai_query()
は速い
ちなみに : ai_query()
関数はバッチ処理で推論されるため、大量のデータに対して高いスループットで処理されます。
今回の作業では合計約5000万文字の文章に対して、Gemma 3を呼び出す処理を行いましたが、10分もかからずに処理が完了しました。
5000行(約5000万文字)に対する推論でも10分未満で完了している
バッチ推論の料金について
ai_query()
関数やその他のAI関数を呼び出すと、バッチで実行されます。
バッチ推論での料金計算は単純なトークン数課金ではないため、計算は難しくなります。
そのため、シミュレータを使ってコストを試算する方法が簡単でしょう。
Document :
おわりに
ここまで読んでいただき、ありがとうございました!
Databricks Appsを使った社内アプリ開発は、思っていた以上に手軽でした。データ基盤上でそのままアプリを作れることで、権限管理やDBの設定が簡単に一気通貫で完結するところは爽快でした。
また、AI関数やLLMが進化すると、これまで手作業では到底無理だったデータ整備や分析も現実的になってくるかもしれません。そう考えると、非常にワクワクしませんか?
この記事が、Databricks AppsやAI活用に興味がある方の参考になれば嬉しいです!
もし記事が参考になった・面白いと思った方は、ぜひ「いいね」やコメントをお願いします!もらえると大変励みになります! 🚀🚀🚀
いいねマークが突如ロケットへ変わり、銀河へと向かう
IVRyでは「イベントや最新ニュース、募集ポジションの情報を受け取りたい」「会社について詳しく話を聞いてみたい」といった方に向けて、キャリア登録やカジュアル面談の機会をご用意しています。ご興味をお持ちいただけた方は、ぜひ以下のページよりご登録・お申し込みください。
https://ivry-jp.notion.site/209eea80adae800483a9d6b239281f1b
また、私が所属するDataチームでも新卒・インターンを募集しています。優秀で面白い社員さんたちと一緒に働けるチャンスです。ぜひ一度、お話ししてみてください!!!!
Discussion