Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevelopersSummit2018_SwaggerでPHPエンジニアとUnityエンジニアがもっと仲良くなった話

 DevelopersSummit2018_SwaggerでPHPエンジニアとUnityエンジニアがもっと仲良くなった話

2月15, 16日に行われたDevelopers Summit 2018にて発表したスライドになります。

Developers Summit 2018
http://event.shoeisha.jp/devsumi/20180215/

セッション概要
http://event.shoeisha.jp/devsumi/20180215/session/1687/

発表資料中で紹介しているエンジニアブログについては下記リンクから参照お願いします。
Swaggerを使ってAPIの繋ぎ込みを楽にするための取り組み
https://tech.griphone.co.jp/2017/10/08/swagger/

Swagger UI × Amazon EC2 × Dockerで開発初期からAPIの繋ぎ込みを意識できる環境を構築してみたhttps://tech.griphone.co.jp/2017/10/08/swagger-mock-server/

CyberAgent SGE Engineer

February 19, 2018
Tweet

More Decks by CyberAgent SGE Engineer

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 仙道 航 株式会社グリフォン サーバサイドエンジニア 2015年4⽉ 株式会社サイバーエージェント 新卒⼊社 2015年7⽉ ゲーム事業部

    (SGE) 株式会社グリフォンへ配属 ソーシャルゲームの運⽤に約⼀年携わる 2016年3⽉ PHP × Unity の新規開発プロジェクトへジョイン 2017年10⽉
  2. 弊社で過去に⾏われたAPIの繋ぎ込みの問題 サーバ エンジニア クライアント エンジニア × 型や名前を⼿動で書くと ミスする → パースエラーの

    原因に! × ⼝頭によるその場しのぎ対応が 増えてドキュメントが置き去りに × 徐々に更新しなくなる!
  3. Swaggerとは? 弊社では3つのツールを利⽤している l Swagger Spec l Swagger UI l Swagger

    Codegen ଞʹ΋ͨ͘͞Μ͋ΔͷͰௐ΂ͯΈͯͶʂ 2.xܥ(stable)Λ ࢖ͬͯ·͢ʂ
  4. グリフォンでのSwagger活⽤開発フロー 3. API / リクエスト / レスポンス部分の実装 PHPとC#のリクエスト / レスンポンスクラス

    / 共通で使⽤するEnumを⾃動⽣成 ⾃動⽣成されるコードに サーバ /クライアントから要望があった 使⽤するmustacheファイルを groovyスクリプトで切り替えながら⼀度に⾃動⽣成
  5. Specification Extensionを使ったデータ型拡張 リクエスト, レスポンスのフロー クライアント Request 各機能コード Response 例: CardLevelを送って

    CardLevelを返してもらうだけ笑 ①intで送る ② fromClientValueで サーバのクラスに変換 ③ 受け取ったサーバ定義 クラスで処理を⾏う
  6. Specification Extensionを使ったデータ型拡張 リクエスト, レスポンスのフロー クライアント Request 各機能コード Response 例: CardLevelを送って

    CardLevelを返してもらうだけ笑 ①intで送る ② fromClientValueで サーバのクラスに変換 ③ 受け取ったサーバ定義 クラスで処理を⾏う ④ toClientValueで プリミティブ型に変換
  7. Specification Extensionを使ったデータ型拡張 リクエスト, レスポンスのフロー クライアント Request 各機能コード Response 例: CardLevelを送って

    CardLevelを返してもらうだけ笑 ①intで送る ② fromClientValueで サーバのクラスに変換 ③ 受け取ったサーバ定義 クラスで処理を⾏う ④ toClientValueで プリミティブ型に変換 ⑤intで返る
  8. グリフォンでのSwagger活⽤開発フロー サーバ クライアント × 8 Swagger リポジトリ ⾃動⽣成コード Submodule API定義記述

    push 最新をpull APIモックをデプロイ ⾃動⽣成コードを push 既存開発部分のAPIに修正が⼊ると コード修正まで上⼿く動かなくなるので 複数バージョン環境を⽤意
  9. グリフォンでのSwagger活⽤開発フロー サーバ クライアント × 8 Swagger リポジトリ ⾃動⽣成コード Submodule API定義記述

    push 最新をpull APIモックをデプロイ ⾃動⽣成コードを push 接続先を開発フェーズで切り替え サーバ開発中
  10. グリフォンでのSwagger活⽤開発フロー サーバ クライアント × 8 Swagger リポジトリ ⾃動⽣成コード Submodule API定義記述

    push 最新をpull APIモックをデプロイ ⾃動⽣成コードを push 接続先を開発フェーズで切り替え サーバ開発中 サーバ開発後 PHPコード デプロイ