tRPCとは?
- スキーマやコード生成なしに型安全なAPIを簡単に構築および利用できるようになるTypeScriptモノレポ向けに設計されたRPCの実装の一つ。
- APIエンドポイントの静的型付けを行い、その型をクライアントとサーバー(サーバーとサーバー)間で共有できるようにする。
RPC
Remote Procedure Call(リモート プロシージャ コール)の略。
あるコンピュータ(サーバー)上の関数を、別のコンピュータ(クライアント)から呼び出す方法。
HTTP/REST APIでは、URLを呼び出してデータを取得するが、RPCでは関数を呼び出してデータを取得する。
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });
Monorepo(モノレポ)
プロダクトに関するコードを全て一つのリポジトリで管理する方法。
頻繁に使用される用語
用語 | 説明 |
---|---|
Prucedure | APIエンドポイント。Query、Mutation、Subscriptionを使用できるようになる。 |
Query | データを取得するプロシージャ。 |
Mutation | データを作成、変更、削除するプロシージャ。 |
Subscription | データの変更をリアルタイムで、検知し受け取るプロシージャ。 |
Router | 共有された名前空間の下にあるプロシージャの集まり。 |
Context | 全てのプロシージャがアクセスできるもの。セッション状態やDB接続などに使用される。 |
Middleware | プロシージャの前後でコードを実行できる関数。 コンテキストを変更することができる。 |
Validation | 正しい入力データか確認するプロセス。 |