JavaScriptã«ã³ââãã¡ã¬ã³ã¹ã§ã®Ilya Klimovã®ã¬ããŒãã®ãã³ãŒãfwdaysã
ç§ãã¡ã¯ã2017幎ã«ã³ãã¥ããã£ãšããŠãã ãŒãã¡ã³ããšããŠJSã®éçºã®ããã€ãã®åŸåã远跡ããããšããŸãã ç§ã¯äŸ¡å€å€æãé¿ããããã«éåžžã«äžçæžåœã«åªåããŸãã ç§ã¯ã ãŸãããŠããŸãããããã¯ãŸã åäœããŸããã ãããŠçŽ1幎åŸããã®ãã¬ãŒã³ããŒã·ã§ã³ãYouTubeã§åãã§éããç§ãããã«ééã£ãŠããããç解ããããšãã§ããŸãã
ããã§ã¯ã2015幎ã«æ©éãããŸãããã JSã®é²åãèŠãŠã¿ãŸãããã
å人çã«ã¯ã2015幎ã®JSã¯ç¡ç§©åºç¶æ ã§ããã
å¯èœãªãã¹ãŠã®ãã®ãççºçã«æé·ããŸããã ç§ã¯ãèšç»ã«ãäœãæåŸ ã§ããã®ãããšããå瀺ãšãšãã«ããµããŒãããããã«ãªã£ããã¹ãŠã®ãããžã§ã¯ãã«æ¥ãŸããã
ãã®ã¢ãããºã éåã®æå°è ã¯ããã«ã§ãããããã«ã®ãŸãŸã§ãã èŠããŠããªãå ŽåãBabel 6ã¯2015幎æ«ãŸã§ã«ãªãªãŒã¹ãããŸããããã®ã²ãŒã ã¯æ¬¡ã®ãšããã§ãã誰ãã©ã®ããªã»ããã»ããã䜿çšããŠããã®ããæšæž¬ããŠãã ããã å®éã®ãããã¹ã¿ãŒãšåæ§ã«ãã¹ããŒãž0ã䜿çšãããã€ã³ãåŒãçŽäº€ã¯ã©ã¹ãªã©ãå¯èœãªãã¹ãŠã䜿çšããŸãã ãã®ãããžã§ã¯ãããã®ãããžã§ã¯ããããã«ãããã§ããããæšæž¬ããã®ã¯æ¥œããã£ããã奜ãã§ã¯ãªãã£ãã ç§ã®ç·Žç¿ã瀺ããŠããããã«ãç§ã¯ãã®ã²ãŒã ãç§ã ãã§ãªã奜ãã§ã¯ãããŸããã§ããã
誰ããæ³£ãèšãèšã£ãŠããŸãããJavaScriptFatiqueãç§ãã¡ã¯ããã«ããããããŠããã人ã ã¯å€åãæ±ããŠããŸãã åºæ¬çã«ãå€æŽãæ¥ãŸããã
2016幎ã¯æ°äž»äž»çŸ©ã®å¹Žã§ããã æåŸã«ãAngular2ããªãªãŒã¹ãããŸããã ç§ãã¡ã¯ãã§ã«ãããæãã§ããŠãæžããŸããã ã³ãã¥ããã£ã¯åç©åããå¥å šãªãœãªã¥ãŒã·ã§ã³ã«ç§»è¡ããŸããã Create Reactã¢ããªãç»å ŽããŸãã-Embersã¯Dan Abramovã«ããããã£ãããããšã瀺ããŸããã Vue2ãç»å ŽããŸããããããã¯èªå€§åºåã«é£œããŸããã 2017幎ã«ã³ãã¥ããã£ã¯äœã«ç§»è¡ããŸããïŒ
2017幎ã¯ç¬è£æ¿æš©ã®å åã®äžã§ç§ã®ããã«éãå»ã£ãŠããŸãã ãã£ã¯ã¿ã©ã¯éããŸãã ç¥èªBDFLãç¥ã£ãŠãã人ã¯äœäººããŸããïŒ ãã°ããã©ã€ãç¬è£è ãã ãã®ãããªæåã®ã¿ã€ãã«ã¯ãã°ã€ããŽã¡ã³ãããµã ã«æäžãããŸããã ã©ã€ãã¹ã»ããŒãã«ãºã¯ã圌ãç¬è£è ã§ãããšèšããŸããã圌ã¯ç涯ã®ç¬è£è ã§ã¯ãªããšä»ãå ããŸãã ãŸããªã©ã ç§ãã¡ã¯äœã«ã€ããŠè©±ããŠããã®ã§ããïŒäŸãã°ã2016- 2017幎ã®Reactã³ãã¥ããã£ã®ç掻ãå€ãããã®ã¯äœã§ããïŒ
åå¿ã¢ããªãäœæãã
ãã¡ãããããã¯Create React Appã®ç»å Žã§ããããã¯ãReactã¢ããªããã°ããèµ·åããããã®çµ±äžãããæ¹æ³ã§ãã 誰ãã奜ããªæ¹æ³ã ããšãã°ãæè¿ãCreate React Native Appãè©ŠããŠã¿ãŸãã-äžè¬ã«ã圌ããèšãããã«ãããã€ãã®ã³ãã³ããšé çã®ãªãããšã䜿çšããŠRNãããžã§ã¯ããéå§ããããã®åªããæ¹æ³ã§ããç§ã¯Appleãã¯ãããžãŒã®ãã¡ã³ã§ã¯ãªãã®ã§ãXcodeã®ããããã¹ãŠã®ææã¯ãé ãããããšããŸãã çŸãããšã¯äœã§ããïŒ ãåç¥ã®ããã«ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšããŠç§ã倧奜ããªLinuxã®ã¢ãããŒã¯æ¬¡ã®ãšããã§ããLinux-ãã¹ãŠãæ§æã§ãããã¹ãŠãæ§æããŸãã Create React Appã®å Žåãã¢ãããŒã¯ããã§ãïŒããªãã¯äœãèšå®ã§ããã誰ãããªãã«ãããèšå®ãããŸããã ã¢ã€ãã¢ã¯ã決å®ãããªãã®ããã«ãªããããšããããšã§ãã ã³ãã¥ããã£ã¯ãããçš®ã®ããã§ã€ã¹ããã¯äž»çŸ©ããæ¡çšããŠããŸãã ã¹ããŒãž3ã®å éšã å°ããããã®æ±ºå®ãå§å¶ã«ã€ããŠè©±ããšãã倧å€æ°ã¯åœŒãã®æ çµã¿ã®äžã§åããŸãã
ããããã
ããšãã°ããã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒãšå®æçã«æŠãå¥ã®ãããžã§ã¯ãããããŸãã圌ã¯ç§ãããã¬ããã°ã©ãŒãã§ãããã²ãã¯ãããŸãããç§ã®ãã®ã§ã¯ãªãããããã¹ã¿ãŒã«ãµããããã§ãã ãã ããå€ãã®å€§èŠæš¡ãªãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã¯ãã§ã«ãã®ããšãæ¡çšããŠããŸãã Prettierã¯ãäºåå®çŸ©ãããã«ãŒã«ã«åŸã£ãŠãçŸããææ ã蟌ããŠæžãããã³ãŒããšãã©ãŒãããã䜿çšããŸãã ããã¯è¯ãç¬è£è ã§ããã¯ããªã®ã§ã泚æãæã£ãŠãã ããã圌ã¯ããªãã®æ§æ Œãåãåºãããã£ãã®ã§ãã 圌ã¯ããã®ã·ããªãªã§ã¯ããã®2ã€ã®ç·ãçŸããä¿ã€ããšãã§ããã®ã§ããã®ãããª2ã€ã®ç·ãç¶æããã®ã䟿å©ã§ããããšãæ°ã«ãããã£ãã®ã§ãã ãã®ä»£ããã«åœŒã¯äœãæäŸããŸããïŒ çµ±äžãããã³ãŒãã ãžã¥ãã¢ãšã·ãã¢ãã©ã®ããã«åºå¥ããŸãããïŒ åœŒãæžããã³ãŒãã®æž æœããå«ãã å¿ããŠã ä»ãããªãã¯ã³ãŒããæžããŸãããããŠãç§ã¯ããªãããžã¥ãã¢ãšã·ãã¢ãåºå¥ã§ããªããµããããŸãã ãã¡ãããã³ãŒããèŠããã°åŸèŒ©ã«ãšã£ãŠãè¯ãããšã§ãããã£ãšãéã皌ããã£ã³ã¹ããããŸãã ããããäžçªäžã®è¡ã¯ãPrettierãç»å Žãããšãã«ããã³ã¢ãã©ã¢ããåªããåé¡ãäœæããããšã§ãããããã«èšå®ãè¿œå ããªãã§ãã ãããã
Prettierã«ã¯ãå®å šã«å šäœçãª5ã€ãŸãã¯6ã€ã®èšå®ã®ã¿ããããŸããã»ãã³ãã³ã䜿çšãããã©ãããã¹ããŒã¹ãŸãã¯ã¿ããã€ã³ãã³ããåäžåŒçšç¬ŠãŸãã¯äºéã䜿çšããŸãã ãªãã§ïŒ ãªã³/ãªãã§ããèšå®ã10å以äžããå Žåããããã¯2ã®10ä¹ã1024åã®Prettierã®çµã¿åããã§ãããããããããã¹ãããå¿ èŠããããŸãã ããã¯èª°ããæããã®ã§ã¯ãããŸããã 誰ããã³ãŒããåãããã«èŠããããšãæãã§ããŸãã Prettierã®äœæè ãã³ãŒããã©ã®ããã«ãã©ãŒããããããã«åæããŸããïŒ åžžã«ã§ã¯ãããŸããã ç§ã¯ããã«èããŸããïŒ æºåãã§ããŸããã ç§ã®ååã®äœäººãã¯ããã¬ããã£ã¢ã圌ãã«åæããªãå®æçãªçã¿ãæã£ãŠããŸãã ããããåã³ãæŽåã«ãµãããããšããŠ-誰ãå°ããŸããïŒ ãããŠãããã¯äžæ¹ã§ã¯è¯ãããšã§ãã ã©ã®ãããžã§ã¯ãã§ãã³ãŒãã䜿çšã§ããã®ã¯çŽ æŽãããããšã§ãã巚倧ãªã¹ã¿ã€ã«ã¬ã€ããäœæããå¿ èŠã¯ãªãããšãç解ããŠããŸãããèããŠãã ãããããªã³ãããã䜿çšããŸããããªã³ãããããã¯ã§ã圌ã¯ãã¹ãŠãä¿®æ£ããŸããã ãããç§ã®CTOãšã®éãã§ãã 圌ã¯æåŸã«ä¿®æ£ãããã³ãŒããèŠãŠã圌ãããããå§ãããšã-ããã¯ãã¹ãŠãããã¯é ãããŸãã
ã³ãŒãã¬ãŒããã¯ãŒ
ç§ã®æèŠã§ã¯ïŒãããŠç§ã®æèŠã ãã§ãªãïŒãJSã³ãã¥ããã£ãåããŠãããã1ã€ã®åŸåã¯ãäŒæ¥ã®åã§ãã çŽ10幎åããEnterprase JSããšãããã¬ãŒãºã§ããã¹ããªãã¯ãªç¬ã声ãèãããŸããã ä»ã圌ã¯å°ãèãããŸãã ç§ãã¡ã®äž»æµãèŠãŠã¿ãŸãããã
Googleã¯Angularã®èåŸã«ãããFacebookã¯Reactã®èåŸã«ãããVueã¯èåŸã«ãããŸãããŸããèããŠãã ãããç§ãã¡ã¯çããã®çŸããç©èªãæããŠããŸãã ããããªãå ŽåããŠã¢ã³ã»ãŠãŒã®ä»äºã¯çŸåšãã¢ãªãããšåŒã°ãããã®ãããªå°ããªäžåœäŒæ¥ã®60ïŒ ä»¥äžã«ãã£ãŠè³ãããŠããŸãã JSãéå¶ããŠããã®ã¯ãã³ãã¥ããã£ã ãšæããŸããïŒ ãŸããããã§ããªãã TC39ãšãã次ã®èšèªã®æšæºãå ¥åãããã©ããã決å®ããããã°ã©ã å§å¡äŒãšåŒã°ããæãããæªäººãããŸãã ãªã¹ããéããŠã©ã®ãããã§ããïŒ
GoogleãGoogleãGoogleãMicrosoftãMozillaãAppleãIntelã ãããã®äººã ãããªãã®å©çãå®ãããšãæ¬åœã«ç¢ºä¿¡ããŠããŸããïŒ å¯å€§çµ±é ã®éžæããã°ã©ã ãæãèµ·ããããäœãã ãããŠãæãèå³æ·±ãã®ã¯ãç§ã®ä»®å®ãæ£åœåãããŠããªãéãã圌ããç§ã«çèšãç«ãŠããŸã§ãç§ã¯ãã®ä»®å®ãå·éã«åãæ¢ããŸããã tc-39 /ããããŒã¶ã«-ãã£ã³ã»ã«-çŽæ-ç§ãã¡ã¯çãèšèªæšæºãæ¬åœã«æ¥œãã¿ã«ããŠããŸããçŽ æŽãããç¬éãæãåºãããŸããã ãªãã§ïŒ ã人ã ããã®ææ¡ã¯Googleå ã§éåžžã«åŒ·ãæµæã«äŒã£ãŠããŸããç§ã¯ããããããªãŒãããããããŸããããäºåºŠãšç§ãšè©±ãããšã¯ãããŸãããã çå£ã«ãããã¯ãã®ããã«èãããã ãã®çµæã2017幎ãããããã§ããããã£ã³ã»ã«ã§ããŸããã ããã¯ãäŒæ¥ãããããã¹ãŠãåãããŠããå Žæã®åé¡ã§ãã
ããäžã€ã ãåç¥ã®ãšãããç§ã¯CoffeeScriptã奜ãã§ã¯ãªãã£ãã ïŒãã®çªç¶ã®ç§»è¡ãç¥ã£ãŠããŸãïŒã ããããäžã€çŽ æŽãããããšããããŸããã ãšã«ãã¹æŒç®åãšåŒã°ããŸãã ãã¹ãããããªããžã§ã¯ãã«ç»ãå¿ èŠãããå Žåã¯ããããã®ä»£ããã«çå笊ãšããããé 眮ãããã®ãã®ããã«ãŸãã¯æªå®çŸ©ã®å Žåãæªå®çŸ©ãè¿ããšèšãããšãã§ããŸãã ãã°ããåãReact Nativeããã°ã§ãidxã玹ä»ãããšããã¹ããŒãªãŒãç»å ŽããŸãããããã¯ããšã«ãã¹æŒç®åãšãŸã£ããåãããšãè¡ãé¢æ°ã§ãã
ãããŠããã¯ããçš®ã®éæ³ã®ã²ãã¿ãŒã§ã¯ãããŸãã-ããã¯ãã¹ãŠäžç·ã«idxã®Babelãã©ã°ã€ã³ã«ãã£ãŠèåãããif-sã®ãã§ãŒã³ã«å€ãããŸãã ãããŸã§ã®ãšããèå³æ·±ããã®ã¯ãããŸããã ããã¯ããããã·äžã§ãšãã¥ã¬ãŒãã§ããŸããããšãã°ãããŸããŸãªãªãã·ã§ã³ããããŸãã äœãæ°ã«ãªã£ãã®ã§ããïŒ ç§ã¯éçåä»ãã®å€§ãã¡ã³ã§ããããã®ããšã¯FlowïŒFacebookã®éçã¿ã€ããã¡ã€ã¢ãŒïŒãšå®å šã«äºææ§ããããšåœŒãã¯èšã£ãã®ã§ãã©ã®ããã«æäŸããã®ãçåã«æããŸãã-éçåã®æ£ããåºåã確ä¿ããã®ã¯ããªãé£ããäœæ¥ã§ãã Flowã®ãœãŒã¹ã³ãŒãã§åœ¹ç«ã¡ãŸãã
idxé¢æ°ã®ã¿ã€ãã¯$ Facebookism $ Idxã§ãã äŒæ¥ãç§ãã¡ã®ç掻ã«éãã«ããããŠéãã«æµžéããæ¹æ³ãç¥ãããã«å¿ èŠãªã®ã¯ããã ãã§ãã ãããã®ãfacebookiesããè€æ°çºè¡šãããŠããããšã«æ³šæããŠãã ããã äŒæ¥ããã®å Žåã¯Facebookã¯ãæçšã§ãããšãã芳ç¹ããå¿ èŠãªããŒã«ãéçºããŠããŸãïŒæä»çã§ã¯ãããŸããïŒã ããã¯ããžãã¹ã§ãã OpenSourceã¯å®éã«ã¯éåžžã«é«äŸ¡ã§ãã å€ãã®äººãããã«ãéãæè³ããå€ãã®äººãæéãç ç²ã«ããŸãã ãããŠãäŒæ¥ã¯å¿ èŠãªå Žæã§ãããéçºããŠããŸãã æåºããã ãã§ãã
OCaml
2017幎ã«ç§ãæ°ã¥ããå¥ã®èå³æ·±ãåŸåã¯äœã§ããïŒ ããã«ãéåžžã«ãªãã·ã§ã³ã®ãŸãŒã³ãéå§ããŸãã ã·ã§ãŒãããŒãžã§ã³-OCamlãåŠã³ãŸãã
è¡ããªãã ããŠãé·ãéã®ããè¡ããŸãããã
éçåä»ã
ç§ãã¡ã¯çãéçåä»ãã倧奜ãã§ãã ããã-ã¯ãïŒ ããã JSã³ãã¥ããã£ã®äººã ã¯ãéçåä»ããå¿ èŠãªå Žåãããããšãç解ããŠãã人ãšããŸã 22æ³ã§ãªã人ãšã«åãããŠãããšããé©ãã¹ããã¬ãŒãºãåŒçšããã®ã«é£œããŸããã ãã¡ããç§ã¯èªåŒµããŠããŸãã ããããéçåä»ãã®åããæè¿å¢ããå¢ããŠããããšã誰ãé ããªãã§ãããã ãããŠé©ãã¹ãããšã«ãããŒãã¯ãã€ç»å Žããã®ã§ããããïŒ åŒ·åãªéçåä»ãã ãããŠã誰ã圌ãå¿ èŠãšããŠããã®ã§ããïŒ ç§ã¯ä»ãããŒããã©ãã«ããã®ãå°ããŸããã ããã¯ãGoogleã®ãããžã§ã¯ãã®çŽååã«ã€ããŠå°ããããšãã§ããŸãã Angular-Dartã®3çªç®ã®ããŒãžã§ã³ãæè¿ãªãªãŒã¹ãããŸããããAngular2ãšDartã®éã®éåžžã«äŸ¿å©ãªããªããžã§ãã
ãããã£ãŠãTypeScriptããããŸãã ç§ã¯å®æçã«scãã ããããå ¬å¹³ã«ã¯ãéåžžã«å€ãã®éçºãè¡ãããŠãããããŒãžã§ã³ããšã«åæšè«ãæ¹åãããŠããŸãã ããã€ãã®å Žæã§ã¯ãããã¯ãŸã å®å šã«å°ã以äžåœ¹ã«ç«ããªãã Facebookãç§ã«å ±ããããã§ã¯ãªãã ããããç§ã¯TypeScriptãããFlowã奜ãã§ãã ä»ã®ãšãããç§ã¯ç¬¬åã®è§åºŠã§æžããŠæ³£ããŠããŸãã
ReasonML
å°ãã€ã³ãµã€ããŒãæè¿Facebookã§OCamlã§FlowãèŠã人ã ã®éãŸããããã圌ãã¯Flowããšã³ã·ã¹ãã ã®å¥¥ã«ããã®ã¯ã©ããããããæªããšèšã£ãããªããªãFlowã¯React Nativeã®éèŠãªéšåã ããã ã ïŒRNã®Flowã®å®çŸ©ãç Žããä»æã¯èª°ãæ°ã¥ããªãã£ãããããéèŠããšãã質åã«çããŸããïŒã ãªããããéèŠãªã®ã§ããïŒ ãŸããã³ãŒãã«èšè¿°ãããéçåã«åºã¥ããŠãã¢ãã€ã«ãã©ãããã©ãŒã çšã«çæããã³ãŒããæé©åããããšèããŠããŸãã Angularã¯ãNativeScriptã«ããã®ãããªã¢ã€ãã¢ãæã£ãŠããŸãã ãããŠäœããã¹ããïŒ Flowã®ã¯ãŒã«ãªè¬çœªè ã®1人ã§ããPatrick Staferãèå³æ·±ããã€ãŒããæçš¿ããŸããããè¿ãå°æ¥ãå¥ã®ééããèŠããŠããããããªãReasonMLãæžããŠããªãã®ãå°ããŸãã
ReasonMLã¯ãOCamlãåçºæããããšããFacebookã®ãã1ã€ã®è©Šã¿ã§ãã FacebookãOCamlã«è³ããŠããã®ã¯ãªãã§ããïŒ ãŸãã圌ãã¯åœŒã奜ãã ã£ãã æåã«çç±ããããŸãã-OCamlã§ã³ãŒããèšè¿°ããåºåã§JSã§ã³ãŒããååŸããŸãã ãããæè¿ãéåžžã«å¥åŠãªãã®-JSããOCamlãžã®ã³ã³ãã€ã©ãŒããªãªãŒã¹ããŸããã Facebookã¯ãããã³ããšã³ãã¹ã¿ãã¯å šäœãOCamlã«ç§»è¡ããããšãæ€èšããŠãããšæšæž¬ãããŠããŸãã ãããè¡ãã«ã¯ãæ¢åã®JSå®è£ ãååŸããŠOCamlã«è»¢éãã10åã®ã€ã³ã¿ãŒã³ãå ¥ããŠReasonã§ãªããŸãã ãã®åŸãéåžžã«é«éãªãµãŒããŒãµã€ãã§ããOCamlããçŸããã¯ã©ã€ã¢ã³ãã³ãŒããçæãããŸãã ããšãã°ãFacebookã®ãããŒã¯OCamlã§èšè¿°ãããŠãããJSã³ãŒãããASTïŒæœè±¡æ§æããªãŒïŒãæ§ç¯ããããŒãµãŒã¯ãBabelã䜿çšããåãããŒãµãŒããã3åé«éã§ãã ä»ã®ããšã¯åãã§ããããã®ããŒãµãŒã¯V8ãæé©åããããã®ã¿ãŒã²ããã®1ã€ã§ãããšããäºå®ã«ããããããã§ãã ã€ãŸã Googleã®V8ããŒã ã¯ããã®ããŒãµãŒã§ãã¹ãŠãè¿ éã«æ©èœããããšã確èªããŠããŸãã
MirageOS
Facebookãè³ããŠãããã1ã€ã®ããšã¯ãç§ãæ°ã«å
¥ã£ãŠããïŒOCamlã®çããããïŒMirageOSã§ãã ããã¯äœã§ãã 誰ããDockerãæããŠããŸãã ããªãããŸã 圌ãæããŠããªããªããããªãã¯ç·æ¥ã«æããå¿
èŠããããŸãã å±éãªã©ã«ã æšæºåãããã³ã³ããã¯ã¯ãŒã«ã§ããåé¡ã¯ã100ã¡ã¬ãã€ãæªæºã®éãã§ãã ããããïŒ MirageOSã¯ããŠãã«ãŒãã«ãæ§ç¯ãããã®ã§ãã ã€ãŸã ã¢ããªã±ãŒã·ã§ã³ãçæ³çã«ã¯å®è¡æã®äŸåæ§ãæå°éã§ããã¢ããªã±ãŒã·ã§ã³ïŒGoããã³OCamlã§éçºããã人ã
ããã©ã°ãæ¯ã-åºåã«äŸåããªããã€ããªã1ã€ãããŸãïŒã ã¢ããªã±ãŒã·ã§ã³ãã«ãŒãã«ã«æ¥çããŸãã å¿
èŠãªã ãã§ãæçµçã«ã¯5ã¡ã¬ãã€ãã®ã³ã³ãããååŸã§ããŸãã ãã£ãããã Facebookã¯ãããããµãŒããŒäžã®ã¹ããŒã¹ãç¯çŽããããšèããŠããŸãã ããã¯ãã¹ãŠéåžžã«è¿
éã«éå§ãããéåžžã«è¿
éã«å±éãããŸãããããŠãç§ã¯åœŒããã³ãã¥ããã£ãç²åŸãããšä¿¡ãããã§ãã ãããŸã§ã®ãšãããMirageOSã«ã€ããŠã¯èª°ãç¥ããŸããã
ãŸããïŒé©åãªå Žæããã®ãããªïŒ ã©ã€ãããŠã¹ãšPWA ã WebAssembly ã WebVRã«ã€ããŠã説æããŸãã ã