テックスタック
採用技術
| カテゴリ |
技術名 |
バージョン |
用途 |
選定理由 |
| 言語(フロント) |
TypeScript |
^5.0.0 |
フロントエンド実装 |
生成された API 型をそのまま使えるため |
| 言語(バック) |
Python |
v3.9 以上 |
バックエンド実装 |
Databricks の公式 SDK / コネクタが Python 前提 |
| UI ライブラリ |
React |
^18.2.0 |
SPA の描画 |
Databricks Apps テンプレートの構成を踏襲 |
| ビルドツール |
Vite |
^5.0.0 |
開発サーバーとビルド |
出力先を backend/static に向けて単一プロセス配信を実現 |
| フレームワーク |
FastAPI |
0.109.0 |
API と SPA の配信 |
OpenAPI 自動生成が型生成チェーンの起点になる |
| ASGI サーバー |
uvicorn |
0.27.0 |
アプリの実行 |
app.yaml の command で起動 |
| DWH |
Databricks SQL Warehouse / Unity Catalog |
- |
集計済みビューの保持と提供 |
既存のデータ基盤がそのまま対象 |
| インフラ |
Databricks Apps |
- |
アプリのホスティング |
データ基盤と同一ワークスペース内で完結する |
| CI/CD |
GitHub Actions |
- |
ブランチごとのデプロイ |
OIDC で Databricks に認証できる |
主要ライブラリ
| ライブラリ名 |
バージョン |
用途 |
| @tanstack/react-query |
^5.90.7 |
データフェッチとキャッシュ。orval の生成 hook の基盤 |
| axios |
^1.13.2 |
HTTP クライアント |
| chart.js / react-chartjs-2 |
^4.4.0 / ^5.2.0 |
集計結果のチャート描画 |
| react-router-dom |
^7.9.5 |
SPA ルーティング |
| sass |
^1.93.3 |
SCSS のコンパイル |
| orval |
^7.16.0 |
openapi.yaml から React Query クライアントを生成 |
| hygen |
^6.2.11 |
コンポーネント雛形の生成(npm run generate:component) |
| eslint / prettier |
^9.39.1 / ^3.6.2 |
Lint とフォーマット。pre-commit で実行 |
| husky |
^9.1.7 |
Git hooks |
| databricks-sql-connector |
3.4.0 |
SQL Warehouse への接続 |
| pydantic |
FastAPI 同梱 |
リクエスト/レスポンスモデル |
| pyyaml / python-dotenv |
6.0.2 / 1.0.1 |
databricks.yml / app.yaml / .env からの設定読み込み |
型の生成チェーン
手で書くのは左端だけで、右側はすべて生成物。
backend/models/*.py + routes の response_model
→ scripts/generate_openapi.py
→ frontend/src/api/openapi.yaml
→ orval(orval.config.ts)
→ frontend/src/api/generated/{client.ts, models/*}
npm run generate:client が後半 2 つをまとめて実行する。API を変えたら必ず再生成する。
検討中・廃止予定
| 技術名 |
状態 |
備考 |
| databricks-sdk |
要追加 |
メタデータ取得(テーブル一覧)に必須だが requirements.txt に含まれていない。未インストールでも起動はするが、該当 API が 503 になる |
| テストランナー |
未導入 |
テストコードもランナーも存在しない。テストケース を参照 |
nodejs-fastapi-hello-world-app というディレクトリ名 |
改名候補 |
Databricks のテンプレート由来で、アプリの内容とは無関係 |
nodejs-fastapi-hello-world-app/.husky/pre-commit |
廃止候補 |
実際には使われていない死んだファイル。動くのはリポジトリルートの .husky/pre-commit |
/api/data_sql / /api/dm_vis_jreslso_tokyo23_comp_test |
サンプル |
ビュー名を直書きした開発用エンドポイント。汎用の /api/catalogs/... 系に置き換え済み |