OpenAPI の導入による CAM の Schema 駆動開発 実例3選
by
matsuhei
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
OpenAPIの導入による CAMのSchema 駆動開発 実例3選 松本 涼平
Slide 2
Slide 2 text
Agenda 1. OpenAPIとは 2. OpenAPIの導入による Schema駆動開発 実例3選 a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 3. まとめ
Slide 3
Slide 3 text
{ "name": "松本 涼平", "company": "株式会社CAM", "since": "fourth year", "work": "BackendEngineer💻", "skills": ["Go", "Node.js", "Java"], "sports": "Futsal⚽", "latestHobby": "Billiards🎱" } Introduction
Slide 4
Slide 4 text
OpenAPIとは
Slide 5
Slide 5 text
OpenAPIとは HTTP API定義における標準化を 目的に作成されたAPIの仕様定義書 プログラミング言語に依存しない インターフェイス定義可能 => サービスの機能の把握しやすい
Slide 6
Slide 6 text
OpenAPIを用いてできること - Documentation - Data Validators - SDK Generators - Mock Servers - Security etc… OpenAPIとは
Slide 7
Slide 7 text
a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選
Slide 8
Slide 8 text
a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選
Slide 9
Slide 9 text
1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは
Slide 10
Slide 10 text
1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは
Slide 11
Slide 11 text
API仕様書 { "name": "matsumoto", "work": "BackendEngineer", "nickname": "matsuhei" } 実際の返却値 { "name": "matsumoto", "work": "BackendEngineer" } ⚠ nickname が 存在しない!? 仕様書と実装が乖離している
Slide 12
Slide 12 text
API仕様書 { "name": "matsumoto", "work": "BackendEngineer", "nickname": "matsuhei" } 実際の返却値 { "name": "matsumoto", "work": "BackendEngineer" } ⚠ nickname が 存在しない!? 仕様書と実装が乖離している ⚠障害や開発遅延の原因に…
Slide 13
Slide 13 text
1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは
Slide 14
Slide 14 text
⚠ ageの型が違 う!? 理想の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": 26 } 実際の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": "26歳" } バリデーションが未実装
Slide 15
Slide 15 text
⚠ ageの型が違 う!? 理想の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": 26 } 実際の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": "26歳" } バリデーションが未実装 ⚠障害や開発遅延の原因に…
Slide 16
Slide 16 text
1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI へ利用するOpenAPIを用いてできること Documentation✨ Data Validators✨
Slide 17
Slide 17 text
OpenAPIで仕様書を記述することでDocumentation作成 🎉 レガシー環境で抱えていた問題の解決
Slide 18
Slide 18 text
OpenAPIで定義したSchemaでValidationを実現 🎉 Schemaを見るため、仕様書の乖離が発生しない✨ レガシー環境で抱えていた問題の解決 Data Validators Middlewares 形式が違うrequestBody validation error
Slide 19
Slide 19 text
1. 既存のAPIが多く短期間ですべてを検証しきれない 2. 過去に利用したが今使っていないAPIが存在する そのまま導入すると…? 実際にレガシー環境に導入する上で 困ったこと ⚠API検証漏れ ⚠不要なAPIが 消せない
Slide 20
Slide 20 text
v1 → v2 実際にレガシー環境に導入する上で 困ったこと 移管時に不要なAPI を確認可能 APIの精査が容易🎉 スモールリプレイス により 事故リスクの軽減🎉 スモールリプレイスを計画🚧 APIをV1からV2へ V2側にMiddlewareを実装で解消
Slide 21
Slide 21 text
a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選
Slide 22
Slide 22 text
クライアントからの呼び出しを都度実装 クライアントからの呼び出し
Slide 23
Slide 23 text
クライアントからの呼び出しをOpenAPIを用いて自動生成 クライアントからの呼び出し
Slide 24
Slide 24 text
OpenAPI準拠にクライアントライブラリの生成が可能 openapi-generator 自動生成
Slide 25
Slide 25 text
クライアント側が都度実装する必要がない 管理コスト及び開発量を軽減・効率化が可能🎉 クライアントライブラリ自動生成 流れ
Slide 26
Slide 26 text
Contributor 🎉 contribute
Slide 27
Slide 27 text
a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選
Slide 28
Slide 28 text
Viron とは
Slide 29
Slide 29 text
CAM製OSS Viron - 管理画面 for OpenAPI- Viron
Slide 30
Slide 30 text
ノーコードでのフロントエンドの実装が可能 フロントエンドの開発が必要なくなり効率化🎉 Viron
Slide 31
Slide 31 text
VironDashボードにて複数サービスの管理画面への導線が作成可能🎉 Viron
Slide 32
Slide 32 text
TechBlog https://cam-inc.co.jp/p/techblog/640829048905270209
Slide 33
Slide 33 text
OpenAPIを用いると? validation generator viron まとめ ● Schema駆動開発により 仕様把握が容易 🎉 ● 様々な面において効率化が 可能 🎉
Slide 34
Slide 34 text
ご静聴ありがとうございました。