Encore.tsが『TS版Rails』を実現する
Encore.tsは2024年に登場した統合バックエンドフレームワークで、TypeScriptで宣言したAPIエンドポイント・データベース・キュー・Cronから、AWS/GCPへのデプロイ・インフラ自動構成・分散トレーシングまで一気通貫で実現します。Railsが『規約による生産性』を提供したように、Encore.tsはTSエコシステムに対して同等の生産性アップを目指す野心的なフレームワーク。Github 8k★越え、AI/SaaSスタートアップで採用が広がっています。
Encore.ts採用を検討すべき5つのシグナル
- TS Backendを書くたびにExpress/Fastify+Drizzle+pg+Redisを毎回繋いでいる
- AWS/GCPのIaC(Terraform)コードがビジネスロジックの倍量になっている
- 分散トレーシング・モニタリングを宣言的に統合したい
- マイクロサービス間のRPCで型安全性を確保したい
- 新規プロジェクトの立ち上げ速度を最大化したい
Express/NestJS/Encore.ts比較
Express: 軽量・自由度高・周辺ライブラリ自分で組み合わせ。
NestJS: 大規模アプリ向け・DI・モジュール構造。学習コスト中。
Encore.ts: 統合フレームワーク・インフラ自動生成・ローカル開発体験◎・新規プロジェクト最短。柔軟性はExpressに劣る。
使い分け: 新規スタートアップ・最短MVPはEncore.ts、既存大規模アプリはNestJS、極限の柔軟性はExpress。
Encore.ts実装の基本パターン
(1) API宣言: export const getUser = api({ method: 'GET', path: '/users/:id' }, async ({ id }) => {})
(2) DB宣言: const db = new SQLDatabase('users', { migrations: './migrations' })
(3) サービス間呼び出し: 別パッケージからimportして型安全に呼ぶ
(4) Cron: new CronJob('cleanup', { schedule: '0 9 * * *', endpoint: cleanupHandler })
(5) キュー: new Topic('email-sent', { deliveryGuarantee: 'at-least-once' })
『自動生成される』インフラ
Encore.tsの最大の差別化要因は『コードから推論してインフラを自動構成』する点です:
(1) クラウド選択: AWS or GCPを設定で指定すると、ECS/Cloud Run・RDS/Cloud SQL・SQS/Pub/Sub等を自動構成
(2) 環境ごとの構成: development・staging・productionの設定が宣言的に切り替わる
(3) 分散トレーシング: API/DB呼び出しが自動でトレース対象に
(4) シークレット管理: AWS Secrets Manager/GCP Secret Managerと統合
(5) CI/CD: encore deployでビルド・デプロイ・マイグレーション一括
本番採用の判断基準
(1) 本番実績: Github 8k★・本番採用は増加中だが、エンタープライズ実績は限定的
(2) ベンダーロックイン: Encore.ts独自APIに依存するため、移行コストは高い
(3) マルチクラウド: AWS/GCPは対応、Azure・Cloudflare Workersは制限あり
(4) 料金: OSSは無料、Encore Cloud(マネージドCI/CD等)はFreeから有料
実装で詰まる3つの落とし穴
- 柔軟性の制約: 規約から外れる構成(独自ミドルウェア・カスタムビルド)は工夫必要
- マイグレーション戦略: 既存プロジェクトを徐々にEncore化するパスは難しい。新規モジュールから採用が現実的
- ローカル開発依存: Encore CLIに依存するため、CI環境やコントリビュータ環境の整備必要
30日学習プラン
- 1週目:
encore app initでAPI+DBのCRUDアプリを構築・ローカル実行 - 2週目: マイクロサービス分割・サービス間RPC実装
- 3週目: Cron・キュー・Webhookの統合
- 4週目: AWS/GCPに本番デプロイ・モニタリング・ロギング設定
関連リンク
TypeScriptバックエンドは TypeScript実践、IaCツール選定は IaCツール選び方、Honoとの比較は Hono深掘り を参照してください。マイクロサービス設計は マイクロサービス実践 もどうぞ。