ããã«ã¡ã¯ãHabrïŒ ãã®èšäºã§ã¯ãMail.Ru Groupã§ã®ã³ãŒãäœæã®ã¢ãããŒãã«ã€ããŠèª¬æããŸãã æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããå Žåãããã³èªåã§æžãæ¹ãè¯ãå Žåã ãŸãããããŠæãéèŠãªããš-ããªãã®ä»äºãå¹æçã§ãªããä»ã®äººã«å©çããããããªãããã«ããããã«ãã©ã®ãããªæªçœ®ãè¬ããå¿
èŠããããã ãããã®ãã¥ã¢ã³ã¹ã¯ãã¹ãŠãå
éšJSSDKãäœæããã¿ã¹ã¯ã®äŸã§èæ
®ãããŸããããã¯ã2ã€ã®ãããžã§ã¯ãã®ã³ãŒãããŒã¹ãçµã¿åãããå¿
èŠãããããã«çºçããŸããã
ãã€ã±ã«ã»ããŒã¯ã¹ã«ããã€ã©ã¹ãã¬ãŒã·ã§ã³
èªè»¢è»ãåçºæããã®ã¯è¯ããªããšèããŠããŸãããèªè»¢è»ãšå®æåã®å¢çç·ã¯ã©ãã«ããã®ã§ããããïŒ
Backbone ã
EmberããŸãã¯
Angular ã¯ã©ã®æ®µéã§
ããã§ã¯ãªããªããŸãããïŒ ããã¯ãã£ãã«èªãããŸããã éå»4幎éãç§ã¯ããŸããŸãªçš®é¡ã®ãèªè»¢è»ããç¶ç¶çã«éçºããŠããŸãã-ç§ã奜ãã ããã§ã¯ãªãïŒãããç§ã¯æ¬åœã«å¥œãã§ãïŒãäžéšã®ãœãªã¥ãŒã·ã§ã³ã¯æ代é
ãã§ãããä»ã¯ç¹å®ã®æè¡ã«çµã³ä»ããããŠããŸãïŒããšãã°åã
jQuery㧠ïŒããã¯å¿
èŠãããŸããããããåãé¢ãããšã¯ãæåããæžãããšã«çžåœããŸãã ããããäž»ãªåé¡ã¯çãå°éæ§ãšæ¡å€§ã®æ©äŒã®æ¬ åŠã§ãã åãgithubã«ã¯å€ãã®æ±ºå®ããããŸããã誰ããæªæ¥ãæã£ãŠããããã§ã¯ãããŸããã ãããã£ãŠãããªããèããŠããããã«ãçŽ æŽãããããšãæžããŠãã¿ã¹ã¯ãç·æ¥ã«å®äºããããšã決å®ããå Žåãæéãç¡é§ã«ãããããªãã®åŸã«ããããµããŒãããªããã°ãªããªãä»ã®äººã«åæ
ããŸãã 99ïŒ
ã®ç¢ºçã§ããã¹ãŠãæžãæããŸãã ããã§ããã€èªåã®èªè»¢è»ãçºæããããšãå¯èœã§ãããå¿
èŠãªã®ã§ããããïŒ
ã¿ã¹ã¯ããå§ããŠããããè©äŸ¡ããŸãïŒ- å¯èœæ§ïŒã¹ã³ãŒããšéçºã®èŠéãã¯ãããŸãããããããææ¥ã¯å¿
èŠãªããªãã§ãããïŒ;
- æ±åïŒä»ã®ã¿ã¹ã¯ããããžã§ã¯ããžã®é©çšã®å¯èœæ§ïŒ;
- çå€ïŒå
éšã€ã³ãã©ããã®ç¬ç«ïŒã
ãããã®åçŽãªãã€ã³ãã¯ããã¬ãŒã ã¯ãŒã¯ãŸãã¯jQueryãã©ã°ã€ã³ã®éçºãåãããã»ãŒãã¹ãŠã®ã¿ã¹ã¯ã«é©çšã§ããŸãã
ç§ãã¡ã®è©±ã¯3幎åã«å§ãŸããŸãããã¿ã¹ã¯ã¯ãã¿ããããã€ã¹çšã®ã¡ãŒã«ãéçºãããããšã§ããããã®ããã«ã¯ããã¹ãŠãè¡ãå¿
èŠãããæè¡ãéžæããå¿
èŠããããŸããã 次ã®3ã€ã®ãªãã·ã§ã³ããããŸããã
- ããã°ã¡ãŒã«ã®çµéšã掻çšããŸãã
- 人æ°ã®ãããã¬ãŒã ã¯ãŒã¯ã䜿çšããŸãã
- èªåã§æžããŠãã ããã
ããã°ã¡ãŒã«ã®ã³ãŒãã䜿çšããããšã¯ã§ããŸããã§ãã-17幎ã®æŽå²ãèªåãæããããŸãã ãããã£ãŠãèªåã§æžãããæ¢è£œã®ããŒã«ãæ¢ããã®ããããã§ããã ãã®ãããªã¿ã¹ã¯ã®ãã¬ãŒã ã¯ãŒã¯ãéçºããããšã¯ãç§ãã¡ã®çµéšãèæ
®ããŠãéåžžã«å°é£ã§ããããã«ã¯å®éã«ã¯æœåšçãªå¯èœæ§ã¯ãããŸãããããã¯ææŒãè»ã«å³å¯ã«é¢é£ä»ããããé«åºŠã«å°éåããããœãªã¥ãŒã·ã§ã³ã«ãªãå¯èœæ§ãéåžžã«é«ãã§ãã å¿
èŠãªãã®ã倧ãŸãã«æ³åããŠãã¿ã¹ã¯ïŒããã³æãéèŠãªããšã«ã¯ããŒã ïŒã«é©åãªãœãªã¥ãŒã·ã§ã³ãéžæããŸããã
- Grunt-ãããžã§ã¯ãããã«ãããŸãã
- RequireJS-ã¢ãžã¥ãŒã«ã®ç·šæã
- ããã¯ããŒã³-ã¢ãã«ããã¥ãŒãã«ãŒãã£ã³ã°ã
- Festã¯ãã³ãã¬ãŒããšã³ãžã³ã§ãã
ãããã®ã·ã³ãã«ãªããŒã«ã«ããããããžã§ã¯ããè¿
éã«éçºãããã®å®è£
ãéå§ã§ããŸããã ã¿ããã¡ãŒã«ã倧ããªæ©èœã«è¿œãä»ããŸã§ããã¹ãŠãããŸããããŸããã ãã®ãããå€ãã®è£œåæ©èœã¯2åäœæãããŸãããæåã¯ã¡ãŒã«ã§ã次ã«touch.mail.ruã§ããããå®è£
ã®éãã¯æå°éã§ãããæ§æã«é©ããŠããŸããã ãã®ç¶æ³ã¯ãæ°ããããã¯ãšã³ãAPIã®å°å
¥ã«ãã£ãŠæªåããŸãããããã¯ãçããããã«ããŠååŸãããã ãã§ã¯äžååã§ããã

ããããã¹ãŠæ€èšããçµæãããäºåºŠãšéçºãäºéã®ãã°ãäºéã®ãã¹ãããã°ã«é¥ãããšã¯ã§ããªããšå€æããŸãããããã«ãã¡ãŒã«æ©èœã®äžéšãçµ±åãããå
éšãããžã§ã¯ãããããŸãã
ãã¹ãŠãå
±éã®ã³ãŒãããŒã¹ã®å¿
èŠæ§ã«ã€ããŠèšåããŸãããããã¯å¥ã®ãªããžããªã«ããããã®äžã«å
±éã®ã³ã³ããŒãã³ããå®è£
ãããŸãã
ãããžã§ã¯ãã«é¢ããç¥èãèŠçŽããŠãåºæ¬çãªããã±ãŒãžã»ããã決å®ããŸããã
- ãšããã¿-ã€ãã³ãã®ãšããã¿ã
- çŽæ-çŽæ;
- ãªã¯ãšã¹ã-HTTPãªã¯ãšã¹ãããµãŒããŒã«éä¿¡ããŸãã
- RPC-ãµãŒããŒAPIãæäœããããžãã¯ãæ
åœããŸãã
- ã¢ãã«-ã¢ãã«ã¯ã©ã¹ã
- RPCModel-RPCãä»ããŠäœæ¥ããããã®é«åºŠãªã¢ãã«ã
- Model.List-ã¢ãã«ã®ãªã¹ãïŒã³ã¬ã¯ã·ã§ã³ïŒãæäœããããã®ã¯ã©ã¹ã
ãããŠãããã¯äžå°äŒæ¥ã§ãããããã®ã³ã³ããŒãã³ããæ§ç¯ãããã®ã«ã€ããŠïŒ
- æ¢è£œã®ã©ã€ãã©ãª/ãã¬ãŒã ã¯ãŒã¯ãéžæããŸãã
- èªåã§æžããŠãã ããã
åæ§ã®è³ªåã«çããããã«ãç§ã¯èªåã§æ¬¡ã®æé ãçå®ããŸããã
- æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã®ãªã¹ããã³ã³ãã€ã«ããïŒå®å
šã«é©åã§ãªãå Žåã§ãïŒã
- ãªã¹ãã調ã¹ãŸãïŒçŽ1é±éåŸãã³ãŒãããµããŒããgithubã®ã¿ã¹ã¯ïŒããå ŽåïŒãªã©ã調ã¹ãŸãïŒã
- ãœãªã¥ãŒã·ã§ã³ãã¿ã¹ã¯ã«é©åããªãå Žåãã¿ã¹ã¯ãå€æŽããããšããŸãïŒãããŒãžã£ãŒ/ãã¶ã€ããŒã«ç§»åãããããã¯äžå¯èœã§ãããã¹ãŠã®æãè
ãã§ã¯ãªãã代æ¿æ段ãæäŸããŸãïŒã
- ããªãã«ãµãããããªããã®ãããã°ãæºåã¯ã§ããŠããŸãã...ïŒåŸã§è©³ãã説æããŸãïŒã
æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ãã
ãŸãæåã«ããœãªã¥ãŒã·ã§ã³ã®èŠä»¶ãå®çŸ©ããããšããå§ããŸãã ããã¯ãç¹å®ã®ã¿ã¹ã¯ã«å¿
èŠãªæ©èœã®ãªã¹ãïŒãã®åã«æ¢ã«æŽçæžã¿ïŒãšæ¡åŒµæ§ãå¿
èŠã§ãã éå°ãªãšã³ãžãã¢ãªã³ã°ã«é¢äžããªãã§ãã ãããããã¯è¯ãããšã«ã¯ã€ãªãããŸããããæ··ä¹±ãããŠã¿ãŒã²ããããé ãããã ãã§ãã

ãã®ãããæåã«ãã¹ãããšã¯ãã¢ãã«ã®äœææ¹æ³ã«åºã¥ããŠãã¢ãã«ã®åŠçæ¹æ³ã決å®ããããšã§ããã ãã ãããœãªã¥ãŒã·ã§ã³ã«ã¯æ¬¡ã®æ©èœãå¿
èŠã§ããããšãèæ
®ããå¿
èŠããããŸãã
- ãããè¡šèš-ãããè¡šèšã«ããã¢ãã«ããããã£ãžã®ã¢ã¯ã»ã¹ãããšãã°ãmodel.getïŒ 'foo.bar.baz'ïŒ;
- ã²ãã¿ãŒ-`get`ãmodel.fooãªãã®ããããã£ãžã®ã¢ã¯ã»ã¹// {barïŒ{bazïŒtrue}};
- ãã£ãã·ã³ã°-localStorageãŸãã¯IndexedDBããããŒã¿ãå埩ããæ©èœã
- ã¢ãã«ã®ä¿æ-ã¢ãã«ã®æŽåæ§ã
åè¿°ããããã«ãBackboneã§æ§ç¯ãããå€ãã®ãããžã§ã¯ããšåæ§ã«ãã¿ããã¡ãŒã«ã¯ãEmitterãModelãCollectionãRouterãããã³ViewãæäŸããåªããåºç€ã§ãã ããã§ãã¹ãŠã®ããŒãºãã«ããŒã§ããŸãã
ãã¹ãŠãããã¯ããŒã³ã®ãªã倧ããªã¡ãŒã«ã«ã®ã¿ããã£ãŠããŸããããåæ§ã®ã€ã³ã¿ãŒãã§ãŒã¹ïŒget / setïŒãæã£ãŠããã¢ãã«ã«ãããŸããã
| ããã¯ããŒã³ | éµäŸ¿ |
---|
äŸåé¢ä¿ | jQueryãUndescore | jQuery |
ãããè¡šèš | - | + |
ã²ãã¿ãŒ | - | + |
ãã£ãã·ã³ã° | - | - |
ã¢ãã«ãä¿æ | - | + |
ã芧ã®ãšãããããã°ã¡ãŒã«ã®åºæ¬æ©èœã¯Backboneã«ã¯ãªãããšãããããŸããã ãããïŒ ããã¯ããŒã³ã¯å®è©ã®ãã確ç«ãããããŒã«ã§ããã巚倧ãªã³ãã¥ããã£ãšç©æ¥µçãªãµããŒãããããŸãããã®ãããæ¬ èœããŠããæ©èœã®ã»ãšãã©ã¯ãé·ãéæžãããã¹ããããæ¡åŒµæ©èœã§ã«ããŒã§ããŸãã
ãããã£ãŠããããè¡šèšã¯æ¬¡ã䜿çšããŠååŸã§ããŸãã
ã²ãã¿ãŒãå®è£
ããããã«ã
httpsïŒ//github.com/asciidisco/Backbone.Mutatorsããã
ãŸã ïŒãã ãgetã®ã¿ïŒã
ãªã©ãªã©ã æ®å¿µãªãããç§ãã©ã®ããã«æ€çŽ¢ããŠãããã®ãããªæ©äŒãããã°ã¡ãŒã«ã®åºç€ã§ãã£ããšããç§ã¯ç®±ããåºããŠãã¢ãã«ã®æŽåæ§ãããµããŒãããæ¡åŒµæ©èœãèŠã€ããããšãã§ããŸããã§ããã
ã¢ãã«ã®å®å
šæ§ãšã¯äœã§ããïŒ
æçŽãåãåãäŸãèããŠã¿ãŸãããã
function findOne(id) { var dfd = $.Deferred(); var model = new Backbone.Model({id: id}); model.fetch({ success: dfd.resolve, error: dfd.error }); return dfd.promise(); }
äžèŠãããšãããšãã°findOneã¡ãœãããå€æŽããŠãããã¹ãèšæ¶ãããããè¿ãããšã§åé¡ãä¿®æ£ã§ããŸãã
var _promises = {};
ããããIDã§ã¢ãã«ãæ€çŽ¢ããããšã«å ããŠãã¢ãã«ïŒã³ã¬ã¯ã·ã§ã³ïŒã®ãªã¹ãããããŸãã ãŸããã³ã¬ã¯ã·ã§ã³ãååŸããå Žæã¯ã©ãã§ããåãã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹ãžã®åç
§ã§æ§æããã¢ããªã±ãŒã·ã§ã³ã®ä»»æã®æç¹ã§æŽåæ§ãç¶æããå¿
èŠããããŸãã
ãã¡ãããããã¯ããã¯ããŒã³ã®äžã«å·»ãä»ããããšãã§ããŸãããåé¡ã¯ããã ãã§ã¯ãããŸããã ããšãã°ãã³ã¬ã¯ã·ã§ã³ã¡ãœãããå®è¡ããåŸãåºåã§é
åãååŸããŸãã
ãããã£ãŠãBackboneã§å¿
èŠãªããšãè¡ãã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã
- ãããè¡šèš -ãã¹ã/ãã£ãŒãã¢ãã«ãæ¥ç¶ããããèªåã§æžããŸãã
- achaching-ãããããããã®ãèŠã€ãããŸããã§ããã
- ã¢ãã«ãæ°žç¶å -èªåã§èšè¿°ããŸãã
- ãŸãããã®ã³ã°ãmokiããã®ä»ã®ããããªããš
å¿
èŠãªæ©èœãå®è£
ããæ¡åŒµæ©èœãèŠã€ãããšããŠãããã®ãããžãããã§äœããæ§ç¯ãããªã¹ã¯ã¯ãããŸãã-ãããã®æ¡åŒµæ©èœã®éã§ãã°ã競åãçºçããå¯èœæ§ãéåžžã«é«ããé倧ãªããã©ãŒãã³ã¹é害ãçºçããŸãã ãã®ãããªæ©èœã¯ããã¬ãŒã ã¯ãŒã¯èªäœã®ã³ã¢ã«çµ±åããå¿
èŠããããŸãã
ãã®ã³ã°ã«ã€ããŠå°ãéåžžã«é·ãéãéçºè
ãæåããæåŸãŸã§ã¢ã¯ã·ã§ã³ã远跡ããã®ã«åœ¹ç«ã€é«å質ã®ãã°ãååŸããããšèããŠããŸããã ãã°ã®ãšã³ããªã«æ¥ç¶ã ãã§ãªããé
åã ãã§ãªããæãéèŠãªããšã«ã¯ãäž»èŠãªæ©èœã®ããã«ããã®ã³ã°ã¯ããã®ãŸãŸãåäœããã¯ãã§ã
ãã¬ãŒã¯æ¬¡ã®ããã«ãªããŸããäŸãèããŠã¿ãŸãããã
ãããŠãã°åºåïŒ

ã芧ã®ããã«ããã°ã¯å
¥ãåã«ãªã£ãŠããããšãããããŸãããããã«ãåãšã³ããªã¯ã³ãŒãè¡ã«çµã³ä»ããããŠãããããç¹å¥ãªã³ãŒããéããŠã³ãŒãã®ã³ã³ããã¹ãã§ãã°ãçŽæ¥ç£èŠã§ããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ïŒã³ãŒããçž®å°ãããŠããå Žåã§ãïŒïŒ
rubaxa.imtqy.com/Error.stack
ããŠãç§ãã¡ã¯èªåã§ã¢ãã«ãæžããŸãã å°ãªããšãæ®ãã®ã³ã³ããŒãã³ãã®è§£æ±ºçãèŠã€ããŠã¿ãŸãããã ïŒããšãã°ã
Parse.comã®ããã« Backboneããã©ãŒã¯ããããšãã§ããŸãããç§ããããèšç»ããŸããããå€æŽã®ç¯å²ã¯ã¢ãã«èªäœã®ããªã¥ãŒã ã«å¹æµããŸããïŒ
Emterter
githubã«ã¢ã¯ã»ã¹ããŠã
Event Emitter ããå°ãããšã次ã®ã©ã€ãã©ãªãèŠã€ãããŸãã
| ãªã³/ãªã/æŸåº | ãã¹ã | handleEvent | ã€ãã³ããªããžã§ã¯ã |
---|
EventEmitter2 | + | + | - | - |
EventEmitter | + | + | - | - |
ãã€ã¯ãã€ãã³ã | + | - | - | - |
jQuery | + | + | - | + |
ã芧ã®ããã«ããããã¯ãããã
handleEventãã€ãã³ããªããžã§ã¯ããªã©ããµããŒãããŠããŸããããŸããé床ãããŸãçç£çã§ã¯ãããŸããã ãã ããäžè¬çã«ã¯é©åã§ãããã¿ãŒã³ããŒãœãªã¥ãŒã·ã§ã³ãšããŠäœ¿çšã§ããŸãã
çŽæ
Qããã€ãã®ä»ãçŽæã§ããã ãã§ãªããç°ãªãæ©èœã®éŠ¬è»ãšå°è»ã§ããããçŽæã ããå¿
èŠãªå Žåã ãããã£ãŠãNative + polyfilã¯ã1ã€ã®å€§ããªãã®ã§ã¯ãªãå Žåã«çæ³çã§ãããã ããnative promiseã¯jQueryãšäºææ§ããããŸããïŒãã¹ãŠ
ãã®ã³ãŒãã®ããïŒã
ãªã¯ãšã¹ã
ãã¹ãŠã1ã€ã«äŒŒãŠããããŸã£ãããªããœãªã¥ãŒã·ã§ã³ã®ç¡éã®æµ·ã次ã«ç€ºããŸãã
- ã€ãã³ãïŒéå§ãçµäºããšã©ãŒãWiFièªèšŒã®åªå€±ãªã©ïŒ;
- ã¿ã€ãã³ã°ïŒéå§æå»ãšçµäºæå»ãèŠæ±æéïŒ;
- ãšã©ãŒåŠçãšçµæã®å€æŽã®å¯èœæ§ã
- ãšã©ãŒã®å Žåãªã©ã«ãèŠæ±ãåè©Šè¡ããŸãã
æãè¿ãé©åãªãªãã·ã§ã³ã¯jQuery.ajaxã®ã¿ã§ãã
ãã®ãããããŸããŸãªçç±ã§èŠã€ãã£ãåãœãªã¥ãŒã·ã§ã³ã¯ãèŠä»¶ã«é©åããŸããã äŸïŒ
- ãšããã¿-handleEventããã³/ãŸãã¯ã€ãã³ããªããžã§ã¯ãããµããŒãããŸããã
- çŽæ-jQueryãšäºææ§ããããŸããã
- ãªã¯ãšã¹ãã¯jQueryã«æãè¿ããã®ã§ãã
ãã¡ããããœãªã¥ãŒã·ã§ã³ã®1ã€ãæ¡çšããæ©äŒãæžãããŠjQueryã«é¢äžããããšãã§ããŸããã ãããããããã®ã¢ãžã¥ãŒã«ã¯ããã»ã©å€§ãããªããjQueryã®ååšã¯æåŸ
ã§ããŸããã§ããã
ãããŠãã®ç¬éããã€ã³ã4ã«æ»ããŸãïŒããªãã«åã£ããã®ããªããã°ãæºåã¯ã§ããŠããŸãã...
æºåã¯ããã§ãã...- çãåé¡ã解決ããã®ã§ã¯ãªããäžè¬çãªè§£æ±ºçãæžããŸãã
- ãã¹ããšããã¥ã¡ã³ããæžããŸãã
- 7/24ãç¶æããŸãã
- ãã¹ãŠãç¡æã§è¡ããŸãã
æåŸã®ç¹ã¯èª°ãã«ã¯å¥åŠã«æãããããããŸããããæéãããããŸã-ããã¯å®éã«éèŠãªç¹ã§ãã å®éãããªãã®ããŒãã®äžã«ãããã®ãããžãã¹ããããšã¯éèŠã§ã¯ãããŸãã-ããã¯å©çãå¿é
ããŠããŸãïŒç§ã¯çŸåšäžè¬çã«èšã£ãŠããŸãïŒã®ã§ãããªãã䞻匵ããŠå®è£
ã®æéãåŸãããšãã§ãããªãããµããŒãã¯ããªãã®è²»çšã§æäŸãããããã¯æ£çŽã§ã-ããã¯ã§ãããªãã®éžæãããªãã®æ±ºå®ã§ããã å€ãã®äººããã®ç¹ãéå°è©äŸ¡ããŠããããã®ããã«ãGitHubãç¿æ¥ã«ãµããŒããåæ¢ãã決å®ã§è©°ãŸã£ãŠããããã§ãã æãã§ã¯ãªãé±ã«2ã3ã®ã¿ã¹ã¯ïŒãããŠ1æ¥ïŒãæºåããå¿
èŠããããŸãããããŠã圌ããããªãã«æè¬ããæ倧å€ã¯ããã§ã«è¯ãããšã§ãïŒãããŠãããã¯ãã¹ãã§ãããã°ã«ãªãããšã¯å¥ã§ãïŒã
ã ãããããªãã¯ã©ãããå§ãããã決ããŸããïŒ äž»ãªããšã¯ãã³ãŒãã£ã³ã°ããããšã§ã¯ãããŸããïŒ ãããžã§ã¯ãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããå§ããå¿
èŠããããŸãã
ã€ã³ãã©
- ããã声ãŸãã¯å£è«ãæ§ç¯ããŸãã
- ã³ãŒãã¹ã¿ã€ã«ã
- ãã¹ããã«ãã¬ããžå¶åŸ¡ã CI ã
- JSãCSãTSãŸãã¯ES6 / Babelã
- å€æŽç®¡çã®èªååã
- ã³ãŒãã®ããã¥ã¡ã³ããšããã¥ã¡ã³ãã
- é
åžæ¹æ³ïŒgithubãbitbucketãªã©ïŒã
åé
ç®ã¯ç¹å®ã®åé¡ã解決ãããŠãŒã¶ãŒãåŸãã«ãŒã«ã®æŠèŠã瀺ããŠããããšã«æ³šæããŠãã ããã
ç§ãã¡ã®ããã«ãç§ã¯æ¬¡ã®ã¹ã¿ãã¯ãéžæããŸãã ïŒ
- ãããžã§ã¯ãããã«ãããGruntJS ã
- JSHintããã³.editconfig-ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãŸãã¯ã¿ã察ã«é¢ãããã¹ãŠã®è³ªåãšäœåãªããªããŒãåé€ããŸãã ãããããšè°è«ããããšã¯ã§ããŸããã
- QUnit + Istanbul-ãã¹ãã¯è£œåã®åââ質ãåäžãããã ãã§ãªããéçºããã³ãªãã¡ã¯ã¿ãªã³ã°ããã»ã¹ãå éããŸãã ã«ãã¬ããžã¯ããã¹ããAPIã«ããæ©èœãã©ã®çšåºŠã«ããŒããŠãããã確èªããæ©äŒãæäŸããŸãã CIã¯Travis㧠ãçŸåšã¯Bambooã§ãã
- ES5 + Polyphilsã¯æãéèŠãªãã€ã³ãã®1ã€ã§ãã TS ã CSããŸãã¯ES6ã¯åãªããã¯ãããžãŒã§ã¯ãããŸããã ãã®éžæã¯ããœãªã¥ãŒã·ã§ã³ãå¥ã®éçºè
ã䜿çšãããã©ããã®ææ決å®ã«å€§ãã圱é¿ããŸãã
- git pre-commit-hookïŒJSHintïŒ+ git pre-push-hookïŒQUnit + IstanbulïŒ-package.jsonã®preinstallãŸãã¯postinstallã§ããã¯ãã€ã³ã¹ããŒã«ãããªã©ãèªååã§ãããã®ãèªååããŸãã
- JSDoc3-ããã¥ã¡ã³ãããã³ã³ã¡ã³ãã³ãŒããææ°ã®IDEã¯JSSDKã«åŸã£ãŠãªãŒãã³ã³ããªãŒããæ§ç¯ã§ããŸãããæãéèŠãªããšã¯ãã³ã¡ã³ããŸãã¯ãã©ã¡ãŒã¿ãŒã®èª¬æãèªãã åŸãå¥ã®éçºè
ãã³ãŒããšãã®ããžãã¯ã«ãã°ãã䟵å
¥ããããšã§ãã
éçºè
ã¯äœããå§ããŸããïŒ
圌ã¯githubã«è¡ãã以äžãèŠãŸãïŒ

ã芧ã®ãšããããããžã§ã¯ãã䜿çšãŸãã¯éçºããå Žåã«éçºè
ãåŸãå¿
èŠãããæé ã¯ãããã§èª¬æãããŠããŸãã
éçºã«çŽæ¥é²ã¿ãŸãã
JSSDKã§ã¯ãåã¢ãžã¥ãŒã«ã¯4ã€ã®ãã¡ã€ã«ãå«ãåå¥ã®ãã©ã«ããŒã§ãã ããšãã°ãã¢ãã«ïŒ
- Model.js-ã¢ãžã¥ãŒã«ã³ãŒãã
- Model.tests.js-ãã¹ã;
- Model.bench.js-ããã©ãŒãã³ã¹ãã¹ãïŒå¿
èŠãªå ŽåïŒ;
- README.md-ããã¥ã¡ã³ãïŒJSDoc3ã«ããçæïŒã
ãã§ã«æžããããã«ãèªååã§ãããã¹ãŠã®ãã®ãèªååããŸãã ãããã£ãŠãã¢ãžã¥ãŒã«ãäœæããããã«ãåå¥ã®å調ãªã¿ã¹ã¯ããããŸãã
ãããã£ãŠãããšãã°ãRPCModelãç¶æ¿ããmail.Folderã¢ãã«ã®äœæã¯æ¬¡ã®ããã«ãªããŸãã
> grunt model:create:mail/Folder:RPCModel «mail/Folder»..OK «Folder» boot.js .. OK JSSDK/mail/Folder/Folder.js .. OK JSSDK/mail/Folder/Folder.test.js .. OK JSSDK/mail/Folder/Folder.bench.js .. OK JSSDK/mail/Folder/README.md .. OK
éçºäžã«ããã¹ããæåã«èšè¿°ããã次ã«ã³ãŒããèšè¿°ãããŸãã å€æŽãè¡ãããæ°ããã¢ãžã¥ãŒã«ãäœæããåŸã楜ããéšåãå§ãŸããŸã-ã³ããããšããã·ã¥ïŒ

git commit -am"..."
-
grunt jshint
éå§ã
grunt jshint
git push original master
-
grunt test
ã¿ã¹ã¯ã倱æãããšãã³ããããŸãã¯ããã·ã¥ã倱æããŸããããã«ããããã¹ã¿ãŒå
ã®ã³ãŒããåžžã«æ©èœãããããšãã§ããŸãã åäœããªãã³ãŒãã¯ããã¹ã¿ãŒä»¥å€ã®ãã©ã³ãã§ã®ã¿ã³ãããã§ããŸãã ä»ã®ãã©ã³ãã§ã¯ããšã©ãŒã衚瀺ãããã ãã§ãã ãŸããããã·ã¥ã¯åŒ±ããã¹ãã«ãã¬ããžããæãåºããªãå ŽåããããŸãã 100ïŒ
æªæºã®åŒ±ç¹ïŒçŸåš1,635件ã®ã¢ãµãŒã·ã§ã³ïŒããã¹ãŠèæ
®ããŸãã
ãã¹ãã«ãã¬ããž
ãã¹ãã«ãã¬ããžã¯ãã¹ãŠã®ç
æ°ã®äžèœè¬ã§ã¯ãããŸããããã°ããªãããšã100ïŒ
ä¿èšŒãããã®ã§ã¯ãããŸããã ã«ãã¬ããžãæäŸããäž»ãªãã®ã¯ããã¹ãããã¹ãŠã®å¯èœæ§ã«ã©ã®çšåºŠåœ±é¿ããããè©äŸ¡ããæ©èœã§ãããŸããç¹å®ã®ã³ãŒãã®æçµçãªå®è£
ãåèã§ããå ŽåããããŸãã
éçºè
ã¯
grunt dev-server
ãã次ã®å³ãèŠãŸãïŒ

ãããŠãã³ãŒãèªäœãšãã®ã«ãã¬ããžã¯æ¬¡ã®ãšããã§ãã

ããã¥ã¡ã³ã
æåŸã®ä»äžãã¯ãããã¥ã¡ã³ãã®çæã§ãã ãããè¡ãã«ã¯ãå
¬åŒã®JSDoc3ãšãããªãã·ã£ãŒã䜿çšããŸãïŒå®éãnpmã¯ãã®ãããªãœãªã¥ãŒã·ã§ã³ã§ãã£ã±ãã§ãïŒã æçµçãªããã¥ã¡ã³ãã¯2ã€ã®åœ¢åŒã§ååšããŸãã
ããã¯README.mdã¢ãžã¥ãŒã«ã®å€èŠ³ã§ãïŒ


ããã§ã¯ãã¡ãœããã®äŸãšèª¬æãããã³äžçŽç©ãžã®ãªã³ã¯ãããã«è¡šç€ºãããŸãã åé
ç®ãžã®ãªã³ã¯ãæå®ã§ããŸããããã«ãã¡ãœããåãã¯ãªãã¯ãããšãã³ãŒãã«ãã°ãããžã£ã³ãã§ããŸãã
README.mdã¯ãç¹å¥ãªåŽåããããã«ã©ãããã§ã衚瀺ã§ãããšããç¹ã§äŸ¿å©ã§ãã ããããæ¥åžžçã«äœ¿çšããããã«ãããã¥ã¡ã³ãã衚瀺ããããã®Webã€ã³ã¿ãŒãã§ã€ã¹ããããããŒã«ã«ã§äžããããšãã§ããŸãã 次ã®ããã«ãªããŸãã


ãã¹ãŠã®ã³ã³ãã³ãã¯mdãã¡ã€ã«ã«åºã¥ããŠæ§ç¯ãããŠãããããåžžã«ææ°ã§ãã ããããæãéèŠãªããšã¯ã1ããŒãžã®ã¢ããªã±ãŒã·ã§ã³ã§ãããã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã¡ãžãŒæ€çŽ¢ã®çš®é¡ããããç®çã®æ¹æ³ã«ãã°ãããžã£ã³ãã§ããŸãã

äž»ãªããšã¯ãããããã¹ãŠãéçºããã»ã¹ã®é床ãäœäžãããã ãã§ãªããå€ãã®å©ãã«ããªãããšã§ãã ãã¹ããšææžåã«ã¯æéãããããšèããããŠããŸãã æã
ãããããæžããŠããªã人ãããèšãããã«æããŸãã ããããããã«ã€ããŠè©±ããŸãããã å人çã«ã¯ãã³ãŒãã®å質ãæ¹åããã ãã§ãªããéçºæéã倧å¹
ã«ççž®ããããšãã§ããŸããã 2çªç®ã®äžè¬çãªç¥è©±ã¯ãã³ãŒãã¯è¡šçŸåããããããèªäœã§è©±ãå¿
èŠããããããã³ãŒãã«ã³ã¡ã³ãã¯å¿
èŠãªããšããããšã§ã...ã¯ããããã§ãããããã»ãšãã©ã®å Žåãããªãèªèº«ããã€ã³ã¿ããªã¿ãæ§ç¯ããããã人éãèªãæ¹ãç°¡åã§ãæãéèŠãªããšã¯ãéãã§ãã
çµè«ãšããŠãç§ã¯ããäžåºŠèšããŸãïŒåžžã«æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãæ¢ããŠãã ããïŒ äŸ¡å€ã®ãããã®ãèŠã€ãããªãå Žåã¯ãã¿ã¹ã¯ãå€æŽããæ¹æ³ãæ€èšããŠãã ããã ãŒãããäœæããå Žåã¯ãåå ããã«ãœãªã¥ãŒã·ã§ã³ãå®è¡ã§ããããã«ãå¯èœãªéãã®ããšãè¡ã£ãŠãã ããã ãããŠæãéèŠãªã®ã¯ãèªè»¢è»ã§ã¯ãªãããŒã«ãæžãããšã§ãã ãã¹ããšææžåïŒ ãæž
èŽããããšãããããŸããã