2005幎2æ18æ¥ã®Jesse James Garrettã®èšäºãWebã¢ããªã±ãŒã·ã§ã³éçºãžã®æ°ããã¢ãããŒããã§AJAXãæåã«èšåãããŠãã4幎ãçµéããŸããã ãã®éããããããã¹ãŠã®Webéçºè
ããã®ãã¯ãããžãŒãå°ãªããšã1åã¯è©Šããããšããããéåžžã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã¯ãåçãªãã©ãŒã æ€èšŒãæ€çŽ¢ããŒã§ã®ã¯ãšãªã®èªåè£å®ããããã¢ããã³ã³ããã¹ãã¡ãã¥ãŒããã®ä»ã®æè¿ã®çªçºçãªWebè³éã«ããã€ã³ã¿ã©ã¯ãã£ããªåã³ãããã³ææ°ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã«é©ããããªããªããŸãããã®ãããªã¹ã¯ãªããã®éçºã¯ãããã°ã©ããŒã«ãšã£ãŠæ¡éãã«éããå¹ççã§ãå¿«é©ã§ãã ãããããªããããŸã§ã®ãšãããéçºäžã®Webãµã€ãã®å€§éšåããã³ã³ãã³ããããŠã³ããŒãããããã®æšæºã¢ãã«ã«æºæ ããŠãããAJAXãã©ãããã©ãŒã ã«å®å
šã«åãæ¿ããŠããªãã®ã§ããããïŒ ã³ã³ãã³ããããã¯ãJavaScriptãã¡ã€ã«ãCSSãããã³ã»ãšãã©ã®HTMLããŒã¯ã¢ããã®ã¿ãæŽæ°ããå¿
èŠãããå Žåãå
éšãªã³ã¯ãã¯ãªãã¯ãããã³ã«ããŒãžå
šäœããªããŒãããã®ã¯ãªãã§ããïŒ
ããã€ãã®çç±ããããŸãã
-AJAXãã©ãŠã¶ãŒã§ãªãœãŒã¹ãéããã³ã«ããŠãŒã¶ãŒã¯ãéå§ç¹ãããäœæ¥ãéå§ããŸãã ã»ãšãã©ã®å Žåããã®ãããªã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã¯ãã©ãŠã¶ã®ã¢ãã¬ã¹ããŒã«è¡šç€ºãããŸãã
-åçã«ããŒããããã³ã³ãã³ãã¯æ€çŽ¢ããããã«ãã£ãŠåŠçãããŸãã
-éåæWebã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ãéçã¢ãã«ã䜿çšãããããã¯ããã«è€éã§æéãããããŸã
-AJAXã¢ããªã±ãŒã·ã§ã³ãšæšæºãã©ãŠã¶ããŒã«ã®çµ±åã®æ¬ åŠã ãã©ãŠã¶ã®ãã¿ã³ã䜿çšããŠãã®ãããªãªãœãŒã¹ãããã²ãŒãããããåçã«ããŒãããããµã€ãããŒãžãããã¯ããŒã¯ããããæ°ãããã©ãŠã¶ã¿ãã§åçã³ã³ãã³ããžã®ãªã³ã¯ãéãããããããšã¯ã§ããŸãã
-ãã·ãã¯ãã¯ã©ã€ã¢ã³ãã䜿çšãããšããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã®ããã»ããµã®è² è·ãšå¿
èŠãªRAMã倧å¹
ã«å¢å ããŸãã
-ãŠãŒã¶ãŒã®ãã©ãŠã¶ã§JavaScriptãç¡å¹ã«ãªã£ãŠããå ŽåãAJAXã¢ããªã±ãŒã·ã§ã³ã¯å€±æããŸã
äžèšã®åé¡ãå
æããã«ã¯ããŸã£ããæ°ããã³ã³ã»ãããå¿
èŠã«ãªããŸããããã
ActionWebãšåŒã³
ãŸã ã åºæ¬çã«ãActionWebïŒåœæã®AJAXãªã©ïŒã¯æ°ãããã¯ãããžãŒãæäŸãããæ¢ç¥ã®ãã¯ãããžãŒã®äœ¿çšåçãå€æŽããã ãã§ãã æŠå¿µã®äž»ãªè«æãæåºããŸãã
1.åãããŒã¿ãç¹å¥ãªå¿
èŠãªãã«è€æ°åããŒããããããšã¯ãããŸãããããŒãžå
šäœã®ãªããŒãã¯äŸå€çãªå Žåã«ã®ã¿çºçããŸã
2.ãŠãŒã¶ãŒãšæ€çŽ¢ãšã³ãžã³ã®èŠ³ç¹ããèŠãActionWebã¢ããªã±ãŒã·ã§ã³ã¯ãéåžžã®Webãµã€ããšå€ãããŸãã
3.ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåã®ãã¬ãŒã³ããŒã·ã§ã³å±€ãšããžãã¹ããžãã¯å±€ã®åé¢
4.ããžãã¹ããžãã¯å±€ã¯ãã¬ãŒã³ããŒã·ã§ã³å±€ããèŠããŸãããéçºè
ã¯ãã¬ãŒã³ããŒã·ã§ã³ã³ã³ããŒãã³ãã®ã¿ããããžã§ã¯ããããããžã§ã¯ãã«å€æŽããŸã
äžèšã§å®çŸ©ããAJAXã¢ããªã±ãŒã·ã§ã³ã®åé¡ãšã
nikitaeremin.com Webãµã€ããäœæãããšãã«å®è£
ããããActionWebã³ã³ã»ããã®äœ¿çšãèæ
®ã«å
¥ããããããã解決ããã¡ã«ããºã ãèããŠã¿ãŸãããã
åé¡ïŒãŠãŒã¶ãŒããéå§ç¹ãããäœæ¥ãéå§ãããã³ã«ãAJAXãªãœãŒã¹ã®çŸåšã®ç¶æ
ããã©ãŠã¶ãŒã®ã¢ãã¬ã¹ããŒã«è¡šç€ºãããŸããã
解決çïŒãã©ãŠã¶ãŒã®ã¢ãã¬ã¹ããŒã®URLãå€æŽãããšãããŒãžããªããŒããããŸãã ãã®èŠåã«ã¯1ã€ã ãäŸå€ããããŸããåèµ·åããã«ãã¢ãã¬ã¹ããŒïŒlocation.hashïŒã®ããã·ã¥ãå€æŽã§ããŸããã€ãŸããïŒèšå·ãšãã®åŸãã«ãããã¹ãŠã®èšå·ãåé€ããŸãã ã¢ãã¬ã¹ããŒã«ã¯
nikitaeremin.com/#projects/persik/ã®ãããªãã®ããããActionWebã¢ããªã±ãŒã·ã§ã³ã¯åæåæã«ããã·ã¥ãæœåºããããã«å¿ããŠç¶æ
ã圢æããŸãã
åé¡ïŒåçã«ããŒããããã³ã³ãã³ããæ€çŽ¢ãšã³ãžã³ã§åŠçãããªã
解決çïŒ WebãªãœãŒã¹ãåç
§ãããšããæ€çŽ¢ãããã¯JavaScriptãåãå
¥ããŸããã ããŒãžã®ãœãŒã¹HTMLã³ãŒããã¹ãã£ã³ãããšãå
éšãªã³ã¯ã«ç§»åãããããã®ã¢ãã¬ã¹
nikitaeremin.com/#projects/persik/ã¯ã¡ã€ã³ããŒãžãžã®ç§»è¡ãæå³ããŸãã 解決çã¯ããªã³ã¯ããœãŒã¹ã³ãŒãã«ãã®ãŸãŸæ®ããå
éšãªã³ã¯ãšå€éšãªã³ã¯ã«åå²ããããšã§ãã ããšãã°ããªã³ã¯ã«cssã¯ã©ã¹ãè¿œå ããããšã§åå²ã§ããŸãã ActionWebã¢ããªã±ãŒã·ã§ã³ãåæåããããšãã€ãã³ããã³ãã©ãŒãæå®ãããã¯ã©ã¹ã®ãªã³ã¯ã«ã¢ã¿ãããããŸããããã«ãããã³ã³ãã³ããåçã«èªã¿èŸŒãŸãããã©ãŠã¶ãŒã®ã¢ãã¬ã¹ããŒã®ããã·ã¥ãå€æŽãããŸãã ãããããŠãŒã¶ãŒ
ã ActionWebã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã§ã€ã³ããã¯ã¹åãããæ€çŽ¢ãªã³ã¯
nikitaeremin.com/projects/persik/ãã¯ãªãã¯ãããšã©ããªããŸããïŒ
nikitaeremin.com/#projects/persik/ãžã®ãªãã€ã¬ã¯ãã察å¿ããããŒãžã«é
眮ãããã¡ã€ã³ããŒãžãžã®é·ç§»ãçºçããã¢ããªã±ãŒã·ã§ã³ã¯ã¢ãã¬ã¹ããŒã®ããã·ã¥ã«åºã¥ããŠãã®ç¶æ
ã圢æããŸãã
åé¡ïŒ AJAXã¢ããªã±ãŒã·ã§ã³ãšæšæºãã©ãŠã¶ããŒã«ã®çµ±åã®æ¬ åŠ
解決çïŒã¢ãã¬ã¹ããŒãå€æŽããäžèšã®ææ³ã䜿çšãããšãããã¯ããŒã¯ã«è¿œå ããåé¡ã¯èªåçã«è§£æ±ºãããŸãã æ°ãããã©ãŠã¶ã¿ãã§ã¢ããªã±ãŒã·ã§ã³ã®å
éšAJAXãªã³ã¯ãéãããšãã§ããªããšããåé¡ã解決ãããŸãã ActionWebã¢ããªã±ãŒã·ã§ã³ã§ãå
éšãªã³ã¯ãå³ã¯ãªãã¯ãããŠãŒã¶ãŒãéåžžã®ãªã³ã¯ãã¯ãªãã¯ãããšããã©ãŠã¶ãŒã¯éçãªãµã€ãã§æäœããã®ãšåãããã«åäœããŸãã ãã©ãŠã¶ãŒæ©èœãååŸã«åŸ©å
ããã«ã¯ã2ã€ã®æ¹æ³ããããŸãã æåã®æ¹æ³ã¯ããããã®ç®çã®ããã ãã«èšè¿°ãããjQueryã®å±¥æŽãã©ã°ã€ã³ã䜿çšããããšã§ããããã®ã¹ã¯ãªããã¯ãã©ãŠã¶éã®äºææ§ããªããäž»ã«Internet Explorerã§æ£ããåäœããŸããã 2çªç®ã®æ¹æ³ã¯ãã¢ãã¬ã¹ããŒãžã®ãã¹ãŠã®å€æŽãJavaScripté
åã«ä¿åããç°¡åãªæäœã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ããŒãžã«çŽæ¥æ»ããã¿ã³ãšé²ããã¿ã³ãå®è£
ããããšã§ãã
åé¡ïŒ AJAXã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ãéçã¢ãã«ã䜿çšãããããæ¡éãã«è€éã§ã
解決çïŒã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåã®ãã¬ãŒã³ããŒã·ã§ã³å±€ãšããžãã¯å±€ã®åé¢ã ãã®ã¢ãããŒãã§ã¯ããã¬ãŒã³ããŒã·ã§ã³ã³ã³ããŒãã³ãã®ã¿ããããžã§ã¯ãããšã«å€åãããµãŒããŒãšã®å¯Ÿè©±ãæ
å ±ã®åä¿¡ããã³åŠçã®ãã¹ãŠã®æ©èœã¯ãšã³ãžã³å
ã§ãä¿è·ããããååãªã¬ãã«ã®æœè±¡åãæäŸããéçºè
ã¯ãããã«ã€ããŠèããå¿
èŠã¯ãããŸããã ããŒããããã³ã³ãã³ãããŒãžã®ãã£ãã·ã¥ãå
éšãªãœãŒã¹ãªã³ã¯ã®ã¯ã©ã¹åãªã©ãã¢ããªã±ãŒã·ã§ã³ã®ããžãã¹ã¢ãã«ã«é¢é£ããããã€ãã®æ©èœ åæåäžã«ãšã³ãžã³ã«æž¡ãããJSONãªããžã§ã¯ãã§æ§æã§ããŸãã
åé¡ïŒ RIAã䜿çšãããšãã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãŒã®ããã»ããµã®è² è·ã倧å¹
ã«å¢å ãã
解決çïŒ JavaScriptã䜿çšããå Žåãããã»ããµã®è² è·ã¯äž»ã«ãã¬ãŒã³ããŒã·ã§ã³ã¬ã€ã€ãŒã®é£œåã«ãããã®ã§ããç¹ã«ãè€æ°ã®ã¢ãã¡ãŒã·ã§ã³æ©èœãçžäºã«åæã«ããŸãã¯éããžãã¯ã®ã¬ã€ã€ãŒã®æ©èœã§åæã«å®è¡ãããå Žåãè² è·ãéå°ãªå Žåããã©ãŠã¶ãŒã¯åçŽã«ããã³ã°ãããŸãã åºåã¯ãã¢ããªã±ãŒã·ã§ã³ã®éèŠãªã»ã¯ã·ã§ã³ã§ã®ãã§ãŒã³é¢æ°åŒã³åºãã®å®è£
ã§ãã ãã§ãŒã³ã³ãŒã«ãšã¯ãè€æ°ã®æ©èœãåæã«å®è¡ã§ããªãããã«ããŠããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã«éå°ãªè² è·ããããã®ãé²ãããšã§ãã ãã ãããã®ã¡ã«ããºã ãJavaScriptã«å®è£
ããã«ã¯ãåã«é¢æ°åŒã³åºãã1ã€äžã«çœ®ãã ãã§ã¯ååã§ã¯ãããŸããããã®ãããªé 次åŒã³åºããªã¹ãã«å°ãªããšã1ã€ã®ã¢ãã¡ãŒã·ã§ã³é¢æ°ãããå Žåã¯æ©èœããŸããã JavaScriptã€ã³ã¿ãŒããªã¿ãŒãæéé
延æäœïŒã€ãŸããã¿ã€ã ã¢ãŠãïŒã«ééããå ŽåãJavaScriptã€ã³ã¿ãŒããªã¿ãŒã¯ãã®å®äºãåŸ
ã€ããšãæ¢ãããã³ãŒããããã«é²ããŸãã jQueryã§èšè¿°ãããç°¡åãªäŸã次ã«ç€ºããŸãã ã¢ãã¡ãŒã·ã§ã³é¢æ°ãšããžãã¯é¢æ°ããããã¢ãã¡ãŒã·ã§ã³é¢æ°ãäœæ¥ãå®äºããåŸã«ã®ã¿ããžãã¯é¢æ°ãå®è¡ããå¿
èŠããããšããŸãã
é¢æ°ã¢ãã¡ãŒã·ã§ã³ïŒïŒ{
$ïŒ "ïŒelem"ïŒãanimateïŒ{"width"ïŒ "300px"}ã200ã "linear"ãfunctionïŒïŒ{
ã¢ã©ãŒãïŒãã¢ãã¡ãŒã·ã§ã³ãæåã«ïŒãïŒ;
}ïŒ
}
é¢æ°ããžãã¯ïŒïŒ{
ã¢ã©ãŒãïŒãããžãã¯ãã¡ãŒã¹ãïŒãïŒ;
}
ã¢ãã¡ãŒã·ã§ã³ïŒïŒ;
ããžãã¯ïŒïŒ;
äžèšã®ã³ãŒããå®è¡ãããšãæåã®ã¢ã©ãŒãã¯ãããžãã¯ãæåã«ïŒãã«ãªããŸãã ã¢ãã¡ãŒã·ã§ã³ã®å®äºãé
ããŸãã ãããŠãç®æšãéæããã«ã¯ãã³ãŒãã次ã®ããã«æžãæããå¿
èŠããããŸãã
é¢æ°ã¢ãã¡ãŒã·ã§ã³ïŒïŒ{
$ïŒ "ïŒelem"ïŒãanimateïŒ{"width"ïŒ "300px"}ã200ã "linear"ãfunctionïŒïŒ{
ã¢ã©ãŒãïŒãã¢ãã¡ãŒã·ã§ã³ãæåã«ïŒãïŒ;
ããžãã¯ïŒïŒ;
}ïŒ
}
é¢æ°ããžãã¯ïŒïŒ{
ã¢ã©ãŒãïŒãããžãã¯ãã¡ãŒã¹ãïŒãïŒ;
}
ã¢ãã¡ãŒã·ã§ã³ïŒïŒ;
ãããããã®ã¢ãããŒãã§ã¯ãActionWebã³ã³ã»ããã®4çªç®ã®è«æã¯æºããããŸããã Persikãšã³ãžã³ã§ããžãã¹ããžãã¯é¢æ°ã®å¿ååŒã³åºããå®è£
ããã«ã¯ãããžãã¹ã¢ãã«ã®ã³ã³ããŒãã³ããšãã¬ãŒã³ããŒã·ã§ã³ã¬ã€ã€ãŒãæ¥ç¶ãããã§ãŒã³ã¡ãœãããèšè¿°ããå¿
èŠããããŸããã ããžãã¹ããžãã¯ã¬ã€ã€ãŒã§ã®ãã§ãŒã³ã¡ãœããã®äœ¿çšã¯æ¬¡ã®ãšããã§ãã
engine.chainïŒfunc1ã[vars1]ïŒãchainïŒfunc2ã[vars2]ïŒãchainïŒfunc3ã[vars3]ïŒãstartïŒïŒ;
ããã«ããã§ãŒã³ã®åæ©èœã§ã¯ãåºå£ç¹ãæ瀺çã«å®çŸ©ããå¿
èŠããããŸãã
é¢æ°ã¢ãã¡ãŒã·ã§ã³ïŒïŒ{
$ïŒ "ïŒelem"ïŒãanimateïŒ{"width"ïŒ "300px"}ã200ã "linear"ãfunctionïŒïŒ{
ã¢ã©ãŒãïŒãã¢ãã¡ãŒã·ã§ã³ãæåã«ïŒãïŒ;
animation.nextïŒïŒ;
}ïŒ
}
é¢æ°ããžãã¯ïŒïŒ{
ã¢ã©ãŒãïŒãããžãã¯ãã¡ãŒã¹ãïŒãïŒ;
logic.nextïŒïŒ;
}
persik.chainïŒã¢ãã¡ãŒã·ã§ã³ïŒ.chainïŒããžãã¯ïŒ.startïŒïŒ;
ãã®äŸãããããããã«ããã§ãŒã³é¢æ°ã¯ãã©ãããåŒã³åºãããã®ããå¶åŸ¡ã転éããé¢æ°ãç¥ããŸããã ãã®ã¢ãããŒãã«ã¯2ã€ã®äž»ãªå©ç¹ããããŸãã
1.éçºè
ã¯ãåã®ãã§ãŒã³é¢æ°ãå®äºããåŸã«ã®ã¿ãã§ãŒã³é¢æ°ã®å®è¡ãéå§ããããšç¢ºä¿¡ããŠããŸãã åæã«ã圌ã¯é¢æ°ã®å®è¡ã®äžè²«æ§ã決å®ããã¢ãã¡ãŒã·ã§ã³é¢æ°ã®ã©ãã«ã§ã次ã®ïŒïŒåŒã³åºããé
眮ã§ããŸãã
2.å¿åé¢æ°åŒã³åºãã®ååãå®è£
ããããã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ããããžãã¹ã¢ãã«ãæ倧éã«åé¢ããŸãã
åé¡ïŒ JavaScriptããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§ç¡å¹ã«ãªã£ãŠããå ŽåãAJAXã¢ããªã±ãŒã·ã§ã³ã¯å€±æããŸã
解決çïŒæ¬è³ªçã«ãActionWebãªãœãŒã¹ãšã¯äœã§ããïŒ ããã¯ãéåæããŒã¿èªã¿èŸŒã¿ã¡ãœããã䜿çšããã€ã³ã¿ã©ã¯ãã£ããªWebã¢ããªã±ãŒã·ã§ã³ã§ããããã®ç¶æ
ã¯ã»ãšãã©ã®å ŽåãURLã«ãã£ãŠäžæã«æ±ºå®ãããŸãã JavaScriptããªãã«ãããšäœãå€ãããŸããïŒ ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã¯ã¯ã©ã€ã¢ã³ãåŽã§åœ¢æããããããŒã¿ãéåæçã«ããŠã³ããŒãããæ©èœãå©çšã§ããªããªããã¢ãã¡ãŒã·ã§ã³æ©èœã¯å®è¡ãããŸããã ãã®å ŽåããµãŒããŒåŽã§ã¢ããªã±ãŒã·ã§ã³ç¶æ
ãäœæããã¢ãã¡ãŒã·ã§ã³é¢æ°ãããªããžã§ã¯ãã®æçµç¶æ
ïŒãªãŒãã³/ã¯ããŒãºïŒãæœåºããããããåå¥ã®ã¯ã©ã¹ã§éžæããã¯ã©ã¹ã䜿çšããŠDOMãªããžã§ã¯ãã®ç¶æ
ã圢æã§ããŸãïŒæãåçŽãªäŸã¯çŸåšã®ã¡ãã¥ãŒé
ç®ã匷調衚瀺ããŸãïŒãã³ã³ãã³ãã®éåæèªã¿èŸŒã¿åŸæ¥ã®ãã®ã«çœ®ãæãããããã®çµæãã¢ãŒããã¯ãã£ã®èŠ³ç¹ããæãäžè¬çãªWebãªãœãŒã¹ãååŸããŸãã ãµãŒããŒã§ã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§jsãæå¹ã«ãªã£ãŠãããã©ãããå€æããå¿
èŠãããããã®åé¡ã«åºã¥ããŠããµã€ãã®ActionWebããŒãžã§ã³ãŸãã¯éåžžã®éçããŒãžã§ã³ã®ããããã決å®ããŸãã ãã¡ããããã®ã¢ãããŒãã®å®è£
ã¯ãã¹ãŠã®AJAXã¢ããªã±ãŒã·ã§ã³ã§å¯èœãšããããã§ã¯ãªããéçããŒãžã§ã³ã§ã¯ã³ã³ãã³ããããŒãããã³è¡šç€ºããããã®æ©èœã®ã¿ã䜿çšå¯èœã«ãªããŸãããæçµçã«éçºè
ã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã®èšå®ã«é¢ä¿ãªãããŠãŒã¶ãŒãæå°éã®Webãµã€ãæ©èœã確å®ã«åãåãããšãä¿èšŒããŸãã
ãã®çµæãäœæããããªãœãŒã¹ã¯æ€çŽ¢ããããã«ãã£ãŠèªèããããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§JavaScriptããªãã«ãªã£ãŠãæ©èœã倱ãããããšã¯ãããŸãããAJAXã«ããé«éã«åäœããJavaScriptã¢ãã¡ãŒã·ã§ã³ã䜿çšããããšã§ãã¬ãŒã³ããŒã·ã§ã³ã®é
åãé«ããªããŸãã