6
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swaggerを勉強したことまとめ

Last updated at Posted at 2019-02-07
1 / 18

マイクロサービス化のトレンド

  • モノリシックな1つの大きなアプリケーションから、マイクロサービス化のトレンドに乗って比較的小さなアプリケーションを繋いでアプリケーション開発することが多くなっている。
  • 特定のリソースへのAPIが多く開発されるようになり、APIの仕様(インターフェース)をスピーディに、人にわかりやすく、作成する必要がある。

APIの仕様と実装の乖離

APIの利用者(以下、APIコンシューマ)は、APIの仕様書を信じて作り込むしかないため、APIの提供者(以下、APIプロバイダ)は仕様と実装の乖離を起こしてはならない
だが、、、

結構むずかしい(らしい)。。


さらに、

  • 開発スピードを損ないたくない
  • Gitでバージョン管理、変更管理したい
  • 様々なAPIコンシューマが利用しやすいドキュメント形式

これらにコミットしないとAPIの利用が広まらない恐れが。。。


Swaggerはこうした課題に対する解決となるツールを提供する。
スクリーンショット 2019-02-04 1.24.25-min.png


swaggerとは

以下のツール群をSwaggerという。

ツール名 説明
Swagger Spec RESTfulAPIの仕様を定義したドキュメント。jsonもしくはyaml形式。
Swagger Editor Swagger Specを書くためのエディタ。ブラウザで動きリアルタイムで構文チェックが可能
Swagger UI Swagger Specを読み込ませて人に見やすいページ(ドキュメント)を作成する。
Swagger Codegen Swagger SpecからAPIのスタブを自動生成する。
Swagger Inspector APIを検証でき、結果からSpecを自動生成も可能。
Swagger Hub 開発者向けのAPIのポータルサイト。

swaggertool-min.png


swaggerを利用するメリット

  • API仕様を効率的かつ正確にモデル化
  • API仕様を一瞬でドキュメント化
  • エンジニア間のAPI仕様の共通化
  • APIスタブサーバーを容易に自動生成
  • 既存APIもSwaggerによる文書化可能
    - 複数のドキュメントバージョンの管理
    など

さわってみよう!

Swaggerに必要なツールが揃っているAll-in-OneのGitリポジトリをクローンすればローカルでもすぐ試せます。

git clone https://github.com/elevennines-inc/swagger-all-in-one-docker-compose.git
cd swagger-all-in-one-docker-compose
docker-compose up -d

Swagger Spec

現在、Swagegr Specはswagger 2.0swagger 3.0の二つの構文がサポートされている。

swagger 3.0openapi 3.0とも呼ばれ、
それに伴いopenapi 3.0で書かれているSwagger SpecOpenAPI Spec(3.0)とも称される。
swagger 3.0での変更点について

※前述したカタカナのオープンAPIとopenapiは明確に区別されているようです。

なお、2019年2月現在、ネット記事のサンプルコードは2.0と3.0の半々くらいの印象。


Swagger Spec作成のアプローチ

  • 1からAPI仕様を作成していく場合

  • 論理的なインターフェースモデルを検討しながら、Swagger Editorなどで作成する。

  • 既存の実装済みAPIがある場合

  • 既存のAPIをSwagger Inspectorでコールし、結果をもとにSwagger Specを出力する。


まずは無料で試せるSwagger Editorで作成してみよう


Swagger Editor

Swagger EditorでSwagger Specを作成し、同時にSwagger UI(API仕様書)の表示を確認する。
似た機能で、VScodeのアドインも存在する。

Swagger Specを1から作るのは大変なので、この辺りをコピペして修正していくといいかも
https://github.com/OAI/OpenAPI-Specification/tree/master/examples/v3.0


Swagger UI

さきほど作ったSwagger Specを読み込ませてAPI仕様をブラウザ上で確認する。
スタブサーバーや開発したAPIサーバーにリクエストを実行し、実際のレスポンスを確認できる。

自社の開発者向けのAPIドキュメントとしてはこれで十分ではないかと思う。


Swagger触ってみた感想

イイネ😁

  • Swagger Specをjsonとyaml両記法で書ける
  • Swagger SpecからAPI仕様書が一瞬で作成できる
  • APIリクエストの内容をかなり詳細に定義できる
  • Gitで変更履歴管理が可能
  • スタブサーバーの構築が容易になる
  • クライアント側とAPI側で平行開発できる

もう少し😣

  • 公式だけでも周辺ツールが多く少しとっつきにくい
  • Swagger Specの独自構文を覚える必要がある
  • Swaggerスタブはパスに対して固定の結果しか返せない

参考1 (オープンAPI)

ある企業が提供するAPIのうち第三者がアクセス可能なAPIのこと。

様々なAPIが試せる楽天RapidAPIというものも。


参考2 (jsonschema)

APIのリクエスト/レスポンスのJsonSchemaというjsonの拡張定義をベースに作成されている。

JsonShemaとは

  • jsonオブジェクトに注釈をつけられる
  • 人間にも機械にも読める形式で記述できる
  • 自動テストやjsonデータの品質検証ができる

*個人的には、JsonSchemaは拡張性があり、機械的に扱いやすため様々な応用が聞くのではないかと思っている。


参考資料

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?