
- ã¯ããã«
- Swaggerï¼OpenAPIï¼ã¨ã¯ï¼
- ãªã Swagger ã使ãã®ã
- Swagger ã®ä¸»è¦ãªãã¼ã«ãã¡
- Swaggerã使ã£ãAPIããã¥ã¡ã³ã使ã®åºæ¬ã¹ããã
- ç§ã Swagger ãå®éã«ä½¿ã£ã¦ã¿ãææ³
- ã¾ã¨ã
ã¯ããã«
ã¯ããã¾ãã¦ããããã³ã æ°äººã¨ã³ã¸ãã¢ã®äºæä¸ã¨ç³ãã¾ãã æ®æ®µã¯ãWebã·ã¹ãã ã®éçºã»ä¿å®ãè¡ã£ã¦ãã¾ãã
Webã·ã¹ãã ã»ã¢ããªéçºã«èå³ãæã¤ã¨ãSwagger ã¨ããè¨èãè³ã«ããæ©ä¼ãããããããã¾ããã ç§ã¯å®éã«ããã¸ã§ã¯ãã«é å±ãããã¾ã§ã¯ Swagger ã¨ããåèªããèãããã¨ãããã¾ããã§ããã
ITç¥èå ¨è¬ã«è¨ãããã¨ã§ããã調ã¹ã¦ã¿ã¦ãçµå±ã説æãå®ç¾©ãé£ããã¦ããããªãã¨ããæ¹ã¯å°ãªããªãã¨æãã¾ããããã§ä»åã¯ãã® Swagger ã«ã¤ãã¦ãITåå¿è ã®æ¹åãã«ã·ã³ãã«ã«è§£èª¬ãããã¨æãã¾ãã
Swaggerï¼OpenAPIï¼ã¨ã¯ï¼
â» Swagger ã¯ä»æ§ãé²åãã2016å¹´ã«ååããOpenAPI Specification (OAS)ãã«å¤æ´ããã¦ãã¾ãããæ¬è¨äºã§ã¯ä¸å£ã« Swagger ã¨å¼ã¶ãã¨ã¨ãã¾ãã*1ã
Swaggerã¨ã¯ãã²ã¨ãã¨ã§è¨ãã¨ãAPIã管çããããã®ç¡æã®ãã¼ã«ã»ãããã§ãã ï¼ãã¼ã«ã«ãã£ã¦ã¯ä¸é¨ãææãã©ã³ãæä¾ãã¦ãããã®ãããã¾ããã主è¦ãªãã¼ã«ã¯åºæ¬çã«ç¡æã§æä¾ããã¦ãã¾ããï¼
å®éã«Swagger ã¯ãä¸ççã«ãåºãæ¡ç¨ããã¦ãããGoogleãMicrosoftãAmazonãªã©ã®ä¼æ¥ãAPIéçºã«æ´»ç¨ãããªã©ã仿¥ã§ã¯ãããã£ãAPIéçºç¨ã®ãã¼ã«ã¯ãã¯ãæ¬ ãããªããã®ã¨ãªã£ã¦ãã¾ãã
ãã ããSwagger ãçè§£ããã«ã¯ã¢ããªã±ã¼ã·ã§ã³éçºã«ããã¦ä¸å¿çãªå½¹å²ãæããã¦ããAPIï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ãã³ã°ã¤ã³ã¿ã¼ãã§ã¼ã¹ï¼ãã©ããªå½¹å²ãæã£ã¦ããã®ãããã£ããçè§£ãã¦ããå¿ è¦ãããã¾ãã
APIã¨ã¯ãç°ãªãã·ã¹ãã ããµã¼ãã¹ããã¼ã¿ãæ©è½ãããåãããããã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã§ããããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£*2ãã¯ã©ã¦ãããã¼ã¹ã¨ããã·ã¹ãã ã«ããã¦ã¯ç¹ã«ä¸å¯æ¬ ã§ãã

APIãéãã¦ãä¾ãã°æ¬¡ã®ãããªãã¨ãå¯è½ã«ãªãã¾ãã
ã¢ããªã±ã¼ã·ã§ã³ â ãµã¼ãã¼éã®éä¿¡
Webãµã¼ãã¹ãå¤é¨ã·ã¹ãã ã¨ã®ãã¼ã¿é£æº
æ©è½ãã¨ã®ãµã¼ãã¹ã®åå²&管çï¼ãã¤ã¯ããµã¼ãã¹ï¼
APIã¯å¤é¨ã®éçºè ããµã¼ãã¹ãèªåãã¡ã®ã·ã¹ãã ã¨é£æºããããã®çªå£ã§ãããããã¸ãã¹ã®æ¡å¼µæ§ãé«ããå½¹å²ãæ ãã¾ãã
ããã§ããããã®APIãæ£ç¢ºã«è¨è¨ãããã¥ã¡ã³ãåãªã©ãã¦ç®¡çããããã« Swagger ãåå¨ããã®ã§ãã
ãªã Swagger ã使ãã®ã
APIã¯ãã®éè¦æ§ããã«ãæ£ç¢ºã§ä¸è²«æ§ã®ããè¨è¨ãæ±ãããã¾ããAPIããã¾ãè¨è¨ããã¦ããªãå ´åãçºçãããåé¡ã«ã¯ä»¥ä¸ã®ãããªãã®ãããã¾ãã
APIã®ä½¿ç¨æ¹æ³ãæç¢ºã§ãªããããä»ã®éçºè ããã¼ã ã誤ã£ãä½¿ãæ¹ããã¦ãã¾ã£ã
仿§ã«å¤æ´ããã£ãéã«ã¡ã³ããã³ã¹ãè¡ã£ãããäºæããªãç¯å²ã¾ã§ä¿®æ£ã®å½±é¿ãã§ã¦ãã¾ã£ã
ãã¹ãã®éã«ãAPIã®æ¯ãèããã¬ã¹ãã³ã¹ãæç¢ºã§ãªããããä¸å ·åãæ©æã«çºè¦&対å¿ãããã¨ãã§ããªãã£ã
Swagger ã使ããã«APIã管çããå ´åãExcelã使ã£ã¦ç®¡çããã±ã¼ã¹ãèãããã¾ããããã®å ´åä¸è¨ä»¥å¤ã«ãããã¹ã¦æå管çã«ãªã£ã¦ãã¾ãã¨ãããã¨ããããã¥ã¡ã³ãã®æ´åæ§ãä¿ãããªããªãã¨ãã£ããã¡ãªãããããã¾ãã
ãããã®åé¡ã解決ããããã«ã¯ãAPIãè¨è¨æ®µéãããã£ããã¨ææ¸åããæ¨æºåããå¿ è¦ãããããããã£ãæã«å½¹ç«ã¤ã®ã Swagger ãªã®ã§ãã
ã§ã¯ãSwaggerã使ãã¨å ·ä½çã«ã©ã®ãããªã¡ãªãããããã®ã§ããããã
çµ±ä¸æã®ããAPI仿§ã®å®ç¾©
Swagger ã¯ãAPIã®è¨è¨ãçµ±ä¸çãªå½¢å¼ã§è¨è¿°ããããã®æ¨æºãã©ã¼ããããæä¾ãã¾ããããã«ãããAPIã®ã¨ã³ããã¤ã³ã*3ããªã¯ã¨ã¹ããã¬ã¹ãã³ã¹ããã¼ã¿åãã¨ã©ã¼ã³ã¼ããªã©ããã¹ã¦æç¢ºã«å®ç¾©ããã¾ãããã®ããã«ãAPIè¨è¨ãææ¸ã¨ãã¦æç¤ºããããã¨ã§ãéçºè éã§ã®èª¤è§£ãä¸ä¸è´ãé²ããä¸è²«æ§ã®ããAPIéçºãå¯è½ã«ãªãã¾ãã
èªååã¨å¹çå
Swaggerã使ç¨ãããã¨ã§ãAPIããã¥ã¡ã³ããèªåçæã§ãããããæåã§ã®ããã¥ã¡ã³ã使使¥ãçååããã¾ããSwagger UIãSwagger Editorãªã©ã®ãã¼ã«ã使ãã¨ãè¨è¨ããAPI仿§ãåºã«ã¤ã³ã¿ã©ã¯ãã£ããªããã¥ã¡ã³ããæä¾ã§ããéçºè ãå®éã«APIããã¹ãããéã«ãå½¹ç«ã¡ã¾ããã¾ããSwagger Codegenã使ãã°ãAPI仿§ãããµã¼ãã¼ãã¯ã©ã¤ã¢ã³ãã®ã³ã¼ããèªåçæãããã¨ãã§ããéçºã®åææ®µéã§æéãæ¸ãããã¨ãã§ãã¾ãã
APIã®ãã¹ãã¨ã¤ã³ã¿ã©ã¯ã·ã§ã³
Swagger UIã使ç¨ããã¨ãAPIã®ã¨ã³ããã¤ã³ãããã©ã¦ã¶ä¸ã§ã¤ã³ã¿ã©ã¯ãã£ãã«æä½ãããªã¯ã¨ã¹ããéä¿¡ãã¦ã¬ã¹ãã³ã¹ã確èªã§ãã¾ããããã«ãããAPIã®ãã¹ããç°¡åã«ãªããå®éã®å©ç¨ã·ã¼ã³ã«è¿ãå½¢ã§åä½ã確èªã§ãããããéçºä¸ã«ä¸å ·åãæ©æã«çºè¦ãããããªãã¾ãã
ãã¼ã éã§ã®åå
APIã¯ãã°ãã°è¤æ°ã®ãã¼ã ã§éçºããã¾ããä¾ãã°ãããã¯ã¨ã³ããã¼ã ãããã³ãã¨ã³ããã¼ã ãã¢ãã¤ã«ãã¼ã ãå¤é¨éçºè ãªã©ãååãã¦éçºãé²ãã¾ãããSwaggerã使ããã¨ã§ã仿§ãä¸è²«ãã¦å ±æãããã¨ãã§ãã¾ããããã«ããããã¼ã éã§APIã®çè§£ãæ·±ã¾ããååçã«éçºãé²ãããã¨ãã§ãã¾ãã
ãã¼ã¸ã§ã³ç®¡çã¨å¤æ´ç®¡ç
APIã¯å¤æ´ãå ãããã¨ãå¤ããç¹ã«æ°ããæ©è½ã®è¿½å ãæ¢åã®æ©è½ã®æ¹åãå¿ è¦ã«ãªããã¨ãããã¾ããSwaggerã§ã¯ãAPIã®ãã¼ã¸ã§ã³ã管çãã夿´ã追跡ã§ããããããã¼ã¸ã§ã³ãã¨ã«ç°ãªãAPI仿§ãä¿æããéå»ã®ãã¼ã¸ã§ã³ã¨ã®äºææ§ãä¿ã¤ãã¨ãã§ãã¾ãã
Swagger ã®ä¸»è¦ãªãã¼ã«ãã¡
Swagger ã«ã¤ãã¦åé ã§ããAPIã管çããããã®ãã¼ã«ã»ãããã¨æ¸ãã¾ããã
ãã¼ã«ã»ããã¨è¨ãããã«ã¯è¤æ°ã®ãã¼ã«ã®éã¾ãã§ãã訳ã§ãããããããã¯å ·ä½çã«ã©ããªãã¼ã«ã»æ©è½ãããã®ãã§ããã ãç°¡æ½ã«è¦ã¦ããã¾ãããã
Swagger UI
ã¾ãSwagger UIã§ãããããã¯ãã©ã¦ã¶ä¸ã§APIãã¤ã³ã¿ã©ã¯ãã£ãã«æä½ã§ããã¨ãã£ã¿ã§ãã
APIã¨ã³ããã¤ã³ãã試ããªããåä½ã確èªã§ãããããéçºè ã®ã¿ãªãããAPIã®ã¦ã¼ã¶ã¼ã«ãå½¹ç«ã¡ã¾ãã
Swagger Editor
次ã«Swagger Editorãããã¯APIã®ä»æ§æ¸ãæ¸ãããã®ã¨ãã£ã¿ã§ãããããªYAMLã¾ãã¯JSONå½¢å¼ã§APIã®æ§é ãè¨è¿°ãããã¨ãã§ãã¾ãã
ãªã³ã©ã¤ã³ã¨ãã£ã¿ã§ãããããç·¨éãããå¾ã«ãªã¢ã«ã¿ã¤ã ã§ãã¬ãã¥ã¼ã§ãããã¨ãAPIè¨è¨ã®å¹çåããµãã¼ããã¦ããã¾ãã
Swagger Codegen
ããã¦ãSwagger Codegenã¯ããã¾ãã¾ãªããã°ã©ãã³ã°è¨èªåãã®ã¯ã©ã¤ã¢ã³ãããµã¼ãã¼ãµã¤ãã³ã¼ããèªåçæãããã¼ã«ã§ãã
ããã«ãããæåã§ã³ã¼ããæ¸ãæéãçããAPIã®å®è£ ãè¿ éãã¤ä¸è²«æ§ãæã£ã¦è¡ããã¨ãã§ãã¾ãã
Swagger ã®ä¸»è¦ãªãã¼ã«ã¨ããã°ãã®3ã¤ã§ããä»ã«ãããã¼ã¸ã§ã³ç®¡çãã¬ãã¥ã¼æ©è½ãå©ç¨ãã¦è¤æ°äººã§å¹ççã«APIéçºãé²ããããããã®ãã©ãããã©ã¼ã ãæä¾ãã¦ããã Swagger Hub ããAPIã¨ã³ããã¤ã³ããç´æ¥å¼ã³åºãã¦ãã¹ããå®è¡ãããã®çµæãåºã«Swaggerå½¢å¼ã®ä»æ§æ¸ãèªåçã«ä½æãããã¨ã§APIéçºã®åææ®µéã§å½¹ç«ã¤ãã㪠Swagger Inspector ãªã©ãããã¾ãã
èå³ã®ããæ¹ã¯æ¯éã»ãã®ãã¼ã«ã«ã¤ãã¦ã調ã¹ã¦ã¿ã¦ãã ããã
Swaggerã使ã£ãAPIããã¥ã¡ã³ã使ã®åºæ¬ã¹ããã
Swaggerã使ã£ã¦APIããã¥ã¡ã³ãã使ããã¨ãã®ç°¡åãªæµãã¯ä»¥ä¸ã®éãã§ãã
1. Swagger Editorã®ã»ããã¢ãã
æåã«ãããã¨ã¯ãSwagger Editorãç°å¢ã«ã¤ã³ã¹ãã¼ã«ããããã¯ãªã³ã©ã¤ã³ã¨ãã£ã¿ã使ç¨ãã¦æºåãããã¨ã§ãã
VS Code ãªã©ã®ã¨ãã£ã¿ã使ã£ã¦ããæ¹åãã«ã Swagger Editor ãå©ç¨ããããã«ãOpenAPI (Swagger) Editorã¨ãã£ãæ¡å¼µæ©è½ãåå¨ãã¾ãã
2 .API仿§ã®è¨è¿°
次ã«è¡ãã®ã¯API仿§ã®è¨è¿°ã§ããè¨è¿°ããéã«ã¯YAMLå½¢å¼ãJSONå½¢å¼ã§è¨è¿°ãè¡ãã¾ãã
ãYAMLå½¢å¼ã§è¨è¿°ãããAPI仿§ã®ä¾ã
openapi: 3.0.0
info:
title: Sample API
description: This is my sample API
version: 1.0.0
paths:
/users:
get:
summary: Get a list of users
responses:
'200':
description: List of users
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
APIã®åã¨ã³ããã¤ã³ãããã©ã¡ã¼ã¿ã詳細ã«å®ç¾©ããå¯è½ã§ããã°ãµã³ãã«ãã¼ã¿ãè¨è¼ãã¦ããã¾ããããããã«ãããAPIã®ä½¿ç¨ç¶æ³ãæç¢ºã«ãªãã¾ãã
3. ããã¥ã¡ã³ãã®ç¢ºèªã»è¦è¦å
使ããAPI仿§æ¸ã使ã£ã¦ãSwagger UIã§ããã¥ã¡ã³ããè¦è¦çã«ç¢ºèªãã¾ããããã«ãããAPIã®ä½¿ãæ¹ã誰ã§ãç°¡åã«çè§£ã§ããããã«ãªãã¾ããã¾ããSwagger UIã§ã¯ãAPIãå®éã«å¼ã³åºãã¦ãã¹ããããã¨ãã§ãã¾ãã
ãä¸è¨YAMLãã¡ã¤ã«ããå®éã«åºæ¥ä¸ããããã¥ã¡ã³ãã®ä¾ã

4. ããã¥ã¡ã³ãã®å ¬é
APIã®ä»æ§ãè¨è¿°ãçµããããæ¬¡ã¯ãã®ããã¥ã¡ã³ããå ¬éããæ¹æ³ã§ããSwagger UIãå種ãã¼ã«ãç¨ããã°ãå ¬éã¯é常ã«ç°¡åã§ãã
ãã¼ã å ã§ã®å ±æããªã³ã©ã¤ã³ã§ã¹ã ã¼ãºã«è¡ããç¹ã Swagger ãç¨ããã¡ãªããã§ãã
ç§ã Swagger ãå®éã«ä½¿ã£ã¦ã¿ãææ³
ã¾ããSwagger Editorã使ã£ãAPI仿§ã®è¨è¿°ã§ãããYAMLå½¢å¼ãJSONå½¢å¼ã§è¨è¼ãããã¨ã§ã·ã³ãã«ãªé層æ§é ã«ãªã£ã¦ãã¦ããã¥ã¡ã³ãåããåã®è¨è¿°ã®æ®µéã§ãé ã®ä¸ã§æ´çããããã§ãã
ã¾ããSwagger UIã使ã£ãããã¥ã¡ã³ãã®ä¾ãä¸è¨ã§ä¸ãã¾ãããããã®ããã¥ã¡ã³ãã¯èªåçæãããã®ã§ãYAMLãJSONã§ãã¡ã¤ã«ãä½ãã ãã§ãèªåçã«è¦ãããããã¤ã¬ã¹ãã³ã·ããªãã¶ã¤ã³ã§ããã¥ã¡ã³ããã¤ãã£ã¦ãããã¨ããç¹ã¯é常ã«ä¾¿å©ã ã¨æãã¾ããã
ã¾ã¨ã
ããã¾ã§è¿°ã¹ãããã«ã Swagger ã¯APIããã¥ã¡ã³ããç°¡åã«ä½æã管çã§ãã便å©ãªãã¼ã«ã§ãããã®å°æ¥æ§ãé«ããå¤ãã®ä¼æ¥ãå°å ¥ãé²ãã¦ããã®ã§ãå¹ççãªAPIéçºãè¡ãããã« Swagger ã®ç¥èãã¹ãã«ã身ã«çããã®ãè¯ãããããã¾ããã
ã¾ããæ¬è¨äºã§ã¯ Swagger ã«ã¤ãã¦åãä¸ãã¾ããããAPIã管çããããã®ãã¼ã«ã¯ä»ã«ã Postman ã Google Cloud ã® Apigee ãAWS ã® AWS API Gateway ãªã©ãããã¾ãã®ã§ãæ°ã«ãªã£ãæ¹ã¯ããããã®ãµã¼ãã¹ã«ã¤ãã¦ããã²èª¿ã¹ã¦ã¿ã¦ã¯ãããã§ããããã
*1:ç¾å¨ãOpenAPIã¯API仿§ã®æ¨æºè¦æ ¼ã¨ãªã£ã¦ãããSwaggerã¯ãã®ä»æ§ãå©ç¨ãããã¼ã«ã»ãããã¨ããé¢ä¿ããã¼ã«ã¨ããè¦ç¹ã§è¦ã㨠Swagger ã¨ããå¼ã³æ¹ãä¸è¬ã«æµ¸éãã¦ããããã¼ã«åã«ã¯Swagger ã¨ããè¨èãæ®ã£ã¦ããããæ¬è¨äºã§ã¯åã« Swagger ã¨å¼ã¶ã
*2:ã·ã¹ãã å ¨ä½ãç¬ç«ããå°ããªãµã¼ãã¹ã§æ§ç¯ããå¹ççã«ç®¡çã§ããããã«ããè¨è¨ï¼ã¢ã¼ããã¯ãã£ï¼ã®ãã¨ã
*3:APIãæä¾ããç¹å®ã®æ©è½ãå®è¡ããããã®URLï¼ã¾ãã¯URIï¼ã®ãã¨ã