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.5k
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
830
Amazon Athenaで気軽に始める データ分析/athena-data-analytics
marchin1989
0
640
AWS Glueではじめるデータレイク
marchin1989
0
750
やさしく入門するOAuth2.0/easy-entry-oauth
marchin1989
8
2.9k
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.8k
モバイルアプリで機械学習入門/introduction-to-machine-learning-in-mobile-app
marchin1989
0
560
Other Decks in Programming
See All in Programming
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
140
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
1
110
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
260
T3DD26: From RAGs to Riches
martinhelmich
0
130
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Go 1.27 における memory allocation の高速化
andpad
0
370
プロポーザルを書いてもらう
pvcresin
0
600
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
400
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
630
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
130
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
290
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
RailsConf 2023
tenderlove
30
1.5k
Automating Front-end Workflow
addyosmani
1369
210k
4 Signs Your Business is Dying
shpigford
187
23k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
710
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Facilitating Awesome Meetings
lara
57
7.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
410
30 Presentation Tips
portentint
PRO
1
380
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
ご清聴ありがとうございました!