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 を守るのは難しい
Search
uutan1108
March 24, 2024
Programming
2
1.8k
OpenAPI を守るのは難しい
OOC 2024 当日参加LTの資料です
https://ooc.connpass.com/event/305241/
uutan1108
March 24, 2024
Tweet
Share
More Decks by uutan1108
See All by uutan1108
勉強会から始まった僕のDevRel~新卒エンジニアがつないだ2年間の軌跡~
ohmori_yusuke
1
220
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
アニメがエンジニアをつなぐ!「エンジニアニメ」勉強会が巻き起こすCo-Creationの波
ohmori_yusuke
0
140
組織が大きく変わろうとするとき、自分はどうありたいかを考えている
ohmori_yusuke
19
6.5k
技術以外をきっかけに交流するエンジニア向け勉強会
ohmori_yusuke
0
54
デザインって“感覚”だけじゃないVibe Codingからの気づき
ohmori_yusuke
3
87
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
150
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
1
560
市町村のオープンデータを使って「公園・トイレの口コミマップ」を作ってみた
ohmori_yusuke
0
370
Other Decks in Programming
See All in Programming
実践AIチャットボットUI実装入門
syumai
7
2.5k
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
2
630
dynamic!
moro
9
6.8k
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
360
CSC509 Lecture 05
javiergs
PRO
0
300
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
690
CSC509 Lecture 02
javiergs
PRO
0
410
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
6
3.6k
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
170
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
630
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
210
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Music & Morning Musume
bryan
46
6.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
How STYLIGHT went responsive
nonsquared
100
5.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Transcript
OpenAPI を守るのは難しい Object-Oriented Conference 2024 LT うーたん
自己紹介 • うーたん • 新卒サーバーサイドエンジニア ◦ 株式会社ゆめみ • 趣味 ◦
アニメを見ること • X ◦ @uutan1108 2 月刊I/O 3月号、4月号に 「プログラミング& 実行できるWEBアプリを手作り」 掲載されたので読んでね
詳細はこちらのスライドを読んでください https://speakerdeck.com/kentaroutakeda/laravel-openapiniyoru-xin-kunai-sukimaqu-dong-kai-f 武田 憲太郎 さんのスライドです
目次 - OpenAPI とは - OpenAPI の自動生成を使わず開発 - 自動化、コードに取り込ませて守らせる -
終わりに
OpenAPI とは
OpenAPI とは - API(application programming interface)の仕様をJSONやYAMLファ イルで記述できる - APIのエンドポイント、パラメータ、レスポンスなどの定義ができる -
インタラクティブなドキュメントを生成できる - さまざまなプログラミング言語でAPIクライアントのコードを 自動生成できる OpenAPI仕様とは、使いやすい記述ツールをご紹介! https://apidog.com/jp/blog/what-is-openapi/
OpenAPI とは - API(application programming interface)の仕様をJSONやYAMLファ イルで記述できる - APIのエンドポイント、パラメータ、レスポンスなどの定義ができる -
インタラクティブなドキュメントを生成できる - さまざまなプログラミング言語でAPIクライアントのコードを 自動生成できる OpenAPI仕様とは、使いやすい記述ツールをご紹介! https://apidog.com/jp/blog/what-is-openapi/
OpenAPI とは - API(application programming interface)の仕様をJSONやYAMLファ イルで記述できる - APIのエンドポイント、パラメータ、レスポンスなどの定義ができる -
インタラクティブなドキュメントを生成できる - さまざまなプログラミング言語でAPIクライアントのコードを 自動生成できる OpenAPI仕様とは、使いやすい記述ツールをご紹介! https://apidog.com/jp/blog/what-is-openapi/
OpenAPI から interface を自動生成できる
APIクライアントのコードを自動生成できる - 自動生成するツールに OpenAPI Generator がある - TypeScript のコードを OpenAPI
Generator を使って生成 すると interface が生成される - API を利用するときに生成された interface を使う
OpenAPI (YAML) https://zenn.dev/overflow_offers/articles/20220620-openapi-generator
自動生成
https://zenn.dev/overflow_offers/articles/20220620-openapi-generator TypeScript (interface)
OpenAPI (YAML) に従ってそれぞれ実装する A P I バックエンド フロントエンド OpenAPI を変更して実装も
変更する
OpenAPI (YAML) に従ってそれぞれ実装する A P I バックエンド フロントエンド 自動生成されたコードを使う 自動生成されたコードを使う
OpenAPI (YAML) に従ってそれぞれ実装する A P I バックエンド フロントエンド 自動生成されたコードを使う 自動生成されたコードを使う
OpenAPI を信じてもらえる
フロントエンドもバックエンドも自動生成したコー ドを使えば... OpenAPI と実装に乖離がなくなるはず
OpenAPI の自動生成を使わず開発
OpenAPI で定義した仕様を信じている A P I バックエンド フロントエンド API の定義を実装するぞ API
からのレスポンスを 受け取って処理するぞ
OpenAPI で定義した仕様を信じている A P I バックエンド フロントエンド スキーマは人間 が書く!
OpenAPI で定義した仕様を信じている A P I バックエンド フロントエンド OpenAPI から 自動生成はしない!
OpenAPI の自動生成を使わず開発を続ける
OpenAPI を変更しなくても、 実装に影響ないし... 実装を変更してから OpenAPI も変更してもらお
OpenAPI からコードを生成しないので、 仕様書のように変更されなくなる...
OpenAPI (YAML) に従ってそれぞれ実装する A P I バックエンド フロントエンド OpenAPI のメンテ追いつかん
OpenAPI で定義した仕様を守らなくなる A P I バックエンド フロントエンド レスポンスを知りたかったら 俺のコードを見ろ!
OpenAPI で定義した仕様を守らなくなる A P I バックエンド フロントエンド レスポンスを知りたかったら 俺のコードを見ろ! OpenAPI
の仕様は信じない...
悲しい A P I バックエンド フロントエンド レスポンス知りたかったら 俺のコードを見ろ! OpenAPI の仕様は信じない...
人力でメンテは無理だよ...
バックエンドの実装にフロントエンドが依存 A P I バックエンド フロントエンド レスポンスを知りたかったら 俺のコードを見ろ! バックエンドのレスポンスを確認 するか...
インターフェース(API)ではなく バックエンドの実装にフロントエンドが 依存するようになる
なんでOpenAPI を守らなくなるのか...
自動化、コードに取り込ませて守らせる
OpenAPI から自動生成させる A P I バックエンド フロントエンド OpenAPI から生成した interface
に合わせて実装しろ!
生成したインターフェースを守らせる A P I バックエンド フロントエンド OpenAPI を変更しないで実装のレ スポンスを変更させない!
バックエンドの実装を見なくても OpenAPI を見れば分かる A P I バックエンド フロントエンド OpenAPI をメンテするね
メンテしないと実装できないからね
まとめ
実装に合わせて OpenAPI を書くのではなく OpenAPI を変更してから実装に反映したい
宣伝
None
2024. 5.12 Sun 11:00 - 16:00
OOC 2024 のアフターイベントします
ご清聴ありがとうございました🙇 42