Slide 1

Slide 1 text

swaggerͰ͔͍͍ͬ͜ APIυΩϡϝϯτΛ࡞Ζ͏ 2016/5/21 PHPΧϯϑΝϨϯε෱Ԭ2016 ߹ಉձࣾdecr / ౉ลҰ޺(@kaz_29)

Slide 2

Slide 2 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 WHO!? ߹ಉձࣾ decr ୅දࣾһ ౉ลҰ޺ WebΞϓϦέʔγϣϯͷ։ൃ iOSΞϓϦέʔγϣϯͷ։ൃ Ϋϥ΢υΠϯϑϥͷߏஙɾӡ༻

Slide 3

Slide 3 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 4

Slide 4 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 ࢴͷ࿩͸ ͠·ͤΜ

Slide 5

Slide 5 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 APIॻ͍ͯ ·͔͢ʁ

Slide 6

Slide 6 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 API Documentͷڞ༗ • Excel / Google SpreadSheet • markdownͰॻ͍ͯڞ༗

Slide 7

Slide 7 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 ͳ͔ͳ͔ ໘౗

Slide 8

Slide 8 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 API Document • API͕ग़དྷ্͕͔ͬͯΒυΩϡϝϯτΛॻ͘ هड़࿙Ε ࢓༷มߋ΁ͷ௥ै • ڞ௨ͷmodelͷࢀর • όʔδϣϯ؅ཧ

Slide 9

Slide 9 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 http://swagger.io/

Slide 10

Slide 10 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 What is swagger? The goal of Swagger™ is to define a standard, language- agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. ਓʹ΋ίϯϐϡʔλͷ྆ํʹ༏͘͠ɺݴޠʹґଘ͠ͳ͍ ඪ४తͳREST APIͷΠϯλʔϑΣʔεΛఆٛ͢Δ͜ͱɻ(໨ඪ) http://swagger.io/getting-started/

Slide 11

Slide 11 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 https://openapis.org/ http://www.publickey1.jp/blog/15/open_api_initiative.html

Slide 12

Slide 12 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 swagger tools • Swagger Core • Swagger Codegen • Swagger UI • Swagger Editor

Slide 13

Slide 13 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 swagger tools • Swagger Core • Swagger Codegen • Swagger UI • Swagger Editor

Slide 14

Slide 14 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 Community-Driven Language Integrations • Clojure • D • Go • Haskell • Java • Javascript • .NET • node.js • perl • php • python • ruby • scala

Slide 15

Slide 15 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 PHP Language Integrations • cakephp-swagger • Swagger-PHP • SwaggerAssertions • php-swaggerize-fastroute-library • SwaggerGen • Jane OpenAPI • gossi/swagger

Slide 16

Slide 16 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 PHP Language Integrations • cakephp-swagger • Swagger-PHP • SwaggerAssertions • php-swaggerize-fastroute-library • SwaggerGen • Jane OpenAPI • gossi/swagger

Slide 17

Slide 17 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 ࣮ࡍͷ ॻ͖ํ

Slide 18

Slide 18 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 VTFSIBTNBOZCPPLNBSLT

Slide 19

Slide 19 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 /api/users 6TFS 6TFS #PPLNBSL #PPLNBSL

Slide 20

Slide 20 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 21

Slide 21 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 22

Slide 22 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 23

Slide 23 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 … * @SWG\Response( * response=200, * description="औಘ੒ޭ", * @SWG\Schema( * @SWG\Property( * property="status", * type="boolean", * description="ॲཧ݁Ռ", * ), * @SWG\Property( * property="data", * type="array", * @SWG\Items(ref="#/definitions/IndexUser"), * description="Ϣʔβ৘ใ", * ), * @SWG\Property( * property="pagination", * ref="#/definitions/PageInfo", * description="ϖʔδ৘ใ", * ), * ) * ), * @SWG\Response( * response="404", * description="Not Found" * ), * ) APIͷఆٛΛॻ͘

Slide 24

Slide 24 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 … * @SWG\Definition( * definition="IndexUser", * allOf={ * @SWG\Schema(ref="#/definitions/User"), * }, * @SWG\Property( * property="bookmarks", * description="ϒοΫϚʔΫҰཡ", * type="array", * @SWG\Items(ref="#/definitions/Bookmark") * ), * ) */ APIͷఆٛΛॻ͘

Slide 25

Slide 25 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 /api/users *OEFY6TFS #PPLNBSL 1BHF*OGP

Slide 26

Slide 26 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 Swagger-PHPͰॲཧ $ ./app/vendor/bin/swagger ./app/src/ ./app/config/ -o ./api-documents/ Swagger-PHP 2.0.6 ----------------- post /bookmarks get /users post /users get /users/{id} put /users/{id} delete /users/{id} post /php/conferences ----------------------- 7 operations documented ----------------------- Written to /srv/application/current/api-documents/swagger.json

Slide 27

Slide 27 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 swagger-uiʹ jsonΛಡ·ͤΔ

Slide 28

Slide 28 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 29

Slide 29 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 30

Slide 30 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 ࢀর͍ͯ͠ΔϞσϧͷ ৄࡉ΋දࣔ͞ΕΔ

Slide 31

Slide 31 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29

Slide 32

Slide 32 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 ͜ΜͳຊΛॻ͍͍ͯΔਓͳͷͰ…

Slide 33

Slide 33 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 CI/CD PUSH SWAGGER Document΋ࣗಈެ։

Slide 34

Slide 34 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 DEMO

Slide 35

Slide 35 text

SwaggerͰ͔͍͍ͬ͜APIυΩϡϝϯτΛ࡞Ζ͏ @kaz_29 fin.