🐵

React x LIFF x tRPC ハンズオン

2023/02/14に公開

Killercodaを使ってtRPC経由でLINE UserIdを取得できる動きを確認してみましょう。
ハンズオン資料は下記ページです。

https://killercoda.com/gaomar/scenario/react-liff-trpc-handson-playground

ページを開くと自動的にインストールが始まります。画面左側にある手順書通りに進めていってください。

バックエンドコード補足

tRPCのコード実態は下記にあります。

zodを使ってLIFFからアクセストークンを取得して、tRPC側で受け取ります。
LINEのgetProfile処理を行って、ユーザー情報を取得しにいきます。

https://github.com/gaomar/react-liff-trpc-sample/blob/7e6a67e3ded319e1a9ea698e8bcf6fc321c8f2ad/backend/src/trpc/router.ts#L1-L27

フロントエンドコード補足

LIFFの初期化をmain.tsxで行っています。必ずLIFFの初期化を通過するような作りが必要です。

https://github.com/gaomar/react-liff-trpc-sample/blob/7e6a67e3ded319e1a9ea698e8bcf6fc321c8f2ad/frontend/src/main.tsx#L10-L26

トップページ

useEffectでLIFF経由でユーザー情報を取得しにいきます。同時にアクセストークンも取得します。

https://github.com/gaomar/react-liff-trpc-sample/blob/7e6a67e3ded319e1a9ea698e8bcf6fc321c8f2ad/frontend/src/pages/Top.tsx#L15-L27

ボタンを押下してバックエンドのtRPCに処理を実行してもらいます。結果は75行目で受け取ります。

https://github.com/gaomar/react-liff-trpc-sample/blob/7e6a67e3ded319e1a9ea698e8bcf6fc321c8f2ad/frontend/src/pages/Top.tsx#L53-L75

tRPCのスゴイところ

型安全なので、バックエンド側のプロパティ名を変更すると、フロントエンド側にも影響します。
例えば、userIdからuserId2という別のプロパティ名に変更してみます。

backend/src/trpc/router.ts
userId2: z.coerce.string().parse(line.userId),

すると、このようにVSCode上でエラーが返ってきて、userId2ということを教えてくれます。

謝辞

今回サンプルを作るにあたって、下記を参考にいたしました。

https://dev.classmethod.jp/articles/trpc-sample/

LINE Developer Community

Discussion