Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenAPIコード生成ライブラリを 『Orval』に移行した理由
Search
ytaisei
April 23, 2023
Technology
2
5k
OpenAPIコード生成ライブラリを 『Orval』に移行した理由
2023年「春のJavaScript祭り」のLT登壇資料。
概要:OpenAPIからのコード自動生成ライブラリをopenapi-generatorからOrvalに移行した理由と効果について
ytaisei
April 23, 2023
Tweet
Share
More Decks by ytaisei
See All by ytaisei
TanStack Routerを新規プロダクトで1年間運用してみた結果
ytaisei
1
250
Reactを段階的に覗いてみる
ytaisei
3
2k
Reactのトランジションを覗いてみる
ytaisei
1
2.6k
Deep Dive Into React 〜React Fiber Architectureについて〜
ytaisei
2
470
React19で状態管理はどう変わるか
ytaisei
2
200
TanStackで効率的なルーティングとデータ取得を実現
ytaisei
10
2.5k
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
2.4k
BunがCommonJSをサポートする理由
ytaisei
2
460
TanStack Router SPA開発の選択肢になるか(+TanStack Query)
ytaisei
2
1.7k
Other Decks in Technology
See All in Technology
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
140
脳内メモリ、思ったより揮発性だった
koutorino
0
360
AI実装による「レビューボトルネック」を解消する仕様駆動開発(SDD)/ ai-sdd-review-bottleneck
rakus_dev
0
140
銀行の内製開発にて2つのプロダクトを1つのチームでスクラムしてみてる話
koba1210
1
130
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
250
今のWordPress の制作手法ってなにがあんねん?(改) / What’s the Deal with WordPress Development These Days?
tbshiki
0
460
Abuse report だけじゃない。AWS から緊急連絡が来る状況とは?昨今の攻撃や被害の事例の紹介と備えておきたい考え方について
kazzpapa3
1
730
社内レビューは機能しているのか
matsuba
0
130
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
260
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
220
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
530
Zeal of the Convert: Taming Shai-Hulud with AI
ramimac
0
110
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
Accessibility Awareness
sabderemane
0
81
Building the Perfect Custom Keyboard
takai
2
710
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
410
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
300
Deep Space Network (abreviated)
tonyrice
0
90
Six Lessons from altMBA
skipperchong
29
4.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Thoughts on Productivity
jonyablonski
75
5.1k
エンジニアに許された特別な時間の終わり
watany
106
240k
Transcript
OpenAPIコード生成ライブラリを 『Orval』に移行した理由 早稲田大学4年 安井大晟(ytaisei) 1
TABLE OF CONTENTS 自己紹介 01 Orvalとは? 03 抱えていた課題 02 効果検証
プロダクトが抱えていた 課題を整理 04 Orvalの特徴を紹介 他の自動生成ライブラリとの違 いは 導入後の効果 2
自己紹介 01 3
自己紹介 2019年:早稲田大学教育学部入学(元教員志望) 2021年:42Tokyo入学 2022年:エンジニアを目指し休学 学生ピッチコンテスト等で受賞 2023年:SaaS企業インターン 4
抱えていた課題 プロダクトが抱えていた課題を整理 02 5
TypeScript (前提)使用している技術 Axios HTTPクライアント コード生成ライブラリ openapi-generator テスト Testing Library 言語
非同期状態管理 React Query UIライブラリ React 6
TypeScript (前提)使用している技術 Axios HTTPクライアント コード生成ライブラリ Orval テスト Testing Library 言語
非同期状態管理 React Query UIライブラリ React 7
React QueryのQuery Keyを 安全に管理できていなかった 抱えていた課題 課題1 課題2 Openapi-generator の使いづらさ ライブラリに対する不満
React Queryの設計上の問題 8
Openapi-generatorの使いづらさ • 出力ファイルの多さ • 実行速度の遅さ • 数多くのライブラリに対応している分、痒い所に手が届かない ◦ 70近いclient generatorを用意
◦ Mock生成、ファイルの出力方法 etc. 9
React QueryのQuery Keyを 安全に管理できていなかった これ キャッシュを管理する keyになるため、 必ず一意性を保証する必要がある 10
公式でもQuery Keyを定数で管理することを 推奨している 11
定数で管理するメリット Query Keyを文字列で指定しなくて良い • • Human Errorを防ぐ • 保守性を高める 12
React QueryのQuery Keyを 安全に管理できていなかった 抱えていた課題 課題1 課題2 Openapi-generator の使いづらさ ライブラリに対する不満
React Queryの設計上の問題 13
Orvalとは? Orvalの特徴を紹介 他の自動生成ライブラリとの違いは 03 14
Orvalとは? Orvalは、OpenAPIから型安全なコードを自動生成するツールであり、 React Queryのカスタムフックも生成できます。APIドキュメントからクラ イアントコードを生成し、開発効率を向上させるだけでなく、型情報を提 供してエラーを減らします。 (ChatGPTに聞きました) 15
まとめると • TS製ライブラリ • 高速なコード生成 • Mockの自動生成 • 柔軟な出力方法 プロダクトとの相性が
非常にいい REST設計で状態管理にReact QueryやSWRのような ライブラリを使用している場合、Orvalは高い価値を発揮する。 16
Orvalが向かないケース • スキーマが正しく定義されていない ◦ 生成されるコードの質が落ちる • テスト運用がされていない ◦ Mockの自動生成が生きない •
React QueryやSWRを使っていない ◦ カスタムフックの自動生成が生きない 17
生成されるコード 1. HTTP通信ロジック 2. Query Keyの生成関数 3. 型定義 4. React
Queryのカスタムフック (特定の設定をした条件で) 18 1 2 3 4
2. Query Keyの生成関数 • エンドポイントに沿ったQuery Keyを設定 • 一意であればなんでもいい ライブラリに任せたい! 19
4. React Queryのカスタムフック 1. エンドポイントごとにuseQueryの カスタムフックを実装する 2. React Queryのオプションを失わない設計 3. TDataをGenericsで渡せる
4. QueryFn、QueryKeyを分けて実装する すべての条件を満たしている 👍 20
出力ファイル形式の柔軟性 公式より 21
効果検証 導入後の効果 04 22
React QueryのQuery Keyを 安全に管理できていなかった 抱えていた課題 課題1 課題2 Openapi-generator の使いづらさ 柔軟なカスタマイズと特定の技術下で
高い価値を発揮! React Queryの設計を完全に任せられる! 23
24 • HTTP通信 ◦ openapi-generator • React Queryの実装 • Query
Keyの管理 • React Queryのオプション指定 どれだけメンテナンスすべきコードが削減されたか
25 メンテナンスが必要なコードが大幅に削減 • HTTP通信 • React Queryの実装 • Query Keyの管理
• React Queryのオプション指定
• React Queryのカスタムフック • Query Keyの管理 • Mock関数の生成 etc. 誰が担当しても同じ(似た)実装になるものは、
ライブラリに任せることでHuman Errorを防ぎ、 開発者体験を向上させる 26
THANKS! ご清聴ありがとうございました ぜひ様々なイベントでのお声がけをお待 ちしています! Twitter:https://twitter.com/ytaisei_ GitHub:https://github.com/taisei-13046 Qiita:https://qiita.com/taisei-13046 Zenn:https://zenn.dev/taisei_13046 27