Orvalやってみた

>100 Views

September 21, 25

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

やってみた Orval 2025-09-22 『TypeScriptのスキーマ駆動開発』実践事例 LT

2.

自己紹介 足立蓮 / 皮しばき / r315dr / moeyashi アイコンは中音ナタ(@natanakane)さん作 趣味:麻雀、コーヒー

3.

Orval って何? OpenAPI の定義から型定義やAPIクライアントコードを自動生成してくれるツール

4.

やってみる npx orval --input ./petstore.yml --output ./src/petstore.ts

5.

できた src/petstore.ts Pet などの型定義 などのAPIクライアントコード axiosが使われている listPets, createPets

6.

...OpenAPI-Generator でいいか とはならないところを見ていく

7.

orval.config.(js|mjs|ts)

8.

client: "swr" にしてみる を使ったAPIクライアントコードが生成される。嬉しい React Queryも選べる。 SWR

9.

mock: true を指定してみる モックデータ生成関数とMSWのハンドラが生成される。嬉しい

10.

client: "zod" にしてみる のスキーマが生成される。嬉しい Zod

11.

これできる?

12.

テストではMSWの delay(0) にしたい デフォルトは delay(1000) npm run dev と npm run test で切り替えたい

13.
[beta]
delayFunctionLazyExecute: true

実行時に評価されるようにする

mock: {
type: "msw",
delay: () => (process.env.NODE_ENV === "test" ? 0 : 1000),
delayFunctionLazyExecute: true,
},
// 生成結果
return http.get('*/pets', async (info) => {await delay((() => process.env.NODE_ENV === "test" ? 0 : 1e3)());

14.

レスポンスをZodで検証したい クライアントとスキーマは別々で生成される listPets の内部でZod検証されていると安心 API

15.

この機能はなさそう GitHub IssueやDiscussionでの同様の話はオープンされている スキーマ駆動ならバックエンドからの返り値は信用しよう、という話ではある

16.

おわり

18.

試した成果物 https://github.com/moeyashi/practice-orval