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
APIファーストの開発
Search
SHIFT EVOLVE
PRO
July 26, 2021
Business
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
APIファーストの開発
SHIFT EVOLVE
PRO
July 26, 2021
More Decks by SHIFT EVOLVE
See All by SHIFT EVOLVE
コミュニティを、仕事にした。‐ 学びの場が会社の価値になるまで / 20260724 Ayana Chandler
shift_evolve
PRO
0
51
越境QA 〜QA歴18年のキャリア~ / 20260724 Masakazu Yoshikawa
shift_evolve
PRO
0
40
fukabori.fm出張版:AI駆動開発でテストエンジニアは不要になるのか / 20260723 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
49
【実録】「なんちゃってアジャイル」によるプロジェクト崩壊とその教訓 / 20260723 Takeshi Watarai
shift_evolve
PRO
1
25
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
3
790
AWS DevOps AgentでCDKメンテナンスは楽になるのか ~検証から見えた最適解~ / 20260718 Masaki Okuda
shift_evolve
PRO
0
590
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
540
AIが変えるDevSecOps―開発速度とセキュリティの両立へ / 20260714 Mitsutoshi Matsuo
shift_evolve
PRO
1
85
生成AI活用によるODC欠陥分析の分類高速化の実践と導入効果 / 20260703 Suguru Ishii
shift_evolve
PRO
2
170
Other Decks in Business
See All in Business
ClaudeCode × Hubspot 営業・マーケティングAI段階的成長ロードマップ
nagatsu
0
770
サステナブルな成長を支えるセルフマネジメントの技術/Self Management skill for growth
ikuodanaka
1
310
会社紹介資料
gatechnologies
3
190k
タスク分解も大事だけど、「文脈」を分解するのはもっと大事
masahagiwara
0
150
SalesforceとTableauコミュニティを横断して感じたこと(Osaka Dreamin)
leafyoh
0
120
プロジェクトを成功させる合言葉(AI通して見た版)
kentarowada
0
100
AIネイティブ時代における 開発組織の役割と拡張の可能性
recruitengineers
PRO
2
150
JBUG福岡#22_登壇資料_「伝えたはず」を「伝わる」に変える実践TIPS
webnaut
0
240
スマートキャンプ株式会社 会社紹介資料 / companydeck
smartcamp
19
740k
株式会社BALLAS 会社案内
ballas_inc
0
41k
Algomatic | 会社紹介資料
algomatic
PRO
2
150k
スマートキャンプ株式会社 会社紹介資料 / companydeck
smartcamp
1
4.8k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Music & Morning Musume
bryan
47
7.3k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Technical Leadership for Architectural Decision Making
baasie
3
440
It's Worth the Effort
3n
188
29k
New Earth Scene 8
popppiees
3
2.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
320
4 Signs Your Business is Dying
shpigford
187
22k
Transcript
API主体のアプリケーション開発
About me 名前:川合 亮 所属:株式会社リアルグローブ・オートメーティッド
最近のできごと
きっかけ • APIはあるがドキュメントがない ◦ コードサンプルからどういうリクエストを送ったらいいか試行 ◦ レスポンスは実際に送られてきたデータを見て型をチェック • APIを1つ追加する際に多くの変更が必要 ◦
バグのとき、フロントエンド、バックエンドそれぞれどちらが間違っているか難しい • ドキュメントと実装が乖離している
スキーマファーストをやってみました スキーマファーストとは • API仕様を中心にバックエンド、フロントエンドの開発を並行して行う方法 • OpenAPIを用いることが多い。(RESTful APIをYAML/JSONで定義したもの) • 周辺ツールが発達している ◦
コード生成ツール(API変更時の負担軽減) ◦ モックサーバー、ドキュメント生成
OpenAPIの例 • YAML/JSON形式で記載したテキストファイル • REST API準拠で定義する • リクエスト、レスポンスの型を定義、指定できる • 昔はSwagger、現在最新はv3.1
(v3.0使うほうが無難) OpenAPI Initiative (https://www.openapis.org/) スキーマ設計おすすめサイト (https://future- architect.github.io/articles/20200409/)
OpenAPIの例 Swagger Editor (https://editor.swagger.io/) ReDoc (https://redocly.github.io/redoc/)
APIドキュメントからできることについて APIドキュメン ト コードジェネレータ モックサーバー Goなどのコード • ハンドラなど生成 • 型定義で誤りにくい
モックサーバー • サンプル値のレスポンスを返す APIサーバーが立てれる • APIサーバーを待たずにフロン トエンド開発ができる
OpenAPIの書くときのツール • YAML力が必要 • 長大になりがち
Stoplight Studioについて • GUIで作成できるツール • 構文間違いのお知らせあり • マルチプラットフォーム https://stoplight.io/p/studio/gh/stoplightio/studio
Prismについて • APIドキュメントを元に ◦ モックサーバーの起動 ◦ アプリの動作検証 https://stoplight.io/p/studio/gh/stoplightio/studio
コード生成について • openapi-codegenerator (https://github.com/OpenAPITools/openapi-generator) ◦ おそらくコードジェネレータのデファクトスタンダード ◦ 相当数の言語に対応している ◦ 言語毎の品質はまばら
• kin-openapi (https://github.com/getkin/kin-openapi) ◦ Goのコードジェネレータ ◦ レスポンスのバリデートが実装されている • restful-react (https://www.npmjs.com/package/restful-react) ◦ Reactのfetch部分などのコードジェネレータ ◦ Reactで使うならこちらの方が楽かも その他サポートしているツールリスト https://github.com/OAI/OpenAPI-Specification/blob/main/IMPLEMENTATIONS.md
実際にやってみたこと サンプルアプリケーションを作成 ブログのように記事の一覧、作成を行うシンプルなアプリケーションで利用 バックエンドはGo + echo (oapi-codegen) で実装 フロントエンドはReact +
Typescript (openapi-codegenerator)で実装 APIドキュメントがないアプリケーションでドキュメント作成 コードベースでリクエスト、レスポンスのデータ型をドキュメントにした ReDocなどで他の人が閲覧しやすいようにした
所感 • メリット ◦ バックエンド、フロントエンドからのデータを疑う必要がない ◦ コード生成による変更負担減 ◦ ドキュメントがあるのでどういったデータを送ればいいか連携しやすい •
デメリット ◦ OpenAPIの学習コスト、メンテナンスコスト(GUIツールがあっても) ◦ コード生成ツールの選定に時間がかかる ◦ 周辺ツールを上手く使って開発に組み込む必要がある
OpenAPI ドキュメントが使用できるクラウドサービ ス • AWS ◦ Amazon API Gateway (https://aws.amazon.com/jp/api-gateway/)
• Azure ◦ Azure API Management (https://azure.microsoft.com/ja-jp/services/api-management/) • GCP ◦ Cloud Endpoint (https://cloud.google.com/endpoints)
ご清聴ありがとうございました