$30 off During Our Annual Pro Sale. View Details »

OpenAPI の導入による CAM の Schema 駆動開発 実例3選

OpenAPI の導入による CAM の Schema 駆動開発 実例3選

先日 v3.1 がリリースされた OpenAPI ですが、ドキュメント化やモックサーバーの立ち上げなど、API 開発における様々なシーンでのデファクトスタンダードとなりつつあります。この登壇では、CAM における OpenAPI の活用について、レガシー環境への導入や応用の実例を3つ解説していきます。

matsuhei

May 18, 2022
Tweet

Other Decks in Technology

Transcript

  1. OpenAPIの導入による CAMのSchema 駆動開発 実例3選 松本 涼平

  2. Agenda 1. OpenAPIとは 2. OpenAPIの導入による Schema駆動開発 実例3選 a. レガシーサービスへの適応編 b.

    クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 3. まとめ
  3. { "name": "松本 涼平", "company": "株式会社CAM", "since": "fourth year", "work":

    "BackendEngineer💻", "skills": ["Go", "Node.js", "Java"], "sports": "Futsal⚽", "latestHobby": "Billiards🎱" } Introduction
  4. OpenAPIとは

  5. OpenAPIとは HTTP API定義における標準化を 目的に作成されたAPIの仕様定義書 プログラミング言語に依存しない インターフェイス定義可能 => サービスの機能の把握しやすい

  6. OpenAPIを用いてできること - Documentation - Data Validators - SDK Generators -

    Mock Servers - Security etc… OpenAPIとは
  7. a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選

  8. a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選

  9. 1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは

  10. 1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは

  11. API仕様書 { "name": "matsumoto", "work": "BackendEngineer", "nickname": "matsuhei" } 実際の返却値

    { "name": "matsumoto", "work": "BackendEngineer" } ⚠ nickname が 存在しない!? 仕様書と実装が乖離している
  12. API仕様書 { "name": "matsumoto", "work": "BackendEngineer", "nickname": "matsuhei" } 実際の返却値

    { "name": "matsumoto", "work": "BackendEngineer" } ⚠ nickname が 存在しない!? 仕様書と実装が乖離している ⚠障害や開発遅延の原因に…
  13. 1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI とは

  14. ⚠ ageの型が違 う!? 理想の requestBody { "name": "matsumoto", "work": "BackendEngineer",

    "age": 26 } 実際の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": "26歳" } バリデーションが未実装
  15. ⚠ ageの型が違 う!? 理想の requestBody { "name": "matsumoto", "work": "BackendEngineer",

    "age": 26 } 実際の requestBody { "name": "matsumoto", "work": "BackendEngineer", "age": "26歳" } バリデーションが未実装 ⚠障害や開発遅延の原因に…
  16. 1. 仕様書と実装が乖離している 2. バリデーションが未実装 レガシーなAPI へ利用するOpenAPIを用いてできること Documentation✨ Data Validators✨

  17. OpenAPIで仕様書を記述することでDocumentation作成 🎉 レガシー環境で抱えていた問題の解決

  18. OpenAPIで定義したSchemaでValidationを実現 🎉 Schemaを見るため、仕様書の乖離が発生しない✨ レガシー環境で抱えていた問題の解決 Data Validators Middlewares 形式が違うrequestBody validation error

  19. 1. 既存のAPIが多く短期間ですべてを検証しきれない 2. 過去に利用したが今使っていないAPIが存在する そのまま導入すると…? 実際にレガシー環境に導入する上で 困ったこと ⚠API検証漏れ ⚠不要なAPIが 消せない

  20. v1 → v2 実際にレガシー環境に導入する上で 困ったこと 移管時に不要なAPI を確認可能 APIの精査が容易🎉 スモールリプレイス により

    事故リスクの軽減🎉 スモールリプレイスを計画🚧 APIをV1からV2へ V2側にMiddlewareを実装で解消
  21. a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選

  22. クライアントからの呼び出しを都度実装 クライアントからの呼び出し

  23. クライアントからの呼び出しをOpenAPIを用いて自動生成 クライアントからの呼び出し

  24. OpenAPI準拠にクライアントライブラリの生成が可能 openapi-generator 自動生成

  25. クライアント側が都度実装する必要がない 管理コスト及び開発量を軽減・効率化が可能🎉 クライアントライブラリ自動生成 流れ

  26. Contributor 🎉 contribute

  27. a. レガシーサービスへの適応編 b. クライアントライブラリ自動生成編 c. OSS Vironにおける管理画面への活用編 OpenAPIの導入によるSchema駆動開発 実例3選

  28. Viron とは

  29. CAM製OSS Viron - 管理画面 for OpenAPI- Viron

  30. ノーコードでのフロントエンドの実装が可能 フロントエンドの開発が必要なくなり効率化🎉 Viron

  31. VironDashボードにて複数サービスの管理画面への導線が作成可能🎉 Viron

  32. TechBlog https://cam-inc.co.jp/p/techblog/640829048905270209

  33. OpenAPIを用いると? validation generator viron まとめ • Schema駆動開発により 仕様把握が容易 🎉 •

    様々な面において効率化が 可能 🎉
  34. ご静聴ありがとうございました。