tRPC vs REST 比較

TypeScript向けのエンドツーエンド型安全API

VS
REST

2000年以降の言語非依存な業界標準

9 分で読了Backend

スコア比較

グラフを読み込み中...

詳細スコア

詳細スコア: tRPC REST — カテゴリー別10点満点のスコア
カテゴリーtRPCREST
パフォーマンス
9/10
9/10
学習のしやすさ
8/10
10/10
エコシステム
8/10
10/10
コミュニティ
9/10
10/10
求人市場
7/10
10/10
将来性
8/10
8/10

長所と短所

tRPC

長所

  • サーバーからクライアントまで型安全 — コード生成不要
  • Zodによるインラインバリデーション
  • React Queryとのネイティブ統合
  • サブスクリプション対応(WebSocket)
  • ミドルウェア+コンテキストシステム
  • OpenAPI/GraphQLスキーマの保守が不要
  • Theoのt3-stackの基盤
  • Vercel、Cal.com、Cloudflareが採用

短所

  • TypeScript専用 — 多言語チームには難しい
  • モバイル/ネイティブクライアントはTS非対応(REST/GraphQLが必要)
  • パブリックAPIには不向き(オープン仕様がない)
  • 大規模モノレポではビルド時間が増加

最適な用途

TypeScriptフルスタックアプリ(Next.js、Remix)内部API(サーバー+Webクライアントが同一チーム)型安全性が重要な場合迅速なイテレーション(スキーマ変更が即座にクライアントに反映)T3 stack的なエンジニアリングプロジェクト

REST

長所

  • 言語非依存 — どんなクライアントでも利用可能
  • 25年以上の業界標準の実績
  • OpenAPI/Swaggerエコシステムが成熟
  • HTTPネイティブなキャッシング(Cloudflare、Varnish)
  • パブリックAPIの標準
  • モバイル/ネイティブクライアントとの直接的な互換性
  • ツールが汎用的(Postman、curl)
  • 長期的な後方互換性

短所

  • 型安全性が手動対応(OpenAPIコード生成が必要)
  • ボイラープレートが多い — ルート、バリデーター、型が個別
  • 過剰取得/過小取得の問題(GraphQL誕生の理由)
  • バージョニングが複雑(v1、v2、非推奨化)

最適な用途

パブリックAPI多言語チーム(iOS、Android、Web、サードパーティ)長期的に安定したAPI高キャッシュシナリオ(Cloudflareエッジ)業界標準への準拠

コード比較

tRPC
// server/router.ts
export const appRouter = t.router({
    getUser: t.procedure
        .input(z.object({ id: z.string() }))
        .query(async ({ input }) => {
            return await db.user.findUnique({ where: { id: input.id } });
        }),
});

// client (type-safe, autocomplete!)
const user = await trpc.getUser.query({ id: "123" });
// user.name, user.email — fully typed
REST
// OpenAPI-first
GET /api/users/:id
Response: { "id": "123", "name": "Ali", "email": "..." }

// Client (manual type def veya codegen)
const res = await fetch("/api/users/123");
const user: User = await res.json();  // Manual type assertion

結論

TypeScriptフルスタックのモノレポならtRPC(型安全性の面で最良)。パブリックAPI+多言語クライアントならREST。GraphQLは中間的な選択肢 — 型安全かつ言語非依存だが複雑さが高い。ハイブリッド戦略として、内部はtRPC、公開向けはRESTファサードという構成もある。

無料相談を受ける
FAQ

よくある質問

GraphQLは別のデザインパラダイム — クエリ言語です。tRPC vs RESTはTypeScript vs 汎用性の比較です。GraphQLはハイブリッド戦略として組み込むこともできます。

関連ブログ記事

すべての記事を見る
すべての比較