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
WebAPI開発のためのOpenAPI入門/entry-open-api
Search
marchin
June 15, 2023
Programming
1.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebAPI開発のためのOpenAPI入門/entry-open-api
marchin
June 15, 2023
More Decks by marchin
See All by marchin
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
820
Amazon Athenaで気軽に始める データ分析/athena-data-analytics
marchin1989
0
630
AWS Glueではじめるデータレイク
marchin1989
0
740
やさしく入門するOAuth2.0/easy-entry-oauth
marchin1989
8
2.8k
1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku
marchin1989
2
1.6k
自動テストでモックするって、なにそれ?おいしいの?/what_is_mocking
marchin1989
1
1.3k
たぶんもう怖くないGit/maybe-not-afraid-of-git-anymore
marchin1989
2
2.7k
モバイルアプリで機械学習入門/introduction-to-machine-learning-in-mobile-app
marchin1989
0
530
Other Decks in Programming
See All in Programming
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
Creating Composable Callables in Contemporary C++
rollbear
0
150
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
710
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
560
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
880
C# and C++ Interoperability - cho-dotnetnew
harukasao
0
280
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.6k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
260
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
A designer walks into a library…
pauljervisheath
211
24k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
30 Presentation Tips
portentint
PRO
1
330
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Rails Girls Zürich Keynote
gr2m
96
14k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Transcript
WebAPI開発のためのOpenAPI入門 ~OpenAPI Specificationを利用して開発効率をアップしよう~
自己紹介 名前 :阿部 真之 仕事 :株式会社ゆめみ。サーバーサイド、Androidのリードエンジニア 趣味 :コーヒー、ビール、アニメ、ゲーム、読書、etc… Twitter:@marchin_1989
前置き 対象者 - 業務でAPI仕様書を利用する、作成する方 - OpenAPIを知らない方、触ったことがない方 - OpenAPIでできることを知りたい方 前提とする知識 -
HTTPの基礎知識がある程度あること - API仕様書を利用したことがあること 注意 - 最近流行りの「OpenAI API」ではなく、「OpenAPI」についての話をします。全く別物なので 注意。
- OpenAPIの概要 - OpenAPIの記述 - クライアントコード、サーバサイドコードの自動生成 - モックサーバ作成 - まとめ
アジェンダ
API仕様書のよくある課題 - Excel仕様書が読みづらい、メンテしづらい - フォーマットが統一されていない - API仕様書と実装が一致していない - リクエストやレスポンスのクラス設計と実装が、ほぼAPI仕様書通りなので二度手 間感がある
OpenAPI
OpenAPI - OpenAPI Specificationは、WebAPI(REST)のインターフェースを記述するための 仕様。フォーマット。 - OpenAPI Specificationを、OASといったり、OpenAPI Specといったりする。 -
JSONとYAMLで記述が可能。 - 現在(2023/06/16)の最新バージョンはv3.1.0。 - OASに対応している各種周辺ツール、 サービスの対応状況によっては、 まだv3.0.3、もしくは2系を使う選択肢もある。
OpenAPIのメリット - 書き方が仕様で決まっているおかげで、API仕様書のフォーマットを統一できる。 - OpenAPIの仕様に準拠したツール(プログラム)があり、クライアント、サーバの コードなど、自動生成することが可能。 - OpenAPIのエコシステムに乗っかることで、 さまざまな恩恵あり。
OpenAPI(OAS)の記述
OASの構造 トップレベルに定義できるオブジェクト(OpenAPI Object)をいくつか紹介。 - openapi - 自身のファイル、OASのバージョン。3.1.0や3.0.3など指定。 - info -
このAPIの情報(タイトル、バージョン、作者など)を記述。 - titleとversionが必須。 - paths - APIのエンドポイントを記述。 - メソッドやリクエストパラメータ、レスポンスなどを記述。 出典: OpenAPI - Minimal Document Structure https://learn.openapis.org/specification/structure.html#minimal-document-structure
OASの構造 その他のオブジェクトを紹介。 - components(Components Object) - OASの再利用可能なオブジェクトを記述。 - APIのリクエストやレスポンスなどで参照できる。 -
servers(Server Object) - APIのベースURLを記述。 - URL内に変数を含めることができる。ドメインやポート、バージョンなどを変数で表現可能。 出典: OpenAPI - Reusing Descriptions https://learn.openapis.org/specification/components.html 出典: OpenAPI - API Servers https://learn.openapis.org/specification/servers.html
OpenAPIを記述するためのツール - OASはただのテキストファイルなので、エディタがあれば記述は可能。 - ただし、プレビューなどを利用した方が効率がいいので、ツールを使うのがおすす め。 - 代表的なツール - Swagger
Editor: ブラウザでOpenAPIのYAML(JSON)が記述できる。 - Stoplight studio: よりGUIベースでOpenAPIの記述が可能。 - IDEのplugin
実際に書いてみる(デモ)
クライアントコード、サーバサイドコードの自動生成
モックサーバ作成
OpenAPIのツールを探す方法(おまけ) - 公式がツールをまとめてくれているので参考にするとよい - https://tools.openapis.org/ - 各ツールのメンテ状況や、OASバージョン対応状況を見て判断するといい
まとめ - OpenAPI Specification(OAS)は、WebAPI(REST)のインターフェースを記述す るための仕様。フォーマット。 - API仕様書のフォーマットを統一できる。 - OASを用意すれば、クライアント、サーバのコードを自動生成可能。
参考文献 ・OpenAPI INITIATIVE. https://www.openapis.org/ ・OpenAPI Generator. https://openapi-generator.tech/ ・Software Design 2022年8月号,
技術評論社, 2022 ・Swagger. https://swagger.io/ ・Stoplight. Prism. https://stoplight.io/open-source/prism
ご清聴ありがとうございました!