コンテンツにスキップ

テックスタック

採用技術

カテゴリ 技術名 バージョン 用途 選定理由
言語(フロント) 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/... 系に置き換え済み