Open API + Railsでテストをいい感じにした話

5e511bb6d01d856b4ec7a0e5b1f6a2f0?s=47 syumai
July 18, 2019
43

Open API + Railsでテストをいい感じにした話

WIPです

5e511bb6d01d856b4ec7a0e5b1f6a2f0?s=128

syumai

July 18, 2019
Tweet

Transcript

  1. Open API + Railsでテストをいい感じにした 話 平成.rb 2019/7/18 @__syumai

  2. 自己紹介 syumai 平成4年生まれ 前職: 株式会社maricuruにてRailsを使ったAPI開発、React / Vue を使ったフロントエンド開発等を行っていました 現職: 決済系の会社でGoのマイクロサービスを開発しています

  3. はじめに

  4. めっちゃWIPです!

  5. 本日のテーマ Open API

  6. Open API or Swagger使ってますか?

  7. Open APIとは? YAML / JSONでAPI Specを書ける Swagger 3.0がそのままOpen API 3.0と呼ばれています

    書いたAPI Specから色々生成出来る
  8. 生成できるものその1 HTMLのいい感じのドキュメント フォームの送信とかも試せる! (Postman的なやつ)

  9. 生成できるものその2 サーバー / クライアントの生成 サーバーのinterfaceや、クライアントライブラリ (言語めっちゃ ある) を自動生成出来る 多言語のクライアントを生成したい時にめちゃくちゃ便利

  10. クライアント生成できる言語 https://github.com/OpenAPITools/openapi-generator Ruby / Node.js / TypeScript / Javaなど色々あります

  11. Open APIのSpecのサンプル

  12. Open APIのドキュメントのサンプル

  13. Open APIを使っている人からよく聞く課題 APIの実装とドキュメントがズレてくる ドキュメントがズレてるから、誰もメンテしなくなる 実装とドキュメントがズレると、自動生成したクライアントが使えなく なる

  14. ドキュメントがズレる理由 APIの実装を行う作業と、ドキュメントを書く作業が分離してしまって いるため これを統合できたら解決するはず!

  15. どう解決したか? テストでRailsのAPIを起動する テストに Open APIで生成したClient を使う

  16. このやり方の良い点 同じSpecから生成したClientをJSで使うとして、 Testさえ通っていれば、Client側から使えるのが保証される!

  17. 具体的なやり方 Makefileでテスト起動周りをいい感じに書いていく Railsサーバーの起動 Rspecの実行

  18. デモします!!

  19. ポイント テスト用のRailsサーバーと、Rspecで使うDBを共通にする

  20. つらみ エラーが出た箇所のログ追うのがつらい

  21. ご清聴ありがとうございました!!