ãã®èšäºã§ã¯ãC ++ã§WebãµãŒãã¹ãéçºããçµéšãå
±æããããšæããŸãã ç§ã®æèŠã§ã¯ãããã¯éåžžã«èå³æ·±ããããã¯ã§ããWebéçºã«C ++ã䜿çšããããšã¯ãŸãã§ãããå€ãã®å ŽåITãµãŒã¯ã«ãå°æãããããã§ãã ã€ã³ã¿ãŒãããã«ã¯ããã®ã¢ãããŒããæ¯æããªãå€ãã®è°è«ããããŸãã ãã€ã³ã¿ã®äœ¿çšãã¡ã¢ãªãªãŒã¯ãã»ã°ã¡ã³ããŒã·ã§ã³ãã©ãŒã«ãããŠã§ãæšæºã®ãµããŒãã®æ¬ åŠ-ããã¯ããã®ãã¯ãããžãŒã®éžæã決å®ããåã«ãç§ãã¡ãæ
£ã芪ããã§ãããã®ã®äžå®å
šãªãªã¹ãã§ãã
ãã®èšäºã§åé¡ãšãªã£ãŠããéçºã¯2015幎ã«å®äºããŸãããããã®åææ¡ä»¶ã¯ããªãæ©ãçŸããŸããã ããã¯ãã¹ãŠã2008幎ã«ãã¡ãŒã«ã¢ãã¬ã¹ãé»è©±çªå·ãªã©ã®ãŠãŒã¶ãŒã®é£çµ¡å
æ
å ±ãæšæºåããã³ä¿®æ£ããããã®WebãµãŒãã¹ãéçºãããšããã¢ã€ãã¢ããã£ããšããäºå®ããå§ãŸããŸããã WebãµãŒãã¹ã¯ãç¹å®ã®ãŠãŒã¶ãŒãä»»æã®ããã¹ã圢åŒã§æå®ããé£çµ¡å
ããŒã¿ãREST APIãä»ããŠåä¿¡ãããã®ããŒã¿ãæŽçããããšã«ãªã£ãŠããŸãã å®éããã®ãµãŒãã¹ã¯ãä»»æã®ããã¹ãæååã§ãŠãŒã¶ãŒã®é£çµ¡å
ããŒã¿ãèªèããåé¡ã解決ããããšã«ãªã£ãŠããŸãã ããã«ããã®ãããªåŠçäžã«ããµãŒãã¹ã¯äœæã®ã¿ã€ããã¹ãä¿®æ£ããæ¬ èœããŠããäœæã³ã³ããŒãã³ãã埩å
ããåŠçãããããŒã¿ãæ§é åããã圢åŒã«ããå¿
èŠããããŸããã ãã®ãµãŒãã¹ã¯ãã¯ã©ã€ã¢ã³ãã®é£çµ¡å
æ
å ±ã®æ£ç¢ºããéèŠãªèŠçŽ ã§ããããžãã¹ãŠãŒã¶ãŒã®ããŒãºã«åãããŠéçºãããŸããã ãŸãããããã¯å€§èŠæš¡ãªçµç¹ã®ãªã³ã©ã€ã³ã¹ãã¢ãé
ä¿¡ãµãŒãã¹ãCRMããã³MDMã·ã¹ãã ã§ãã
éæ§é åããã¹ãããŒã¿ã¯åŠçã®å¯Ÿè±¡ãšãªããããã³ã³ãã¥ãŒãã£ã³ã°ã«é¢ããŠã¯ãã¿ã¹ã¯ã¯éåžžã«å°é£ã§ããã ãããã£ãŠããã¹ãŠã®åŠçã¯C ++ã§å®è£
ãããé©çšãããããžãã¹ããžãã¯ã¯Perlã§èšè¿°ãããFastCGIãµãŒããŒãšããŠãã¬ãŒã åãããŸããã
ãœãªã¥ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãåæ€èšããããšãäœåãªããããæ°ããã¿ã¹ã¯ã«çŽé¢ãããŸã§ã6幎éããã®ãµãŒãã¹ã¯æ£åžžã«æ©èœããŸããã æ°ããã¿ã¹ã¯ã¯ããŠãŒã¶ãŒãå
¥åããã¡ãŒã«ã¢ãã¬ã¹ãå§ãåãæ称ã®ãªã¢ã«ã¿ã€ã ããã³ãããçæããããšã§ããã
ãªã¢ã«ã¿ã€ã åŠç
ãªã¢ã«ã¿ã€ã ããã³ããã®åœ¢æã¯ãé£çµ¡å
æ
å ±ããã©ãŒã ã«å
¥åããéçšã§ããŠãŒã¶ãŒãéµéå
äœæãŸãã¯ååã®æ¬¡ã®æåãå
¥åãããã³ã«ããŠãŒã¶ãŒããæ°ããHTTPãªã¯ãšã¹ããåä¿¡ããããšãæå³ããŸãã èŠæ±ã®äžéšãšããŠããµãŒãã¹ã¯ãããŸã§ã«ãŠãŒã¶ãŒãå
¥åããããã¹ãæååãåãåãããããåæããŠãå®äºã®ããã®ããã€ãã®æãå¯èœæ§ã®é«ããªãã·ã§ã³ãçæããŸãã ãŠãŒã¶ãŒã¯ãµãŒãã¹ããåãåã£ãããã³ãããèŠãŠãé©åãªãªãã·ã§ã³ãéžæããããå
¥åãç¶ããŸãã å®éã«ã¯ããã®ããã«èŠããã¯ãã§ãã
ãã®ã¿ã¹ã¯ã¯ããã©ãŒã ã®å
¥åäžã«åããŠãŒã¶ãŒãããå€ãã®ãªã¯ãšã¹ããçæãããšããç¹ã§ããµãŒãã¹ãæåã«èšèšãããå
¥åæžã¿ã®é£çµ¡å
ããŒã¿ã®æšæºåãšã¯ç°ãªããŸãã ããã«ããããã®èŠæ±ã®åŠçé床ã¯ããŠãŒã¶ãŒãããŒããŒãã§å
¥åããŒã¿ãå
¥åããé床ãè¶
ããå¿
èŠããããŸãã ãã以å€ã®å ŽåããŠãŒã¶ãŒã¯ãã¹ãŠã®ããŒã¿ãæåã§å
¥åããæéããããããã³ããã¯å¿
èŠãããŸããã
蚱容å¯èœãªå¿çæéãè©äŸ¡ããããã«ã調æŽå¯èœãªé
延ã䜿çšããŠäžé£ã®å®éšãå®è¡ããŸããã ãã®çµæãå¿çæéã150ããªç§ãè¶
ãããšããã³ãã圹ã«ç«ããªããªããšããçµè«ã«éããŸããã ãµãŒãã¹ã®å
ã®ã¢ãŒããã¯ãã£ã«ããã40人ã®ãŠãŒã¶ãŒãåæã«äœæ¥ããªãããã®ãã¬ãŒã ã¯ãŒã¯å
ã«çãŸãããšãã§ããŸããïŒãããã®ã€ã³ãžã±ãŒã¿ãŒã¯ã2ã€ã®ã³ã¢ãš8GBã®RAMãåãããµãŒããŒã§ååŸãããŸããïŒã ãã®æ°ãå¢ããã«ã¯ããµãŒããŒããŒããŠã§ã¢ã®ããã»ããµã®æ°ãå¢ããå¿
èŠããããŸãã ãŸããã¡ãŒã«ã¢ãã¬ã¹ãšååã®ãã³ãé¢æ°ã¯èª°ããèªç±ã«äœ¿çšã§ããããã«éçºããããããããå€ãã®ããã»ããµãšãµãŒããŒãå¿
èŠã«ãªãããšãããããŸããã ãããã£ãŠããµãŒãã¹ã®ã¢ãŒããã¯ãã£ãå€æŽããããšã§ãªã¯ãšã¹ãã®åŠçãæé©åã§ãããã©ãããšããçåãçããŸããã
ãœãŒã¹ã¢ãŒããã¯ãã£
æ¹åãå¿
èŠãªãµãŒãã¹ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ãšããã§ãã
ãã®ã¹ããŒã ã«åŸã£ãŠããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ïŒããšãã°ãWebãã©ãŠã¶ãŒïŒã¯ãWebãµãŒããŒãåä¿¡ããHTTPèŠæ±ãçæããŸãïŒãã®å Žåã軜éã®lighttpd WebãµãŒããŒã䜿çšãããŸãïŒã ã¯ãšãªãéçãåŠçããŠããªãå Žåããããã¯FastCGIã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠWebãµãŒããŒã«æ¥ç¶ãããŠããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«éä¿¡ãããŸãïŒãã®å Žåãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯Perlã§èšè¿°ãããŠããŸãïŒã èŠæ±ãé£çµ¡å
ããŒã¿ã®åŠçã«é¢é£ããŠããå Žåããããã¯åŠçãµãŒããŒã«æž¡ãããŸãã ãœã±ããã¯ãåŠçãµãŒããŒãšå¯Ÿè©±ããããã«äœ¿çšãããŸãã
ãã®ã¹ããŒã ã§åŠçãµãŒããŒãããŒã¿ããŒã¹ãµãŒããŒã«çœ®ãæãããšãphp_fpmãå®è¡ããPHPã ãã§ãªããPythonãŸãã¯Rubyçšã®äžè¬çãªãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠéçºãããåŸæ¥ã®Webã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããããªãäžè¬çãªã¹ããŒã ãåŸãããããšããããŸãã
ãã®ã¢ãŒããã¯ãã£ã¯ãè² è·ãå¢ãããªãããµãŒãã¹ãç°¡åã«æ¡åŒµã§ãããããéåžžã«æåããŠããããã«èŠããŸããããã®ãããæ°ããåŠçãµãŒããŒãè¿œå ãããã ãã§ãã ããããããã©ãŒãã³ã¹ã¯å€ãã®ç¹ã§æãŸããŠããããããªã¯ãšã¹ãåŠçã®ããŸããŸãªæ®µéã§ãµãŒãã¹ãè²»ããæéã枬å®ããããšã«ããŸããã çµæã¯æ¬¡ã®å³ã§ãã
ãã®å³ã¯ããªã¯ãšã¹ããåŠçãã§ãŒã³å
šäœãŸãã¯ãã®äžéšã®ã¿ãééããå Žåã«ããªã¯ãšã¹ããéä¿¡ãããŠããWebã¯ã©ã€ã¢ã³ããã¬ã¹ãã³ã¹ãåä¿¡ãããŸã§ã«ãããæéãããŒã»ã³ããŒãžã§ç€ºããŠããŸãã ãã®å®éšäžãã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯åãããŒã«ã«ãããã¯ãŒã¯ã«é
眮ãããŸããã
ããšãã°ãå³ã®æåã®æ°åã¯ãæéã®25ïŒ
ãWebã¯ã©ã€ã¢ã³ãããã®èŠæ±ã®éä¿¡ãWebãµãŒããŒãã¹ãä»ããå¿çãããã³Webã¯ã©ã€ã¢ã³ããžã®å¿çã®è¿éã«è²»ããããŠããããšã瀺ããŠããŸãã åæ§ã«ãä»ã®ãã¹ãŠã®æ®µéã§ã¯ãé æ¹åã®èŠæ±ã®ééãšãå察æ¹åã®åããã§ãŒã³ã«æ²¿ã£ãå¿çã®æ»ãã®äž¡æ¹ãèæ
®ãããŸãã ã€ãŸãããªã¯ãšã¹ããããã«é²ããšãFastCGIã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«å±ããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãééããã«ã¯ãããã«25ïŒ
ã®æéãããããŸãã
次ã«ãèŠæ±ã¯ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãééããŸãã ããã«ããã«20ïŒ
ã®æéãè²»ããããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«ããèŠæ±ã®åŠçã¯å®è¡ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯ãHTTPèŠæ±ã解æããåŠçãµãŒããŒã«æž¡ããããããå¿çãåä¿¡ããFastCGIã€ã³ã¿ãŒãã§ã€ã¹ã«æ»ãã ãã§ãã å®éãã¢ããªã±ãŒã·ã§ã³ã¯ã¹ã¯ãªããèšèªã§å®è£
ãããŠãããããæéã®20ïŒ
ãèŠæ±ã®è§£æãšã€ã³ã¿ãŒããªã¿ãŒã®ã³ã¹ãã«è²»ããããŠããŸãã
ããã«20ïŒ
ã®æéã¯ãã¢ããªã±ãŒã·ã§ã³ãåŠçãµãŒããŒã«æ¥ç¶ããããã«äœ¿çšããããœã±ããã€ã³ã¿ãŒãã§ã€ã¹ãä»ããããŒã¿ã®åãæž¡ãã«è²»ããããŸãã 察å¿ãããããã³ã«ãšãã®å®è£
ãã¯ããã«åçŽã§ããããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯FastCGIãšæ¯èŒããŠå°ãéãåäœããŸãïŒ20ïŒ
察25ïŒ
ïŒã ãªã¯ãšã¹ãèªäœã®åŠçã¯ããŠãŒã¶ãŒãå
¥åããããŒã¿ã®ããã³ããã®åœ¢æã§æ§æãããŠãããåèšæéã®10ïŒ
ããããããŸããïŒãã¹ãã¯åŠçã®èŠ³ç¹ããæãé£ãããªã¯ãšã¹ãã®1ã€ã䜿çšããŸããïŒã
å®è¡ãããå®éšã®ã¿ã¹ã¯ã®è©³çŽ°ã¯ãã¹ãŠæçµæ®µéã§ã®ã¿æããã«ãªãããã®æ®µéã¯çç£æ§ã®èŠ³ç¹ããæãçåãå°ãªãããšã匷調ããããšæããŸãã æ®ãã®æé ã¯éåžžã«æšæºçã§ãã ãã®ãããã€ãã³ãWebãµãŒããŒã䜿çšããŸããããã¯ããªãã¹ã³ãããŠããHTTPããŒãã«é¢é£ä»ãããã1ã€ã®ãœã±ããããåä¿¡ããèŠæ±ãæœåºãããã®ããŒã¿ãFastCGIãœã±ããã«å
¥ããŸãã åæ§ã«ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒ-FastCGIãœã±ããããããŒã¿ãæœåºããåŠçãµãŒããŒãœã±ããã«è»¢éããŸãã ã¢ããªã±ãŒã·ã§ã³èªäœã«ã¯ãå
šäœãšããŠæé©åãããã®ã¯äœããããŸããã
å¿çæéã®ããã10ïŒ
ãæçšãªã¢ã¯ã·ã§ã³ã«èµ·å ãããšããæ鬱ãªç¶æ³ãããã¢ãŒããã¯ãã£ã®å€æŽã«ã€ããŠèããããããŸããã
æ°ãããµãŒãã¹ã¢ãŒããã¯ãã£
å
ã®ã¢ãŒããã¯ãã£ã®ãªãŒããŒããããæé€ããã«ã¯ããœã±ããã€ã³ã¿ãŒãã§ã€ã¹ãæé€ããã ãã§ãªããã€ã³ã¿ãŒããªã¿ãŒèšèªã®ã¢ããªã±ãŒã·ã§ã³ãåãé€ãããšãçæ³çã§ãã ãã®å ŽåããµãŒãã¹ãæ¡åŒµããæ©èœãç¶æããå¿
èŠããããŸãã 次ã®ãªãã·ã§ã³ãæ€èšããŸããã
ã€ãã³ããµãŒããŒã¢ããªã±ãŒã·ã§ã³
ãã®ãªãã·ã§ã³ã®äžéšãšããŠãããšãã°Node.jsãTwistedã«ã€ãã³ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãå®è£
ããå¯èœæ§ãèæ
®ãããŸããã ãã®å®è£
ã§ã¯ããªã¯ãšã¹ããééãããœã±ããã€ã³ã¿ãŒãã§ã€ã¹ã®æ°ã¯åããŸãŸã§ããåãªã¯ãšã¹ãã¯ãã©ã³ã·ã³ã°WebãµãŒããŒã«å°çãããããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã®1ã€ã«æž¡ããããããªã¯ãšã¹ããåŠçãµãŒããŒã«éä¿¡ããããã§ãã ãªã¯ãšã¹ãã®åèšåŠçæéã¯å€ãããŸããã ãã ãããœã±ããã®éåæ䜿çšã«ãããåæã«åŠçããããªã¯ãšã¹ãã®æ°ãå¢å ããŸãã 倧ãŸãã«èšãã°ã1ã€ã®èŠæ±ããœã±ããã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠç§»åããŠããéãå¥ã®èŠæ±ã¯åãã€ã³ã¹ã¿ã³ã¹å
ã®ã¢ããªã±ãŒã·ã§ã³ã®ããžãã¹ããžãã¯ãééã§ããŸãã
å€ãã¢ãŒããã¯ãã£ã®1ã€ã®ããã«ããã¯ïŒã¢ããªã±ãŒã·ã§ã³ãšåŠçãµãŒããŒéã®ãœã±ããã€ã³ã¿ãŒãã§ã€ã¹ïŒãæé€ããããã ãã«å®å
šã«éåæã®ã¢ããªã±ãŒã·ã§ã³ãå®è£
ããããšã¯äžåœã§ãããšèããããããã®å®è£
ãªãã·ã§ã³ãæŸæ£ããå¿
èŠããããŸããã ãã®ã³ã°ããŠãŒã¶ãŒçµ±èšã®ä¿®æ£ãã¡ãŒã«ã®éä¿¡ãå€ãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®ãµãŒãã¹ãšã®ããåããªã©ã®æ®ãã®I / Oæäœã¯ãå¥ã
ã®ã¹ã¬ããã§å»¶æããããããéåæã¯å¿
èŠãããŸããã§ããã ããã«ããã®ã¢ãŒããã¯ãã£ã§ã¯ã1ã€ã®ãªã¯ãšã¹ãã®åŠçæéãççž®ã§ããªããããAPIãä»ããŠãµãŒãã¹ãæäœãããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãŒãã³ã¹ã®åäžã享åã§ããŸããã
ã¢ããªã±ãŒã·ã§ã³ãšWebãµãŒããŒã®çµ±å
ããã§ã¯ãWebãµãŒããŒã«ãã£ãŠçŽæ¥åŒã³åºãããJavaãµãŒãã¬ãããŸãã¯.Netã¢ããªã±ãŒã·ã§ã³ãšããŠã®ã¢ããªã±ãŒã·ã§ã³ã®å®è£
ã調ã¹ãŸããã ãã®å ŽåãFastCGIã€ã³ã¿ãŒãã§ãŒã¹ãšãåæã«è§£éãããèšèªãåãé€ãããšãã§ããŸãã åŠçãµãŒããŒãšã®ãœã±ããã€ã³ã¿ãŒãã§ã€ã¹ãä¿åãããŸãã
ãã®ã¢ãããŒããæ¯æããªãææ決å®ã¯ãéžæããããã¯ãããžãŒããµããŒãããç¹å®ã®WebãµãŒããŒãžã®ãœãªã¥ãŒã·ã§ã³å
šäœã®ãã€ã³ãã®åœ±é¿ãåããŸããã ããšãã°ã.Netã䜿çšããå ŽåãJavaãµãŒãã¬ããçšã®TomcatãŸãã¯Microsoft IISã ã¢ããªã±ãŒã·ã§ã³ãšlighttpdããã³nginxãµãŒããŒãšã®äºææ§ãç¶æãããã£ãã®ã§ãã
Processing Serverãšã®ã¢ããªã±ãŒã·ã§ã³çµ±å
ãã®å ŽåãFastCGIã€ã³ã¿ãŒãã§ãŒã¹ãä¿åããããããç¹å®ã®WebãµãŒããŒãžã®ãã€ã³ãã£ã³ã°ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯C ++ã§å®è£
ãããåŠçãµãŒããŒãšçµ±åãããŸãã ãããã£ãŠãã€ã³ã¿ãŒããªã¿ãŒèšèªã®äœ¿çšãé¿ããã¢ããªã±ãŒã·ã§ã³ãšåŠçãµãŒããŒéã®ãœã±ããã€ã³ã¿ãŒãã§ã€ã¹ãæé€ããŠããŸãã
ãã®ã¢ãããŒãã®æ¬ ç¹ã¯ã倧èŠæš¡ãªãããžã§ã¯ãã§éåžžã«äººæ°ãããããã¹ããããŠãããã¬ãŒã ã¯ãŒã¯ããªãããšã§ãã åè£ã®ãã¡ãCppCMSãTreeFrogãããã³Wtãæ€èšããŸããã æåã®éšåã§ã¯ããããžã§ã¯ãã®Webãµã€ãã«é·ãéæ°ããæŽæ°ããªãã£ããããéçºè
ã«ãããããžã§ã¯ãã®å°æ¥ã®ãµããŒãã«ã€ããŠæžå¿µããããŸããã TreeFrogã¯Qtã«åºã¥ããŠããŸãã ãã®ã©ã€ãã©ãªã¯ãªãã©ã€ã³ãããžã§ã¯ãã§ç©æ¥µçã«äœ¿çšããŠããŸãããåé·ã§ãããã¿ã¹ã¯ã«ååãªä¿¡é Œæ§ããªããšèããŠããŸãã Wtã®èŠ³ç¹ã§ã¯ããã¬ãŒã ã¯ãŒã¯ã¯GUIã«éåžžã«éç¹ã眮ããŠããŸããããã®å ŽåãGUIã¯äºæ¬¡çãªãã®ã§ãã ãããã®ãã¬ãŒã ã¯ãŒã¯ã®äœ¿çšãæåŠããè¿œå ã®èŠå ã¯ããµãŒãããŒãã£ã©ã€ãã©ãªã®äœ¿çšã«é¢é£ãããªã¹ã¯ãæå°éã«æããããšãã欲æ±ã§ãããããã¯ãååãšããŠããµãŒãããŒãã£ã©ã€ãã©ãªã®ãããã°ãäžååã§ããããã«ç Žæããããªãæ¢åã®äœæ¥ãµãŒãã¹ã®ãªã¯ãŒã¯ããã£ããããååãšããŠçãããšãã§ããŸãã
ãããããã®ãããªãããžã§ã¯ãã®ååšèªäœããC ++ã§ã®Webã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ããã»ã©çµ¶æçã§ã¯ãªããšããèãã«è³ããŸããã ãã®ãããC ++ Webã¢ããªã±ãŒã·ã§ã³ã®éçºã«äœ¿çšã§ããæ¢åã®ã©ã€ãã©ãªã®èª¿æ»ãå®æœããããšã決å®ãããŸããã
æ¢åã®ã©ã€ãã©ãª
WebãµãŒããŒãšå¯Ÿè©±ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ãWebãµãŒããŒã§ãµããŒããããŠããHTTPãFastCGIããŸãã¯SCGIãããã³ã«ã®ãããããå®è£
ããå¿
èŠããããŸãã FastCGIãšãã®å®è£
ãlibfcgiãšããŠæ±ºå®ããŸããã
HTTPãªã¯ãšã¹ãã®è§£æãšHTTPã¬ã¹ãã³ã¹ã®çæã®ããã«ãcgiccã©ã€ãã©ãªãç»å ŽããŸããã ãã®ã©ã€ãã©ãªã¯ãHTTPããããŒã®ãã¹ãŠã®è§£æãèŠæ±ãã©ã¡ãŒã¿ãŒã®ååŸãåä¿¡ããã¡ãã»ãŒãžã®æ¬æã®ãã³ãŒããããã³HTTPå¿çã®çæãè¡ããŸãã
Xercesã¯ãREST APIã®ãã¬ãŒã ã¯ãŒã¯å
ã§ãµãŒãã¹ãŠãŒã¶ãŒããéä¿¡ãããXMLãªã¯ãšã¹ãã解æããããã«éžæãããŸããã
C ++ã§ã¯ããããã«äœ¿çšã§ãããUnicodeãµããŒãããªãããããã¹ãŠã®æååããŒã¿ãåžžã«UTF-8ã§è¡šçŸãããšããå
éšåæãå¿
é ã§ããå Žåãããã¹ããæäœããããã«æšæºã®STLæååã䜿çšããããšã«ããŸããã
å€éšãµãŒãã¹ããã³ã¡ãŒã«ãµãŒããŒãšå¯Ÿè©±ããããã«ãlibcurlã䜿çšããããã·ã¥ãçæããããšã決å®ãããŸãã-opensslã
é²é³ã³ã³ããŒãã³ã
HTMLãã¥ãŒãçæããã«ã¯ãåçŽãªãã³ãã¬ãŒããšã³ãžã³ãå¿
èŠã§ããã å€ããµãŒãã¹ã®å®è£
ã§ã¯ãHTML ::ãã³ãã¬ãŒãããããã®ç®çã§äœ¿çšãããŠãããããC ++ã«åãæ¿ãããšãã¯ãé¡äŒŒã®æ§æãšé¡äŒŒã®æ©èœãæã€ãã³ãã¬ãŒããšã³ãžã³ãå¿
èŠã§ããã CTPPãClearsilverãGoogle-ctemplateã䜿çšããŠã¿ãŸããã
ãã³ãã¬ãŒãã䜿çšããåã«ãã³ãã¬ãŒãããã€ããªã³ãŒãã«è»¢éãããããå®è¡ããä»®æ³ãã·ã³ãäœæããå¿
èŠããããããCTPPã䜿çšããã®ã¯äžäŸ¿ã§ããããšãå€æããŸããã ããããã¹ãŠã®å°é£ã«ãããã³ãŒããäžåœã«æ±ãã«ãããªããŸãã
Clearsilverã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹å
šäœãçŽç²ãªCã§å®è£
ãããŠãããããã䜿çšããã«ã¯ãå°è±¡çãªãªããžã§ã¯ãã©ãããŒãäœæããå¿
èŠããããŸããã Google-ctemplateã¯ããµãŒãã¹ã®å€ãããŒãžã§ã³ã§äœ¿çšãããŠããHTML :: Templateã®ãã¹ãŠã®æ©èœãã«ããŒããŠããŸããã§ããã æ倧éã«æŽ»çšããã«ã¯ãè¡šçŸã®åœ¢æãæ
åœããããžãã¯ãå€æŽããå¿
èŠããããŸãã ãããã£ãŠããã³ãã¬ãŒããšã³ãžã³ã®å Žåã¯ãç¬èªã®èªè»¢è»ãéçºããå¿
èŠããããŸããã
ç¬èªã®C ++ãã³ãã¬ãŒããšã³ãžã³ã®éçºã«ã¯çŽ3æ¥ããããŸããããäžèšã®æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã®æ€çŽ¢ãšç 究ã«ã¯2åã®æéãè²»ãããŸããã ããã«ããã³ãã¬ãŒããšã³ãžã³ã§ã¯ããelse ifãæ§æèŠçŽ ãè¿œå ããããšã§ãHTML ::ãã³ãã¬ãŒãæ§æãæ¡åŒµã§ããå€æ°ããã³ãã¬ãŒãå
ã®å®çŸ©æžã¿ã®å€ãšæ¯èŒããããã®æŒç®åãè¿œå ãããŸããã
ã»ãã·ã§ã³ç®¡çãç¬ç«ããŠå®è£
ããå¿
èŠããããŸããã ä»åã®ã±ãŒã¹ã®ã»ãã·ã§ã³ã«ã¯ããŠãŒã¶ãŒã®è¡åããªã¢ã«ã¿ã€ã ã§åæ ããéåžžã«å€ãã®æ
å ±ãæ ŒçŽããããããéçºããããµãŒãã¹ã®è©³çŽ°ã圱é¿ãåããŸãã å®éãREST APIãä»ããããŒã¿åŠçã«å ããŠãéåžžã®ãŠãŒã¶ãŒã¯ãããšãã°ãç¹å®ã®äœæã®éµäŸ¿çªå·ãèŠã€ããå¿
èŠãããå Žåã«ãåç
§ãµãŒãã¹ãšããŠãµãŒãã¹ã«ã¢ã¯ã»ã¹ããããšããããããŸãã æã
ããŠãŒã¶ãŒã¯ããããç®çãšããREST APIã䜿çšãã代ããã«ããã©ãŠã¶ãŒã§äººã®äœæ¥ãæš¡å£ããWebããããéçºããããšã«ãããé£çµ¡å
æ
å ±ã®æšæºåãèªååããããšã«ãªããŸãã ãã®ãããªãããã¯ãµãŒãã¹ã«ç¡çšãªè² è·ããããä»ã®ãŠãŒã¶ãŒã®äœæ¥ã«åœ±é¿ãäžããŸãã ããããšæŠãããã«ããµãŒãã¹ã¯ã»ãã·ã§ã³å
ã®ãŠãŒã¶ãŒã®è¡åãåæ ããæ
å ±ãèç©ããŸãã ãã®æ
å ±ã¯ãã®åŸããããã®èªèãšãããã¯ãæ
åœããå¥ã®ãµãŒãã¹ã¢ãžã¥ãŒã«ã§äœ¿çšãããŸãã
ãããããç§ãã¡ãç¬èªã«å®è£
ããªããã°ãªããªãã£ãéèŠãªæšæºã¯JSONã§ãã C ++ã§ã¯ãå¥ã®å®è£
ãäœæããåã«åæãããªãŒãã³å®è£
ã®å€ãããããŸãã ç¬èªã®å®è£
ãäœæããäž»ãªçç±ã¯ãåçãªå²ãåœãŠãšã¡ã¢ãªã®è§£æŸã®æäœãé«éåããããã«åŠçãµãŒããŒã§äœ¿çšãããéæšæºã®ã¡ã¢ãªã¢ãã±ãŒã¿ãšçµã¿åãããJSONã®äœ¿çšã§ãã ãã®ã¢ãã±ãŒã¿ãŒã¯ãå°ããªãããã¯ã®å²ãåœãŠ/解æŸã®å€§éæäœã§ãæšæºã®ã¢ãã±ãŒã¿ãŒããã2ã3åéãåäœããŸãã JSONã§ã®äœæ¥ã¯ãã®ãã¿ãŒã³ã«é©åãããããJSONãªããžã§ã¯ãã®è§£æãšæ§ç¯ã«é¢é£ãããã¹ãŠã®æäœã®ããã©ãŒãã³ã¹ãç¡æã§åäžãããããšèããŸããã
æçµçµæ
æçµçãªãœãªã¥ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã次ã®å³ã«ç€ºããŸãã
ã¢ããªã·ãã¯ãµãŒããŒã®ãã¬ãŒã ã¯ãŒã¯å
ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ããžãã¯ãšé£çµ¡å
ããŒã¿ã®åŠçã®äž¡æ¹ãçµ±åãããŠããŸãã çä¿¡èŠæ±ãåŠçããããã«ããµãŒããŒã¯å®è¡ã¹ã¬ããã®ããŒã«ãæäŸããŸãã APIèŠæ±ã®åŠçäžã«å®è¡ããå¿
èŠããããã¹ãŠã®I / Oæäœã¯é
延ããŸãã ãããã®ç®çã®ããã«ãéåæI / Oã®å®è¡ãæ
åœãããµãŒããŒäžã«ã¹ã¬ããã®å¥åã®ããŒã«ãäœæãããŸãã ãã®ãããªæäœã«ã¯ãããšãã°ãææã®APIé¢æ°ã䜿çšããå Žåã®ãŠãŒã¶ãŒçµ±èšã®æŽæ°ããè²»çšã®æžé¡ãå«ãŸããŸãã ã©ã¡ãã®å ŽåããããŒã¿ããŒã¹ã«èšé²ããå¿
èŠããããŸããã¡ã€ã³ã¹ã¬ããã§å®è¡ãããšããŒã¿ããŒã¹ããããã¯ãããŸãã
ãã®ã¢ãŒããã¯ãã£ã«ãããã¢ããªã·ãã¯ãµãŒããŒã®è¿œå ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããããšã§ãµãŒãã¹ãæ¡åŒµã§ããŸãããã®å ŽåãWebãµãŒããŒã«ã¯ãã©ã³ãµãŒã®è¿œå ã®åœ¹å²ãäžããããŸãã
åã«ç€ºããå³ã«ãããšãæ°ããã¢ãŒããã¯ãã£ã«åãæ¿ãããšã1ã€ã®èŠæ±ãåŠçãããšãã®ãµãŒãã¹ã®å¿çæéãçŽ40ïŒ
ççž®ãããã¯ãã§ãã å®éã®å®éšã§ã¯ãæžå°ã¯43ïŒ
çºçããããšã瀺ãããŸããã ããã¯ãã¢ããªã·ãã¯ãœãªã¥ãŒã·ã§ã³ãRAMã®ããå¹ççãªäœ¿çšã«ãªã£ããšããäºå®ã«ãã£ãŠèª¬æã§ããŸãã
ãŸããã¹ãã¬ã¹ãã¹ããå®æœããŠãããã³ããã䜿çšããªããæ°ãããµãŒãã¹ã察å¿ã§ãããŠãŒã¶ãŒæ°ã決å®ãã150ããªç§ä»¥äžã®å¿çæéãæäŸããŸããã ãã®ã¢ãŒãã§ã¯ããµãŒãã¹ã¯120人ã®ãŠãŒã¶ãŒã®åææäœãæäŸã§ããŸããã å€ãå®è£
ã®å Žåããã®å€ã¯40ã ã£ãããšãæãåºããŠãã ããããã®å Žåãçç£æ§ã®3åã®å¢å ã¯ãèŠæ±ãããŒã®åŠçã«é¢äžããããã»ã¹ã®ç·æ°ã®æžå°ã«ãã£ãŠèª¬æãããŸãã 以åã¯ãèŠæ±ã¯ã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã«ãã£ãŠåŠçãããŸããïŒå®éšã§ã¯ãã€ã³ã¹ã¿ã³ã¹ã®æ°ã¯5ãã20ãŸã§å€åããŸããïŒãããµãŒãã¹ã®æ°ããããŒãžã§ã³ã§ã¯ããã¹ãŠã®èŠæ±ã¯åäžã®ãã«ãã¹ã¬ããããã»ã¹ã®äžéšãšããŠåŠçãããŸãã åã€ã³ã¹ã¿ã³ã¹ã¯ç¬èªã®åå¥ã®ã¡ã¢ãªã§åäœããŸããããããã¯ãã¹ãŠäžç·ã«1ã€ã®ããã»ããµãã£ãã·ã¥ã奪ãåãããã®äœ¿çšã¯éå¹çã«ãªããŸãã 1ã€ã®ã¢ããªã·ãã¯ããã»ã¹ã®å Žåããã®ãããªç«¶åã¯ãããŸããã
ãããã«
ãã®èšäºã§ã¯ããªã¢ã«ã¿ã€ã ã®ãªã¯ãšã¹ãåŠçãæäŸããå¿
èŠãããå Žåã«ãWebãµãŒãã¹ãéçºããããã®éæšæºçãªã¢ãããŒããæ€èšããŸããã ããã³ãããçæããã¿ã¹ã¯ã®äŸã¯ãå¿çæéãé·ããããšãµãŒãã¹ã®æ©èœããŠãŒã¶ãŒã«ãšã£ãŠå®è³ªçã«åœ¹ã«ç«ããªããªããšããWebãµãŒãã¹ã®ç°åžžãªç¶æ³ã瀺ããŠããŸãã äŸã¯ããã®ãããªèŠä»¶ã®åºçŸãã¢ãŒããã¯ãã£ã®å€§å¹
ãªå€æŽã«ã€ãªããå¯èœæ§ãããããšã瀺ããŠããŸãã
ããã©ãŒãã³ã¹ãåäžãããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããŒã¿åŠçãµãŒããŒãC ++ã§å®è£
ãããåäžã®ã¢ããªã·ãã¯ãµãŒããŒã«çµåããå¿
èŠããããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã«ãããåäžã®èŠæ±ãåŠçããéã®å¿çæéãååã«ãªãã倧é䜿çšã«ãããµãŒãã¹ããã©ãŒãã³ã¹ã3åã«åäžããŸããã
äž»ãªåé¡ã解決ããããšã«å ããŠãè¡ãããäœæ¥ã®æ¥œããããŒãã¹ã¯ããªãã¡ã¯ã¿ãªã³ã°ã®ç°¡çŽ åã§ããããªããªããå³å¯ãªã¿ã€ãã³ã°ã«ãããã³ãŒãã®ååå€æŽã«è² æ
ããããªãããã§ãã ãšã©ãŒãçºçããå Žåããããžã§ã¯ãã¯åã«çµã¿ç«ãŠãããŸããã ãŸãã1ã€ã®èšèªã§èšè¿°ãããããžãã¹ããžãã¯ãšããŒã¿åŠçããžãã¯ãåããå¯äžã®ãµãŒããŒããããããçµæã®ãããžã§ã¯ãå
šäœã®ä¿å®ã容æã«ãªããŸããã