メインコンテンツにスキップ

スピード重視で、ノーミス。エンドツーエンドの型安全な API を簡単に実現。

以下のフルパワーを体験してください TypeScript フルスタックアプリケーションの生産性を向上させるための型推論

サポート:

素晴らしいスポンサーの皆様、ありがとうございました!

自動的な型安全性

サーバー側で変更を加えましたか? TypeScript は、ファイルを保存する前にクライアント側のエラーを警告します!

軽快な DX

tRPC にはビルドやコンパイルのステップがないため、コード生成、ランタイムの肥大化、ビルドステップがありません。

フレームワークに依存しない

すべての JavaScript フレームワークとランタイムと互換性があります。既存のプロジェクトにも簡単に追加できます。

オートコンプリート

tRPC を使用すると、API のサーバーコード用の SDK を使用しているかのように、エンドポイントに自信を持つことができます。

軽量なバンドルサイズ

tRPC は依存関係がなく、クライアント側のフットプリントが小さいため、軽量です。

バッテリー付属

React、Next.js、Express、Fastify、AWS Lambda、Solid、Svelte などに対応したアダプターを提供しています。

シンプルで使いやすい
比類なき開発体験

tRPC を使用して型安全な API を構築するのは、迅速かつ簡単です。

ts
const t = initTRPC.create();
 
const router = t.router;
const publicProcedure = t.procedure;
 
const appRouter = router({
greeting: publicProcedure
.input(z.object({ name: z.string() }))
.query((opts) => {
const { input } = opts;
const input: { name: string; }
 
return `Hello ${input.name}` as const;
}),
});
 
export type AppRouter = typeof appRouter;
ts
const t = initTRPC.create();
 
const router = t.router;
const publicProcedure = t.procedure;
 
const appRouter = router({
greeting: publicProcedure
.input(z.object({ name: z.string() }))
.query((opts) => {
const { input } = opts;
const input: { name: string; }
 
return `Hello ${input.name}` as const;
}),
});
 
export type AppRouter = typeof appRouter;

1

プロシージャを定義する

tRPC API を作成する最初のステップは、プロシージャを定義することです。

プロシージャとは、バックエンドの構築に使用する関数のことです。プロシージャは*構成可能*で、クエリ、ミューテーション、またはサブスクリプションにすることができます。ルーターには複数のプロシージャが含まれています。

このプロシージャでは、 Zodバリデーターを使用して、クライアントからの入力がプロシージャで想定されている形状と完全に一致することを確認します。また、クエリから単純なテキスト文字列を返します。

ファイルの最後で、ルーターの型をエクスポートして、少し後でフロントエンドコードで使用できるようにします。

ts
const { listen } = createHTTPServer({
router: appRouter,
});
// The API will now be listening on port 3000!
listen(3000);
ts
const { listen } = createHTTPServer({
router: appRouter,
});
// The API will now be listening on port 3000!
listen(3000);

2

HTTP サーバーを作成する

次に、`appRouter` を使用して HTTP サーバーを作成します。これで tRPC サーバーが実行されました!

tRPC には多くのアダプターがあるため、あらゆる状況に対応できます。Next.js、Express、Fetch API (Astro、Remix、SvelteKit、Cloudflare Workers など)、Fastify、AWS Lambda、またはバニラ Node HTTP サーバー。

ts
const trpc = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: 'http://localhost:3000',
}),
],
});
 
const res = await trpc.greeting.query({ name: 'John' });
const res: `Hello ${string}`
ts
const trpc = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: 'http://localhost:3000',
}),
],
});
 
const res = await trpc.greeting.query({ name: 'John' });
const res: `Hello ${string}`

3

クライアントを接続してクエリを開始する!

サーバーが実行されたので、クライアントを作成してデータのクエリを開始できます。

クライアントを作成するときに `AppRouter` 型を渡すことで、コード生成を必要とせずにバックエンド API に一致する TypeScript のオートコンプリートと IntelliSense が提供されます!

以下で使用されています

tRPC は、主要な技術チームによって試用され、信頼されています。

  • Algora
  • Cal.com
  • Documenso
  • Fintory
  • Interval
  • Netflix
  • Newfront
  • Ping.gg
  • Pleo
  • Snaplet
  • napo

従来の API は必要ないかもしれません

「tRPC を開発した理由は、従来の API レイヤーを必要とせずに、**より迅速に**移動できるようにするためです。また、アプリが急速に反復されても壊れないという自信を持つためです。」

ぜひお試しいただき、ご意見をお聞かせください!

Alex/KATT

Alex/KATT

tRPC の作成者

私たちの言葉を鵜呑みにしないでください!

多くの開発者が tRPC とそのメリットを気に入っています。

t3dotgg

Theo - ping.gg

@t3dotgg

tRPC が私たちのコードの品質、配信速度、開発者の幸福度をどれほど向上させたかは、理解しがたいほどです。私はよく tRPC について話しますが、真剣に、@trpcio を試してみてください。
ralex1993

R. Alex Anderson 🚀

@ralex1993

🤯 tRPC 10 では、VS Code の「すべての出現箇所を変更」機能が*クライアント/サーバーの境界を越えて*動作するようになりました!このビデオでは、「すべての出現箇所を変更」を使用してプロシージャ入力を名前変更しています。この変更は、アプリ全体で入力が使用されているすべての場所に反映されます。🤩 cc @trpcio
kentcdodds

Kent C. Dodds 🌌

@kentcdodds

@remix_run からエンドツーエンドの型安全性が得られていなかったら、100% 真剣に @trpcio を検討していたでしょう。Remix を使用していない場合は、ぜひご覧ください 👀
sockthedev

Sock, the dev 🧦

@sockthedev

TypeScript に完全対応している場合は、API に tRPC を使用する必要があります。 ifs も buts もありません。tRPC は、フロントエンドとバックエンドの境界線を破壊します。アプリの機能構築に集中できます。市場投入までの時間を短縮するための最高のツールです。@alexdotjs と結婚してください 💍
leeb

Lee Byron

@leeb

@t3dotgg と @mxstbr の #tRPC と @GraphQL についての話し合いを聞いて、どちらも素晴らしいものであり、それぞれに適した時期と場所があることに同意していることがわかりました 💖
jokull

Jökull Solberg

@jokull

tRPCはすごいです。Stripe連携を構築しています。サーバーからStripe APIのペイロードを返すと、ファイルを保存することなく、Reactコンポーネントのレスポンスデータの型定義が取得されます。まるでバックエンドではなくフロントエンドでStripeライブラリを使用しているかのようです。 /cc @alexdotjs
christian_legge

Christian Legge

@christian_legge

昨日は一日中@trpcioの学習と実装に費やしましたが、本当に素晴らしい投資でした。クエリとレスポンスの検証と解析にどれだけの時間(つまり無駄な時間)を費やしていたか信じられません!
TkDodo

Dominik 🇺🇦

@TkDodo

とはいえ、私たちはまさに今、本番プロジェクトを開始しようとしており、@nextjsと@trpcioを使用しています。どこから始めたらいいのかわからないほど素晴らしいです🔥。おそらくエンドツーエンドの型安全性からでしょう😍。クライアントの状態についてはあまり考えていませんが、前者は当てはまるでしょう。
housecor

Cory House

@housecor

@trpcio 素晴らしいです。シンプルで強力な型付け。モノレポでTSを使用する場合、プレーンなRESTやGraphQLよりも洗練された選択肢のように感じます。
andersmellson

Anders Bech Mellson

@andersmellson

今日は@trpcio v10で遊んで過ごしました。正式に恋に落ちました😍。ps. 妻には内緒です🙊
grabbou

Mike | grabbou.eth 🚀

@grabbou

@t3dotgg @trpcio まったくその通りです。プロシージャを書くたびに、以前はどれほど大変だったかを思い出すので、文字通り笑顔になっています。組み込みエラー、型付きミドルウェア(コンテキストを変更可能)、入力検証。本当に素晴らしいです!
wikitable

Martin

@wikitable

💖 tRPCのおかげでアプリの開発がスピードアップしたので、@alexdotjsをスポンサーしています。 github.com/sponsors/KATT?…

すべてのスポンサー

私たちは素晴らしい

スポンサーの皆様に心から感謝しています。皆様のおかげでtRPCは存続しています。