コンセプト
非公式ベータ版翻訳
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
RPCとは?どのような考え方を持つべきか?
単なる関数呼び出し
RPCは「Remote Procedure Call(リモートプロシージャコール)」の略称です。あるコンピュータ(サーバー)上の関数を別のコンピュータ(クライアント)から呼び出す手法を指します。従来のHTTP/REST APIではURLを呼び出してレスポンスを受け取りますが、RPCでは関数を直接呼び出して結果を得ます。
ts// HTTP/RESTconst res = await fetch('/api/users/1');const user = await res.json();// RPCconst user = await api.users.getById({ id: 1 });
ts// HTTP/RESTconst res = await fetch('/api/users/1');const user = await res.json();// RPCconst user = await api.users.getById({ id: 1 });
tRPC(TypeScript Remote Procedure Call)はTypeScriptモノレポ向けに設計されたRPCの実装の一つです。独自の特徴を持ちつつも、本質的にはRPCの考え方に基づいています。
HTTP/RESTの実装詳細は考えなくてよい
tRPCアプリのネットワークトラフィックを観察すると、標準的なHTTPリクエストとレスポンスであることがわかります。しかし、アプリケーションコードを書く際にはこれらの実装詳細を考える必要はありません。単に関数を呼び出すだけで、tRPCが残りのすべてを処理します。HTTP動詞のような詳細は無視して構いません。なぜなら、それらはREST APIでは重要な意味を持ちますが、RPCでは代わりに関数名の一部として表現されるからです。例えば、GET /users/:idではなくgetUser(id)のようにします。
用語集
以下にtRPCエコシステムで頻繁に使用される用語を紹介します。ドキュメント全体でこれらの用語を使用しますので、慣れておくことをお勧めします。これらの概念のほとんどには、ドキュメント内で個別の解説ページが用意されています。
| 用語 | 説明 |
|---|---|
| Procedure ↗ | APIエンドポイント - query、mutation、subscriptionのいずれかを指します。 |
| Query | データを取得するprocedureです。 |
| Mutation | データの作成・更新・削除を行うprocedureです。 |
| Subscription ↗ | 永続的な接続を確立し変更を監視するprocedureです。 |
| Router ↗ | 共通の名前空間下にprocedures(および他のルーター)をまとめた集合体です。 |
| Context ↗ | すべてのprocedureがアクセス可能なデータ。セッション状態やデータベース接続などで一般的に使用されます。 |
| Middleware ↗ | procedureの前後にコードを実行できる関数。contextの変更が可能です。 |
| Validation ↗ | 「入力データは正しい形式か?」 |