ãã€ã¯ããµãŒãã¹ã®åçãªäžçã§ã¯ããããããã®ã倿Žãããå¯èœæ§ããããããŸããŸãªãã¬ãŒã ã¯ãŒã¯ãã¢ãŒããã¯ãã£ã䜿çšããŠãããããã³ã³ããŒãã³ããå¥ã®èšèªã§æžãçŽãããšãã§ããŸãã å éšã®ã¡ã¿ã¢ã«ãã©ãŒãŒã«é¢ä¿ãªãããã€ã¯ããµãŒãã¹ãå€éšããæ°žç¶çã«å¯Ÿè©±ã§ããããã«ããããã«ãã³ã³ãã©ã¯ãã®ã¿ã倿Žããªãã§ãã ããã ãããŠä»æ¥ã¯ãå¥çŽãèšè¿°ããããã®åœ¢åŒãéžæãããšããåé¡ã«ã€ããŠè©±ããç§ãã¡ãèŠã€ããææç©ãå ±æããŸãã

æçš¿ãæºåãããŸãã О
ãã€ã¯ããµãŒãã¹ã Acronis Cyberââ Cloud ãéçºãããšããç§ãã¡ã¯ãããããéããããšã¯ã§ããªãããšã«æ°ã¥ããŸããã ãããŠããã€ã¯ããµãŒãã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ã衚ãã³ã³ãã©ã¯ãã圢åŒåããããšãªãããã€ã¯ããµãŒãã¹ãèšèšããããšã¯äžå¯èœã§ãã
ãããã補åã«è€æ°ã®ã³ã³ããŒãã³ããå«ãŸããŠãããåèšéçºã宿çãªæŽ»åã«ãªããšãããã»ã¹ã®æé©åã«ã€ããŠèããã«ã¯ããããªããªããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ (ã³ã³ãã©ã¯ã) ãšå®è£ (ãã€ã¯ããµãŒãã¹) ã¯çžäºã«äžèŽããå¿ èŠããããç°ãªãã³ã³ããŒãã³ããåãããšãåãæ¹æ³ã§å®è¡ããå¿ èŠããããããããã¹ãŠã®æ±ºå®ãäžå çã«è¡ãæææ±ºå®ããªããã°ãåããŒã ã¯æ¬¡ã®ããšã匷ããããããšã¯æããã§ããããããåŸãããã«äœåºŠãæéãè²»ãããŠãã ããã

Amazon ãã€ã¯ããµãŒãã¹ã®å³ Amazon CTOãWerner Vogelis æ°
ãžã¬ã³ããšã¯äœã§ãã? äºå®äžããã€ã¯ããµãŒãã¹ãæäœããã«ã¯ãHTTP Rest ãš Google ã® gRPC ã® XNUMX ã€ã®æ¹æ³ããããŸãã Google ã®ãã¯ãããžãŒ ã¹ã¿ãã¯ã«å·»ã蟌ãŸããããªãã£ãã®ã§ãHTTP Rest ãéžæããŸããã HTTP REST ã³ã³ãã©ã¯ãã®ã¢ãããŒã·ã§ã³ã¯ãRAML ãš OAS (以å㯠Swagger ãšããŠç¥ãããŠããŸãã) ã® XNUMX ã€ã®åœ¢åŒã®ããããã§èšè¿°ãããããšãå€ãããããã¹ãŠã®éçºããŒã ã¯æšæºã®ãããããéžæããå¿
èŠã«çŽé¢ããŠããŸãã ããããçµå±ã®ãšããããã®éžæãããã®ã¯éåžžã«é£ããå ŽåããããŸãã
ãªã泚éãå¿ èŠãªã®ã§ãããã?
泚éã¯ãå€éšãŠãŒã¶ãŒã HTTP ã€ã³ã¿ãŒãã§ãŒã¹ãéããŠãµãŒãã¹ã§äœãã§ããããç°¡åã«çè§£ã§ããããã«ããããã«å¿ èŠã§ãã ã€ãŸããåºæ¬ã¬ãã«ã§ã¯ãã¢ãããŒã·ã§ã³ã«ã¯å°ãªããšãã䜿çšå¯èœãªãªãœãŒã¹ã®ãªã¹ãããã® HTTP ã¡ãœããããªã¯ãšã¹ãæ¬æããã©ã¡ãŒã¿ã®ãªã¹ããå¿ èŠãªããããŒãšãµããŒããããŠããããããŒã®è¡šç€ºãããã³æ»ãã³ãŒããšå¿ç圢åŒãå«ãŸããŠããå¿ èŠããããŸãã ã³ã³ãã©ã¯ãã®ã¢ãããŒã·ã§ã³ã®éåžžã«éèŠãªèŠçŽ ã¯ãå£é ã§ã®èª¬æ (ããã®ã¯ãšãª ãã©ã¡ãŒã¿ãŒããªã¯ãšã¹ãã«è¿œå ãããšäœãèµ·ããã?ãããã©ã®ãããªå Žåã«ã³ãŒã 400 ãè¿ãããã?ã) ã§ãã
ãã ãã倿°ã®ãã€ã¯ããµãŒãã¹ãéçºããå Žåã¯ãæžã蟌ãŸããã¢ãããŒã·ã§ã³ãã远å ã®äŸ¡å€ãæœåºããå¿ èŠããããŸãã ããšãã°ãRAML/Swagger ã«åºã¥ããŠãèšå€§ãªæ°ã®ããã°ã©ãã³ã°èšèªã§ã¯ã©ã€ã¢ã³ã ã³ãŒããšãµãŒã㌠ã³ãŒãã®äž¡æ¹ãçæã§ããŸãã ãã€ã¯ããµãŒãã¹ã®ããã¥ã¡ã³ããèªåçã«åä¿¡ããŠãéçºè ããŒã¿ã«ã«ã¢ããããŒãããããšãã§ããŸã :)ã

æ§é åãããå¥çŽèª¬æã®äŸ
ããŸãäžè¬çã§ã¯ãããŸããããå¥çŽã®èª¬æã«åºã¥ããŠãã€ã¯ããµãŒãã¹ããã¹ãããç¿æ £ããããŸãã ã¢ãããŒã·ã§ã³ãšã³ã³ããŒãã³ãã®äž¡æ¹ãäœæããå Žåã¯ãããŸããŸãªã¿ã€ãã®å ¥åããŒã¿ã䜿çšããŠãµãŒãã¹ã®é©åæ§ããã§ãã¯ããèªåãã¹ããäœæã§ããŸãã ãµãŒãã¹ã¯ã¢ãããŒã·ã§ã³ã«èšèŒãããŠããªãå¿çã³ãŒããè¿ããŸãã? æããã«ééã£ãããŒã¿ãæ£ããåŠçã§ããã§ãããã?
ãŸããã³ã³ãã©ã¯ããã®ãã®ã ãã§ãªããã¢ãããŒã·ã§ã³ãå¯èŠåããããŒã«ãé«å質ã«å®è£ ãããŠããããããã€ã¯ããµãŒãã¹ã«ããäœæ¥ã®ç°¡çŽ åãå¯èœã§ãã ã€ãŸããã¢ãŒããã¯ããå¥çŽã宿§çã«èšè¿°ããå Žåãããã«åºã¥ããŠããã¶ã€ããŒãšéçºè ã¯è¿œå ã®æéã³ã¹ãããããã«ãµãŒãã¹ãä»ã®è£œåã«å®è£ ããŸãã
远å ã®ããŒã«ãæå¹ã«ããããã«ãRAML ãš OAS ã®äž¡æ¹ã«ã¯ãæšæºã§æäŸãããŠããªãã¡ã¿ããŒã¿ã远å ããæ©èœããããŸã ().
äžè¬ã«ããã€ã¯ããµãŒãã¹ã®ã³ã³ãã©ã¯ãã䜿çšããéã®åµé æ§ã®äœå°ã¯éåžžã«å€§ããã§ã...å°ãªããšãçè«äžã¯ã
ããªããºããšããã®æ¯èŒ
çŸåšãã¢ã¯ããã¹ã®åªå éçºåéã¯ã¢ã¯ããã¹ ãµã€ã㌠ãã©ãããã©ãŒã ã®éçºã§ãã Acronis Cyberââ Platform ã¯ããµãŒãããŒã㣠ãµãŒãã¹ãš Acronis Cyberââ Cloud ããã³ãšãŒãžã§ã³ãéšåãçµ±åããæ°ãããã€ã³ãã§ãã RAML ã§èšè¿°ãããå éš API ã«ã¯æºè¶³ããŠããŸããããAPI ãå ¬éããå¿ èŠããããããäœæ¥ã«ã©ã®ã¢ãããŒã·ã§ã³æšæºã䜿çšããã®ãæé©ããšããéžæã®åé¡ãåã³çããŸããã
åœåã解決ç㯠2 ã€ããããã«èŠããŸãããæãäžè¬çãªéçºã¯ RAML ãš Swagger (ãŸã㯠OAS) ã§ããã ãããå®éã«ã¯ãå°ãªããšã 3 ã€ã§ã¯ãªããXNUMX ã€ä»¥äžã®éžæè¢ãããããšã倿ããŸããã
äžæ¹ã§ã¯ã匷åã§å¹ççãªèšèªã§ãã RAML ããããŸãã éå±€ãšç¶æ¿ãé©åã«å®è£ ãããŠããããããã®åœ¢åŒã¯å€ãã®èšè¿°ãå¿ èŠãšããå€§äŒæ¥ãã€ãŸã XNUMX ã€ã®è£œåã§ã¯ãªããã³ã³ãã©ã¯ãã®å ±ééšå (èªèšŒã¹ããŒã ãåãããŒã¿åããšã©ãŒæ¬äœ) ãæã€å€æ°ã®ãã€ã¯ããµãŒãã¹ãå¿ èŠãšããå€§äŒæ¥ã«é©ããŠããŸãã ã
ããããRAML ã®éçºè ã§ãã Mulesoft ã¯ãéçºãé²ããŠãã Open API ã³ã³ãœãŒã·ã¢ã ã«åå ããŸããã ã ãããã£ãŠãRAML ã¯éçºãäžæ¢ããŸããã ã€ãã³ãã®åœ¢åŒãæ³åããã«ã¯ãäž»èŠãª Linux ã³ã³ããŒãã³ãã®ã¡ã³ããã Microsoft ã«éè·ãããšæ³åããŠãã ããã ãã®ç¶æ³ã«ãããSwagger ã䜿çšããããã®åææ¡ä»¶ãäœæãããŸããSwagger ã¯åçã«éçºãããŠãããææ°ã® XNUMX çªç®ã®ããŒãžã§ã³ã§ã¯ãæè»æ§ãšæ©èœã®ç¹ã§å®è³ªçã« RAML ã«è¿œãã€ããŸãã
äžã€ã§ã¯ãªãã...
çµå±ã®ãšããããã¹ãŠã®ãªãŒãã³ãœãŒã¹ ãŠãŒãã£ãªãã£ã OAS 3.0 ã«æŽæ°ãããŠããããã§ã¯ãããŸããã Go ã®ãã€ã¯ããµãŒãã¹ã«ãšã£ãŠæãéèŠãªããšã¯ãé©å¿ãæ¬ åŠããŠããããšã§ãã æšæºã®ææ°ããŒãžã§ã³çšã ãã ããSwagger 2 ãš Swagger 3 ã®éãã¯æ¬¡ã®ãšããã§ãã ã ããšãã°ãXNUMX çªç®ã®ããŒãžã§ã³ã§ã¯ãéçºè ã¯æ¬¡ã®ããšãè¡ããŸãã
- èªèšŒã¹ããŒã ã®èª¬æãæ¹å
- JSONã¹ããŒãã®ãµããŒã
- äŸã远å ããæ©èœãã¢ããã°ã¬ãŒãããŸãã
ãã®ç¶æ³ã¯é¢çœããã®ã§ããæšæºãéžæãããšãã¯ãRAMLãSwagger 2ãããã³ Swagger 3 ãåå¥ã®ä»£æ¿ææ®µãšããŠèæ ®ããå¿ èŠããããŸãã ãã ãããªãŒãã³ãœãŒã¹ ããŒã«ãé©åã«ãµããŒãããŠããã®ã¯ Swagger 2 ã ãã§ãã RAML ã¯éåžžã«æè»ã§è€éã§ãããSwagger 3 ã¯ã³ãã¥ããã£ã«ãããµããŒããäžååã§ãããããç¬èªã®ããŒã«ãŸãã¯åçšãœãªã¥ãŒã·ã§ã³ã䜿çšããå¿ èŠããããŸããããããã¯éåžžã«é«äŸ¡ã«ãªãåŸåããããŸãã
ããã«ãæ¢è£œã®ããŒã¿ã«ãªã©ãSwagger ã«å€ãã®åªããæ©èœãããå Žåã¯ã 泚éãã¢ããããŒãããŠã詳现ãªèª¬æããªã³ã¯ãæ¥ç¶ãå«ãèŠèŠåãååŸã§ããŸãããããåºæ¬çã§ããŸããã¬ã³ããªãŒã§ã¯ãªã RAML ã®å Žåããã®ãããªæ©äŒã¯ãããŸããã ã¯ããGitHub äžã®ãããžã§ã¯ãã®äžããäœããæ€çŽ¢ããããã§é¡äŒŒã®ãã®ãèŠã€ããŠèªåã§ãããã€ããããšãã§ããŸãã ãã ãããããã®å Žåãã誰ããããŒã¿ã«ãä¿å®ããå¿ èŠããããåºæ¬çãªäœ¿çšããã¹ãã®ããŒãºã«ã¯ããŸã䟿å©ã§ã¯ãããŸããã ããã«ãSwagger ã¯ãããç¡ååããã€ãŸãããèªç±ã§ããã³ãŒãå ã®ã³ã¡ã³ãããçæã§ããŸããããã¡ããããã㯠API ã®ç¬¬äžååã«åããŠãããRAML ãŠãŒãã£ãªãã£ã®ãããã§ããµããŒããããŠããŸããã
ãã€ãŠãç§ãã¡ã¯ããæè»ãªèšèªãšã㊠RAML ã䜿ãå§ããŸãããããã®çµæãå€ãã®ããšãèªåãã¡ã§è¡ãå¿ èŠããããŸããã ããšãã°ããããžã§ã¯ãã® XNUMX ã€ã¯æ¬¡ã®ãŠãŒãã£ãªãã£ã䜿çšããŸãã åäœãã¹ãã§ã¯ RAML 0.8 ã®ã¿ããµããŒãããŸãã ãã®ããããŠãŒãã£ãªãã£ã RAML ããŒãžã§ã³ 1.0 ããé£ã¹ããããšãã§ããããã«æŸèæã远å ããå¿ èŠããããŸããã
éžã¶å¿ èŠããããŸããïŒ
RAML ã®ãœãªã¥ãŒã·ã§ã³ã®ãšã³ã·ã¹ãã ã®å®æã«åãçµãã çµæãRAML ã Swagger 2 ã«å€æãããã¹ãŠã®èªååãæ€èšŒããã¹ããããã³ãã®åŸã®æé©åããã®äžã§å®è¡ããå¿ èŠããããšããçµè«ã«éããŸããã ããã¯ãRAML ã®æè»æ§ãš Swagger ã®ã³ãã¥ãã㣠ããŒã« ãµããŒãã®äž¡æ¹ã掻çšããè¯ãæ¹æ³ã§ãã
ãã®åé¡ã解決ããã«ã¯ãã³ã³ãã©ã¯ã倿ãæäŸãã XNUMX ã€ã®ãªãŒãã³ãœãŒã¹ ããŒã«ããããŸãã
- ã¯çŸåšãµããŒããããŠããªããŠãŒãã£ãªãã£ã§ãã äœæ¥äžã«ã倿°ã®ãã¡ã€ã«ã«ã忣ãããè€é㪠RAML ã«å€ãã®åé¡ãããããšãããããŸããã ãã®ããã°ã©ã 㯠JavaScript ã§æžãããŠãããæ§æããªãŒã®ååž°çèµ°æ»ãå®è¡ããŸãã åçåä»ãã«ããããã®ã³ãŒããçè§£ããã®ãé£ãããªããããçæ»ã®ãŠãŒãã£ãªãã£çšã®ããããäœæããã®ã«æéãç¡é§ã«ããªãããšã«ããŸããã
- - åãäŒç€Ÿã®ããŒã«ã§ããããããã®ãããããæ¹åã«å€æã§ãããšäž»åŒµããŠããŸãã çŸåšãŸã§ã«ãRAML 0.8ãRAML 1.0ãããã³ Swagger 2.0 ã®ãµããŒããçºè¡šãããŠããŸãã ãã ããç§ãã¡ã®èª¿æ»æç¹ã§ã¯ããã®ãŠãŒãã£ãªãã£ã¯ãŸã ãããŸããã§ããã æ¹¿ã£ãŠäœ¿ããªãã éçºè ã¯äžçš®ã® å°æ¥çã«æ°ããæšæºãè¿ éã«è¿œå ã§ããããã«ãªããŸãã ããããä»ã®ãšããããã¯ããŸããããŸããã
ç§ãã¡ãçŽé¢ããå°é£ã¯ããã ãã§ã¯ãããŸããã ãã€ãã©ã€ã³ã®ã¹ãããã® XNUMX ã€ã¯ããªããžããªããã® RAML ã仿§ã«å¯ŸããŠæ£ããããšãæ€èšŒããããšã§ãã ããã€ãã®ãŠãŒãã£ãªãã£ã詊ããŸããã é©ããããšã«ã圌ãã¯çãããŸããŸãªå Žæã§ããŸã£ããç°ãªãæªå£ã§ç§ãã¡ã®æ³šéã眵ããŸããã ãããŠãå¿ ãããèŠç¹ãçµã£ãŠããããã§ã¯ãããŸãã:)ã
æçµçã«ãç§ãã¡ã¯ä»ã§ã¯æä»£é ãã«ãªã£ãŠããŸã£ããããžã§ã¯ãã«èœã¡çããŸãããããã®ãããžã§ã¯ãã«ãå€ãã®åé¡ããããŸãã (çªç¶ã¯ã©ãã·ã¥ããããæ£èŠè¡šçŸã䜿çšãããšãã«åé¡ãçºçãããããããšããããŸã)ã ãããã£ãŠãç¡æããŒã«ã«åºã¥ããŠæ€èšŒãšå€æã®åé¡ã解決ããæ¹æ³ãèŠã€ããããåçšãŠãŒãã£ãªãã£ã䜿çšããããšã«ããŸããã å°æ¥çã«ã¯ããªãŒãã³ãœãŒã¹ ããŒã«ãããæçããã«ã€ããŠããã®åé¡ã¯è§£æ±ºãããããªãå¯èœæ§ããããŸãã ãã®éããä»äžãããããã®äººä»¶è²»ãšæéã³ã¹ãã¯ãåçšãµãŒãã¹ã®ã³ã¹ããããéèŠã§ããããã«ç§ãã¡ã«ã¯æããŸããã
ãŸãšã
ããããããšãèžãŸããŠãç§ãã¡ã¯çµéšãå ±æããå¥çŽã説æããããã®ããŒã«ãéžæããåã«ããã®ããŒã«ã«äœãæ±ããã®ããã©ã®ãããã®äºç®ãæè³ããã€ãããªã®ããæç¢ºã«å®çŸ©ããå¿ èŠãããããšã«æ³šæããããšæããŸããã ãªãŒãã³ãœãŒã¹ã®ããšãå¿ããŠãããã§ãã¯ãå€æãæ€èšŒã«åœ¹ç«ã€ãµãŒãã¹ã補åããã§ã«å€æ°ååšããŸãã ãããããããã¯é«äŸ¡ã§ãããå Žåã«ãã£ãŠã¯éåžžã«é«äŸ¡ã§ãã å€§äŒæ¥ã®å Žåããã®ãããªã³ã¹ãã¯èš±å®¹ç¯å²ã§ãããæ°èäŒæ¥ã«ãšã£ãŠã¯å€§ããªè² æ ãšãªãå¯èœæ§ããããŸãã
åŸã§äœ¿çšããããŒã«ã®ã»ãããæ±ºå®ããŸãã ããšãã°ãã³ã³ãã©ã¯ãã衚瀺ããã ãã®å Žåã¯ãRAML ã§ã¯ãµãŒãã¹ãèªåã§æ§ç¯ããŠä¿å®ããå¿
èŠããããããçŸãã API ãåãã Swagger 2 ã䜿çšããæ¹ãç°¡åã§ãã
ã¿ã¹ã¯ãå¢ããã°å¢ããã»ã©ãããŒã«ã®å¿
èŠæ§ãåºãããŸããããŒã«ã¯ãã©ãããã©ãŒã ããšã«ç°ãªããŸããå°æ¥ã®ã³ã¹ããæå°éã«æããéžæãããããã«ãå©çšå¯èœãªããŒãžã§ã³ãããã«çè§£ããããšããå§ãããŸãã
ãããã仿¥ååšãããã¹ãŠã®çæ ç³»ã¯äžå®å šã§ããããšãèªèãã䟡å€ããããŸãã ãããã£ãŠã瀟å ã«ãããæè»ã«èãã衚çŸã§ããããšããçç±ã§RAMLã§äœæ¥ããããšã奜ããã¡ã³ããéã«ãããæç¢ºã§ããããšããçç±ã§Swaggerã奜ããã¡ã³ãããå Žåã¯ã圌ãã«ä»»ããã®ãæåã§ããã©ã®åœ¢åŒã®ããŒã«ããã¡ã€ã«ã«ãã倿Žãå¿ èŠãªããã圌ãã¯ããã«æ £ããŠããããããæãã§ããŸãã
ç§ãã¡ã®çµéšã«é¢ããŠã¯ãæ¬¡ã®æçš¿ã§ãRAML-Swagger ã¢ãŒããã¯ãã£ã«åºã¥ããŠã©ã®ãããªéçãã§ãã¯ãšåçãã§ãã¯ã宿œããããå¥çŽããã©ã®ãããªããã¥ã¡ã³ããçæãããããããŠãããã©ã®ããã«æ©èœãããã«ã€ããŠèª¬æããŸãã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã ãé¡ãããŸãã
ãã€ã¯ããµãŒãã¹ ã³ã³ãã©ã¯ãã«æ³šéãä»ããããã«äœ¿çšããèšèªã¯äœã§ãã?
RAML 0.8
RAML 1.0
ã¹ã¯ã¬ãŒ 2
OAS3 (å¥å)
éåç
ÐÑÑгПй
䜿çšããªã
100 人ã®ãŠãŒã¶ãŒãæç¥šããŸããã 24åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com
