LCLの開発者ブログ2019-06-18Swaggerを導入してみた話バックエンド兼Androidアプリエンジニアの高橋です。前回の更新から大分空いてしまいました。入社してから早2ヶ月を過ぎまして、ブログに書きたいことも積もってきたものの、同時に仕事の方でもやる事が増えてきて、なかなかブログを書く時間が取れなくなってきました。そんな状況なので今回はあまり細かい説明は抜きで、サクッと書こうと思います。今回はSwaggerを導入した話です。Swaggerとは?API設計のドキュメントを生成するツールです。)ドキュメントはymlかjsonの定義ファイルに記述していくので、git管理が出来ます。生成されたドキュメントがどんなものかは、公式にDemoページがあるので、見てもらった方が早いと思います。petstore.swagger.ioサンプルを作ってみたSwagger導入にあたって、サンプルプロジェクトを作ってみました。takkota/api-sepc-sample起動方法や構成の概要はREADMEを見てください。以下の点を考慮して作ってみました。複数人で平行作業できるように、定義ファイルを分割して記述したい。UIの定義ファイルを使って、モックサーバーを楽に立てたいymlファイルの分割Swaggerの定義ファイルは以下のように分割できます。他のymlファイルをincludeしているイメージですね。Swaggerのymlファイルは肥大化しがちなので、基本分割して書いた方がいいと思います。モックサーバーモックサーバーはAPISproutというものを使って、Swaggerのymlファイルからモックサーバーを自動生成しています。APISproutは上記のような分割したymlファイルに対応しておらず、1つのファイルにマージしないといけませんでした。いうものがありますが、ymlファイルを編集するたびにCLIでコマンドを叩かなければならず面倒だったので、ファイルの変更を監視して自動的にマージする仕組みを用意しました。ファイルの監視とマージする仕組みは、こちらの記事がとても参考になりました。するだけで、仕組みをあまり意識する事なく作業できるようにしました。Swaggerを導入して得られるメリットまだ導入したばかりですが、以下の点がメリットに感じています。設計がドキュメントとして残るので、レビューがしやすい。モックサーバーを建てられるので、フロントエンドの作業をブロックしない。(バックエンドの実装を待つ必要が無い)Swaggerを運用する時の考慮ポイントSwaggerを導入した事で、逆に気を使わなければいけない事も出てきました。複数人で平行作業する場合、予め命名規則を統一しないといけない。Swaggerの構成について、予めチーム内で認識を合わせておかないといけない。ここらへんは試行錯誤中ですが、READMEに書いたりesaやdocbaseなどを使って管理するのが良いのでしょうか...?最後に(なんだかんだ長くなってしまいました...)Swaggerは便利ですが、当然API設計を書く作業コストだったり、メンテナンスするコストは発生します。フロントエンドとバックエンドの担当が別れているチームにおいては、APIの仕様をやり取りする手間を大幅に削減できるので、トータルで見たら導入して損は無いと個人的には思います。最後になりますが、LCLは新しいツールも抵抗なく導入できるチームです。09:52Swaggerを導入してみた話Tweet関連記事2019-07-31Railsで大量データを扱うときに気をつけていることバックエンドエンジニアの横塚です。LambdaでGmailの添付ファイルを自動抽出するバックエンド兼Androidアプリエンジニアの高橋です。弊社のシ...2019-07-172019年上半期の記事を振り返ってみるモバイルアプリエンジニアの山下(@yamshta)です。気づいたら...2019-01-10Node.jsを10.13.0へバージョンアップしましたフロントエンドエンジニアの岡田です。今年の私のブログの目標...2018-05-27がんばるタイム、止めましたフロントエンドエンジニアの岡田です。(1)執筆者リストid:kavis777id:ktx_kuid:yamshtaid:ytkr0813id:shymstid:kasei_sanid:lcl-engineer月別アーカイブ検索はてなブログをはじめよう!lcl-engineerさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。