ãšã³ãžãã¢çµç¹ã匷ãããããã®æ¬ãåºçããŸãã
Qiitaã§ãšã³ãžãã¢ãªã³ã°ããããæ§ã ãªã³ãã¥ãã±ãŒã·ã§ã³ã®åé¡ãšãã®è§£æ±ºçãèãæ¹ãæžããŠããããããã®èåŸã«ãããšãã»ã³ã¹ããã®åºŠæžç±ãšããŠåºçããã«è³ããŸããã
ãã®æžç±ã¯ããšã³ãžãã¢ãªã³ã°ããäžç¢ºå®æ§ãåæžããããšãã第äžåçã§æãçŽããæ§ã ãªãšã³ãžãã¢ãªã³ã°ãšãã®éã®ã³ãã¥ãã±ãŒã·ã§ã³ããããçŸè±¡ã説æããŠãããã®ã§ãã
ã¯ããã«
ãã®èšäºã¯æ°çŸäžè¡ã®åçåä»ãèšèªã®Webã¢ããªã±ãŒã·ã§ã³ã®ãªãã¡ã¯ã¿ãªã³ã°ãã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®åèšèšã®çµéšãåºã«ãæå¹ã ãšæãããèãæ¹ãã¢ãããŒããæç²ããŠç޹ä»ãããã®ã§ããèšããŸã§ããªãããããã³ãŒãããŒã¹ãã¢ãŒããã¯ãã£ã«ãããŠæå¹ãªãã®ãšã¯éããŸããã®ã§ãåã ã®ç°å¢ãç¶æ³ããé©åã«å€æããŠãã ããã
ã³ãŒãã£ã³ã°ã¬ã€ãã©ã€ã³ãäœãã
ãŸããäœã¯ãšããããæé»ç¥ãã«ããã³ãŒãè©äŸ¡ã¯é¿ããŸããããã³ãŒãã£ã³ã°ã¬ã€ãã©ã€ã³ãäœæããããã«æºæ ããããšãéèŠã§ãããšããã³ã³ã»ã³ãµã¹ããšããŸãããã
ãŸããåèšèªã®ã¹ã¿ã€ã«ãªã©ã¯æ¢ã«ååšããŠããã¹ã¿ã€ã«ã¬ã€ããèžè¥²ããããšã§ãæ°ãã«å ãã£ãã¡ã³ããŒã§ãåŠç¿ã³ã¹ããäžããããšãã§ããŸãã
ããšãã°ããããããšããããèŠã€ããŠã¿ãŠã¯ã©ãã§ãããã
http://blog.verygoodtown.com/2013/03/development-user-style-guide/
ãã®ã¹ã¿ã€ã«ã¬ã€ãã«é¢ããŠã¯ãèªåæ€ç¥ãèªåä¿®æ£ãã§ãããããªãã®ãæãŸããã§ãã
- Ruby:rubocop
- Perl:perltidy
- Go:gofmt
- JavaScript:jshint,jsfmt
ã®ãããªãã©ãŒããã¿ããlintããŒã«ãå©çšããã¹ã¿ã€ã«ã®ä¿®æ£ãçºèŠãšãã£ãããšã«æéãè²»ãããã«ããããã«ããŸãããã
ã³ãŒãã£ã³ã°ã¬ã€ãã©ã€ã³èªäœã«ã¯ã¹ã¿ã€ã«ã®ä»ã«ããã¬ãŒã ã¯ãŒã¯ã®èŠçŽãåŸè¿°ãããããªã¬ã€ã€ãªã³ã°ã¢ãŒããã¯ãã£ãªã©ã®äŸåé¢ä¿ã®ã«ãŒã«ãªã©å€å²ã«ããã£ãŠããŸãã
ããããèªåçãªæ€ç¥ããã¹ããè¡ãããšã§ãçºèŠã§ããããã«ããŸãããã
ã³ãŒãã¬ãã¥ãŒãããã
ã³ãŒãã¬ãã¥ãŒãè¡ãããšã¯éèŠã§ããã³ãŒãã¬ãã¥ãŒã®ããã®ããŒã«ãããã»ã¹ãå°å ¥ããŸãããã
ã³ãŒãã¬ãã¥ãŒã®å©ç¹ã¯æ§ã ãããŸãããå人çã«æå€§ã®å©ç¹ã¯ãã³ãŒãã«ã€ããŠè©±ãåãæåãã§ãããããšã§ããããã
ã³ãŒãã¬ãã¥ãŒã«ãããŠã¯ãèªåçã«æ€ç¥ã§ãããã®ã«é¢ããŠã¯é©å®èªååããŠããã®ãããã§ããããèšèšäžã®åé¡ã«ã€ããŠã話ãåããé©åãªç²åºŠã§ã¬ãã¥ãŒãè¡ãããšã§ãã³ããããã°ããããã«ãªããŸãããæè²ç广ãæããŸãã
ã¢ãžã£ã€ã«ããã»ã¹ãéçšããã
ããã»ã¹ã®çš®é¡ã¯åããŸããããããŒã ã§ã¢ãžã£ã€ã«ããã»ã¹ã®éçšãã¯ãããŸãããããã®éãèšèšã«é¢ããŠããŒã ãšããåäœã§å ±æã§ããããã«å¿ãããŸãããã
ã¢ãžã£ã€ã«ããã»ã¹ã®ãœãŒã¹ã³ãŒãå質ã«å¯Ÿããã¡ãªããã¯äž»ã«ïŒã€ã§ãã
- 緎床ã®é«ãã¡ã³ããŒããäœãã¡ã³ããŒãžã®æè²å¹æ
- ãã¡ã€ã³èšèªã®å ±æã«ããå®è£ å質ã®åäž
- èŠæ±ãšèšèšã®äžäžèŽã®æ©æçºèŠ
éã«ãããæãéããããªãã¢ãžã£ã€ã«ããã»ã¹ã¯åœ¢éªžåããæå³ã®ãªããã®ã«ãªããã¡ã§ãã
ã¡ãªãããšãªããã€ã³ããå®çŸã§ããŠãããã宿çãªã¬ããã¹ãã¯ãã£ããè¡ãæ¹åãããç¶æ³ãäœããŸãããã
èªåãã¹ããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãå°å ¥ããã
ãããããªãã®ãããžã§ã¯ãã«ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã®ä»çµã¿ããªãã®ã§ããã°ãçŽã¡ã«å°å
¥ããã¹ãã§ãã
ããçšåºŠãã¹ããå¢ããŠãããã§ã¯ãªãããªãã¹ãæ©ãæ¹ãããã§ããé¶ãå
ãåµãå
ãã®è°è«ã«ãªããã¡ã§ãããé¶ãçã¿åºããŠããŸãã°ãåµã¯çãŸããŸãã
ãã¹ãããã¹ãŠGreenã§ãªãéããDeployãããªããšå¶çŽã¥ããããšã§ãèªåãã¹ãã«ã¯äžå®ã®ã匷å¶åããçºçããŸãã
ãã®éããã¹ãã«ãã¬ããžãã©ã®çšåºŠèŠæ±ããã®ãã«ã€ããŠãã³ã³ãããŒã«ã§ããããã«ããŠãããšããã§ãããããã ãå ãæ¥ãã§ãã¹ãã«ãã¬ããžã®å€ãé«ãèŠæ±ãããšãã¹ãã«ãããå·¥æ°ãèšå€§ã«ãªã£ãŠããŸããããã£ãŠéçºé床ãäœäžãããŠããŸããŸãã
åŸè¿°ãããã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ãã®æ¡çšãšãšãã«ãåã¬ã€ã€ãŒããšã«é©åãªã«ãã¬ããžC0,C1ã®å€ã決ããŠãããªã©ããããšã§ãè²»çšå¯Ÿå¹æã調æŽããªããèªåãã¹ãã®å°å ¥ãå³ãããšãã§ããŸãã
http://ja.wikipedia.org/wiki/ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³
http://www.techmatrix.co.jp/quality/validation/coverage.html
éçè§£æã®ã¡ããªã¯ã¹ã枬å®ããèªåãã¹ãã«çµã¿èŸŒãã
éçè§£æãšã¯ããœãŒã¹ã³ãŒããåäœãããã«åå¥çã«è§£æããåè³ªãæž¬å®ããææ³ã§ããåçš®èšèªã§æ§ã ãªææšãåŸãããã®ã©ã€ãã©ãªãååšããã§ãããã
æè¿ã®CIããŒã«ã¯ããã¡ã€ã«ããšã®ã¡ããªã¯ã¹ãªã©ã衚瀺ããããšãã§ããŸãã
æ°å€ãšããŠè¡šç€ºããããšãå¯èŠåã®ããã«ã¯éèŠã§ããããã®éçšã«ã¯èªåãã¹ããšäœµããŠå©çšããã®ãããã§ãããã
éçè§£æã«ããææšã®å°å ¥æ¹æ³ã®äŸãšããŠã¯ãããšãã°ïŒ
- ãã¡ãœããã®é·ããã50lines以äžã«å¶çŽããã
- ã³ãŒãã£ã³ã°ã¬ã€ãã©ã€ã³ã§ã¯æšå¥šãããŠããããå®éã«ã¯å®ãããŠããªãç®æã倿°ããããã
- ãã¹ãŠã®ã³ãŒãã«å¯ŸããŠããã®è§£æãè¡ã£ããšããã30ã«æã®ã¬ã€ãã©ã€ã³éåãèŠã€ãã£ã
ãããã£ãã±ãŒã¹ã®å Žåã
- ã¬ã€ãã©ã€ã³éåãæ€ç¥ãããã¹ããèªåã®å¯Ÿè±¡ãšããŠè¿œå ãã
- ãã§ã«ã¬ã€ãã©ã€ã³éåãããŠãã30åã®ã¡ãœãããåæãããã¹ã察象ã®blacklistãšããŠåé¢ããã
- æ°èŠãã¡ã€ã«ã察象ã«pre-commitæã«æ€æ»ã§ããããã«ãã
- ããããã®ä¿®æ£ã«ã€ããŠissueãticketåãã
- blacklistã®è¿œå ãçŠæ¢ãã
ãšãããããªã¹ããããèžãã§ãããšè¯ãã§ãããã
éçè§£æã®å¯Ÿè±¡ãšããŠã¯ã
- åœåèŠå
- 埪ç°çè€é床
- ïŒã¯ã©ã¹ãïŒãã¡ã€ã«ã®é·ã
- äŸåé¢ä¿ã®å¶çŽïŒå®å®äŸåã®ååã埪ç°äŸåçŠæ¢ã®åå)
ãªã©ãé©åãªãã®ã枬å®å¯èœãªãã®ãéžã³åãå
¥ããŸãããã
ããšå¿ããã¡ãªã®ã¯ãªããžããªäžã®èšå®ãæžãããã yamlãjsonãã¡ã€ã«ããã³ãã¬ãŒããã¡ã€ã«ãèŠçŽã«åã£ã圢åŒã§ããããmalformatã§ãªãããªã©ãéèŠãªãã¹ã察象ã§ãã
衚æã䜿ãã
衚æãšã¯ãã¢ãµãŒã·ã§ã³ã®ããšã§ãããœãŒã¹ã³ãŒãäžã«æºããã¹ãæ¡ä»¶ãçµã¿èŸŒãããšã§ãèªåãã¹ããéçè§£æã§ã«ããŒããããªãåé¡ãªã©ã«ã察åŠããããšãã§ããŸãããããã°æç°å¢ãæ¬çªç°å¢ãªã©ãæ¡ä»¶ã«å¿ããé©åãªã¢ãµãŒã·ã§ã³ãçµã¿èŸŒãããããªã©ã€ãã©ãªãå°å
¥ããŸãããã
http://ja.wikipedia.org/wiki/%E8%A1%A8%E6%98%8E
Debugãã°ã«ãã衚æ
çŸä»£çãªWAFãå©çšããŠããã®ã§ããã°ããã°æ å ±ã®ã¬ãã«ç®¡çã¯ãªãããŠããããšã§ããããDebugç°å¢æã«ã®ã¿åºåããããã°ãå©çšããéçºè ãžã®ã¢ã©ãŒãã¯ãããçšåºŠæå¹ãªéžæã§ãã
ç¹ã«ãã©ã³ã¿ã€ã æã«ããæ€ç¥ã§ããªã衚æãåçèšèªã«ããã¢ããªã±ãŒã·ã§ã³ã®å Žåå€ãååšããŸããéçãªåãæã£ãèšèªã§ãã£ãŠãããã³ãã¬ãŒããšã³ãžã³ãåçãªåã蚱容ããå Žåããããæ³šæãå¿ èŠã§ãã
ãŸããDebugæã®ãã°ã§ãããªããããæ¬çªç°å¢ã«äžãã圱é¿ããªãã®ã§ãå®å¿ããŠè¿œå ããããšãã§ããŸãã
ãããããã°ãã°Debugæãã°ã«ããå¶çŽã¯ç¡èŠãããŸããå®å¿ããŠè¿œå ããããšãã§ããããã匷æ°ã«ãã°ã®è¿œå ãããã¡ã§ãããå€ããªãã°ãªãã»ã©ãããåœããåã®ãã®ãšããŠåãå ¥ããŠããŸãåŸåããããŸãã
æœçãªäººãçŽããŠåããšããç¶æ ãåºæ¥äžããããå šå¡ãç¡èŠãããšããæ«è·¯ãèããããŸãã
Debugæãããã¯ã«ãã衚æ
Debugãã°ããããããŒãã«æ»ããã人ã«ã¯ãå§ãã®å¶çŽãšããŠãDebugæãããã¯ã«ããå¶çŽããããŸãã
Debugæã®ã¿ã衚æéåãããå Žåã«äŸå€ãçºçãããã·ã¹ãã ãæ¢ãããšãããã®ã§ãã
éçºè ã¯ãããã«ã€ããŠä¿®æ£ããªããã°éçºãé²ããããªããããå¶çŽããåã匷ããªããŸãã
åçãªèªåæ€ç¥å
šè¬ã«èšããããšã§ããããæ€ç¥ã¯ã§ããŠãã統治ã¯ã§ããªãããããã®ãã®ã§ãã
ã³ãŒãäžãããªã¹ãã¢ããããŠèŠã€ãããããããèµ·ããããå Žæãæ¢çŽ¢ããããšèšã£ãããšãã§ããŸããã
ããšãã°ãã©ã€ãã©ãªã®å ¥åå€ã¢ãµãŒã·ã§ã³ãªã©ããã§ã«ãããã®ã§ã¯ãªããããããããããããããªããšããã§é©å¿ããã®ãããã§ãããã
æ¬çª(äžéš)ãµãŒããŒãã°ã«ãã衚æ
èªåãã¹ããšæ¯ã¹ã衚æãå©çšããã³ãŒãã®å質管çã®å Žåããã¹ãŠè¡šæéåãåæã管çããããšãé£ãããšã話ãããŸããããªããªããåãããŠåããŠãããã±ãŒã¹ãå€ãããã§ããå®å šãªåæãšãŸã§ã¯è¡ããªãã§ããããããããŠãã®å ŽåããŸãè¡ãæ¹æ³ãšããŠã¯ãæ¬çªç°å¢ã§ãã°åºåããããããéèšããŠã¬ããŒãããããšã§ãã
æ°ãèšå€§ã«ãªãã®ã§ããã°ãäžéšãµãŒãã®ã¿é©å¿ãããã確ççã«ãã°åºåããããªã©ããŠæ°ã®åé¡ãã¯ãªã¢ããŸãããã
ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒä»¥å€ã®ç®æãã¢ããªã±ãŒã·ã§ã³ã³ãŒããé©å¿ãããé å(ããšãã°cron scriptãjob queue worker)ãªã©ãããã®ã§ããã°ãããã察象ã«å ¥ããŠããæ¹ãå®å šã§ãããã
åæãããã®ã¯ããã¹ã察象ã®ãã©ãã¯ãªã¹ãã«ãããããã±ããåãããªã©ããŠç®¡çäžã«ãããŸãããã
ããšãã°ãäžå
çãªçœ®æãã§ããªããããªDeprecated/ObsoleteãªAPIãªã©ã管çãããå Žåã«ã¯ãã®æ¹æ³ã§çµ±äžããŠç®¡çãããšè¯ãã§ãããã
ã³ãŒããã£ãŒã³ãåæããã¡ããªã¯ã¹ã«åãå ¥ããã
ã³ãŒããã£ãŒã³(Code Churn)ãšã¯ãå¹³ããèšãã°ãgit logãgit blameã®çµæã§ãã
http://blogs.msdn.com/b/askburton/archive/2004/09/09/227515.aspx
éçè§£æã®ã¡ããªã¯ã¹ãããæœåšçãªãã°ã®çºèŠã«å¹æçã§ããããšããããšã§ãè¿å¹Žæ³šç®ã济ã³ãŠããŸãã
GoogleãbugspotsãšããŠãOSSåããŠããŸãã
http://google-engtools.blogspot.jp/2011/12/bug-prediction-at-google.html
https://github.com/igrigorik/bugspots
Microsoft Researchã®å€§èŠæš¡ãªç ç©¶çµæãåºã«ããŠããŸããbugspotsã¯éåžžã«ç°¡åãªrubyããã°ã©ã ã§ãã
http://research.microsoft.com/apps/pubs/default.aspx?id=69126
ããããããããã°ãè€æ°äººã§è€æ°åã«ããã£ãŠç·šéããããã¡ã€ã«ã¯è€æ°ã®ç®çã§ã³ãŒããç·šéãããŠããèš³ã§ãããããåäžè²¬åååããéåããŠããå¯èœæ§ãé«ããæœåšçã«ãã°ãå åšããŠãããã ãšããããšã§ãã
bugspotsã¯ãæè¿ã³ããããããã³ãŒããé«ãå±éºèŠãããã¢ã«ãŽãªãºã ã§ããããããã°ãåºå°œãããŠããªãã³ãŒãã®ãªãã§ããã«å±éºãªéšåãèŠã€ããããšãã§ããŸãã
äžæ¹ãå€ãã³ãŒãå šäœã§ãåºå®çã«å±éºãªã¢ãžã¥ãŒã«ãèŠã€ããã®ã§ããã°ãåçŽã«ã³ããã人æ°ãæ°ããããä¿®æ£æ°ãæ°ãããããã ãã§ãå±éºãªã¢ãžã¥ãŒã«ãæ¢ãåºãããšãã§ããŸãã
èªåæ€ç¥ã®ã¿ãŒã³ã¢ã©ãŠã³ããæ©ãããã
èªåãã¹ãã§æ€ç¥ã§ãããããªã¬ã€ãã©ã€ã³éåã§ããã°ãããæ©ãéçºè ã«ç¥ãããããšã§éçºã®ã¿ãŒã³ã¢ã©ãŠã³ããæ©ããªããŸããïŒã€ã¯Pre-Commitæã«ãã¹ãscriptãèµ°ãããæ¹æ³ãããïŒã€ã¯ãšãã£ã¿ã®ãã©ã°ã€ã³ãfswatchã³ãã³ããšããŠããã¡ã€ã«ä¿åæããªã©ã«èµ°ãããæ¹æ³ã§ãã
Pre-Commit scriptã«ããå¶çŽ
æ°ããªè¿œå ã³ãŒãã«éå®ããŠãå¶çŽãå ãããã®ã§ããã°ããã£ãšãåçŽãªæ¹æ³ã¯ã³ãããææ€æ»ã§ãã
éçºè
ã§ã³ãããææ€æ»scriptãå
±æããã³ãããã¿ã€ãã³ã°ã§å¶çŽéåãšãªãã³ãŒããæ€åºããŸãã
ãšãã£ã¿ãã©ã°ã€ã³ã«ããå¶çŽ
éçè§£æã§æ€èšŒã§ãããã®ã®ãã¡ãé«éã«åŠçã§ãããã®ã¯Editorãã©ã°ã€ã³ãšããŠéçºããã®ãããã§ããããããã¯éçºã®ã©ã€ããµã€ã¯ã«ã®äžã§ãééããèŠã€ããã€ãã¬ãŒã·ã§ã³ãæ©ããªããŸãã®ã§ã广ãé«ãã§ãããã ãããããŠãã®WebäŒæ¥ã§ã¯ããšãã£ã¿ã®èªç±ãèªããŠããŸããã匷å¶ããã®ã¯é£ããã§ãããã
ç¬ç«ããscriptãšããŠäœæããåºåãã©ãŒããããæ±ºããŠããã°å€§æµã®ãšãã£ã¿ã§ãã©ã°ã€ã³åããã®ã¯ç°¡åã«ãªããŸãã®ã§ããããã£ãscriptãšãšãã£ã¿ãã©ã°ã€ã³ã远å ãããªããžããªãã«ãŒã«ãªã©ã決ããŠããããšã§ãç¥èã®å ±æãã¹ã ãŒãºã«ã¯ããããŸãã
ãŸããfswatchãªã©ã®ãã¡ã€ã«ã·ã¹ãã ã®watcherã«ã¬ã€ãã©ã€ã³é忀åºããã¹ãã®scriptãªã©ãèµ°ãããã®ãæªããªãã§ãããã
ã¬ã€ã€ãªã³ã°ã¢ãŒããã¯ãã£ãçµãã
ã¬ã€ã€ãªã³ã°ã¢ãŒããã¯ãã£ãšã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãéå±€çã«åå²ãããã®äŸåé¢ä¿ã«ã€ããŠèŠçŽãæã€ã¢ãŒããã¯ãã£ã®ããšã§ããããšãã°ããã¡ã€ã³é§åèšèšäžã§èšè¿°ãããŠããã¬ã€ã€ãªã³ã°ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ããã«ãªããŸãã
- ãã¬ãŒã³ããŒã·ã§ã³å±€ïŒèŠãç®ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«é¢é£ããã¬ã€ã€
- ã¢ããªã±ãŒã·ã§ã³å±€ïŒããžãã¹ããžãã¯ãé€ããã¢ããªã±ãŒã·ã§ã³ãšããŠã®ã³ãŒãã£ããŒã·ã§ã³ãè¡ãã¬ã€ã€
- ãã¡ã€ã³å±€: ãã¡ã€ã³ã«é¢ããç¥èãæ åœããã¬ã€ã€ãäžäœã¬ã€ã€ããäŸåãããã
- ã€ã³ãã©å±€ : DBæäœããã®ä»æè¡çãªè§£æ±ºãè¡ãã¬ã€ã€ãåã¬ã€ã€ããäŸåãããã
åºæ¬çã«ãäžããäžæ¹åãžã®äŸåã¯èš±å¯ããããã®éã¯èš±å¯ãããŸããã
åã¢ãžã¥ãŒã«ãããã±ãŒãžãã©ã®éå±€ã«å±ããŠããããæ±ºããçŠæ¢ãããŠããäŸåé¢ä¿ãæããªãããã«éçè§£æãã¹ããªã©ã§æ€ç¥ããããã«ããŸãã
éçºéå§æç¹ããã¬ã€ã€ãªã³ã°ãæèãããŠããã®ã§ããã°ãåé¡ã¯ãªãã®ã§ãããããšãã远å ããå Žåã«ã¯éçè§£æãšåæ§ã«ãã©ãã¯ãªã¹ãã管çãããªã©ã®æ®µéçãªé©å¿ãããŸãããã
äŸåé¢ä¿ã®è§£æã«ããææšãšããŠã¯ã
ãå®å®äŸåã®æ³åããæºããããã®ã¡ããªã¯ã¹ãšããŠããInstability(äžå®å®æ§)ãããããŸãã
Instability (I = Ce / (Ca + Ce))
ãã®ãããªææšã䜿ããªããããæªãäŸåããèŠã€ãåºããç¶ç¶çã«ç£èŠããããã«ããã°
é害ã®åœ±é¿ç¯å²ã屿åããããäºæ³ã ã«ããªããã°ã®çºçãé²ãããšãã§ããŸãã
PubSubã§äŸåæ§ãåé¢ããã
PubSubãã¿ãŒã³ãšã¯ã
åºç-賌èªåã¢ãã«ïŒãã ã£ã±ã-ããã©ãããã¢ãã«ãè±: Publish/subscribeïŒã¯ãéåæã¡ãã»ãŒãžã³ã°ãã©ãã€ã ã®äžçš®ã§ãããã¡ãã»ãŒãžã®éä¿¡è ïŒåºçåŽïŒãç¹å®ã®åä¿¡è ïŒè³ŒèªåŽïŒãæ³å®ããã«ã¡ãã»ãŒãžãéãããããã°ã©ã ããããã®ã§ãããåºçãããã¡ãã»ãŒãžã«ã¯ã¯ã©ã¹åãããã賌èªè ã«é¢ããç¥èãæããªãã賌èªåŽã¯èå³ã®ããã¯ã©ã¹ãæå®ããŠããããã®ã¯ã©ã¹ã«å±ããã¡ãã»ãŒãžã ããåãåããåºçè ã«ã€ããŠã®ç¥èãæããªããåºçåŽãšè³ŒèªåŽã®çµå床ãäœããããã¹ã±ãŒã©ããªãã£ããããåçãªãããã¯ãŒã¯æ§æã«å¯Ÿå¿å¯èœã§ããã
http://ja.wikipedia.org/wiki/%E5%87%BA%E7%89%88-%E8%B3%BC%E8%AA%AD%E5%9E%8B%E3%83%A2%E3%83%87%E3%83%AB
ãšãããããªãã¢ãŒããã¯ãã£ãã¿ãŒã³ã®ïŒçš®ã§ãã
ããçšåºŠã¢ããªã±ãŒã·ã§ã³ãæé·ããåãã¡ã€ã³éã§çžäºäœçšãæããªããŠã¯ãªããªãå Žåã«æå¹ã§ãã
ããšãã°ãQiitaãäŸã«ãšããšèšäºã®æçš¿ã«éããŠã
- æçš¿å 容ã®ãµããªãŒãã¿ã€ã ã©ã€ã³çšã®DBã«æžã蟌ã
- æçš¿ã®ã¬ã³ã¡ã³ãã·ã¹ãã ã«ææ°æçš¿ãæãã
- æ€çŽ¢ãšã³ãžã³ã«æçš¿å 容ãã€ã³ãã¯ã·ã³ã°ãã
ãšãã£ãè€æ°ã®é¢å¿é åã«ãŸãããåŠçãèµ°ããšããŸããïŒåæãªæ³å®ã§ããïŒ
ãããåäžã®ã¡ãœããã®äžãªã©æžã蟌ããšåãã¡ã€ã³ã¯æ·±ãçµåããèŠéããããããªããŸãã
ãããã£ãã±ãŒã¹ã®ãšãã«ã
èšäºãæçš¿ãããšããã€ãã³ããå®çŸ©ãããããã¬ã³ã¡ã³ãã·ã¹ãã ããæ€çŽ¢ãšã³ãžã³ãªã©ã®ã·ã¹ãã ã§ç£èŠãããŸãã
ã€ãã³ãã®çºç«ãåããŠãåã·ã¹ãã ãèªåãã¡ã«å¿
èŠãªåŠçãè¡ãããã«èšèšãããšã
èšäºãæçš¿ããããã®ã¢ãžã¥ãŒã«ã®è¿œãã¹ã責åã¯ããã€ãã³ããçºç«ããããšããšããŠåçŽåãããåã·ã¹ãã ãšã®äŸåãççµåã«ããããšãã§ããŸãã
å®éã«Qiitaã¯å€éšãµãŒãã¹åãã®APIãšããŠWebhookãæäŸããŠããŸãã®ã§ãQiitaæ¬äœãšã¯å®å
šã«çãªåœ¢ã§ã
ç¹å®ã¡ã³ããŒã®æçš¿ã®éç¥botãªã©ãäœæããããšãã§ããŸãã
ãµãŒãã¹ãããã±ãŒãžã®åé¢ãè¡ãã
ãªããžããªåå²å¶çŽ
äŸåé¢ä¿ã®ã¬ã€ã€ãªã³ã°ã«åŒ·å¶æ§ãã€ãããã®ã§ããã°ããªããžããªã®åå²ã¯æå¹ãªææ®µã§ãã
ããšãã°ããã€ã³ãã©å±€ããããã¢ããªã±ãŒã·ã§ã³å±€ããžã®äŸåã远å ããããªãã®ã§ããã°ããã€ã³ãã©å±€ããå¥ã®ãªããžããªã§ç®¡çãããã¢ããªã±ãŒã·ã§ã³å±€ãããã¯gitã®submoduleæ©èœãããã±ãŒãžãããŒãžã£çµç±ã§å©çšããããã«ããã°ãäŸåé¢ä¿ããªãããšã瀺ãããšãã§ããŸãã
ãã®éããã€ã³ãã©å±€ãã®ã¢ãžã¥ãŒã«ã®çµåãã¹ããå°ãªããšããã«ããã§ãããã©ããã®ãã¹ãããªããšãå®å šã«ã¯äŸåé¢ä¿ãåã£ãŠããããšãä¿èšŒã§ããªãç¹ã«æ³šæãå¿ èŠã§ãã
ãŸããç¹å®ã®äŸåé¢ä¿ãçŠæ¢ããããããšãã°ãå®è£ ç¶æ¿ãã«ããäŸåãªã©ãçŠæ¢ãããå Žåã¯ãªããžããªåå²ã ãã§ã¯ã ãã§ãéçè§£æãªã©ã«ãããã€ã³ãã©å±€ããããã¢ããªã±ãŒã·ã§ã³å±€ãããã¡ã€ã³å±€ãããã¬ãŒã³ããŒã·ã§ã³å±€ããžã®å®è£ ç¶æ¿æ€ç¥ããå¿ èŠããããŸãã
ã·ã¹ãã åé¢å¶çŽ
ã·ã¹ãã åé¢å¶çŽã¯ãããŒã¿ããŒã¹ããã³ã¢ããªã±ãŒã·ã§ã³ãµãŒããåé¢ããçžäºã®ããåããRPCãã¡ãã»ãŒãžãã¥ãŒãç¹å®ãã¡ã€ã«ã®äº€æãªã©ã«åé¢ããããšã«ãã£ãŠãã¢ãŒããã¯ãã£ãåé¢ããæ¹æ³ã§ãã
ããšãã°ãæ€çŽ¢æ©èœãå®è£
ããéã«ãæ€çŽ¢ãšã³ãžã³ãšè¡šç€ºç»é¢ãåé¢ãããšããªã©ãããããããäŸã§ãã
ä»ã«ããµãŒãã¹éã®åé¢ã®ããã«èªèšŒæ©èœã®ã¿ã®APIãµãŒããŒãšèªèšŒåŸã®æ©èœãåé¢ãããªã©ãããäŸã§ãããã
ãã®å¶çŽã¯ãµãŒãã¹éã®é£æºãæ¬åœã«ç²çµåã§ãããšãã«æå¹ã§ãã
飿ºãå¯çµåãªå Žåãå
éšçãªAPIãªã¯ãšã¹ãã®æ°ãççºããããé害ç¹ãå¢ããããšã¬ã¹ãã³ã¹ã®æªåãæããããé害æ€ç¥ãè€éåããã¡ã§ãã
ãµãŒãã¹éã®çµåæ§ã®èŠéããç«ã£ãŠããè¡ãã®ãããã§ãããã
ããšãã°ãå€ãããµãŒãã¹ã ãèŠãŠèããã«ã
ã¯ãŠãªããã¯ããŒã¯ãšã¯ãŠãªããã°çšåºŠã®çµåã§ããã°åé¢ããã»ãã¡ãªããã倧ããã§ãããã
ã¯ãŠãªã¹ã¿ãŒãšã¯ãŠãªããã¯ããŒã¯ã®å Žåãæ©ãŸãããšãããããã¯ããŒã¯äžèЧã§ãã¹ãŠã®ããã¯ããŒã¯ã«å¯ŸããŠãã¹ã¿ãŒæ°ãååŸããªããã°ãœãŒãã£ã³ã°ãå®è£
ããããšãããããããäžå®æéã®ãã£ãã·ã¥ãïŒé管çã®DB管çãããŠããã©ãŒãã³ã¹ãå®çŸãããªã©ããã¬ãŒããªãã倿ããå¿
èŠãããããã§ãã
APIã§åé¢ããå Žåããããå©çšããã¯ã©ã€ã¢ã³ãã³ãŒããéœåºŠéçºããã®ãé¢åã«ãªããã¡ã§ããã§ããã°ãµãŒãã¹ãã£ã¹ã«ããªãã€ã³ã¿ãã§ãŒã¹ã®å ±æã«ããã©ã€ãã©ãªã³ãŒãçæãªã©ã®ãµããŒãããããšãªãããã§ãã
ãŸããã©ã®ã¢ããªã±ãŒã·ã§ã³ãã©ã®ãµãŒãã¹ãå©çšããŠããã®ããæ€ç¥ã管çããä»çµã¿ãå¿ èŠãªå ŽåããããŸããããAPIã®å€æŽãã©ã®ãããªã¯ã©ã€ã¢ã³ãããå©çšãããŠããããèŠã€ãã¥ãããªããããã¯ã©ã€ã¢ã³ãæ å ±ãç»é²ç®¡çããããAPIããŒãžã§ãã³ã°ã®ã«ãŒã«ãšä»çµã¿ã決ãããšè¡ã£ãããšãå¿ èŠã«ãªã£ãŠããŸãã
宿çãªã€ã³ã¹ãã¯ã·ã§ã³ãè¡ãã¬ã€ãã©ã€ã³ãèŠçŽãã
äžå£ã«ãœãŒã¹ã³ãŒãå質ãšèšã£ãŠãæ§ã ãªèгç¹ããããŸãã
- çè§£å¯èœæ§(Understandability)
- å®å šæ§(Completeness)
- ç°¡æœæ§(Conciseness)
- ç§»æ€æ§(Portability)
- äžè²«æ§(Consistency)
- ä¿å®æ§(Maintainability)
- è©Šéšæ§(Testability)
- ãŠãŒã¶ããªãã£(Usability)
- ä¿¡é Œæ§(Robustness)
- ã¹ã±ãŒã©ããªãã£(Scalability)
- æ§é åã®åºŠåã(Structuredness)
- å¹çæ§(Efficiency)
- ã»ãã¥ãªãã£(Security)
ãã®ãœãããŠã§ã¢ã®ã¹ããŒãžããçµæžç¶æ³ãªã©ã«å¿ããŠãäœã«ã€ããŠããã©ã®çšåºŠã察çãè¡ãã®ããšããæéã
ã¢ãŒããã¯ãã£èšèšã®éèŠãªæéã«ãªããŸãã
ãããã®æéã¯ãåžžã«é³è åããå¯èœæ§ããããŸããããžãã¹èŠä»¶ãã·ã¹ãã å šäœã«å¯Ÿãã宿çãªã€ã³ã¹ãã¯ã·ã§ã³ãè¡ããæéãæ±ºããŠããã®ãã¢ãŒããã¯ãã®ä»äºãšãªããŸãã
å°ä»»ã®ã¢ãŒããã¯ããããªãå Žåã¯ãå°æ°ã®ããŒã ã«ãã£ãŠè¡ããæçµæææ±ºå®è
ã眮ãã¹ãã§ãããã
ããŸãå€ããªã£ãŠããŸã£ãŠããè¹é å€ãããŠè¹å±±ã«äžãããšèšã£ãããšã«ãªããããŸããã
ãã ããã¬ã€ãã©ã€ã³ä¿®æ£æã«ã¯ãããéµå®ãããšããã³ã³ã»ã³ãµã¹ã¯å¿ ããšã£ãŠãããŸãããã
ã§ãããšããããã¯ãããã
å€ãã®Webã¢ããªã±ãŒã·ã§ã³ã¯ãåœåã®æ³å®ãšã¯ç°ãªãæ¹åã«é²åããªããããã®æè»æ§ãæ¬ ããŠãããŸãããã®çµæãã¢ããªã±ãŒã·ã§ã³éçºã¯ã ãã ããšé ããªããŸããå°æ°ã®ããŒã ã§å§ãŸã£ããã®ã§ãã£ãŠããã ãã ããšäººæ°ãå¢ãããã¹ãŠãææ¡ããŠãããšã³ãžãã¢ã¯éè·ããããå¥ã®ããšãã¯ãããããã«ããåºãããããšããŸãŸãããŸãã
ãŸãã99.9%以äžã®ã¢ãã€ã©ããªãã£ãèŠæ±ããããããå€§èŠæš¡ãªã¡ã³ããã³ã¹ãé£ãããªããŸãã
ãŠãŒã¶ãŒæ°ã®ã¹ã±ãŒã©ããªãã£ãšéçºè
æ°ãæ©èœæ°ã«å¯Ÿããã¹ã±ãŒã©ããªãã£ãåæã«å¯Ÿå¿ããªããã°ãªããŸããã
ãã®ããã«ã¯ãã®ã¿ã€ãã³ã°ããšã«é©åãªã¢ãŒããã¯ãã£èšèšã«å€åãé²åããŠãããªããã°ãªããŸããã
åæèšèšãšç°ãªãã皌åäžã®ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããã¢ãŒããã¯ãã£å€æŽã¯äžççžã§ã¯è¡ããŸããããã®ãããçæ³ãšçŸå®ã®ã®ã£ãããåžžã«ååšããŠããããã®äžæ©ãèžã¿èŸŒããªããªãããšãããã§ãããã
皌åäžã®Webã¢ããªã±ãŒã·ã§ã³ã«ãããŠãçªç¶ã¬ã€ãã©ã€ã³äžã®å¶çŽãå¢ããããšã¯ãšãŠãé£ããã§ãããšãã«ãããæé»çã«å®ãããŠããç¶æ³ã®å Žåãåäžå «ä¹å®ãããŠããªãç®æãååšããŸãã
åé¡ã¯ããå®ããªãããã°ã©ãããããããšã§ã¯ãªãããå®ããã«ã³ãããã§ããããšããå®ã£ãŠããªãç®æãæ€ç¥ã§ããªãããšããå®ã£ãŠããªãç®æãã³ã³ãããŒã«ã§ããŠããªãããšãã«ãããŸãã
皌åäžã®ãã¹ãŠãä¿®æ£ããã®ã§ã¯ãªããã³ã³ãããŒã«äžã«çœ®ãããã«æ®µéçãªå¶çŽãå®çŸ©ããé æ¬¡é©å¿ããŠããããšã§ãæèããããšãã§ããåŸã ã«ä¿®æ£ãããŠããç¶æ³ãäœãããšãã§ããŸãã