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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
540
Other Decks in Programming
See All in Programming
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
320
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
150
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
120
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
260
Contextとはなにか
chiroruxx
1
400
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
継続モナドとリアクティブプログラミング
yukikurage
3
580
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
230
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
210
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Curious Case for Waylosing
cassininazir
1
430
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Producing Creativity
orderedlist
PRO
348
40k
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
ご清聴ありがとうございました!