Skip to content

Latest commit

 

History

History
198 lines (139 loc) · 11.1 KB

File metadata and controls

198 lines (139 loc) · 11.1 KB

なぜこの技術スタックか?

English | 한국어 | 简体中文 | 日本語 | Português

このドキュメントでは、このフルスタックスターターテンプレートにおける各技術選択の理由を説明します。

フロントエンド

Next.js 16 + React 19

  • サーバーコンポーネント:クライアント側 JavaScript バンドルを削減し、初期読み込み時間を改善
  • App Router:レイアウト、ローディング状態、エラーバウンダリが組み込まれたファイルベースのルーティング
  • Turbopack:Webpack と比較して高速な開発サーバーとビルド
  • React 19:並列機能、アクション、use() フックによるパフォーマンス向上

TailwindCSS v4

  • ゼロランタイム:すべてのスタイルがビルド時にコンパイル
  • Lightning CSS:PostCSS ベースの v3 より 100 倍高速
  • CSS ファースト設定:JavaScript 設定ではなくネイティブ CSS 構文
  • 小さなバンドル:未使用スタイルの自動削除

shadcn/ui

  • コピーペーストコンポーネント:npm 依存なし、コードの完全な所有権
  • Radix プリミティブ:デフォルトでアクセシブル(ARIA、キーボードナビゲーション)
  • Tailwind ネイティブ:プロジェクトのスタイリングアプローチと一致
  • カスタマイズ可能:デザインシステムと対立せずに簡単に変更可能

TanStack Query

  • 自動キャッシュ:重複排除、バックグラウンド再フェッチ、stale-while-revalidate
  • DevTools:デバッグ用の組み込みクエリインスペクター
  • フレームワーク非依存:同じメンタルモデルが React Native でも使用可能
  • オプティミスティックアップデート:レスポンシブ UI へのファーストクラスサポート

Jotai

  • ボトムアップアトミックモデル:アトムを組み合わせて状態を構築し、アトム依存に基づいてレンダリングを最適化
  • 不要な再レンダリングなし:変更されたアトムを購読しているコンポーネントのみ再レンダリング
  • TypeScript ファースト:優れた型推論
  • 軽量:約 3KB、基本的な使用ではプロバイダー不要

TanStack Form

  • ヘッドレス&コンポーザブル:型安全なモジュールフォーム構成のための withForm HOC パターン
  • 型安全:フォーム値とバリデーションのフル TypeScript 推論
  • シンプルなインターフェース:React Hook Form や Formik と比較してクリーナーな API

バックエンド

FastAPI

  • AI/ML エコシステム:Python の AI ライブラリ(LangChain、Transformers など)に直接アクセス
  • 非同期ファースト:Starlette 上に構築され、ネイティブの async/await サポート
  • 自動生成ドキュメント:OpenAPI(Swagger)と ReDoc をすぐに使用可能
  • Pydantic バリデーション:型ヒントを使用したリクエスト/レスポンスバリデーション
  • スケーラビリティ:ステートレス設計による簡単な水平スケーリング

SQLAlchemy(非同期)

  • ORM の柔軟性:必要に応じて生の SQL を書き、便利な場合は ORM を使用
  • 非同期サポート:asyncpg ドライバーによるネイティブな asyncio サポート
  • マイグレーション対応:Alembic 統合によるスキーマバージョニング
  • 成熟したエコシステム:何十年もの実戦テスト

PostgreSQL 16

  • ACID コンプライアンス:データ整合性を保証
  • JSON サポート:柔軟な半構造化データ用の JSONB
  • ベクトル拡張:AI 埋め込みと類似性検索用の pgvector
  • パフォーマンス:高度なクエリプランナー、並列クエリ、パーティショニング
  • 拡張:PostGIS、全文検索が組み込み

Redis 7

  • サブミリ秒レイテンシー:インメモリデータ構造ストア
  • 多用途:キャッシュ、セッションストア、pub/sub、レート制限
  • 永続化オプション:RDB スナップショットまたは AOF で耐久性を確保
  • クラスタサポート:必要に応じて水平スケーリング

MinIO

  • S3 互換:AWS S3 API のドロップイン置き換え、本番クラウドストレージへのシームレスな移行
  • ローカル開発:本番環境と同じ API、開発中のベンダーロックインなし
  • セルフホスト:Docker/Podman でローカル実行、外部依存やサービスアカウント不要
  • オープンソース:データの完全なコントロールを持つエンタープライズグレードのオブジェクトストレージ

モバイル

Flutter 3.41.2

  • 韓国 eGovFrame v5:韓国電子政府標準フレームワークにより公式モバイルフレームワークとして選定
  • 柔軟なバージョニング:プロジェクトごとに Flutter/Dart バージョンを簡単に固定およびアップグレード
  • ホットリロード:開発中のサブ秒単位の UI イテレーション
  • ネイティブパフォーマンス:ARM にコンパイル、JavaScript ブリッジなし

Riverpod 3

  • コンパイル時安全性:依存関係がコンパイル時にチェック
  • テスト可能:簡単にモックして分離してテスト
  • コンテキスト不要:BuildContext なしでどこからでも状態にアクセス
  • コード生成:riverpod_generator でボイラープレートを削減

go_router 17

  • 宣言的ルーティング:Web のような URL ベースのナビゲーション
  • ディープリンク:iOS/Android ですぐに動作
  • 型安全:コード生成されたルートパラメータ
  • ネストされたナビゲーション:ボトムナビ、タブのためのシェルルート

Forui

  • Flutter の shadcn/ui:Web(shadcn/ui)と一貫したデザイン言語
  • カスタマイズ可能:Tailwind のようなトークンシステムでテーマ可能なコンポーネント
  • アクセシブル:モバイルのための ARIA 相当のセマンティクス
  • 軽量:重い依存関係なし、ただのウィジェット

Firebase Crashlytics

  • リアルタイムクラッシュレポート:本番問題への即時可視性
  • ブレッドクラム:クラッシュに至るユーザーアクション
  • スタックシンボリケーション:読みやすい Flutter スタックトレース
  • フリーティア:ほとんどのアプリにとって寛大な制限

Fastlane

  • 自動リリース:ワンコマンドでビルド、署名、デプロイ
  • クロスプラットフォーム:iOS と Android で同じワークフロー
  • CI 統合:GitHub Actions とシームレスに連携
  • メタデータ管理:スクリーンショット、説明、変更ログ

インフラストラクチャ

Terraform

  • インフラストラクチャ as Code:バージョン管理され、レビュー可能なインフラ変更
  • 宣言的:望ましい状態を記述し、残りは Terraform に任せる
  • 状態管理:何がデプロイされたかを追跡し、適用前に計画
  • モジュール:再利用可能、共有可能なインフラコンポーネント

GCP(Cloud Run、Cloud SQL、Cloud Storage)

  • 寛大なフリーティア:新規アカウントに $300 クレジット、多くのサービスで永続無料ティア
  • サーバーレスコンテナ:サーバー管理不要、ゼロにスケーリング
  • 従量課金:リクエスト処理時のみ課金
  • マネージドデータベース:自動バックアップ、HA、メンテナンス
  • グローバル CDN:静的アセットと API キャッシュ用の Cloud CDN

GitHub Actions + Workload Identity Federation

  • キーレスデプロイ:管理やローテーションが必要なサービスアカウントキーなし
  • ネイティブ GitHub 統合:プッシュ、PR、スケジュールでトリガー
  • マトリックスビルド:バージョン/プラットフォーム間での並列テスト
  • マーケットプレイス:数千のコミュニティアクション

開発者体験

Rust ベースのツールチェーン

Rust ベースのツールを選択することで、開発ワークフロー全体で速度を優先:

  • Biome:1 つのツールでリンター&フォーマッター、ESLint + Prettier より 100 倍高速
  • uv:Python パッケージマネージャー、pip/poetry より 10-100 倍高速
  • Turbopack:Next.js バンドラー、Webpack より高速
  • Lightning CSS:TailwindCSS v4 コンパイラー、PostCSS より 100 倍高速

mise

  • ポリグロットモノレポサポート:Node、Python、Flutter、Terraform — 異なるエコシステム、1 つのツール
  • プロジェクトローカルバージョン.mise.toml で OS をまたいだ開発者オンボーディング時に環境を統一
  • タスクランナー:Makefile、npm スクリプト、シェルスクリプトを統一された mise コマンドで置き換え
  • Rust で記述:即座のツール切り替え、起動オーバーヘッドなし

ポリグロットモノレポ

  • 単一リポジトリ:Web(TypeScript)、API(Python)、Mobile(Dart)、Infra(HCL)が一箇所に
  • 境界付きコンテキスト:各言語エコシステムがそのディレクトリにスコープされ、クロスコンテミネーションを防止
  • アトミックな変更:1 つの PR でフロントエンド+バックエンドの変更
  • 統一されたツール:すべてのアプリで同じ mise コマンド

トレードオフ

選択 トレードオフ なぜ受け入れるか
Next.js vs Remix/SvelteKit より大きなバンドル、より複雑 エコシステム、React 19 互換性
Next.js vs Flutter Web モバイルから別のコードベース SEO、SSR、小さなバンドル、Web エコシステム互換性
FastAPI vs Node.js 2 つのランタイム(Node + Python) Python AI/ML エコシステム、スケーラビリティ
Flutter vs React Native より大きなアプリサイズ、カスタムレンダリング 韓国 eGovFrame v5、柔軟なバージョニング

まとめ

このスタックは以下を最適化:

  1. 開発者速度:ホットリロード、型安全性、自動生成されたクライアント
  2. 本番対応:マネージドサービス、サーバーレススケーリング、CI/CD
  3. チームスケーラビリティ:明確な境界、共有ツール、ドキュメント
  4. 長期的な保守性:実証済みの技術、アクティブなコミュニティ