【要約】Databricks AppsでダッシュボードをPDF化して300店舗にメール配信する [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
店舗運営において、各店長へ個別のKPIレポートを毎日配信したいというニーズがあった。しかし、Databricksの標準機能では以下の制約により要件を満たせなかった。
- ・AI/BIダッシュボードの購読機能では、宛先ごとに異なるフィルタを適用したPDFを生成できない。
- ・ダッシュボードからPDFを直接取得できるAPIが存在しない。
- ・ヘッドレスブラウザを用いたスクリーンショット方式は、環境維持や描画制御の面で運用負荷が高い。
// Approach
Databricks Appsを用いて、PDF生成エンドポイントを持つカスタムアプリケーションを構築した。ブラウザに依存せず、描画の整合性を保つために「同じ定義から2回レンダリングする」手法を採用している。
- ・チャート定義(Vega-Liteスペック)をPython側で一元管理する。
- ・Web画面の描画には
vega-embedを使用する。 - ・PDF生成には、Rust製の
vl-convertでチャートをPNG化し、fpdf2で組版を行う。 - ・Databricks JobからサービスプリンシパルのOAuthトークンを用いてAppのAPIを叩き、SMTPで配信する。
// Result
Databricks Appsを「社内向けHTTP API基盤」として活用し、要件を満たす配信システムを実現した。
- ・画面とPDFのグラフが構造的に一致し、保守性が向上した。
- ・ヘッドレスブラウザを使用しないため、環境依存のトラブルを回避できた。
- ・将来的なServerless Micro Appsの導入により、コスト最適化が期待できる。
Senior Engineer Insight
> ヘッドレスブラウザという「壊れやすい」手段を避け、描画エンジンを分離した判断は極めて実践的だ。特に、Appsの制約を考慮し
vl-convert を選んだ点は、プラットフォーム特性を理解している。ただし、Appsの常時起動コストは無視できない。実運用では、将来的なServerless化を見据えた設計が求められる。