10æ26ã27æ¥ã«ãDart Developer Summitããã¥ã³ãã³ã§éå¬ãããŸããã Googleã2幎é£ç¶ã§éå¬ããè¥ãèšèªã«ç¡é¢å¿ã§ãªãéçºè
ãåžžã«éããŠããŸãã
ãåç¥ãããããŸããããWrikeããŒã ã¯æ°ããAngular 2ïŒDartïŒãã¬ãŒã ã¯ãŒã¯ãšãšãã«ãããžã§ã¯ãã§Dartãç©æ¥µçã«äœ¿çšããŠããŸãã
Wrikeã¯çŸåšãDartãæžããŠãã45人以äžã®ããã³ããšã³ãéçºè
ãéçšããŠãããã³ãŒãã®è¡æ°ã¯ãã§ã«æ°åäžè¡ãè¶
ããŠããŸãã äŒè°ã¯ãäž»ã«DartãšAngular 2ã䜿çšãå§ãã人ããŸãã¯Dartãå¯èœãªãªãã·ã§ã³ãšããŠã®ã¿æ€èšããŠãã人åãã«èšèšãããŸãããããã©ãããã©ãŒã ã®éçºã«é¢ããçŽæ¥ã®ãã¥ãŒã¹ãåŠã³ãéçºè
ãšã³ãã¥ãã±ãŒã·ã§ã³ããšãããšãéèŠã§ãã人ã®èšèªã
ãã®èšäºã§ã¯ããã®äŒè°ã§è¡ãããæãéèŠã§èå³æ·±ããç§ãã¡ã®æèŠãçºè¡šãã€ãã³ãã«ã€ããŠã話ããŸãã
è§åºŠ2
ä»å¹Žã®å€ãAngular DartããŒã ã¯ãããæé©ã§æ
£çšçãªããŒãã³ãŒããèšè¿°ããå¯èœæ§ããæšæºã§ãããã«äœ¿çšå¯èœãªããã¬ãŒã ã¯ãŒã¯ã®äžéšã®åé·æ§ãªã©ãããã€ãã®çç±ã§TypeScriptããŒãžã§ã³ã®Angularããã³ãŒãããŒã¹ãåé¢ããããšã決å®ããŸããDartã©ã€ãã©ãªïŒã¢ãžã¥ãŒã«ãªã©ïŒã ãã®ããããã®ãã¬ãŒã ã¯ãŒã¯ã®DartããŒãžã§ã³ã®å
¬åŒãªãªãŒã¹ã¯ãTypeScriptããŒãžã§ã³ããã1ãæé
ããŠè¡ãããŸããã
ãã®çµæãDart Summitã§ã®Angular 2 Dartã®å
¬åŒãªãªãŒã¹ã¯é©ãã§ã¯ãããŸããã§ããããAngularDartããŒã ããªãªãŒã¹æ¥ã«é¢ããçŽæãå®ã£ãŠãããšããäºå®ã¯ãç§ãã¡ã«ãšã£ãŠæ¥œãããã®ã§ããã
ïŒä»¥äžã¯ãæè¿ã®ãAngularDartïŒããªãã«ãšã£ãŠæé«ã®AngularïŒãããã°æçš¿ã®AngularDart 2.0éçºè
ãšã®çãã€ã³ã¿ãã¥ãŒã®ç¿»èš³ã§ããDartã®å
¬åŒããã°ã«æçš¿ãããŠããŸãïŒ ïŒ
人ã
ãæ°ããAngularDart 2.0ãè©Šãã¹ãæãéèŠãªçç±ãæããŠããã ããŸããïŒ
ããã©ãŒãã³ã¹ã®æ¹åã ãŸããæè¿Dart Summitã§è¿°ã¹ãããã«ãAngularDartã®ç®æšã¯ãéçºè
ã«çç£æ§ãããã©ãŒãã³ã¹ãå®å®æ§ãšãã3ã€ã®äž»èŠãªèŠçŽ ãæäŸããããšã§ãã
- AngularDartã¯Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åªãããã¬ãŒã ã¯ãŒã¯ã§ãããåœç€Ÿã«ã¯Dart + Angularã®ãããã§çç£æ§ã2åã«ããããŒã ããããŸãã
- ææ°ã®ãªãªãŒã¹ã§ã¯ãã³ãŒããµã€ãºã40ïŒ
åæžããããã¬ãŒã ã¯ãŒã¯ã10ïŒ
é«éã«ãªããŸããã
- ããã«ã補åããã®ãã¬ãŒã ã¯ãŒã¯ã«äŸåããããã€ãã®éèŠãªïŒGoogle翻蚳è
ïŒAdWordsãAdSenseïŒããŒã ããããããäžèšã®æ¹åãè¡ããªããå®å®æ§ã確ä¿ããããã«åªåããŠããŸãã
ééããªããåºåãµã€ãºãšé床ã®äž¡æ¹ã®é¢ã§å°è±¡çãªããã©ãŒãã³ã¹ã®æ¹åã瀺ããŸããã ãã®ãããªçæéã§ãã®ãããªçµæãéæã§ããã®ã¯ãªãã§ããïŒ
ãµã€ãºã®åæžã¯ãçæ³çãªDartã³ãŒãã®çæã«çŠç¹ãåããããã¯ã€ãã¹ããŒã¹å§çž®ãªã©ã®ç°¡åã«éæå¯èœãªææ³ïŒç¿»èš³è
ã®ã¡ã¢ïŒããšãã°ããããã¯ãã¹ãŠã³ãŒãããã¹ããŒãããïŒãšããªãã¡ã¯ã¿ãªã³ã°ã«ãã£ãŠåçåŒã³åºããšæœè±¡åã¬ã€ã€ãŒãåé€ããããšã«ããéæãããŸãããå¯èœã ã£ãã å®è¡æã®ããã©ãŒãã³ã¹ãåäžãããããã«ãå³å¯ãªåã·ã¹ãã ã«äŸåããå€æŽãåŠçããããã®æ°ããã¢ãã«ãåªå
ããŠãããŒãã£ãã§ãã¯ããå»æ¢ããŸããã
AngularDart 2.0ã¯ããã»ã©åã«ãªãªãŒã¹ãããŠããŸããã ä»æ¥äœ¿çšãå§ããã®ã«ååå®å®ããŠããã®ã ãããïŒ ããªãã¯ãããããã§ã«æ°ã¶æã®éçç£ã§äœ¿ããããšèšããŸããã ããã¯ã©ãããŠã§ããïŒ
ã¯ã æ°ãæåããAngularDart 2ã䜿çšããŠããäž»èŠãªè£œåïŒ AdWordsãªã© ïŒãããããã®åŸã®ãã¹ãŠã®ããã©ãŒãã³ã¹ã®åäžãåé¡ã«ãªããªãããšã確èªããããã«æ°åã®ãã¹ããäœæããŠããŸãã
ããïŒ ããã§ã¯ãAngularDart 2ã®è©³çŽ°ãè©ŠãããããŸãã¯ç¥ãããå Žåãã©ãããå§ããã°ããã®ã§ããããïŒ
2016 Dart Summitã§ã®ãã¬ãŒã³ããŒã·ã§ã³ãããããªãèŠãããšãã§ããŸãã ãŸããAngularDartã®äœ¿çšãéå§ããã®ã«åœ¹ç«ã€ãã¥ãŒããªã¢ã«ãã Tedããµãããã§è©±ãåã£ãæ°ããAngularDartã³ã³ããŒãã³ãã® ãã¥ãŒããªã¢ã«ãçšæã ããŠããŸã ã ãããŠãã¡ããã angledart.orgã§ã¯ã AngulaDartã«é¢ããææ°æ
å ±ãèŠã€ããããšãã§ããŸãã
â å
ã®èšäºãžã®ãªã³ã¯
匷ãã¢ãŒã
Dartã®ã¹ããã³ã°ã¿ã€ãã³ã°ã®åé¡ã«æ¯èŒçå€ãã®æ³šæãæãããŸããã Dartèªäœã¯å®å
šã«éçã«åä»ããããèšèªã§ã¯ãããŸããããDartã«ã¯å®å
šãªåãµããŒããšãå
¥åãšã©ãŒããã§ãã¯ã§ããéçã¢ãã©ã€ã¶ãŒããããŸãã ã¢ãã©ã€ã¶ãŒã¢ãŒãã®1ã€ã¯ã¹ããã³ã°ã¢ãŒãã§ãç¹ã«ãã®ãšã©ãŒãã现å¿ã®æ³šæãæã£ãŠãåæããŸãã
Googleã¯æ¢ã«è£œåãStrong Modeã«åãæ¿ããŠããŸãã ããã«ã¯ããã€ãã®çç±ããããŸãã ãŸã第äžã«ãéçºè
ãããå€ãã®ãµããŒããããŠããã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããèšè¿°ããããããŸãã ãã ããã¹ããã³ã°ã¢ãŒãã䜿çšããåæ§ã«éèŠãªçç±ã¯ãã³ãŒãããŒã«ãåã·ã¹ãã ã«äŸåã§ããããšã§ãã ãããã£ãŠãããšãã°ã以äžã§èª¬æããDart Dev CompilerïŒDDCïŒãéçºããããã®æ°ããã³ã³ãã€ã©ã¯ããã人éãèªããjsã³ãŒããçæããããã«åã·ã¹ãã ã«äŸåããŠããŸãã
ãã®ããã¥ã¡ã³ãã§ã¯ãã¹ããã³ã°ã¢ãŒããšã¯äœãããªãã¹ããã³ã°ã¢ãŒããå¿
èŠãªã®ãããŸãã¯Dart Summitã®ã¬ããŒããã芧ãã ããã
Ddc
Dartã®éçºã€ã³ãã©ã¹ãã©ã¯ãã£ãè£å®ãããã1ã€ã®éšåã¯ãDart Dev CompilerãŸãã¯DDCã§ãããããµãããã§è°è«ãããŸããã ãã®ååã瀺ãããã«ãéçºã¢ãŒãã§äœ¿çšãããã³ã³ãã€ã©ã§ãã
çŸåšãDartã§ã®éçºã«ã¯ããã©ãŠã¶ãŒã§ã®åŸç¶ã®äœæ¥ã®ããã«ã³ãŒãããã°ããæŽæ°ã§ããä»®æ³ãã·ã³ãDartiumãã©ãŠã¶ãŒã®ã¿ã§ãããšããäºå®ã«é¢é£ããç¹å®ã®äžäŸ¿ãããããŸãã Chromeãå«ãä»ã®ãã©ãŠã¶ãŒã§ãããã°ãå®è¡ããå Žåãdart2jsã³ã³ãã€ã©ãŒã䜿çšãããŸãã ã³ãŒããå€æŽããããã³ã«ãïŒå€æŽãããã³ãŒãã ãã§ãªãïŒãã¹ãŠã®ã³ãŒããã³ã³ãã€ã«ããŸãã æ¯èŒç倧ããªã³ãŒãããŒã¹ã§ã¯ããã®ã¢ãããŒãã¯ååã«äŸ¿å©ã§ã¯ãªããããããŸããã
DDCã䜿çšããŠéçºããå Žåãã¢ãããŒãã¯å€§ããå€ãããŸãã ãŸããGoogleã¯DDCã§ã®éçºãæ¯æããŠDartiumã®ãããªããµããŒããæŸæ£ããäºå®ã§ããã€ãŸããéçºãããã³ãŒãã¯æ¬çªã³ãŒããšåãç°å¢ã§å®è¡ãããŸãã ææ°ã®ãã©ãŠã¶ã§ã 第äºã«ãã¹ããã³ã°ã¢ãŒãã®ãããã§ãDDCã¯åã·ã¹ãã ãä¿¡é ŒããèŠèŠçã«å®è³ªçã«å
ã®Dartã³ãŒããšå€ãããªãES6ã³ãŒããçæã§ããããããããã°ã倧å¹
ã«ç°¡çŽ åãããŸãã ããã«ããã©ãŠã¶ãŒã§ã®DevToolsãšã®çµ±åãç°¡çŽ åããŸãã
ãã1ã€ã®éèŠãªå©ç¹ã¯ãDDCãã³ãŒãããŒã¹å
šäœã§ã¯ãªããã³ãŒãã®å€æŽãããéšåã®ã¿ãåã³ã³ãã€ã«ããããšã§ãã ããã«ãéçºãããã«å éããããã«ã Webpackãªã©ã®ã¢ãžã¥ã©ãŒãã¬ãŒã ã¯ãŒã¯ãšã®çµ±åãå®è¡ããŠãããšãã°ããããªããŒããæäŸã§ããŸãã
DDCã¯dart2jsã眮ãæããã®ã§ã¯ãªãè£å®ããããšã«æ³šæããŠãã ããããŸããªããã¹ãŠã®ã³ã³ãã€ã©ïŒdart2jsãDDCãvmïŒã«1ã€ã®ã³ãŒãããŒã¹ãè¿œå ãããŸã ã
JSçžäºéçš
æ°ããèšèªã®èª²é¡ã®1ã€ã¯ãå€ãã³ãŒããšå¯Ÿè©±ããããšã§ãã Webã®äžçã§ã¯ã10åè¡ãè¶
ããã³ãŒããjsã§èšè¿°ãããŠããŸãããã»ãšãã©ã®å Žåãããã¯Dartã§æžãæããããããšã¯ã»ãšãã©ãããŸããã ãã®ãããDartlangããŒã ã¯jsã®äžçãšã®çžäºäœçšãæ¹åããããã«å€å€§ãªåªåãããŸããã
以åã¯ãDartã®ãJSON.stringifyïŒaïŒãã®åçŽãªåŒã³åºãã¯æ¬¡ã®ããã«ãªããŸããã
import 'dart:js' as js; var a = { 'value' : 1 }; var str = js.context["JSON"].callMethod("stringify", [a]);
ãã®ã¢ãããŒãã§ã¯ãã¿ã€ãããã§ãã¯ããæ©èœããªãããjsã®çŽæãã ãã«äŸåããå¿
èŠããããŸãã
æ°ãããšãã£ã·ã§ã³ã§ã¯ããã®åé¡ã®è§£æ±ºçã¯ã¯ããã«ç°¡åã«èŠããŸãã
import "package:js/js.dart"; @JS("JSON.stringify") external String stringify(obj); var a = { 'value' : 1 }; var str = stringify(a);
ããã«ãjsãšå¯Ÿè©±ããåã«ãMapåã®ãªããžã§ã¯ããäœæããå¿
èŠããããŸããã
var jsObj = new JsObject.jsify({'value':1}); jsMethod(jsObj);
ãã¡ããããã®ç¶æ³ã§ã¯ãåãã§ãã¯ã«äŸåã§ããŸããã§ããããªããªãã Mapã®ãã¹ãŠã®ã¿ã€ãïŒããŒãšå€ã®äž¡æ¹ïŒã¯åçã§ããã
æ°ãããšãã£ã·ã§ã³ã§ã¯ããã¹ãŠãããéæã«èŠããŸãã
@JS() @anonymous class Options { external int get value; external factory Options({bool value}); } var jsObj = new Options(value: 1); jsMethod(jsObj);
ãã®ããããªããžã§ã¯ãã®ãã£ãŒã«ããšãã®ã¿ã€ããå®å
šã«å¶åŸ¡ã§ããŸãã
æ§æãšæ°ããã¢ãããŒãã®æ¬è³ªã«ã€ããŠè©³ããã¯ã ãã¡ããã芧ãã ãã ãäŒè°ã®ãããªãã芧ãã ãã ã
æ¢åã®å¶é ïŒå€ãïŒimport 'dartïŒjs'ïŒã¹ã¿ã€ã«ãšæ°ããïŒimport "packageïŒjs / js.dart"ïŒã¹ã¿ã€ã«ãæ··åšãããããšã¯ã§ããŸããã
ãŸããããŒã ã¯jsã³ãŒãã®ã©ãããŒã®çæãèªååããããã«çŽ æŽãããä»äºãããŸããã
ãã©ãã¿ãŒ
ããã«ãäŒè°ã§ã¯ãDart- Flutterã§ã®ã¢ãã€ã«éçºã®æ°ãããã¬ãŒã ã¯ãŒã¯ã瀺ãããŸããã ãã¬ãŒã ã¯ãŒã¯èªäœã¯ãŸã ã¢ã«ãã¡çã§ããããã¬ãŒã³ããŒã·ã§ã³ã¯éåžžã«å°è±¡çã§ããã
ãã®ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠè©³ããèªãããšãã§ãããªã³ã¯ãããã€ããããŸãã
ããŒãããŒãã¢ãã
Wrikeã§ã¯ãDartã«é¢ããç¥èãšéçºãèªåã®ããŒã å
ãšããããžã§ã¯ãã§ãã®èšèªã䜿çšãããéçºè
ãšã®äž¡æ¹ã«åºããããšã«å€ãã®æéãè²»ãããŠããŸãã ãããè¡ãããã«ããã·ã¢èªã®ã¹ã©ãã¯ãã£ã³ãã«ãçšæã ã11æ30æ¥ã«ãµã³ã¯ãããã«ãã«ã¯ã§DartããŒãã£ã³ã°ãéå¬ããŸãã Googleã®ãããã¯ããããŒãžã£ãŒãšèšèªéçºè
ãè¬æŒããJetBrainsã®æ
åœè
ãDartéçºè
åãã®IntelliJ IDEAã®æ©èœã«ã€ããŠè©±ããç§ã®Wrikeååãä»ã®ããã°ã©ãã³ã°èšèªïŒCïŒãJavaScriptïŒããDartéçºãžã®ã¹ã ãŒãºãªç§»è¡ã®çµéšãå
±æããŸãã
è¿œå ãªã³ã¯ïŒ