å 責äºé
æ£çŽã«èšã£ãŠãæåã¯ä»äºãããŠããŸãã-ããã§è£œåã«ã€ããŠæžãããšã§ãã æåã¯ãéåžžã®PRãšãã»ã€ã«éå®ããŠãã³ã³ããŒãã³ãã®äž»èŠãªæ©èœã詳现ã«çŠç¹ãåœãŠãã«èª¬æããããšã«ããŸããã ãã¡ããããã®ãããªã¹ããŒãªãŒã¯ã補åã®ãã¹ãŠã®ããããå®å šã«æããã«ããããšãå¯èœã«ããŸãã äžæ¹ã3çªç®ã®æ®µèœã«ã€ããŠããã³ãããããšã¯ç¢ºãã§ãããããã£ãŠããã®èšäºãèè ã ãã§ãªãèªè ã«ã圹ç«ã€ããã«ããããšæããŸãã ç§ãã¡ãäœããããã§ã¯ãªããã©ã®ããã«ãããã説æããŸãã åœç¶ãç§ãã¡ãçŽé¢ããä»äºããå§ããŸãã
ææŠãã

ããªããè€éãªSCADAã·ã¹ãã ãããã·ã¥ããŒãïŒç³ãèš³ãããŸãããããã®åèªã®ãã·ã¢èªãžã®æ確ãªç¿»èš³ã¯èŠãŠããŸããïŒãã€ã³ã¿ã©ã¯ãã£ããªã¡ããªãã¯ç®¡çã·ã¹ãã ãå®è£ ããWebããã°ã©ããŒããŸãã¯ããªãã®Webãµã€ãã«æèšãæ¿å ¥ããå¿ èŠããããšæ³åããŠãã ãããã¶ã€ã³ã ãã®å Žåãããããçš®é¡ã®ã¹ã±ãŒã«ããã€ã¹ããç¢å°ïŒè±èªã§ã¯ãããã²ãŒãžãšåŒã³ãŸãïŒãæèšããã®ä»ã®ãããã€ã¹ããå Žåã«ãã£ãŠã¯ã€ã³ã¿ã©ã¯ãã£ããªãã®ãè¿œå ããå¿ èŠããããŸãã
äžèŠããã®åé¡ã¯éåžžã«ç°¡åã«è§£æ±ºãããŸãã ããšãã°ã Google Gaugeã«ã¯ç¡æã®ã³ã³ããŒãã³ãããããåãGoogleã«ã¯ãªã¯ãšã¹ãã«å¿ããŠããŸããŸãªãã®ããããŸãã äžæ¹ããããã®ã©ã€ãã©ãªã®ã»ãšãã©ã§ã¯ããªãã·ã§ã³ã®ã»ããã¯éåžžå¶éãããŠããŸãã èªåã§äœããããå¿ èŠããããšããã«ããèªåã§æžããããããšããååãæ©èœãå§ããŸãã
ãããã£ãŠãç§ãã¡ã®ã¿ã¹ã¯ã¯ãæ¢åã®ããã€ã¹ãããã«ã¹ã¿ãã€ãºã§ããã ãã§ãªãããŒãããèªåã§äœæã§ããã·ã¹ãã ãäœæããããšã§ããã ãã®ã·ã¹ãã ã¯ãã°ã©ãã£ãã¯ããªããã£ãïŒå¹ŸäœåŠç圢ç¶ãç¢å°ããè©Šéšç®¡ãããã°ãããªã©ã®ç¹å¥ãªèŠçŽ ïŒãªã©ãããŠã£ãžã§ãããçµã¿ç«ãŠãããšãã§ããããã«ãªã£ãŠããŸãã ããã«ãããã°ã©ããŒãåã ã®ãŠã£ãžã§ããèŠçŽ ã®å€ïŒããšãã°ãããã¹ãããã¯ã¹å ã®æ°åãã¹ã±ãŒã«å ã®ç¢å°ã®äœçœ®ïŒããã€ã³ãã§ããã¹ã¯ãªããèšèªãéçºãããã£ãã®ã§ãã
ãã®ããã2人ã®ããã°ã©ããŒãQA ïŒå°ãåŸã«æ¥ç¶ïŒãšãããã¯ããããŒãžã£ãŒïŒããŠãŒã¶ãŒãäžå¿«ãŸãã¯å°é£ãªãããã匷å¶çã«å šå¡ãäœæ¥ãäžæãããã¹ãŠãããçŽã ïŒã®ããŒã ã¯ã幎æ«å¹Žå§ã®çŽåŸã«éçºãéå§ããŸããã
ãã®åé¡ã¯ããããžã§ã¯ãã®äœæ¥ãéå§ããæç¹ã§ãWindows Formsçšã®é¡äŒŒã®è£œåãæ¢ã«ãã£ããšããäºå®ã«ãã£ãŠä¿é²ãããŸããã ããããWindowsçšã®ãŠã£ãžã§ãããªããžã§ã¯ãã¢ãã«ãšãŠã£ãžã§ãããšãã£ã¿ãæ£åžžã«ãã©ãã°ããŸããã
解決ãã¹ãããã€ãã®æè¡çãªã¿ã¹ã¯ã«çŽé¢ããŸããã
- ã¯ãã¹ãã©ãããã©ãŒã ã ãŠã£ãžã§ããã¯ããã©ãããã©ãŒã ããã¯ãããžãŒã«é¢ä¿ãªããçŽç²ãªHTML + JavaScriptã§åäœããã¯ãã§ããã
- åºæº ãŠã£ãžã§ããã¯ããã©ã¡ãŒã¿ãŒãã«ã¹ã¿ãã€ãºããããã«CSSããµããŒãããå¿ èŠããããŸãã
- ããã©ãŒãã³ã¹ã å€ã®å€æŽäžãç¢å°ã¯ã¹ã ãŒãºã«ç§»åããããã»ããµã®é床ã100ïŒ äœäžãããããããŒããããããããšã¯ãããŸããã
- åæ¹åæ§ ãŠãŒã¶ãŒã¯ãç¢å°ãåŒããŠå€ãèšå®ã§ããå¿ èŠããããŸãïŒãŠã£ãžã§ããã®é床ã¯äœäžããŸããïŒã
- ã·ã³ãã«ã ããã°ã©ããŒã¯ã·ã³ãã«ã§å¿«é©ã§ããå¿ èŠããããŸããWebããŒãžã«ãŠã£ãžã§ãããåã蟌ãã«ã¯ãããã€ãã®æãããªã³ãŒãè¡ã䜿çšããå¿ èŠããããŸãã

æ çµã¿
å§ããåã«ãããŒã«ãéžæããå¿ èŠããããŸããã ç§ãã¡ã¯ãJSã調çããæ¹æ³ãããããªãããšå«ã¶ããªããŒãšinãåŒã¶ããšã«ææŠããŸãããããã§ãç§ã¯èšããŸãã ãçŽç²ãªãJavaScriptã§æžãããšã¯ãããã°ã©ããŒãé床ã«ç±å¿ã§ã泚æãæãããRAMããå€ãããããšãèŠæ±ããã¿ã¹ã¯ã§ãã ã«ã¹ã¿ã éçºã®çµéšãããçŽç²ãªJavaScriptã§ã®RIAã¢ããªã±ãŒã·ã§ã³ã®é«å質ãªéçºã¯ãFlashãŸãã¯Silverlightã䜿çšããŠåçã®å質ã®ã·ã¹ãã ãäœæããããã1.5ã2åæéãããããšèšããŸãïŒå®å¿ããŠãã ããïŒ ãç§ãã¡ã®å Žåãããã®SilverlightããŒã ãåèšç·Žãããããšã«ãªã£ãŠåé¡ãæªåããŸããïŒãŸããMicrosoftã®æŠç¥å®¶ã¯èªåã®éçºè ãå°ãããããšããããŸãïŒã ãããã£ãŠããçŽç²ãªãJSã䜿çšããŠåãã¬ãã«ã«éããã«ã¯ãæ°å¹Žãš2ã3ã®ãããŒãžãããã補åãå¿ èŠã«ãªããŸãã
ãã ããç¶æ³ããæãåºãããã®éåžžã«è¯ãæ¹æ³ãèŠã€ããŸããããšããã§ãJavaScriptã§RIAãäœæãããã¹ãŠã®.NETéçºè ã«ç©æ¥µçã«æšå¥šããŸãã ãã®åºåã¯ãMicrosoftã«ãã£ãŠéçºãããŠããScriptïŒãšåŒã°ãããã¬ãŒã ã¯ãŒã¯ã§ããã CïŒã§ã³ãŒããèšè¿°ããJavaScriptã«å€æã§ããŸãã ããã«ãæ£çŽã«èšããŸããåºåã®JSã³ãŒãã®å質ã¯éåžžã«ãŸãšãã§ãã ãã¡ãããããã«ããé¢æ°ã®ã»ããã¯ããªãå¶éãããŠããŸãããåã ã®ã¡ãœãããJSã§å®å šã«å®è£ ããæ©äŒãç¯çŽãããã®åŸãçµæã®ãã¡ã€ã«ã«å€æŽãå ããã«å€æãããŸãã äžè¬ã«ãCïŒã§èšè¿°ããå Žåã¯ãè©ŠããŠã¿ãããšããå§ãããŸãã
建ç¯
SVG察 ãã£ã³ãã¹

äžæ¹ã§ã¯ãSVGã¯ããšãã£ã¿ãŒã§åã ã®ãªããžã§ã¯ããšããªããã£ãããçµã¿ç«ãŠããããŠã£ãžã§ãããæäœããã®ã«æé©ã§ããã äžæ¹ãSVGã®ããã©ãŒãã³ã¹ãšããŸããŸãªãã©ãŠã¶ã§ã®ãµããŒããæããŸããã ã³ã³ããŒãã³ããéåžžã¯ææ°ããŒãžã§ã³ã®Google Chromeã§ã®ã¿æ©èœãããããªç¶æ³ã«ã¯ãªããããããŸããã§ããã ããã«ãéèŠãªãã€ã³ãã¯ã¢ãã€ã«ããã€ã¹ã®ãµããŒãã§ããïŒiOSãAndroidããã®ä»ã®åç©åã
CanvasãèŠããšãå€ãã®ãã©ãŠã¶ãŒã§ã®ããŒããŠã§ã¢ãµããŒãã¯æãããªãã©ã¹ã§ãããæãããªãã€ãã¹ã¯ã¢ãã¡ãŒã·ã§ã³äžã®ãªããžã§ã¯ãã®è€éãªåæç»ã®å¿ èŠæ§ã§ããïŒããšãã°ãç¢å°ã移åãããšããã®äžã®ãªããžã§ã¯ãã®äžéšãåæç»ããå¿ èŠããããŸãïŒã
å°ãèããåŸãã¬ã³ããªã³ã°ã·ã¹ãã å šäœããSVGãŸãã¯CanvasïŒhelloãCapïŒã®ä»æ§ã«äŸåããªãæœè±¡åã§èšè¿°ããå¿ èŠãããããšã«æ°ä»ããŸããã ãã®åŸãç¹å®ã®ãã¯ãããžã䜿çšããŠãªããžã§ã¯ããã¬ã³ããªã³ã°ããã³åæç»ããããã«ãã¯ã©ã¹ã®å¥åã®ã»ãããå®è£ ãããŸãã æåã®ããŒãžã§ã³ã§ã¯ãå転ããšã«ç»åãåæç»ããã®ã§ã¯ãªããè§åºŠå±æ§ã䜿çšããŠç¢å°ãã²ããæ©èœã«éåžžã«æ¹ããããããSVGã«éå®ããããšã«ããŸããã ããã«ãæšæºã®SVGã¢ãã¡ãŒã·ã§ã³ïŒãŸããããã«ã¯å€§ããªåé¡ããããŸããïŒãšCSSã䜿çšããŠããŠã£ãžã§ããã¹ã¿ã€ã«ãå¶åŸ¡ããããšèããŸããã
ãããã£ãŠããã¹ãŠã®ãŠã£ãžã§ããã¯çŽç²ãªSVGã§æç»ãããŸãã
ãªããžã§ã¯ãã¢ãã«

éçºãã¹ã¯ãªããïŒã§å®è¡ãããããšãèæ ®ãããšãã¢ãã«ã®ç§»æ€ã¯å¹³å¡ãªã³ããŒã¢ã³ãããŒã¹ãã«åæžãããŸããã æ®å¿µãªããã1ã€ã®ã³ãŒãããŒã¹ãé¢ããè©Šã¿ã¯ãã¹ãŠå€±æããŸããã åäœãã¬ã³ããªã³ã°ããã®ä»ã®ããããªããšã«ã¯ããŸãã«ãå€ãã®éãããããŸããã ãã®ãããå€æ°ã®æ¡ä»¶ä»ããã£ã¬ã¯ãã£ããšãã©ã³ããç»å ŽããŸããããã³ãŒããç解ããããšã¯é£ãããªããè¯ãããšããã害ã倧ãããªããŸããã ãã®çµæãDRYååã¯å®³ã«ãªããªãããšã決å®ãããŸããã æéã瀺ããããã«ãç§ãã¡ã¯ãã¹ãŠãæ£ããè¡ããŸãããWebããŒãã®ã³ãŒãã«ã¯ãWindowsããŒããšå®è³ªçã«åäžã®éšåã¯ãããŸããã§ããã
ãã ãã客芳çã«ããããã«ãCïŒè£œåãšScriptïŒè£œåã®éã®ã³ãŒãåââé¢ã®æåäŸããããŸãã
é£èŒ

æåã¯ããŠã£ãžã§ããã®èª¬æãå«ãJSONããŠãŒã¶ãŒïŒã€ãŸãã補åã䜿çšããããã°ã©ããŒïŒã«ãã£ãŠäœæãããããšãèšç»ãããŠããŸãããããã®åŸããã®ã¢ã€ãã¢ããå°ãé¢ããŸããã ãŠã£ãžã§ããããšãã£ã¿ãŒã§ãšã¯ã¹ããŒãããããšããªããžã§ã¯ãã®èª¬æãå«ãJSONãäœæãããŸãã æåã®ããŒãžã§ã³ã§ã¯ãæå°ã®æµæã®ãã¹ãåãã.NET Framework 3.5ã«ä»å±ããæšæºã®JSON-Serializerããã蟌ã¿ãŸããã å®è£ ã®è©³çŽ°ã«ã¯è§ŠããŸãããããŠã£ãžã§ããã®ãªããžã§ã¯ãã¢ãã«ã¯æšæºçãªæ¹æ³ã§JSONã«ã·ãªã¢ã«åãããçµæã¯ããã°ã©ãã«è¿ãããŸãã ãŠã£ãžã§ãããããŒãžã«è¿œå ãããšããããã°ã©ããŒã¯ãã®JSONãã³ã³ã¹ãã©ã¯ã¿ãŒãã©ã¡ãŒã¿ãŒãšããŠïŒJavaScriptã§ïŒæž¡ããŸãã ãŠã£ãžã§ãããäœæãããšããJSONã¯ãšã³ãžã³ã«ãã£ãŠè§£æãããSVGããªããã£ãã®ã»ããããã®äžã«æ§ç¯ãããŸãã
æãåºæ¬çãªæ¬ ç¹ã®1ã€ã¯ãè¿ãå°æ¥ã«æ¢ã«èšç»ãããŠããæŠãã§ãããçµæã®JSONèšè¿°ã«äžå¿ èŠãªæ å ±ãè±å¯ã«ããããšã§ãã ããã¯ãæšæºã®ã·ãªã¢ã«åã¡ã«ããºã ã䜿çšããäžèŠãªããããã£ã®æãå«ããçŸç¶ã®ãŸãŸãã®ãªããžã§ã¯ãã®ã³ããŒãååŸããããã§ãïŒãŸãããã¹ãŠã®ãããªãã¯ãã£ãŒã«ããã·ãªã¢ã«åããå¿ èŠããããŸãïŒã ãã®ãããJSONã®èšè¿°ã¯å·šå€§ã«èŠããå€ãã®ã¹ããŒã¹ãå æããŸãã JSONã€ã³ã¹ãã¯ã¿ãŒãç¹å¥ã«äœæããŠã JSONã«ç¹å¥ãªåœ¢åŒã®èª¬æãããŒãããããšã§ãããã°ã©ããŒããŠã£ãžã§ããã®é 眮ã確èªã§ããããã«ããŸããã
ã¡ãªã¿ã«ããŠã£ãžã§ããã®äœææã«JSONãã©ã¡ãŒã¿ãŒãå€æŽããæ©èœãè¿œå ããŸããããã®ãããäžè¬çãªèª¬æãããã詳现ãå€æŽããããšã¯éåžžã«ç°¡åã§ããããšãã°ãã¹ã±ãŒã«ã®ã¹ã±ãŒã«ãå€æŽããããç¢å°ãé衚瀺ã«ããŸãã
å®è£
ã¢ãã¡ãŒã·ã§ã³

äžè¬çã«ãæåã¯æ£çŽã«CSSã¢ãã¡ãŒã·ã§ã³ã䜿çšããããšããŸãã...æ®å¿µãªãããç§ãã¡ã¯2é±éã§è² ããŠããŸããŸããã ããã¯ããããæãæããç¬éã§ããã1ã€ã®æšæºã§åäœããããªããã©ãŠã¶ããåç©åã«ãã£ãŠçæãããWebéçºã®æ©èœãå®å šã«æããã«ãªããŸãã
ãã®çµæã ã¯ã©ããã©ã€ã»ã³ã¹ãChromeéã©ã€ã»ã³ã¹Internet Explorerã§ããããšãå®å šã«æããã«ãªã£ãåŸãç§ãã¡ã¯JavaScriptã§å¥œã¿ãšé女ã䜿ã£ãŠç¬èªã®ã¢ãã¡ãŒã·ã§ã³ãäœæããŸããã ããã¯ç§ãã¡ã®æã倧ãã解ããŸããã ããšãã°ãå æžéããã®ä»ã®çŸããã«é¢ããã»ãšãã©ãã¹ãŠã®ãªãã·ã§ã³ãå®è£ ã§ããŸããã
ãã¹ãŠãé ããªããšããäž»ãªæžå¿µã¯ç¡é§ã§ããããŠã£ãžã§ããå šäœãç¢å°ã®äœçœ®ã®å°ããªå€åã«åæç»ããã®ãããããšããã«ããã¹ãŠãé£ã³å§ããŸããã çµè«-éåžžãSetIntervalã«ããæé©åããããæåãåæç»ã¯ãCSSã¢ãã¡ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«ã»ãšãã©å£ããŸãããããã¹ãŠã®ãã©ãŠã¶ãŒã§åãããã«æ©èœããŸãã
CSS

ç§ãã¡ã®ã¿ã¹ã¯ã¯ãCSSã§åã ã®ãŠã£ãžã§ããèŠçŽ ã®è²ãæ§æããæ©èœãããã°ã©ãã«æäŸããããšã§ããã äžè¬ã«ãããã§ã¯åé¡ã¯ãããŸããã SVGèŠçŽ ããããã¯ã©ã¹ãããããã®ã¯ã©ã¹ã®èšå®ãæã€CSSããããŸãã 倱æããå¯äžã®ããšã¯ãCSSã§SVGã®åŸé ãé©åã«èšå®ã§ããªãããšã§ããã ä»æ§ã«ãããSVGãªããžã§ã¯ãã®ã°ã©ããŒã·ã§ã³å¡ãã€ã¶ãã䜿çšããã«ã¯ãæåã«åãSVGã§å®£èšçã«èšè¿°ããå¿ èŠããããŸãã
ãã®ãããJavaScriptã§ãªããžã§ã¯ãã®ã°ã©ããŒã·ã§ã³å¡ãã€ã¶ããèšå®ã§ããå¥ã®ã¡ãœãããäœæããå¿ èŠããããŸããã ãã¡ãããããã«ããããã°ã©ããŒã¯ãã®å¡ãã€ã¶ããèšå®ããããšãã§ããŸããããæ®å¿µãªãããåœåã®ç®çã©ãããCSSã®ãã¹ãŠã®ãèšèšãèšå®ãè¡ãããšãã§ããŸããã§ããã
ãã1ã€ã®éåžžã«äžå¿«ãªç¬éã¯ãSVGã«åé圢ã®ã°ã©ããŒã·ã§ã³å¡ãã€ã¶ãããªãããšã§ãã ããã¯ãããšãã°èµ€ããç·ã«æ»ããã«å€åããè²ã®ã¹ã±ãŒã«ã䜿çšããããŒã«ã«ãšã£ãŠãéåžžã«äŸ¿å©ãªå¡ãã€ã¶ãæ¹æ³ã§ãã ãããã£ãŠãWinFormsã®å€ãã®ãŠã£ãžã§ããã§äœ¿çšãããŠããŸããã åéåŸé ç·åœ¢ãè¿äŒŒããå¿ èŠããããŸããããããã¯åžžã«æåãããšã¯éããŸããã
åæ¹åæ§

mousedownãšmouseupã®åŠçã¯ããŠã£ãžã§ãããæ¿å ¥ãããdivã«å¯ŸããŠè¡ãããŸããã ããŠã¹ãã¿ã³ã®ã¯ãªãã¯ã§ããŠãŒã¶ãŒãã¯ãªãã¯ããèŠçŽ ãå€æããããã«å¿ããŠããã«ããžãã¯ãæ§ç¯ããŸããã
ãã®å ŽåããŠãŒã¶ãŒãæ¯èŒçè€éãªå¢çãæã€é åãã¯ãªãã¯ããã¿ã€ãã³ã°ãå€æããã®ã¯ããªãé£ããã¿ã¹ã¯ã§ããã ãéåžžã®ãèšèªã§ã¯ãHitTestã¡ãœãããéåžžããã«äœ¿çšãããŸãããSVGã®JavaScriptã§ã¯ãæ®å¿µãªããããã§ã¯ãããŸããã
é åã®å¢çã¯éåžžãããªãŽã³ã§ã¯ãªãããžãšæ²ç·ã«ãã£ãŠèšå®ããããããè§åºŠã®å ç®ãªã©ã®åçŽãªã¢ã«ãŽãªãºã ãé©çšããããšã¯ã§ããŸããã§ããã ã»ãšãã©ã®ãªããžã§ã¯ãã®ã¯ãªãã¯ããã¹ãããã«ã¯ãããŠã³ãã£ã³ã°ããã¯ã¹ãéåžžã«é©ããŠããŸãããäžæ¥æãªã©ã®å€§ãããŠèãäžæ¥æ圢ã®èŠçŽ ã®åœ¢åŒã«ã¯äŸå€ããããŸãã
æçµçã«ã¯ãåã³ã³ããŒãã³ãã®HitTextãåå¥ã«èšè¿°ããåæãžãªã¡ããªãèšæ¶ãããªããžã§ã¯ããããåçŽãªããªããã£ãã§è¿äŒŒããããšã«ããŸããã
ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¿ããŠãŠã£ãžã§ãããåæç»ãå§ãããšãã«ãå¥ã®å°ããªã¿ã¹ã¯ãçºçããŸããã ããšãã°ããŠãŒã¶ãŒã¯ç¢å°ããã€ããã§ããéåžžã«é«éã§ãããå§ããŸãã åœç¶ãåæç»ããããšããããããããŸãã ãã¯ãã«SVGã䜿çšããå©ç¹ã¯ã移åãããªããžã§ã¯ãã®ã¿ãåæç»ïŒããã³ã»ãšãã©ã®å Žåã¯å転ïŒããä»ã®ãªããžã§ã¯ãã«ã¯è§Šããªãããšã§ããCanvasã䜿çšãããšãç¢å°ã®äžã«ãªããžã§ã¯ããåæç»ããå¿ èŠããããŸãã äžæ¹ã§ãæã ããªãã®éãæžãçŽããªããã°ãªããªãã£ãã
ãã¡ãããæåã¯ãã¹ãŠãéåžžã«é ãã£ãã®ã§ãããæ°æéã®æé©åã®åŸãã¡ããã©åãå§ããŸããã ãããŠããŠãŒã¶ãŒããŠã£ãžã§ããã«è€éãªã¹ã¯ãªãããè¿œå ã§ããããã«ãªããçŽæ¥ç§»åããç¢å°ã ãã§ãªããã¹ã¯ãªããã«ãã£ãŠããã«é¢é£ããä»ã®ã³ã³ããŒãã³ãã®æãåæç»ããããã«ãªããŸããã
ãšããã§ãèå³æ·±ãã¡ã¢ïŒãã¡ã€ã«ã·ã¹ãã ããèªã¿èŸŒãŸããããŒãžã®JavaScriptã®ããŒã«ã«ããŒãžã§ã³ã¯ãåããã©ãŠã¶ãŒã®åãããŒãžäžã§ã¯ãªãããµãŒããŒããèªã¿èŸŒãŸããããŒãžãããã¯ããã«é ãåäœããŸãã 誰ãçç±ãç¥ã£ãŠããã®ããã³ã¡ã³ãã§å ±æããŠãã ããã
ã¿ããããã€ã¹ã®ããžã§ã¹ãã£ãã®ãµããŒããå®è£ ããã«ã¯ãå®å šã«ç°ãªãã€ãã³ããããšãã°ãã¿ããã¹ã¿ãŒããã¿ãããšã³ããã¿ããã ãŒããªã©ãåŠçããå¿ èŠããããŸãã ãããã£ãŠããã®ãµããŒãã¯åå¥ã«äœæããå¿ èŠããããŸããã
ã¹ã¯ãªãããšå éšããžãã¯

ããã«ãã¹ã¯ãªããã䜿çšããŠãèŠçŽ ã®ãµã€ãºããã€ã³ããããã衚瀺ãããããã¹ãããã©ãŒããããããã§ããŸãã ã¹ã¯ãªããã®ååšã«ãããåã ã®ãªããžã§ã¯ããšãã®å éšã®ããªããã£ãéã®çžäºäœçšãèšè¿°ãããã»ãšãã©ããããè€éãã®ãŠã£ãžã§ãããäœæã§ããŸããããã®ã¿ã¹ã¯ãã補åã«ãŠã£ãžã§ãããåã蟌ãããã°ã©ããŒïŒã«ãã»ã«åãããïŒã®è©ã«è»¢éããããšã¯ãããŸããã
æåã¯ãå éšã¹ã¯ãªãããJavaScriptæ§æã«å®å šã«å€æãããšããã¢ã€ãã¢ããããŸããã ããããWinFormsãŠã£ãžã§ãããã·ã¹ãã ã®æ°ããããŒãžã§ã³ã§çªç¶æ©èœããªããªããšç解ã§ããªãå€ããŠãŒã¶ãŒã«ã€ããŠèããŠãå éšã¹ã¯ãªããããã®ãŸãŸã«ããŠããšã¯ã¹ããŒãæã«ã¹ã¯ãªãããJSã«å€æããããšã«ããŸããã ãããããã®è±éçãªã€ãã·ã¢ããã®éã¯ãèããããªãæ³åãè¶ ãããã¹ãŠã®æ¡ä»¶ãäžåãããªãªãŒã¹ãããªãé ãããŸããã
å éšã¹ã¯ãªããã®ç¡æ¡ä»¶ã®èœåã«ãããããããççŽãªçæããããŸãã
ãŸããåé¡ã¯ããªããžã§ã¯ãïŒããšãã°ãæ¥ä»ïŒãæååã«æé»çã«ãã£ã¹ãããããšã«ãããŸãã å®éã«ã¯ãJavaScriptãš.NETã§ã¯æ¥ä»ãç°ãªãæ¹æ³ã§æååã«ãã£ã¹ãããããããWindowsãšHTML5ã®ããŒãžã§ã³ã«ããªãã®éäºææ§ãè¿œå ãããŸãã
第äºã«ãæåã¯è€éãªã¹ã¯ãªãããªã³ã¯ãååšããå ŽåããŠã£ãžã§ããã®ããã©ãŒãã³ã¹ãæ¥æ¿ã«äœäžããŸããã ããããç§ãã¡ã¯å¿ã倱ããŸããã§ããã çŽ1é±éåŸãè€éãªã¹ã¯ãªããã¯ã¢ãã¡ãŒã·ã§ã³ã«äºå®äžåœ±é¿ãäžããªããªããIEã§ãªããžã§ã¯ãã®éåžžã«é«éãªãã©ãã°ã¢ã³ãããããã§ã®ã¿ã¹ããŒããŠã³ãé¡èã«ãªããŸããã ãã¹ãŠãã¯ãã ã§å®ç§ã«æ©èœããŸããã ããã§ãããããšã«ããŸããã
å¥ã®å°ããªåé¡

ããã¹ãã®ãµã€ãºãèšç®ã§ããªãã SVGã§ã¯ãä»ã®å€ãã®ã°ã©ãã£ãã¯ã·ã¹ãã ãšåæ§ã«ãã¬ã³ããªã³ã°åŸã«ããã¹ããã©ã®ãµã€ãºã«ãªãããäºåã«æ±ºå®ããæ¹æ³ã¯ãããŸããã WinFormsã®ããŒãžã§ã³ã¯ãã®GDIé¢æ°ã«å®å šã«äŸåããŠããããããã®å®è£ ã®ããã«ããªãããŒãªã¹ããŒã ãèæ¡ããå¿ èŠããããŸããã ããã§ããã¹ãŠã®ããã¹ãã2åæç»ãããŸãã äžåºŠ-寞æ³ãèŠã€ããããã«ããããŠéåžžã®äœçœ®æ±ºãã§äºåºŠç®ã
iOSããã€ã¹ã§ã®RGBAã®åé¡ã éçºã®éäžã§ãç°ãªãã¢ãã«ã®ããã€ã¹ã§ãŠã£ãžã§ããããã¹ããããšãiPhone 4ãšiPadã§ã¯å¡ãã€ã¶ããå®å šã«é»ã§ããããšãããããŸããã ãã¡ããããã®ããã®ãŠã£ãžã§ããã¯éåžžã«ãŽã·ãã¯ã§é¢çœãããã«èŠããŸããããããã§ãå®å šã«ééã£ãŠããŸãã å°ã調ã¹ãçµæãè²ã決å®ããããã«äœ¿çšãããRGBA圢åŒã¯iOS4 +ã®Safariã§ã¯ãµããŒããããŠããªãããšã«æ°ä»ããŸããïŒé©ãã¹ãããšã«ããã¹ãŠãiPhone 3Gã§æ©èœããŸããïŒã ãã®çµæãRGBAå€ã䜿çšå Žæã«é¢ä¿ãªã2ã€ã®åå¥ã®å€ïŒè²ãšéæ床ïŒã«åå²ããŸããã å©ããã
çµè«
ãããŒã±ãã£ã³ã°ã®ã§ããããã®èšäºã®åããé¿ããæè¡çãªèŠ³ç¹ããå€ããå°ãªããæçšã«ããããšç§ã¯ãã§ã«èšã£ãã ãããã£ãŠãJavaScriptã§SVGãæäœããéã«åœ¹ç«ã€ããã€ãã®çµè«ã瀺ããŸããçµè«1.ææ°ã®ãã©ãŠã¶ã®ã»ãšãã©ã¯ãSVGã§éåžžã®æäœããµããŒãããèŠèŠçã«åãçµæããããããŸãã
çµè«2. ã¹ã¯ãªããïŒãã¬ãŒã ã¯ãŒã¯ã¯ãCïŒã䜿çšããŠJavaScriptãšHTML5ã®RIAãéçºã§ããããã«ããã®ä»äºãããŸãè¡ããŸãã
çµè«3.æšæºã®CSSã¢ãã¡ãŒã·ã§ã³ã¯ãŸã çã§ãã©ãŠã¶ãŒã«äŸåããŠãããããäœæ¥ã«äœ¿çšã§ããŸããã SVGã®äžéšã®åæç»ã«åºã¥ããæåãã¢ãã¡ãŒã·ã§ã³ã¯ãã©ãã§ãåãããã«æ©èœããæé©åãæå°éã«æããŠããŸã£ããé ããªããŸããïŒIEã§ãïŒã
çµè«4. CSSããéåžžãSVGèŠçŽ ã®ã¹ã¿ã€ã«ãèšå®ã§ããŸãã ã°ã©ããŒã·ã§ã³å¡ãã€ã¶ããæ§æããã«ã¯ãæåã«åãSVGã§å®£èšããå¿ èŠããããããCSSã ããè¡ãããšã¯ã§ããŸããã æ®å¿µãªãããåéé³é ã¯ãµããŒããããŠããŸããã
çµè«5. iOSããã€ã¹ïŒæãå€ããã®ãé€ãïŒã¯ãRGBAã«ã©ãŒããµããŒãããŠããŸããã ãããã£ãŠãã¹ã¿ã€ã«ãèšå®ãããšãã¯ãRGBãšã¢ã«ãã¡ãåå¥ã«æå®ããå¿ èŠããããŸãã
æåŸã®çµè«ã ç§ãã¡èªèº«ã奜ããªã¯ãŒã«ãªè£œåãäœããŸãã:)ã
ãã¡ããã ããã§ç§ãã¡ã«äœãèµ·ãã£ãã®ããèŠãããšãã§ããŸã ã