ãã®èšäºã¯ã Berlin.jsããŒãã£ã³ã°ã§äœæãããã¬ãŒã³ããŒã·ã§ã³ã«åºã¥ããŠäœæããŸããã æè¿ããã®ããªãäžè¬çã§å®å®ãããã¬ãŒã ã¯ãŒã¯ã«é¢ãããã·ã¢èªã®è³æã¯ã»ãšãã©ãªãããã®ç¶æ³ãå°ãä¿®æ£ããããšã«ããŸããã
Ember.jsã1ååŠç¿ãããã®ç¥èããã¹ãŠã®Ember.jsãããžã§ã¯ãã«é©çšããŸãã ã«ããã®äžã§ãã®è«æãæããã«ããããšããŸãã
ç§ãšEmber.js
ç§ã®çµéšã«ã€ããŠç°¡åã«èª¬æããŸãã 2014幎ãããã³ããšã³ãéçºè
ãšããŠã®æåã®ä»äºã§ãEmber.jsãåããŠè©ŠããŸããã ãã®ãã¬ãŒã ã¯ãŒã¯ã¯åŒãç¶ãMVCãã©ãã€ã ã§æ§ç¯ãããCLIã䜿çšããŸããã§ããã å€ãã®çµéšããªããããé·æãšçæãå€æããããšã¯å°é£ã§ããã äžè¬çã«ãç§ã®å°è±¡ã¯ãEmber.jsãšAngular.jsã®éã®ãã® 2013幎ã®ã©ã€ãããã«ã«ãã£ãŠããäŒããããŸãã ã¯ããGoogleãã¬ãŒã ã¯ãŒã¯ã«ã¯ããã«äœ¿ãããã®ããããããããŸããããmoment.jsãdatatables.netã®ãããªjQueryãã©ã°ã€ã³ã®ããã«ãEmberã«ãµãŒãããŒãã£ã©ã€ãã©ãªãç°¡åã«çµ±åã§ããŸããã
ãã®åŸãå¥ã®äŒç€Ÿã«ç§»ããCan.jsãšReact.jsã§1幎éåããŸãããã2016幎ã«éžæããæ©äŒããããå€ãå人ã«ãã£ã³ã¹ãäžããŸããã ãã®æãŸã§ã«ããã©ãã€ã ã¯Data Down Actions Upã«å€ããããµãŒãã¹ãšã³ã³ããŒãã³ããç»å ŽããŸããã ããããäžè¬çã«ããã¹ãŠã銎æã¿ãããç解ãããããŸãŸã§ãã£ããããé©å¿ã«é¢ããŠç¹å¥ãªåé¡ã¯ãããŸããã§ããã
ãã以æ¥ãEmber.jsã¯ç§ã®ã¡ã€ã³ããŒã«ã§ãã ç§ã®æèŠã§ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãSPAãéçºããå Žåã®äž»ãªéžæè¢ãšããŠæ€èšãã䟡å€ããããŸãã
ãªããšã³ããŒïŒ
Npm 2018ã®èª¿æ»ã§ã¯ãéçºã«å¿
èŠãªå€ãã®ããŒã«ã«ããjsã³ãã¥ããã£ã®ç²åŽãèšé²ãããŸããã
ãã¹ãŠã®èª¿æ»åçè
ã¯ãããŒã«ã®åæžãéå§ã«å¿
èŠãªæ§æã®åæžãããã³ååšããããŒã«ã®ããã¥ã¡ã³ãã®æ¹åãæãã§ããŸãã
React.jsãäž»æµã§ããããšãèãããšãããã¯ç解ã§ããŸãã ããŒã±ãã£ã³ã°ã«é¢ããŠèšãã°ããã®ã©ã€ãã©ãªã¯éåžžã«ãç°¡åãªãããŒã«ãšããŠäœçœ®ä»ããããŠããŸããã€ãŸããåŠç¿ãããããéåžžã«æè»ã§ãã ããããããã¯åãã«è¶³ããªãæè»æ§ã§ãã è»ãè²·ãã«æ¥ãŠã代ããã«ããã®ãšã³ãžã³ã§çŽ æŽãããè»ãäœãããšãã§ããŸãã倧ããªãå°ããªãç·ãéããããããã¯ãŸãã¯ã¹ããŒã·ã§ã³ã¯ãŽã³ãã¿ã¯ã·ãŒã®ããã«ãè¡äžããã®åšèŸºãé転ããããã«ãç°èãã©ããªè»ã«ãé©ããŠããŸãïŒãã ããã¯çŽ æŽãããããšã§ãã ããããç§ã¯åº§ã£ãŠè¡ãããã§ãã ãã®ããã ãã«ãã®ã¢ããã¯ã¹ãæã«åããããã£ãèŠã€ããïŒïŒïŒè²ãéžæããå¿
èŠããããŸãã ãããŠãããŒã±ãã£ã³ã°ã¯ããã«ã€ããŠæ²é»ããŠããŸãã
ç©äºã®ãã®é åºã¯ãå€çš®å€æ§ãªãµããŒãã©ã€ãã©ãªãåããéå€ãªãšã³ã·ã¹ãã ã«ã€ãªãããŸããã å€ãã®å Žåäºãã«äºææ§ã®ãªãã©ã€ãã©ãªãªã®ã§ãæ
éã«éžæããå¿
èŠããããŸãã ãã¡ããéžæã¯è¯ãã§ããã 24çš®é¡ã®ãžã£ã ããéžã¶ã®ã¯é¢åã§ãã ãããŠãNpmã®äžè«èª¿æ»ã¯ããã確èªããŠããŸãã
èªè
ã®çãããç§ã¯ããªãã«æå ±ããããŸãã Emberã³ãã¥ããã£ã¯ããã¬ãŒã ã¯ãŒã¯ã®ãèšèšæ©èœãã«ããéžæã®èŠçã®åœ±é¿ãã¯ããã«åããŸããã Emberã³ãã¥ããã£ã®ææ°ã®èª¿æ»ã®åçè
ã®1人ãæžããããã«ïŒ
Emberã1ååŠç¿ããä»ã®Emberãããžã§ã¯ãã«ç¥èãé©çšã§ããŸããEmberã¯ããã¹ãŠã®ã¢ããªã³ãåãããŒã«ã§äœæããã³äœ¿çšã§ãããããåžžã«äžè²«ãããšã¯ã¹ããªãšã³ã¹ã§ãã ããŒãªã³ã°ããã¹ãç°å¢ã®ã»ããã¢ããããŸãã¯ãã¹ãå¯èœãªã³ãŒãã®èšè¿°ã«è²»ããè³åãæžããããšã¯éåžžã«è¯ãããšã§ãã
äœãšç¿»èš³ãã
Ember.jsãäžåºŠåŠç¿ãããã®ç¥èããã¹ãŠã®Ember.jsãããžã§ã¯ãã«é©çšããŸã... Emberã䜿çšãããšããã¹ãŠã®ã¢ããªã³ãäœæããŠåãããŒã«ã»ãããšçµ±åã§ãããããå®å
šãªãšã¯ã¹ããªãšã³ã¹ãåŸãããŸãã ããŒã«ã®éçºããã¹ãç°å¢ã®å±éãæ€èšŒå¯èœãªã³ãŒãã®èšè¿°ã®ããã«ç²Ÿç¥çãªãšãã«ã®ãŒãç¯çŽããããšã¯è¯ãããšã§ãã
次ã«ãEmberã§ãã®äœéšå
šäœãåŸãçç±ã説æããŸãããæåã«1ã€ã®è³ªåã«çããŸãã
圌ã¯çããŠããŸããïŒ
æè¿ã§ã¯ãã©ã€ãã®jsãã¬ãŒã ã¯ãŒã¯ã¯ãã£ãã«èŠãããŸãããããã®éçºã¯éå»5幎éã«ããã£ãŠåæ¢ããŠããŸããã ãããããšã³ããŒã¯ãããã®1ã€ã§ãã
ã¢ã¯ãã£ããªéçºã¯æ±ºããŠæ¢ãŸããŸããã§ãããã2016幎ã«ã¯é©å¿ãåæ»ããŸããã åãNpm 2018調æ»ã«ç®ãåãããšã次ã®ãã£ãŒããããã«èšèŒãããŠããŸãïŒ
ã芧ã®ãšããã2017幎ã«ã¯é転ããããEmberã¯å¹³åããŒã¹ãäžåã£ãŠåã³æé·ãå§ããŸããã ãã®çŸè±¡ã«ã¯ç°¡åãªèª¬æããããŸãã 2017幎ãLinkedInã¯åèšèšããããšã決å®ããEmber.jsãéžæããŠãã¡ã€ã³ãµã€ãã®äž¡æ¹ã®ïŒãã¹ã¯ãããããã³ã¢ãã€ã«ïŒããŒãžã§ã³ãå®è£
ããŸããã ãã®ã€ãã³ãã¯éçºã«ãšãã«ã®ãŒãæäŸããçŸåšã®åŸåãçã¿åºããŸããã
LinkedInã«å ããŠããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãMicrosoftãNetflixãTravis CIïŒããã³ãå
šäœããªãŒãã³ãœãŒã¹ã§ã¬ã€ã¢ãŠããããŠãã ïŒãIntercomãHerokuãªã©ã®æåäŒæ¥ã§äœ¿çšãããŠããããšã«æ³šæããŠãã ããã
äžè¬çã«ããã¬ãŒã ã¯ãŒã¯ã¯å¥åšã§ãïŒã
ä»ã®JSãã¬ãŒã ã¯ãŒã¯ã®ç¶æ³ã«ãããEmber
以äžã«ãéçºããã³ããšã³ãã®ããŸããŸãªåŽé¢ã®é䞻匵çã§äžå®å
šãªäž»èŠ³çãªãªã¹ãã瀺ããŸãããã®ç®çã¯ãä»ã®ã©ã€ãã©ãªã®äžã§Ember.jsã®ããããã®äœçœ®ã瀺ãããšã§ãã éãšç·ã®ç·ã¯React.jsãšVue.jsããç°è²ãšãªã¬ã³ãžã®ç·ã¯AngularãšEmber.jsã瀺ããŠããŸãã
Ember.jsã¯ãAngularã«ãããã¯ã¹åããããæ°ããSPAãäœæãããšãã«çºçãããã¹ãŠã®ã¿ã¹ã¯ã«ããã©ã«ãã®å®è£
ãšããŒã«ãæäŸããããšããŠããŸãã äœããããªãã«åããªãããäœãã足ããªãå Žåãããªãã¯ãã®ããã®é©åãªã¢ããªã³ãæ¢ããŠããŸãïŒãŸãããŸãã¯èªåã§æžããŠãã ããïŒã ã¢ããªã³ã«ã€ããŠã¯å°ãäœããªããŸãã
äœãããªãã¿ã§ããïŒ
React.js
React.jsã®äžçããæ¥ãã®ã§ããã°ãããŒãžãã³ã³ããŒãã³ãã®éå±€ã«å解ããããšã«æ
£ããŠããã§ãããã Emberã§ã¯ãããŒãžãã³ã³ããŒãã³ãã«åå²ãããããã«ããŒã«ã«ç¶æ
ãã«ãã»ã«åããæåã®æ¹æ³ã«ã€ããŠãèããŸãã
React-routerã«ç²ŸéããŠããå ŽåãEmberã®ã«ãŒã¿ãŒãããªãã¿ã®ããã«èŠããŸãã æåã¯ãReactã«ãŒã¿ãŒã¯ãšããªã¢ã®ãã®ããã³ããŒãããŸããããä»ã§ã¯ãããžã§ã¯ãã¯é·ãéçãç¶ããŠããŸãã
æåŸã«ãReduxãGraphQLã§ã®äœæ¥ã«æºè¶³ããŠããå Žåã¯ãEmber.jsã§ã䜿çšã§ããŸãïŒ ãã¡ããšãã¡ããã芧ãã ããïŒ
ãŸããææ°ã®EmberConfã§ã¯ãReactãšEmberã®ãã¿ãŒã³ãããã³ã°ã«é¢ãããã¬ãŒã³ããŒã·ã§ã³ãè¡ãããŸããã
Vue.js
åœç¶ãããªããReactã®äººã
ããã€ã³ã¿ãŒãã§ãŒã¹ãã³ã³ããŒãã³ãã«åå²ãããã©ãã€ã ãããç¥ã£ãŠããŸãã ããã«ããã³ãã¬ãŒããšèšç®ãããããããã£ã®æŠå¿µã«ç²ŸéããŠããŸãã
Angular.js
ãã®ãã¬ãŒã ã¯ãŒã¯ãçç¥ããŠãã人ã¯ããµãŒãã¹ãšäŸåæ§æ³šå
¥ã¡ã«ããºã ãããç¥ã£ãŠããã§ãããã ãŸãã ãªãªãŒã¹3.10ã§å
¬åŒã«ãªãªãŒã¹ããããã³ã¬ãŒã¿ã確å®ã«å¥œãã«ãªããããªãã£ã«ã䜿çšããŠãã³ã¬ãŒã¿ã䜿çšã§ããããã«ãªããŸããã Emberã³ãã¥ããã£ã§ãŸããŸã人æ°ãé«ãŸã£ãŠããTypescriptïŒ ãã¡ããåç
§ïŒã䜿çšããããšãã§ããŸãã
ãªãã¿ã®ãªããã®ã¯äœã§ããïŒ
ããã§ã¯ããªãã¿ããªããšæãããçåãæããããå¯èœæ§ãé«ãéšåã«ç§»ããŸãããã
Webpackã§ã¯ãªãEmber-cli
ã¢ããªã±ãŒã·ã§ã³ãçæããããã®æšæºããŒã«ã¯Ember-cliã§ãã ã»ãšãã©ã®äººãåžžã«ããã䜿çšããŠããŸãã Ember-cliã䜿çšãããšãæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã§æ°ããã¢ããªã±ãŒã·ã§ã³ãšãã¡ã€ã«ãçæã§ããŸãã ãã®ããŒã«ã¯ããªãœãŒã¹ã®ã³ã³ãã€ã«ãšãã©ã€ããªããŒããšãã¹ããå«ãéçºç°å¢ã®å±éãæ
åœããŸãã ãã®ããããã¹ãŠã®åºæ¬çãªç掻ç¶æ³ïŒãã£ã³ã¬ãŒããªã³ãã£ã³ã°ãCSPãŸãã¯SRIãŸã§ïŒãã«ããŒããå€ãã®æ¡åŒµæ©èœãäœæãããŸããã ãŸããæŠéç°å¢ã§ã®èšç®ã«ã䜿çšã§ããŸãã
ãã®ããŒã«ãwebpackã䜿çšããªãããšã¯ãå€ãã®äººã«ãšã£ãŠã¯çããããšãããããŸããã 代ããã«ãbroccoli.jsã䜿çšãããŸãã äžè¬çã«ããã®ããšãããã¢ããªã±ãŒã·ã§ã³ã®éçºäžãããªãã¯æããå¯ãããªããŸããã
Ember-cliã¯å®å®ãã䟿å©ãªããŒã«ã§ãã ãããŠäž»ã«ããã«ãããã³ãã¥ããã£ã¯éžæã«ããèŠçã«èŠããããšã¯ãããŸããã
ããŒããã¡ã€ã«æ§é
ãã®ç¬éã¯ãå€ãã®å Žåããã¬ãŒã ã¯ãŒã¯ã«äžæ
£ããªäººã
ã«è¡æãäžããŸãã æšæºã®Emberã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã«æ§é ãèŠãŠãã ããïŒ
å€æŽã§ããªãããšãç¥ã£ããšããäœãšèšããŸããïŒ ãã¡ã€ã«ãä»ã®ãã©ã«ããŒã«è»¢éããŠãç¬èªã®æ¹æ³ã§ååãä»ããããšã¯ã§ããŸããã ãã€ãŠããã®ããã«ãç§ã¯ãã¬ãŒã ã¯ãŒã¯ã«é¢é£ããããã¡ã·ã¹ãããšããèšãåãããèããã
ãã ãããã®ãããªå¶éã¯ç¹ã«å°å
¥ãããŸããã 以äžããã®èšŒæ ã§ãã
ãã¡ãããããªããç¡æã®ã¢ãŒãã£ã¹ãã§ãããè匱ãªåµé çãªäººã§ããã°ããã®æ³šæãåãå
¥ããã®ã¯é£ããã§ãããã ããããæ®ãã®ãå¹³åçãªãããã°ã©ããéçºã®åå¿è
ãããã³æ°ãããããžã§ã¯ãããšã«ãã©ã«ããæŽçããŠãã¡ã€ã«ã«ååãä»ããããšãèããããªã人ã«ãšã£ãŠã¯ãããã¯éåžžã«äŸ¿å©ã§ãã
ç§ã®æèŠã§ã¯ãããã¯å€§ããªåœ±é¿ãäžãããšã¬ã¬ã³ãã§å¹ççãªã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ã§ãã ãŸããè€éãªEmberã¢ããªã±ãŒã·ã§ã³ãéããã³ã«ãæ°ããã²ãŒãã®éçŸã®ããã«ã¯èŠããŸããããã³ã³ããŒãã³ãã®å Žæããã³ãã¬ãŒãããµãŒãã¹ããã¹ããªã©ã¯ç¥ã£ãŠããŸãã ããã¯å€ãã®æéãšç²Ÿç¥çãªãšãã«ã®ãŒãç¯çŽããŸãã
ã¢ããªã³
åºå®ãã©ã«ããŒæ§é ãæã€ãšãã決å®ã«ã¯å¥ã®å©ç¹ãããããšãæéã®çµéããããããŸããã ç°¡åãªäŸã§ãããæããã«ããããšããŸãã
è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã§åãã³ã³ããŒãã³ãã䜿çšããå¿
èŠããããšããŸãããïŒçªç¶ã§ãïŒã ãã®åŸãã³ã³ããŒãã³ããåžžã«app/components/
ãã©ã«ããŒã«ããããšãããã£ãŠããå Žåããã®ã³ã³ããŒãã³ããå¥ã®npmããã±ãŒãžã§éžæããããã«å¿ããŠè¿œå ã§ããŸããã¹ããŒãEmber-cliã¯ãã³ã³ãã€ã«æ®µéã§ãã®ã³ã³ããŒãã³ããã¢ããªã±ãŒã·ã§ã³ã«ãã«ããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ã§åå©çšã§ããŸãã
ããããããã¯æãé©ãã¹ãããšã§ã¯ãããŸããã ããã§é©ãã¹ãããšã¯ããã®ããã±ãŒãžããªãŒãã³ãœãŒã¹ã§å
¬éãããšãä»ã®ãã¹ãŠã®Emberã¢ããªã±ãŒã·ã§ã³ã§ã䜿çšã§ããããšã§ãã ãŸããçµ±åã«äœåãªåŽåããããããšãªãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§ä»ã®éçºè
ãæçš¿ãããã®ãããªnpmããã±ãŒãžããã¹ãŠäœ¿çšã§ããŸãã
ã³ãã¥ããã£ã¯é·ãéãã®èããç解ããŠããã®ã§ããããã®ããã±ãŒãžã¯ã»ãšãã©äœã§ãå
¥æã§ããŸãã UIã©ã€ãã©ãªïŒããããªãïŒãã³ã³ãã€ã«ããŒã«ããªãªãŒã¹çšã®æ¡åŒµæ©èœãèªèšŒçšã®ã©ã€ãã©ãªãããã¯ãšã³ããšé£æºããããã®ã¢ããã¿ãªã©ã ãã®ãããªããã±ãŒãžã«ã€ããŠã¯ãå¿
èŠãªããã±ãŒãžãèŠã€ããããšãã§ããEmberObserver Webãµã€ããäœæãããŸãã ã
ã¢ããªã³ã¯ãEmberéçºè
ãä»ã®éçºè
ãšæ©èœãå
±æããæ¹æ³ã§ãã ãŸããã¢ããªã³ã¯ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§æ©èœãããããã ãããã»ãŒåãã»ããã䜿çšããŸãã ãããã£ãŠããã§ã«ç¢ºç«ãããŠãããããžã§ã¯ãã«ã¢ã¯ã»ã¹ãããšã䜿çšããã¢ããªã³ã®90ïŒ
ãç¥ã£ãŠããå¯èœæ§ãé«ããªããŸãã ããªãã®äººçã§åããŠãã®ã³ãŒããèŠããšããŠããã¢ããªã±ãŒã·ã§ã³ã¯ããªãã«éŠŽæã¿ããããŸãã
BEãšã®éä¿¡
ç§ããã¶ãééããæåŸã®åŽé¢ã¯ãããã¯ãšã³ãã§ã®äœæ¥ã§ãã
éåžžããªãœãŒã¹ãã©ãã€ã ã§äœæ¥ããå Žåã Emberã§ã¯Ember-dataã©ã€ãã©ãªã䜿çšããŠdataãåŠçããŸã ã ããã¯ãªãã·ã§ã³ã§ãããããã©ã«ãã§ã¯ãã¹ãŠã®æ°ããã¢ããªã±ãŒã·ã§ã³ã«è¿œå ãããŸãã 次ã®ãããªã¢ãã«ãæäœããããã®DSLã«ã€ããŠèª¬æããŸãã
ããã«ãã©ã€ãã©ãªèªäœããURLã®å
容ããã©ã¡ãŒã¿ãã¡ãœããããµãŒããŒããã®å¿çã解æããæ¹æ³ã決å®ããŸãã 幞éã§ãããã¯ãšã³ãã®éçºè
ãRESTã€ã³ã¿ãŒãã§ã€ã¹ãèšè¿°ããããã®äœããã®æšæºã«åŸãå Žåããã³ãšã®éä¿¡ãèšè¿°ããã®ã§ã¯ãªããããªãã®åŽã§ã¢ããªã³ã䜿çšã§ããå¯èœæ§ããããŸãã
幞éã§ãªãå ŽåãEmber-dataã¯å¿
èŠãªæœè±¡åãããšãã°AdapterãšSerializerãæäŸããŸãã ãããã®æœè±¡åã¯ãå³ã®ããã«è¡šç€ºãããªãããã«ã¯ãªãŒã³ãªã³ãŒããæžãã®ã«åœ¹ç«ã¡ãŸãã
ããã©ã«ãã§ã¯ãEmber-dataã¯JSONïŒAPIä»æ§ã«æºæ ããŠããŸãïŒGraphQLããã³RESTãšã®æ¯èŒã«ã€ããŠã¯ãã¡ã ïŒã ç§èªèº«ã®çµéšããèšãã°ãJSONïŒAPIã䜿çšããããšã§ãããªããšããªãã®ããã¯ãšã³ãéçºè
ã®æéãšé埳çãªåã倧å¹
ã«ç¯çŽã§ããŸãã ãã£ã¡ã«ã±ãŒã¹ãã±ããã®å ŽåãURLãã©ãããã¹ããã«ã€ããŠã¯èª¬æããŸãããå±æ§ãšãã©ã¡ãŒã¿ãŒããããPATCHãŸãã¯PUTã䜿çšããŠãåã蟌ã¿ãªãœãŒã¹ã®ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®JSONæ§é ãå€æŽããå¿
èŠããããŸãã ã¢ãã«ããã®é¢ä¿ãããã³å±æ§ã®ããžãã¹ã«ãŒã«ã®ã¿ã説æããŸãã ããã¯ãéžæã®å¶éãçç£æ§ã«ãã©ã¹ã®åœ±é¿ãäžããå¥ã®ã±ãŒã¹ã§ãã
ã©ãããå§ããŸããïŒ
ããªããçµéšè±å¯ãªéçºè
ã§ãããã©ããã«é¢ä¿ãªãã å
¬åŒãã¥ãŒããªã¢ã«ãéããŠEmberã«ã€ããŠç¥ãå§ããããšããå§ãããŸãã
圌ã¯ãã¹ãŠã®äž»èŠãªãã€ã³ããåŸã
ã«çŽ¹ä»ããŸãïŒ
- ember-cliã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³
- ã³ã³ããŒãã³ãããã¹ãã¢ãã«ãªã©ã®äœææ¹æ³
- Ember-dataã®äœ¿çšæ¹æ³
- è€éãªã³ã³ããŒãã³ãã®æžãæ¹
- ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãåã蟌ãæ¹æ³
- å±éæ¹æ³
ã©ãã«åãåãããã°ããã§ããïŒ
Emberéçºè
ã®äž»ãªéä¿¡ãã£ãã«ã¯ twitter äžäžèŽãµãŒã㌠ã çµéšè±å¯ãªããã°ã©ããŒã¯ãåžžã«ç解ã§ããªãç¬éã«ããªããå©ããããã«ãããããŠããŸãã ãã·ã¢èªã®ãã£ã³ãã«ããããŸãã ãŸãããã¹ãŠã®Emberã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãåãã§ããã誰ããåãããŒã«ã䜿çšããããšãå¿ããªãã§ãã ããã ããã«ããã質åã«å¯Ÿããè¿
éãªåçã®å¯èœæ§ã倧å¹
ã«é«ãŸããŸãã
ä»ã®éä¿¡ãã£ãã«ã¯ãŠã§ããµã€ãã§èŠã€ããããšãã§ããŸãã
ããšãã
ãã£ããŒã¬ã§ã¯ãäž»ãªè«æãããäžåºŠåŒ·èª¿ããããšæããŸãã Ember.jsãäžåºŠåŠç¿ãããã®ç¥èããã¹ãŠã®ãããžã§ã¯ãã«é©çšããŸã ã
ãæž
èŽããããšãããããŸããïŒ