å¼ç¤¾ã¨ã³ã¸ãã¢è·ã®æ±äººã«ãæ¥æ¬ããä¸åã«å¿åãç¡ã件
å æ¥ãå¼ç¤¾CareerLink Vietnamã«ã¦ãã¨ã³ã¸ãã¢è·ã®æ°è¦æ±äººãå§ãã¾ãããå¤åå°ã¯ãããã ã»ãã¼ããã³å¸ã
東南アジア各国を飛び回るウェブ系エンジニアWanted!!
[5/9 03:10 追è¨] Wantedlyã®URLãå¤ãå¿åãã§ããªãã£ãããã§ããæ°URLã«ç½®ãæãã¾ããã
æ¥æ¬äººã«ã¿ã¼ã²ãããçµããæºãæãã¦Wantedlyã«æ²è¼ããã®ã ããã©ãå¿åããªãã
å人çã«ã¯ãåå½ãããã ã§éçºã«å¾äºããã¨ããã®ã¯ããªããªãé
åçãªå´åç°å¢ã ã¨æãã®ã ããã©ãã©ãããããããæ¥æ¬ããä¸åã«å¿åããªãã
ãªãå¿åãæ¯ãããªãã®ããçç±ãèãã¦ã¿ãããå´åç°å¢ã«é åãç¡ãããã§ã¯ãªãã¨æãããã ããããªãæ±åã¢ã¸ã¢å¤åã¨ããã®ãè¥å¹²ãã¼ãã«ãé«ãæããããã®ãããããªãã
ããã§ãæ°ãåãç´ãã¦ãç¾å°ãããã ã®é°å²æ°ãä¼ãããããæ¡ç¨ã«é¢ããè£è¶³äºé çããæ¬ã¨ã³ããªã«ã¾ã¨ãã¦ã¿ããã¨ã«ããã
CareerLink Vietnamã«ã¤ãã¦
ãããã å½å
åãã¸ã§ããµã¤ã www.careerlink.vn ãéçºã»éå¶ãã¦ããã
ä¼ç¤¾è¦æ¨¡ã¯ã©ããããã
社å¡æ°ã¯æ°å人ç¨åº¦ãåµæ¥è
CEOã¯æ¥æ¬äººãã¾ããæ¥æ¬äººã®å¶æ¥æ
å½ã®æ¹ãè¤æ°äººåãã¦ãããä»ã¯çããããã 人ã¹ã¿ããããªãå¯ä¸ã®ã¨ã³ã¸ãã¢ã§ããã¨ããã®åï¼CTOï¼ãæ¥æ¬äººãåµæ¥ã¯2006å¹´ã ããã©ããWebã«åãå
¥ãå§ããã®ã¯ä»å¹´ã«å
¥ã£ã¦ãããªã®ã§ãæè¡äººæé¢ã§ã¯ã©ãã³ãã£ã¼ã§ããã
ã¹ã¿ããã®çãã
ãªãæ¥æ¬äººã¨ã³ã¸ãã¢ãæ¡ç¨ããã®ã
ä»åãæ±äººã®ã¿ã¼ã²ãããæ¥æ¬äººã«çµã£ãçç±ã¯ï¼ã¤ãã£ã¦ã
ï¼ï¼ãã£ã±ãæ¥æ¬äººã¨ã³ã¸ãã¢ã¯åªç§ã ãªãã¨æãããããå®ã¯ä»åã®æ¡ç¨æ´»åã«è³ãåã«ããã¼ã«ã«ã§ãããã 人ã¨ã³ã¸ãã¢ã®åéããã¦ããã®ã ããã©ããå¼ç¤¾ã®è¦ä»¶ãæºããå¿åãçç¡ã ã£ããçãã¬ã¸ã¥ã¡ãçãéãã§ãããã ã¾ãWebç³»ã¨ã³ã¸ãã¢ã§ããããã«ã¯ãåã«è¨ãããéãã®å®è£
ãã³ã¼ãã£ã³ã°ããã®ã§ã¯ãªãããã²ãããã¯ãã®ä½¿ãåæãç©æ¥µçã«æ¹åãã¦ãã£ã¦ã»ããã¨ããã ããã©ãããããããã¤ã³ãï¼ãã»ã³ã¹ï¼ãæã£ã¦ãã人ã¯ãããã§ã¯æ¬å½ã«å°ãªãã
ï¼ï¼CEOã¨CTOãæ¥æ¬äººã ãã
è±èªã§ã®ã³ãã¥ãã±ã¼ã·ã§ã³ã¯è²ã
ã¨è¦å´ãããã®ã§ãã
ããã¾ã§ã¯ãåã®å人çãªã¤ã¦ããã©ã£ã¦ãæ¥æ¬å¨ä½ã®Webç³»ã¨ã³ã¸ãã¢ã®æ¹ã ã«ãé¡ããã¦ãåè¨æ±ãã§æä¼ãã«æ¥ã¦ããã£ãããã¦ããã®ã ããã©ãã©ããããã§ã¯éçºã追ãã¤ããªããªã£ã¦ãã¾ã£ããä»ãå¼ç¤¾ã§ãããããã¨ãå®ç¾ããã«ã¯éçºåãå ¨ã足ãã¦ããããç®ä¸æ°è¦æ¡ç¨ãè³ä¸å½é¡ããããã 人ã§ã¯ãªãæ¯éæ¥æ¬äººã®ã¨ã³ã¸ãã¢ã«JOINãã¦é ãããã¨èãã¦ããã
æ³å®ãã¦ããå¿åè å
- LAMPéçºæ´ï¼å¹´ãï¼å¹´ç¨åº¦ï¼PHP + MySQLï¼
- ãµã¼ããµã¤ãMVCã®ãªãããããããããªãã«ç解ãã¦ãã
- MVCãã¬ã¼ã ã¯ã¼ã¯ã使ã£ã¦æ®æ®µä»äºããã¦ãã
- JSããããªãã«æ¸ã
- æ®æ®µGitã使ã£ã¦ãã
- ãããã¯PHP以å¤ã®è¨èªã«ãæãåºãã¦ã¿ããã¨æã£ã¦ãã
- èªç¤¾ãµã¼ãã¹ãæãããã¨ã³ã¸ãã¢ã«ãªãããã¨æã£ã¦ãã
- ãããã¯ãã£ã¬ã¯ã·ã§ã³ãããã¸ã¡ã³ãã«ãææ¦ãã¦ã¿ããã¨æã£ã¦ãã
æ°ããJOINãã¦é ãæ¹ã«ã¯ãã¾ãå¼ç¤¾ã®ããã³ãã¨ã³ããµã¤ã(www.careerlink.vn)ã®æ¡å¼µã»æ¹è¯ã«å¾äºãã¦ããã ããã¨ã«ãªãã¨æããç¾å¨ãå¼ç¤¾ããã³ãã¨ã³ãã¯Symfony2ãã¬ã¼ã ã¯ã¼ã¯ãç¨ãã¦æ§ç¯ããã¦ãããSymfony2ã触ã£ãçµé¨ãããã°ããããã©ããSymfony2ã®çµé¨ããªãã¦ããä»ã®MVCãã¬ã¼ã ã¯ã¼ã¯ãæ±ã£ãçµé¨ãããã°ã¹ã ã¼ãºã«çæã§ããã¨æããã¾ãSymfony2ã¯ãEric Evansæ°ãæå±ããDDD(ãã¡ã¤ã³é§åè¨è¨)ã®èãæ¹ãè²æ¿ãåæ ããããã¬ã¼ã ã¯ã¼ã¯ã§ãããéçºè
ã«ã¯DDDã«é¢ããäºåç¥èããããã¨ãæã¾ããã
ã¯ã¼ã¯ãã¼ãããï¼å´åãã¶ï¼ã«ã¤ãã¦
ä¼ç¤¾ã«ã¦æºåã
ãã¼ããã³å¸ã§ã®æ®ããã¶ãã«ã¤ãã¦
é£äºã«ã¤ãã¦
ï¼ï¼æ¥æ¬é£
å¸å
ã«æ¥æ¬é£ã¬ã¹ãã©ã³ã¯å
å®ãã¦ãããããªãã¡ãã£ã¦æ¥æ¬é£ãã§ã¯ãªããã©ããæ¥æ¬äººçµå¶ã®ããã£ãã¨ããåé£ã§ããããã¼ããã³å¸ã¯ã©ã¼ã¡ã³æ¿æ¦åºã§ãããã
Lê Thánh Tôngéãã®æ¥æ¬äººè¡ã«ããã©ã¼ã¡ã³å±ã大ã¡ããã
ï¼ï¼ãã¼ã«ã«æç
æ¥æ¬é£ã®ãªã¼ãºããã«æã¨æ¯ã¹ãã¨ãã³ã¹ããä½ãããã«æãããè¡çé¢ã«é¢ãã¦è¨ãã°ãåã¯èè
¸ãå¼±ãã»ãã ããã©ãããã¼ã«ã«æçãé£ã¹ããã¨ã§ç¹ã«åé¡ãèµ·ãããã¨ã¯ãªãã
ï¼ï¼ãã®ä»å¤é£
æ§ä»æ¤æ°å°ã®ãããããã³ã¯ã¨ã¦ãç¾å³ãããèªåã¯æãã¯ãã«æå¯ãã®ãTous Les Joursãã¨ããéå½ç³»ãã³å±ããã§ã¯ãã¯ããµã³ãé£ã¹ããã¨ãå¤ãããã®åºã®ã¯ãã¯ããµã³ã¨ãããã·ã¥ãã§ã³ãã¤ã¯ã¨ã¦ãç¾å³ãããã åºå
ã«ã¤ã¢ãªãå¤ãçæ¯ãã¦ãã¦ï¼ãããã ã§ã¯ä¸è¬çï¼ã天äºã«ã¸ã°ãã¤ããã¤ã¢ãªãå¸ã«ã¦ã³ããè½ã¨ã
ï¼ï¼èªçã«ã¤ãã¦
èªåã¯èªçãããªãã®ã§ãã¹ã¼ãã¼ãã¼ã±ãããå¸å ´çã®äºæ
ã¯ããããããªããã¹ã¼ãã¼ãã¼ã±ããã¯ãã¡ãã¡ã«ã§ãã¦ããããã©ãæ¥æ¬ã»ã©å¤ãã¯ãªãå°è±¡ããã¤ã¯ããªãã¨è²·ãã ãã¯é£ãããããããªãã
家è³ã«ã¤ãã¦
æ¥æ¬ã¨æ¯ã¹ãã¨å®ãããç©ä¾¡æ°´æºãèããã¨ããªãé«ããå¸å ã¯äººå£å¯åº¦ãé«ããä¸åç£ã¯å¤§å¤è²´éãªãªã½ã¼ã¹ãå¤å½äººåãã¯ã³ã«ã¼ã ã®ã¢ãã¼ãã§ããã°200USD-250USDãããã§åãããã¨ãã§ããã奮çºãã¦500USDãããåºãã¨åºãã¦ãããããªé¨å±ã«ãªãã¨æãããªãå¤å½äººãåãããããªã¢ãã¼ãã¯ãåºæ¬çã«ã«ã¼ã ã¯ãªã¼ãã³ã°ã»ã©ã³ããªã¼ãµã¼ãã¹ä»ãã§ããã
æ²»å®ã«ã¤ãã¦
æ²»å®ã¯åºæ¬çã«è¯ãã軽ç¯ç½ªï¼ã²ã£ããããªã©ï¼ã¯å¤ããã注æãããã¨ã§è¢«å®³ãé²ãããã¹ããã®ã²ã£ãããã«ã¯ç¹ã«æ°ãã¤ããã»ããããã¨æããå¶æªç¯ç½ªã¯æ®ã©ç¡ããçå¤ä¸ã«å¥³ã®åãä¸äººã§ATMãããéãä¸ããã¦ãããããã
æ°åã«ã¤ãã¦
ï¼ï¼æãï¼æé ã¾ã§ãä¹¾å£ãï¼æãï¼ï¼æããã¾ã§ãé¨å£ãé¨å£ã¨ãã£ã¦ããã£ã¨é¨ãéã£ã¦ããããã§ã¯ãªããä¸æ¥ã«ï¼ï¼åã»ã©æ¿ããã¹ã³ã¼ã«ãéãã
çªç¶ã®ã¹ã³ã¼ã«ã§éè·¯ãå·ã«ãªã
ç¾å°ã§ã®äº¤éæ段ã«ã¤ãã¦
é転å
許ãåå¾ãã¦ããã¤ã¯ã«ä¹ãã¨è¡åç¯å²ãåºããããããã ãæºå«ã§ãããèªåãå
許ãåã£ã¦ãã¤ã¯ãè³¼å
¥ãããå
許ãåå¾ããã®ã¯ãã»ã©é£ãããªããããã¤ã¯ã«ä¹ã£ã¦ããæ¥æ¬äººã®åæ°ã¯ãªãã¨ç¡å
許ã§ãã(å
許ãåå¾ããã®ãé¢åãããã¿ãã)ã
ãããã ã§ãã¤ã¯ã«ä¹ã£ã¦ããã¨è¨ãã¨ãå¤ãã®å¤å½äººãããã¯ã¬ã¤ã¸ã¼ã ãã¨ãããããäºå®ããã¤ã¯ã®æ¥è§¦äºæ
ã¯é常ã«å¤ãããã ãå¸å
ã§ã¯é度åãä½ããããå½ã«é¢ãããããªé大äºæ
ã¯å°ãªããã¡ããã¨ãããã«ã¡ããããã¶ãããçã£å½ãªä¼ç¤¾ã®é§å¨å¡ã¯ã大æµç¤¾åã§ãã¤ã¯ã®é転ãç¦æ¢ããã¦ãããã¿ã¯ã·ã¼ãªã©ã®äº¤éæ段ãå®ã使ããã®ã§ããã¤ã¯ããªãã¦ãå°ããã¨ã¯ãªãã
æã®éå¤ã©ãã·ã¥
å»ççã«ã¤ãã¦
æ¥æ¬èªãéããå»çæ©é¢ãè¤æ°ããã大æµã®ãã¨ã¯å¸å
ã§äºè¶³ãããä¸ãä¸ããã¼ããã³ã§æã®æ½ãããããªãäºæ
ã«ãªã£ãå ´åããã³ã³ã¯ãããã¯ã·ã³ã¬ãã¼ã«ã«ããªç§»éãããããªããä¼ç¤¾æ¯çµ¦ã®é¦äººåãæµ·å¤å»çä¿éºããããããªç§»éã¨ç¸æã£ã¦ã移éè²»ã¯ä¿éºã§ã«ãã¼ãããã
å¸ä¸å¿é¨ãµã¤ã´ã³å¤§èå è¿ãã®å
¬åå°å¸¯ãæ¥æ¬äººå¾¡ç¨éã®ç
é¢ãå
¬åã®é£ã«äºä»¶ãã
æ¥æ¬äººã³ãã¥ããã£ã«ã¤ãã¦
èªåã¯ããããå ´ã«é¡ãåºããªãã®ã§ããåãããªãããæ¥ç³»ããªã¼ãã¼ãã¼ãªã©ãè¦ã¦ããã¨ãæ¥æ¬äººå好ä¼ï¼ããããµã«ã¨ãã½ãããã¼ã«ã¨ãï¼ã®ã¡ã³ãã¼åéåºåã¯å¤ãæ²è¼ããã¦ãããæ¥æ¬äººçµå¶ã®ãã¼ãã«ãã§ãªã©ãããã®ã§ããããã£ããåºã交æµã®å ´ã«ãªã£ã¦ããã®ãããããªã...
ãã®ä»
æ±äººæ å ±ãç°å¢ã®è£è¶³ã¯ä»¥ä¸ãªã®ã ããã©ããã¤ãã§ãªã®ã§ãããã ãã¨ãããæ°èå½ã§Webãµã¼ãã¹éçºãããã¨ãããã¨ã«ã¤ãã¦ã常æ¥é è¦èããã¦ãããã¨ã»æãã¦ãããã¨ãªã©æ¸ãã¦ã¿ããã
ç¾å°ã§ä¸è¬çãªéçºè¨èªã«ã¤ãã¦
ãããã ã¯ITéçºç³»ãªãã·ã§ã¢ã®ä¸å¤§æ ç¹ã§ãããå½ç¶ãªãã.Net, Java ãã¨ã¯ã¨ã«ããPHPãå»å¹´Matzããã¼ããã³èªç¶ç§å¦å¤§å¦ã§Ruby講演ããã辺ããããRubyãRailsã®çµé¨ãåãæ±äººãå¢ãã¦ããã¤ã¡ã¼ã¸ããããä»ãDrupalçã®CMSã«ã¹ã¿ãã¤ãºãåãæ±äººæ¡ä»¶ãããç®ã«ä»ãã
ç¾å°Webç³»ä¼æ¥ã§ä¸è¬çãªéçºã¹ã¿ã¤ã«
CDD - ã³ããé§åéçºï¼ãã£ããã¯ä¸å½å ±éããª..ï¼
æè¡ãã¬ã³ãã«ã¤ãã¦
ãã£ããã¢ããã¯å é²å½ã®ï¼å¹´é ããããããªï¼ ä»ã§ã¯ mongodb, redis, cassandra, neo4j (âä½ã«ä½¿ã£ã¦ãããã ãã)ãªã©ã®çµé¨ãåãæ±äººããã¡ãã»ãã¨è¦ãããããã«ãªã£ã¦ããã ã¹ããªã¼ã ãã¼ã¿å¦çã¨ãã¯ã¾ã è¦ãããªãã
ãã«ã¼ç
極ãã¦ä½ããçç±ã¯ã
- ãã¼ãã¦ã§ã¢ãé常ã«é«ä¾¡ï¼æ¥æ¬ã§è²·ããããã£ã¨é«ãï¼
- OSãã¿ãã§ã¯ãªããWindowsã ã¨PCãè²·ãã°ã¿ãã§ä»ãã¦ããï¼ãã£ï¼
ãããã ã¨æãããï¼ã¡ãªã¿ã«åã¯æ¥æ¬ã§è²·ã£ã¦ããMBA2012ã使ã£ã¦ããï¼
ã¹ãããã¿ãã¬ããã½ãªã¥ã¼ã·ã§ã³ã®éè¦æ§ã«ã¤ãã¦
ã«ãã§ã«å
¥ã£ã¦iPhoneãããã¯iPadãããã£ã¦ããã®ããã£ã¡ã§ã¯ã¹ãã¼ã¿ã¹ããã¡ãæ©ãiOSã¢ããªãåºããã°ã
ã«ã¦ã³ã¿ã¼ã§ããã¿ãããã«iPhoneãããã
æ å ±ä¿å ¨ã³ã¹ãã«ã¤ãã¦
ã½ã¼ã¹ã³ã¼ããªãã¸ããªãã«ã¸ã¥ã¢ã«ã«ã³ãã¼ãã競åä»ç¤¾ã«å£²ããã°ãã¨ã³ã¸ãã¢ãå¤ãã®ã§ããªããªãæ°ãæããªãã
è³éæ°´æºã®éããå¯è½ã«ãããã¨ã«ã¤ãã¦
ãããããã ã§ã¯ãï¼å¹´å¶å¤§å¦ãåæ¥ããæ°åãããã 人ã¨ã³ã¸ãã¢ã§ãå任給ã¯200-300USDç¨åº¦ãéã¨ã³ã¸ãã¢ã®ãªãã£ã¹ã¯ã¼ã«ã¼ã ã¨ããå°ãä½ãã¨æãã
å¼ç¤¾ç¤¾å
ã§ã¯ã顧客ã¦ã¼ã¶ãå
¥åãããã¼ã¿ã社å
ãªãã¬ã¼ã¿ã人海æ¦è¡ã§é»è©±é£çµ¡ãä¿®æ£ã»å å·¥ãã¦ããããã¡ã¿ãã¼ã¿ã追å ãã¦ãããããããããã¯å
é²å½ã§ã¯æç«ãå¾ãªãã®ã§ã¯ãªããã¨æãã
å¤å½è³æ¬å士ã®æ®´ãããã«ã¤ãã¦
æµ·å¤ãµã¼ãã¹ãç¡çããç· ãåºãã¦ãåºå¤§ãªå½å å¸å ´ããã¼ã«ã«ãµã¼ãã¹ãããã¤ãã«ç¬å ããã大é¸ä¸å½ãªã©ã¨ç°ãªãããããã ã¯å¹¸ãä¸å¹¸ããå¼·åãªå¤è³ç³»ãããã¯ããå½å å¸å ´ãè¹èºãã¦ãããçµæãå½å ITç£æ¥ãèå¼±ãªã¾ã¾ã«ãããå¾ã£ã¦ããã®å½ã§Webãµã¼ãã¹ãå±éããå ´åã競åä»ç¤¾ã¯å¿ ç¶çã«å¤å½è³æ¬ã§ãããã¨ãå¤ãããããå¤ãã®å ´åãããã 以å¤ã®ASEANåå½ã«ãäºæ¥å±éãã¦ããå¤å½ç±ä¼æ¥ãç¸æã«ãããã¨ã«ãªãããããã£ã競åã¨äºè§ã«æ¸¡ãåãã«ã¯ãæã ããããã ããASEANåå½ã«åºã¦è¡ããè¦æ¨¡ã追æ±ããªããã°ãªããªããä¸çè¦æ¨¡ã§å¯¡å åãé²ãä¸ã§ãä»ãã©ã¹ããã£ã³ã¹ãããããªãã
ãã®ã¨ã³ããªãèªãã§ããããããã ã»ãã¼ããã³å¸ã§ã®éçºæ¥åã«èå³ãæã£ã¦ãããæ¹ãããã°ãæ¯éé£çµ¡ãã¦ãã ãããç´æ¥Wantedlyã§å¿åããããããçåã質åãããã°ã¡ã¼ã«(: kazki.matz@gmail.com)ãããã¯Twitter(: @KazkiMatz)ã«åãåããããããããã¡ãããã¾ãã¯è©±ãèãã«ãããããã大æè¿ãæç°ããé£è¡æ©ã§6æéããã¼ããã³ã§ãå¾ ã¡ãã¦ãã¾ãã
[追è¨] 5/8 23:10
æç¨ã§ã5æ8æ¥ã16æ¥ã®éãé¢è¥¿å°æ¹ã«ãã¾ããé¢è¥¿åã®æ¹ã§ã話ãèããããã¨ããæ¹ãããã£ãããã°ãç´æ¥ãä¼ããããã¨ãã§ãã¾ãã@KazkiMatzã«ã¡ã³ã·ã§ã³æãã¦ãã ããã
è¿æã®æ
è¡ä»£çåºã«ã¦ãã©ãããããããããã ã®ç«ã¯ã¿ããªç©ãã¦ãã
ãfluentdãã¨ãStormãã®æ¯è¼ã«ã¤ãã¦
ã¾ãã両è
ã¯ããªãæ§è³ªã®ç°ãªããããã¯ããªã®ã§ã以ä¸ã®æ¯è¼ã¯çéãã
çéãã§ãããã¨ãåæã«ãã¹ããªã¼ã ãã¼ã¿å¦çãã©ãããã©ã¼ã ã¨ãã¦ã®ä¸¡è
ãæ¯ã¹ã¦ã¿ãã
åºæ¬æ å ±
fluentd
http://fluentd.org/
ä»ãã¨ããããã°ã³ã¬ã¯ã¿ã¼/ã¤ãã³ãã¢ã°ãªã²ã¼ã¿ã¼ãRubyã§å®è£
ããã¦ããã軽éé«éã
RPCåºç¤ã§ã¯ãªãããã®ä¸ã®ã¬ã¤ã¤ã¼ã«ä½ç½®ãããããã¯ãã
Storm
http://storm-project.net/
åæ£RPCåºç¤ãã¹ããªã¼ã ãã¼ã¿çMapReduce風ãã¬ã¼ã ã¯ã¼ã¯ãJava+Clojureã§å®è£
ããã¦ããã
æ¦è¦ã«ã¤ãã¦ã¯ãä¸è¨ã®ã¹ã©ã¤ããã¨ã¦ãããããããã£ãã
Twitterのリアルタイム分散処理システム「Storm」入門
ã¹ããªã¼ã ãã¼ã¿å¦çã§ä½ãããã®ãã«ã¤ãã¦
ã¹ããªã¼ã ãã¼ã¿å¦çã®ãã¼ãºã«ã¤ãã¦ãèªåãç解ãã¦ããç¯å²ã§ã®ç°¡åãªèª¬æã
å ¸åçãªWebã¢ããªã±ã¼ã·ã§ã³ã®ã¢ã¼ããã¯ãã£ãããªãã¡ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãããã»ã¹ãã¹ãã¼ãã¬ã¹ã§ããããã¼ã¿ã®æ°¸ç¶åã¯DBã®ã¿ãæ ãã¿ã¤ãã®ã½ããã¦ã§ã¢ã«ãä¸æãããã¾ã£ã¦ãããªãã¿ã¤ãã®å¦çããããå ·ä½çã«ã¯ã
- ãªã¢ã«ã¿ã¤ã ã©ã³ãã³ã°
- ãªã¢ã«ã¿ã¤ã ãã¬ã³ãåæ
- ãªã¢ã«ã¿ã¤ã ä¸æ£ç£è¦
ã¨ãã£ããã®ã
ãã©ã³ãã³ã°ï¼Redisã§ãããããªããRedisãæ軽ã§ããã§ããããã ãç´è¿ã®60åéã対象ã«ããã¦ãã¼ã¯ã¢ã¯ã»ã¹ã©ã³ãã³ã°ãã¿ãããªãã¨ããããã¨ããã¨ãRedisã§ã¯é£ãããããããªã (æéçªãå¾ã
ã«ãããã¦ããå¿
è¦ãããã...)
(=> ãããªfluentdãã©ã°ã¤ã³ãæ¸ãã: http://d.hatena.ne.jp/kazuk_i/20130506)
ããã¬ã³ãåæãããã¯Twitterã®"Worldwide Trends"æ©è½ã¿ãããªãã®ã§ãä»ä¸çªããããªããã·ã¥ã¿ã°ããªã¢ã«ã¿ã¤ã ã§æãã¦ãããããããã®ãã¾ãããããRedisã§äºè¶³ãã... ãã ããã¬ã³ããå¤å®ããã¢ã«ã´ãªãºã ããRedisãæã¤ãã¼ã¿æ§é ã§è¡¨ç¾ã§ããã»ã©ã«ãåååç´ã§ããå¿ è¦ãããããï¼åä½æéãããã®ãããæ°ã§ã½ã¼ãããä¸ä½ã¢ã¤ãã ãã¨ãï¼ã
ãä¸æ£ç£è¦ããã¨ãã°ãã¹ã¯ã¼ãã®brute force ã¢ã¿ãã¯ãé²ãããã¨ããbotã«ãããµã¤ãã¯ãã¼ã«ãä¸å®ã®å¶éãè¨ãã¦é®æããããªã©ãéå»ã®ã®ã¢ã¯ã»ã¹ãã¿ã¼ã³ã¨ç´è¿ã®ã¢ã¯ã»ã¹ãçµã¿åããã¦ç·åçã«å¤æããå¿ è¦ãããããã¯Redisã¨ãã§ã¯ã¡ãã£ã¨é£ãããã
ã¤ã¾ããç¶æ å¤åãéå»ã®å ¥åã®è¤éãªéãåããã¨ãã¦å°ããããããªã¢ãã«ã¯ãRDBMSãå種KVSãRedisãªã©ã«è¼ããã®ãé£ãããç¡çã«è¼ããã¨ãã¢ãããã¼ãã®ãã³ã«å¤§éã®READã¯ã¨ãªãèµ°ããããã¨ã«ãªã£ã¦ãã¾ããç¾å®çãªããã©ã¼ãã³ã¹ãåºãªãã
ã§ã¯ã©ãããããå¿
è¦ãªãã¼ã¿ãã¢ããªã±ã¼ã·ã§ã³ããã»ã¹å
é¨ã«ãã¤ã³ã¡ã¢ãªã§ä¿æããã
ããã¨è¦ªåæ§ãé«ãããªã®ããã¹ããªã¼ã ãã¼ã¿å¦çã§ãããã¤ãã³ãããªãã³ãªã¢ã¼ããã¯ãã£ã§ããããã®ããã®ãã©ãããã©ã¼ã ã¨ãã¦ä¸ã«ç»å ´ããã®ããä¾ãã°Apache S4ã§ãã£ãããTwitter Stormã§ãã£ããããããã§ãä¸ã§ãStormãä¸çªã¢ãã¦ããå°è±¡ãããã
ã¹ããªã¼ã ãã¼ã¿ãé次å¦çããã¨ããææ³ã¯ãéèç³»ã®ã·ã¹ãã çã§ã¯éååããã馴æã¿ã®ã¢ããã¼ãã ã£ããããï¼ä¸æ£ç£è¦ã¨ãï¼ãWebæ¥çã§ã¯ãããï¼âï¼å¹´ã§ãã³ã¢ã¹ãµã¤ã(Twitterã¨ãFacebookã¨ã)ã¸ã®å°å
¥ãé²ã¿ãããã¦ãããï¼âï¼å¹´ã§ããããã£ããããã¯ã(Stormã¨ã)ããªã¼ãã³ã½ã¼ã¹åããã¦ãæã
ãæ°è»½ã«ä½¿ããããã«ãªã£ãã
Stormã®ã¹ã´ã¤ã¨ãã
ãã種ã®ï¼å¤§å¤æ°ã®ï¼ï¼å¦çããMapReduceã§ã»ã¼ç¡å°½èµã«ã¹ã±ã¼ã«ã¢ã¦ãããããã«ãªã£ãã®ã¨åæ§ã«ãStormã§ãSpout+Boltãçµã¿åããããã¨ã§ããã種ã®ã¹ããªã¼ã ãã¼ã¿å¦çãã©ãã¾ã§ãã¹ã±ã¼ã«ããããã¨ãã§ãããTwitterè¦æ¨¡ã®ãã©ãã£ãã¯ã§ããã¬ã³ãããã·ã¥ã¿ã°ã®ã©ã³ãã³ã°ããªã¢ã«ã¿ã¤ã ã«ç®åºãããªãã¦ç¨éã«ãã£ã¦ã¤ãã
Stormã®æ¬ ç¹
MapReduceã¯ã©ãã¾ã§ãã¹ã±ã¼ã«ãã代ããã«ãè¨ç®å¹çãç ç²ã«ãã¦ããé¢ããããããããåèªæ°ãã«ã¦ã³ããããµã³ãã«ãªããã¯ããã£ã¦ãå¦çå
容ã«æ¯ã¹ã¦ããã®ãªã¼ããããã極端ã«å¤§ããä¾ã ã¨æãï¼ã¾ãå®éã«ã¯ãããã¯ã¼ã¯ããã£ã¹ã¯IOãããã«ããã¯ãªã®ã§ãã¾ãåé¡ã§ã¯ãªãã®ãããããªããã©ï¼ãåãäºãSpout+Boltã¢ãã«ã«ãè¨ããã
ããã¯æ¬ ç¹ã¨ãããããã¹ã±ã¼ã©ããªãã£ã追æ±ããçµæã§ããå¿
ç¶ã
fluentdã®ããã¨ãã
fluentdã¯ããã¾ã§å管ãªã®ã§ãStormã®ããã«åæ£å¦çåºç¤ãæä¾ãã¦ãããããã§ã¯ãªãããããfluentdã«ã¯å
¥åºåãã©ã°ã¤ã³APIãç¨æããã¦ããã®ã§ããã©ã°ã¤ã³ãæ¸ããã¨ã§ããã¼ã¿ããã¼ã«å¯¾ãã¦ä»»æã®å¦çãè¡ããã¨ãã§ãããã¤ã¾ããã®æ°ã«ãªãã°ãfluentdã«è¤éãªã¹ããªã¼ã ãã¼ã¿å¦çãè¼ãã¦ãã¾ããã¨ãã§ããã
ä¸æ¹ã§ããã©ã³ã¶ã¯ã·ã§ã³ãã¸ã§ããã©ããã³ã°æ©è½ãå¿
è¦ã§ããå ´åããã¹ã¦èªåã§å®è£
ãããã¨ã«ãªãã
â»fluentdã¹ããªã¼ã ã«å¯¾ããã¢ãããã¯ã«ã¯ã¨ãªãç»é²ãã¦çµæãå¾ãã¨ããã¢ã¤ãã¢ãåå¨ãã :
fluentd+Esperで動的ストリー ムクエリ
@angostura11ããä½ã®Esperãããã¯ã¹ã´ã¤ï¼
èé害æ§ã«ã¤ãã¦
ããã¯ããé«å¯ç¨æ§ãã¨ãæ´åæ§ãã®ï¼ã¤ã«åãã¦èããå¿ è¦ãããã¨æãã
é«å¯ç¨æ§ã«ã¤ãã¦
- Storm
- é«å¯ç¨æ§ã¯Stormã®æ大ã®å£²ãã®ä¸ã¤ãHadoopåæ§ãMasterãã¼ããWorkerã«ã¿ã¹ã¯(SpoutãBolt)ãåçã«å²ãæ¯ããWorkerã«é害ãçºçããå ´åãã¿ã¹ã¯ã¯å¥ã®Workerã«èªåçã«å¼ãç¶ãããã
- fluentd
- 稼åãã©ã°ã¤ã³ãåçã«ãããã¤ãããããªä»çµã¿ã¯ç¨æããã¦ããªããé«å¯ç¨æ§ãå®ç¾ããã«ã¯ãåãè¨å®ã®Workerãè¤æ°ä¸¦ã¹ã¦ãHAæ§æã«ããå¿ è¦ãããï¼
æ´åæ§ã«ã¤ãã¦
- Storm
- ä¸ã§è¦ãããã«ãã¹ããªã¼ã ãã¼ã¿å¦çæ¹å¼ã®æ大ã®ã¡ãªããããã¢ããªã±ã¼ã·ã§ã³ããã»ã¹ããã¼ã¿ãã¤ã³ã¡ã¢ãªã«æããããããã¨ã§ããã¨ããã¨ããStormãæ¡ç¨ããã°èé害æ§ãæ ä¿ãããã®ã§ãæ´åæ§ãä¿ããããã¨èããã®ã¯å¦¥å½ãªã®ãï¼ä¾ãã°Stormã«æ¨æºã§ä»ãã¦ããワードカウントのサンプルプログラムãããã®å®è£ ãè¦ãã¨ãç´¯è¨ã«ã¦ã³ãå¤ã¯ãWorkerã¹ã¬ããå ã®ãéè¨æ å½Boltãä¿æãã¦ããHashMapインスタンスã«ä¿åããã¦ãããã¤ã¾ããä½ããã®é害ãçºçãããã®ã¤ã³ã¹ã¿ã³ã¹ããã¹ããããµã¼ããå¹ãé£ãã§ãã¾ãã°ãï¼ä»¥éã®å¦çã¯ä»ã®Workerãåãç¶ãã§ããããã®ã®ï¼å½ç¶æ°Boltããemitãããå¤ã¯ã¼ãã«ãªã»ãããããããããä½ã¨ãããã«ã¯ãä¸éãã¼ã¿ï¼ä¸è¨ä¾ã§ããã°ãç´¯è¨ã«ã¦ã³ãå¤ãªã©ï¼ããRedisã®ãããªå¤é¨DBã«memoizeããªããã°ãªããªãããããããã§ã¯ããã©ã¼ãã³ã¹ãåºãªãããããããã¹ããªã¼ã ãã¼ã¿ã¨ãã¦Stormã§å¦çããå¿ ç¶æ§ãç¡ãããã
- fluentd
- ä¸ã¨åãäºãfluentdã§ãè¨ãããå ãã¦ãfluentdã§ã¯ãã¼ã¿ãWorkerã§å¿ ãå¦çããããã¨ã®ä¿è¨¼ãç¡ãã
ä¸è¨ã®ãããªæ´åæ§ãªã¹ã¯ã«é¢ããèãæ¹ããã¹ããªã¼ã ãã¼ã¿å¦çãæãç¹å¾´ã¥ããã®ã§ã¯ãªããã¨ããæ°ããã¦ããã
èªåã¯ã©ãããã
å¼ç¤¾ï¼CareerLink Vietnamï¼ã¯æ¥åã®æ§è³ªä¸ãã¢ã¯ã»ã¹ãã¿ã¼ã³ã®å¯è¦åãã¦ã¼ã¶ä¸æ£è¡åç£è¦ãéè¦ãã²ã¨æã»ã©åãã段éçã«ãå種å¦çãã¹ããªã¼ã ãã¼ã¿å¦çã¨ãã¦å®è£
ããªããã¦ããã
ãããããã¡ã®ã¤ã³ãã©ã¯è¦æ¨¡ãããªãå°ããï¼ãµã¼ããï¼å°ãããªããï¼ãã¹ããªã¼ã ãã¼ã¿å¦çã®ããã«ä½å°ããã¼ããå²ãå½ã¦ããã¨ã¯ã§ããªããStormã®å¼·ã¿ãæ´»ãããç°å¢ã§ã¯ãªãããã°ããã¯Stormã諦ãã¦ãfluentdã§ããããã«ã¹ããªã¼ã ãã¼ã¿å¦çãããã¨æã£ã¦ããããªã«ããfluentdãªãRubyã§æ¸ããããï¼ãããä¸çªå¤§ããï¼
"fluentd as a Poor-man's Storm"ã ã©ãããªãã
fluent-plugin-uniqcountãå ¬éãã¾ãã
æ¦è¦
fluent-plugin-uniqcountã¯ãæå®æéç¯å²ã«ããã¦ãè¨å®ã§æå®ããå±æ§ãã¨ã«ã¤ãã³ãçºç件æ°ãã¦ãã¼ã¯ã«ã«ã¦ã³ãããçµæã®ä¸ä½N件ãå®æåºåããfluentdãã©ã°ã¤ã³ã§ããSQLã§ããã¨ããã®:
SELECT key1, COUNT(key2) AS key2_count, COUNT(DISTINCT(key2)) AS key2_uniq_count FROM records WHERE time BETWEEN T1 AND T2 GROUP BY key1 ORDER BY key2_count DESC LIMIT 0, N;
ã«ç¸å½ãã¾ãã
fluent-plugin-uniqcountã使ãã¨ã
- ç´è¿ã®60ç§ã§ãã¦ãã¼ã¯ã¢ã¯ã»ã¹ãæãå¤ãã£ãURLããã100件ããªã¹ãã¢ãã
- ç´è¿ã®1æéã§ã¦ãã¼ã¯ã¢ã¯ã»ã¹ãæãå¤ãçºçãããã¦ã¼ã¶ãããã20人
ãªã©ãéè¨å¯è½ã§ãã
ç¹å¾´
fluent-plugin-uniqcountã¯ãåä½æéãããã®ãã©ãã£ãã¯éãNãéè¨å¯¾è±¡åºéé·(è¨å®é ç®: list*_span)ãTã¨ããã¨ãã«ã以ä¸ã®ãããªç¹å¾´ãåãã¦ãã¾ãã
- ã¤ãã³ãï¼ä»¶ãããã®ãã©ã°ã¤ã³ã¸ã®å ¥åã³ã¹ã㯠O(logNT)ãåä½æéãããã 㨠O(N logNT)ã
- ãã©ã°ã¤ã³ã®åºåã³ã¹ã㯠O(logNT)ã
- æ¶è²»ã¡ã¢ãªã¯ O(NT)ã
- ã¦ãã¼ã¯ã«ã¦ã³ãã§ããï¼F5ãªãã¼ããªã©ã§ã©ã³ãã³ã°ãè·³ãä¸ãããªãï¼ã
- ç´è¿(Tç§åãç¾å¨)ã®éè¨çµæãå¯è½ã§ããï¼éè¨å¯¾è±¡åºéãæéçµéã¨ã¨ãã«ã¹ã©ã¤ãããï¼ã
- ä¸ã¤ã®éè¨åä½ãããªã¹ããã¨å¼ã³ãç¬ç«ããè¨å®ãæã¤ä»»æã®æ°ã®ãªã¹ããä¿æãããã¨ãã§ããï¼æ大10åã¾ã§ï¼ã
- fluentdã®ã¤ãã³ãåä¿¡æå»ã§ã¯ãªããã¬ã³ã¼ãå ã®ã¿ã¤ã ã¹ã¿ã³ããåºã«éè¨ãè¡ããã¨ãã§ããï¼æªè¨å®æã¯ã¤ãã³ãåä¿¡æå»ãç¨ããï¼ã
- appãµã¼ãããfluentdã«ã¤ãã³ããå°éããæéã®ããããå¸åãããããéè¨å¯¾è±¡åºéã®çµç¹ãç¾å¨æå»ããéå»ã¸ãªãã»ãããããã¨ãã§ããï¼list*_offset: 転éã«é¢ä¸ããfluentdã®flush_intervalå¤ãèæ ®ãã¦è¨å®ããï¼
è¨å®
é ç®
- list*_label : åºåã¬ã³ã¼ãã«ä»ä¸ãããã©ãã«æåå
- list*_time : ã¤ãã³ãæå»ãã£ã¼ã«ãåï¼UNIXã¿ã¤ã ã¹ã¿ã³ãå½¢å¼ - çç¥æã¯fluentdã«ãããã¤ãã³ãåä¿¡æå»ã使ãããï¼
- list*_key1 : ã°ã«ã¼ãã³ã°ã«ç¨ãããã£ã¼ã«ãå
- list*_key2 : ã«ã¦ã³ã対象ãã£ã¼ã«ãå
- list*_span : éè¨å¯¾è±¡åºéé·ï¼ç§ï¼
- list*_offset : éè¨å¯¾è±¡åºéçµç¹ã®ãªãã»ããå¤ï¼ç§ï¼
- list*_out_tag : åºåã¬ã³ã¼ãã«ä»ä¸ãããã¿ã°
- list*-out_num : åºå件æ°ï¼ä¸ä½N件ï¼
- list*_out_interval : åºåééï¼ç§ï¼
è¨å®ä¾
å ¥åã¤ãã³ãã以ä¸ã®ãããªãã©ã¼ããããæã£ã¦ããã¨ãã
site.access_log: {"at":1367820029,"uri":"http://www.careerlink.vn/","remote_ip":168364289} ...
次ã®ãããªè¨å®ã§ãåspanã«ãããURLã©ã³ãã³ã°ãå¾ããã¨ãã§ãã¾ãã
<match site.access_log> type uniq_count list1_label min list1_time at list1_key1 uri list1_key2 remote_ip list1_span 60 list1_offset 3 list1_out_tag trends.min list1_out_num 5 list1_out_interval 1 list2_label day list2_time at list2_key1 uri list2_key2 remote_ip list2_span 86400 list2_out_tag trends.day list2_out_num 5 list2_out_interval 10 </match>
åºåä¾ã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
trends.min: {"label":"min","ranks":[{"key1":"http://www.careerlink.vn/","rank":0,"key2_uniq_count":13},{"key1":"http://www.careerlink.vn/file/71ca7183087cce9f04fc559ce37738e9","rank":1,"key2_uniq_count":12}, { ... }, ...],"at":1367840734} trends.day: {"label":"day","ranks":[{"key1":"http://www.careerlink.vn/","rank":0,"key2_uniq_count":8034},{"key1":"http://www.careerlink.vn/file/065d88676460f47d99ec59263c650f54","rank":1,"key2_uniq_count":7735},{"key1":"http://www.careerlink.vn/file/71ca7183087cce9f04fc559ce37738e9","rank":2,"key2_uniq_count":7266}, { ... }, ... ],"at":1367840734}
TODO
- gemå
- çã¡ã¢ãªåã®ããããªãã¸ã§ã¯ãã®çææ°ããã£ã¨æ¸ãããã
注æç¹
æµããããã©ãã£ãã¯ããè¨å®ã«ãã£ã¦ã¯ãããªãã®ãªã½ã¼ã¹ï¼CPUãã¡ã¢ãªå
±ã«ï¼ãé£ãã¨æãã¾ãããã®ãã©ã°ã¤ã³ãå®éã«ä½¿ç¨ããéã¯ãfluentdã®ããã»ã¹ãç¬ç«ãããã¡ã¤ã³ã®fluentdããã»ã¹ããã¤ãã³ããforwardãããå¦ççµæãã¾ãã¡ã¤ã³ããã»ã¹ã«æ»ãã¦ããã®ãããã¨æãã¾ãã
ãªããæå
ã§ã¯fluentdããã»ã¹ã2GBè¶
ã®ã¡ã¢ãªãæ¶è²»ããç¶æ
ã§ãå®å®ãã¦ç¨¼åãã¦ãã¾ãï¼ruby 1.9.3p194ï¼ã
Backbone.jsãå©ç¨ããã¯ã©ã¤ã¢ã³ããµã¤ãMVCã®å°å ¥ã«ã¤ãã¦ããããæ¸ãã¦ããã
jQueryããã¼ãªã¢ããªã±ã¼ã·ã§ã³ã®åé¡ç¹ã¨ãMVCã«ããæ§é åã®å¿ è¦æ§
jQueryã¯ããã©ã¦ã¶ä¸ã§åãJSã¢ããªã±ã¼ã·ã§ã³ã®éçºçç£æ§ãåçã«åä¸ããã¾ãããDOMæä½ã«ããåçãªãã¼ã¸æ¸ãæãå¦çãªã©ã¯ãã»ã¬ã¯ã¿ã使ã£ã¦ã¡ããã£ã¨ã³ã¼ããæ¸ãã ãã§ãã»ãã®æ°è¡ã§è¨è¿°ã§ãã¦ãã¾ãã¾ãã
ãããããã®æ¹æ³ã®å»¶é·ã§ã大è¦æ¨¡ãªJSã¢ããªã±ã¼ã·ã§ã³ãæ§ç¯ãããã¨ã¯æããã¦ç¾å®çã§ãããããä¾ãã°ãGMailãããNew Twitterãç¨åº¦ã®è¦æ¨¡ã®JSã¢ããªã±ã¼ã·ã§ã³ãæ¸ããªããã°ãªããªãã¨ããããã©ãã§ãããï¼
大è¦æ¨¡ãªJSã¢ããªã±ã¼ã·ã§ã³ãéçºããã«ã¯ããããã£ãææ³ã延é·ããã®ã§ã¯ãªããããæ´ç·´ããããã¶ã¤ã³ãã¿ã¼ã³ãå°å
¥ããå¿
è¦ãããã¾ãããã®ç®çã«ã´ã£ããã®ãã¶ã¤ã³ãã¿ã¼ã³ãããMVCããã¶ã¤ã³ãã¿ã¼ã³ã§ãã
MVCãã¿ã¼ã³ã¯ãWebã®ä¸çã§ã¯ãµã¼ããµã¤ãããã°ã©ãã³ã°ã§åºãç¥ããã¦ãããRuby On RailsãDjangoãStrutsçãMVCã®èãæ¹ã«åã£ã¦ãã¶ã¤ã³ããããµã¼ãã¼ãµã¤ãããã°ã©ãã³ã°ã®ãã¬ã¼ã ã¯ã¼ã¯ãå¤æ°ç»å ´ãã¦ãã¾ããä¸æ¹ã§ãã¯ã©ã¤ã¢ã³ããµã¤ãã§ã®JSã¢ããªã±ã¼ã·ã§ã³ã«ãããMVCãã¿ã¼ã³ã®æ´»ç¨ã¯ãã¾ãã«ããããæ¬ãè¿ãããã¨ãã¦ãã¾ããããæ°ã«æéã§ãã¯ã©ã¤ã¢ã³ããµã¤ãã§MVCãå®ç¾ããããã®JSãã¬ã¼ã ã¯ã¼ã¯ãããã¤ãç»å ´ãã¾ããã
ç¾å¨ãã¯ã©ã¤ã¢ã³ãMVCã®ããã®JSãã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦ãKnockoutãJavaScriptMVCãããã¦Backbone.jsãåºãç¥ããã¦ãã¾ããæ¬ã¨ã³ããªã§ã¯ããã®ä¸ã§ãç¹ã«ææï¼â»ä¸»è¦³ã§ãï¼ã¨æãããBackbone.jsãç´¹ä»ãã¤ã¤ãã¯ã©ã¤ã¢ã³ããµã¤ãMVCã¨ãµã¼ããµã¤ãMVCã®æ¬è³ªçãªéããBackbone.jsãç¨ããã¢ããªã±ã¼ã·ã§ã³ã®å®è£
æ¹éã«ã¤ãã¦èãã¾ãã
ãªããBackbone.jsãæè¿ã¢ããã¨ã¯ãããã¾ã ã¾ã ããã¥ã¡ã³ãããµã³ãã«ã³ã¼ãã®æ´åã¯çºå±éä¸ã§ããããã¬ã¼ã ã¯ã¼ã¯èªä½ã®èªç±åº¦ãé«ããã¨ãããBackbone.js使ç¨æã«ãããè¨è¨ã®ãæ£è§£ãã¿ã¼ã³ãã¯æªã ã³ã³ã»ã³ãµã¹ãç¡ãããã«è¦åãããã¾ãããããã£ã¦ãæ¬ã¨ã³ããªã«è¨è¿°ãã¦ããèãæ¹ã®å¤§åã¯ãããã¾ã§åå人ããBackbone.jsã¯ãã使ãã°ããããããªããã¨æã£ããã¨ããã¬ãã«ã®ãã®ã§ããããªãã£ã·ã£ã«ãªè£ä»ãã¯ç¹æ®µç¡ãã°ããããBackbone.jséçºé£ã®ææã¨ä¹é¢ãã¦ããå¯è½æ§ãååã«ããæ¨ããæ¿ç¥ãããã ããã
åèï¼Knockout vs JavascriptMVC vs Backbone
ããã¾ã§åç½®ã(ï¼Â´âï½)
Backbone.jsã®ãªãã¡ã¬ã³ã¹ç
å ¬å¼ãµã¤ã
åèè¨äº
- Backbone.js - A brief introduction (4/7 18:55追è¨)
ãBackbone.jsã®ç«¯çãªã¾ã¨ãã¹ã©ã¤ãè³æãæ¬ã¨ã³ããªã«ä¼¼ã趣æ¨ã®å 容ãã³ã³ãã¯ãã«ã¾ã¨ãããã¦ããã
ãã¨ã³ããªååã®æ¦è«ãèªãã¨ãBackbone.jsã®ã¤ã¡ã¼ã¸ãããããããå¾åã®ãµã³ãã«ã¯åèã«ãªãããæããééããå¤ãããã®ã¾ã¾ã§ã¯åããªãã¨æããã
ãBackbone.jsã«å¯¾ããèå¯ãåèã«ãªãã
Backbone.jsã¨ã¯
Backbone.jsã¯ãJSããã¼ãªã¯ã©ã¤ã¢ã³ããµã¤ãJSã¢ããªã±ã¼ã·ã§ã³ãæ¸ãããã«ä½ãããJSã©ã¤ãã©ãªã§ããBackbone.jsãå°å
¥ãããã¨ã§ãéçºè
ã¯èªåãå®ç¾ãããå¦çããModelãViewããã¦Controllerã®çµã¿åããã§å®è£
ããªããã°ãªãã¾ããã
Backbone.jsã¯Underscore.jsã«ä¾åãã¦ãã¾ãã
Backbone.jsã¯jQueryãç½®ãæãããã®ã§ã¯ããã¾ãããBackbone.jsã¯jQueryããä¸ä½ã®æ¦å¿µã¨ãã¦åå¨ãã¦ããã©ã¤ãã©ãªã§ããBackbone.jsã¯jQueryã«ã¯ä¾åãã¦ãã¾ããããViewå
ã§ã®DOMæä½ã¯jQueryãç¨ããã®ã便å©ã§ãããããä½µãã¦å°å
¥ããã»ããããã§ããããç¾å¨ãªã³ã©ã¤ã³ã§è¦ããã¨ãåºæ¥ãBackbone.jsãµã³ãã«ã³ã¼ãã®ã»ã¨ãã©ãDOMæä½ã«jQueryãç¨ãã¦ããããã§ããã¾ããMustacheã®ãããªãã³ãã¬ã¼ãã¨ã³ã¸ã³ãViewå
ã§ç¨ãããã¨ãæ¨å¥¨ããã¦ãã¾ãããã³ãã¬ã¼ãã¨ã³ã¸ã³ãå°å
¥ãããã¨ã§ãViewå
ã§ã®HTMLçæã³ã¼ããã¹ãããªè¨è¿°ãããã¨ãã§ãã¾ãã
以ä¸ã¯ãBackbone.jsãæä¾ãã主ã ã£ãã¯ã©ã¹ã§ãã
(1) Backbone.Model
ãããããModelã¯ã©ã¹ããã¼ã¿ã®ä¿æãæä½ãä¸èº«ã«å¼ãåããã¯ã©ã¹ã
(2) Backbone.Collection
ãModelã¯ã©ã¹ã®ä¸é¨æ©è½ãåãåºãããã®ãModelãªãã¸ã§ã¯ãã®é åºä»ããªã¹ãã¨ãã¦æ©è½ããããµã¼ããµã¤ãçã«ãã¼ã¿ãæ°¸ç¶åããéã®CRUDãªãã¬ã¼ã·ã§ã³ãæ å½ããã
(3) Backbone.View
ãããããViewã¯ã©ã¹ãHTMLã®ã¬ã³ããªã³ã°ãæ
å½ããï¼ã¬ã³ããªã³ã°å¦çãè¡ãã¡ã½ããã¯render()ã¨ããååã«ãããã¨ãå¤ãï¼ãDOMã§çºçããã¤ãã³ãã«å¯¾ãã¦ãç°¡åã«ãã³ãã©ããã¤ã³ãã§ãã便å©ã¡ã½ãããeventsãçãç¨æããã¦ãããViewå
é¨ã§jQueryãä½µç¨ããã¨DOMæä½ãããããããªããã¾ããMustacheçã®ãã³ãã¬ã¼ãã¨ã³ã¸ã³ãç¨ããã¨ãHTMLçæã³ã¼ããã¹ãããªè¨è¿°ã§ããã
ã¯ã©ã¤ã¢ã³ããµã¤ãJSã¢ããªã±ã¼ã·ã§ã³ã¯ã¤ãã³ãããªãã³ãªã®ã§ãViewã¯ã¤ãã³ããã³ãã©ã®è¨è¿°çã§å¿
ç¶çã«ããã¼ã«ãªããã¡ãViewã®ä¸ã®render()ã¡ã½ããããç義ã§ã®ï¼ãµã¼ããµã¤ãMVCã«ãããï¼Vã«ç¸å½ããã
(4) Backbone.Controller
ãããããControllerã¯ã©ã¹ãURLãã©ã°ã¡ã³ãï¼URLã®ãã¡ã#以éã®é¨åï¼ã«å¿ããã«ã¼ãã£ã³ã°å¦çãè¡ããã¨ãã§ããã
Backbone.jsä¸ã§ã¯ãControllerãçµç±ããªããViewããModelã¸ã®ã¢ã¯ã»ã¹ãå¤çºãããããã¯ã¤ãã³ãããªãã³ãªæåãå®ç¾ãããããã¾ãRESTfulã«å¿ å®ãªURIè¨è¨ãè¡ãããï¼å¾è¿°ï¼ããã®ããããµã¼ããµã¤ãMVCã®ã³ã³ããã¼ã©ã«æ¯ã¹ãã¨ãBackbone.jsã®ã³ã³ããã¼ã©ã¯ã¹ã«ã¹ã«ã«ãªããã¡ã
(5) Backbone.History
ãControllerã¯ã©ã¹ã®ä¸é¨æ©è½ãåãåºãããã®ãã«ã¼ãã£ã³ã°å¨ããæ
å½ããã
ãµã¼ããµã¤ãMVCã¨ã¯ã©ã¤ã¢ã³ããµã¤ãMVCã®éã
ãã¶ã¤ã³ãã¿ã¼ã³ã¨ãã¦ã®MVCã«ã¯ãåéã«å¿ãã¦æ§ã ãªå®ç¾©ãããããã§ããWebç³»éçºè ã«ã¯ããªãã¿ã®ãµã¼ããµã¤ãMVCã¨ã¯éã£ã¦ãBackbone.jsã¯ãOSãã¤ãã£ãã®GUIã¢ããªã±ã¼ã·ã§ã³ã«è¿ãMVCãæä¾ãã¾ãããµã¼ããµã¤ãã®MVCã¨ãBackbone.jsãç¨ããã¯ã©ã¤ã¢ã³ããµã¤ãã®MVCããå³ã§æ¯è¼ãã¦ã¿ã¾ãããã
å·¦å³ã®MVCãã¿ã¼ã³ãè¦æ¯ã¹ãã¨ããå·¦ã¨æ¯ã¹ã¦å³å´ãç°ãªã£ã¦ããç¹ã¯ã©ãã§ããããã
(1) Viewã¨Modelãçµã³ã¤ãã¦ãã
Backbone.jsã§ã¯DOMã¸ã®ã¤ãã³ããã³ãã©ãViewå
ã®ã¡ã½ããã¨ãã¦è¨è¿°ãã¾ãããã®ããViewãããªãããã¼ã«ãªãã¾ããããã«ãViewå
ã«è¨è¿°ãããã¤ãã³ããã³ãã©ãç´æ¥Modelãå©ããããViewã¨Modelãå¯çµåã«ãªãã¾ãã
OOPãéè¦è¦ããã¯ã©ã¹åå©ç¨ã®è¦³ç¹ããã¯ãViewã¨Modelãå¯çµåãã¦ãããã¨ã¯å¥½ã¾ããããã¾ããããã®ãããBackbone.jsã§ã¯ãBackbone.Eventsã¨ããã¢ã¸ã¥ã¼ã«ãå
é¨ã§å°å
¥ãããã¶ã¤ã³ãã¿ã¼ã³ã§ããã¨ããã®ãObserverãã¿ã¼ã³ããæä¾ãããã¨ã§ããã®åé¡ã軽æ¸ãã¦ãã¾ãã
Backbone.Eventsã®å°å
¥ã«ãããModelã¯èªåãå©ç¨ããViewã«ã¤ãã¦ã®äºåç¥èãæã¤å¿
è¦ããªããªãã¾ãããããããViewã¯èªåãå©ç¨ããModelã«ã¤ãã¦ç¥ã£ã¦ããå¿
è¦ãããã¾ããããã«ã¤ãã¦ã¯ã¯ã©ã¹åå©ç¨ã®è¦³ç¹ãã許容ã§ããªãã¨æãã人ãããããããã¾ãããDOMã¤ãã³ãã«å¯¾ããã¤ãã³ããã³ãã©ããControllerï¼ãããã¯ããã«æºããå°ç¨ã¯ã©ã¹ï¼ã«åé¢ãããã¨ã§ãViewããModelã¸ã®ç´æ¥ã®ã¢ã¯ã»ã¹ãæé¤ãããã¨ã¯ã§ãããã§ã¯ããã¾ãããã³ã¼ãéãå¢å ããå²ã«è¤éæ§ã¯å¯¾ãã¦ä½æ¸ãããã¡ãªãããèããã®ã¨å人çã«èãã¦ãã¾ããã·ã³ãã«ããä¿ã¤ããã«ãViewãModelãç´æ¥å©ããã»ããããã®ã§ã¯ã¨æãã¾ãã
(2) Controllerã®å½¹å²ãèã
Backbone.jsã®Controllerã¯ãåºæ¬çã«ã¯ãä¸ããããURLãã©ã°ã¡ã³ãï¼http://foo.com/bar#zoo/baz ã®ãããªURLã§ãããã·ã¥ä»¥éã®"zoo/baz"é¨åã®ãã¨ï¼ã«å¿ããå¦çã®ã«ã¼ãã£ã³ã°ã®ã¿ãæ å½ãã¾ãããã®ããããã¼ã¸é·ç§»ï¼ãã®å ´åã®ãã¼ã¸ã¨ã¯ããã©ã¦ã¶ã®åèªè¾¼ãä¼´ãããURLãã©ã°ã¡ã³ãã®ã¿ãæ¸ãæãããããªç»é¢é·ç§»ãæå³ãã¾ãï¼ãç¡ããããªå°è¦æ¨¡ãªã¢ããªã±ã¼ã·ã§ã³ã§ã¯ãControllerãã¹ã«ã¹ã«ã«ãªãããããã¾ãããä¸æ¹ã§ãæä¾ããæ©è½ã«å¿ãã¦ãã¼ã¸ãåãæ¿ããã¢ããªã±ã¼ã·ã§ã³ã§ã¯ããã¼ã¸ã«å¿ããã«ã¼ãã£ã³ã°ãControllerãæ ããã¨ã«ãªãã§ãããã
ãã¨ãã°ãGMailã®å ´åãåä¿¡ãã¬ã¤ã®URLã¯
ãhttps://mail.google.com/mail/?ui=2&shva=1#inbox
éä¿¡ãã¬ã¤ã¯
ãhttps://mail.google.com/mail/?ui=2&shva=1#sent
ã³ã³ã¿ã¯ããªã¹ãã¯
ãhttps://mail.google.com/mail/?ui=2&shva=1#contacts
ã¨ãã£ãããã«ãæ©è½ï¼ãªã½ã¼ã¹ï¼ã«å¿ãã¦ããã·ã¥ä»¥éãå¤æ´ãããã¨ã§ããã¼ã¸åèªè¾¼ãä¼´ããªãAjaxã¢ããªã±ã¼ã·ã§ã³ã«ãé¢ããããåãªã½ã¼ã¹ã«å¯¾ããRESTfulãªURL(â»æ¬ã¨ã³ããªã®æå¾ã«æ³¨éã追è¨ãã¾ãã)ãå®ç¾ãã¦ãã¾ããããã®ãããã§ãURLã«ããã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ ã復å ãããã¨ãã§ããAjaxã«ãé¢ããããã©ã¦ã¶ã®ãé²ãããæ»ãããã¿ã³ãããèªç¶ã«æ©è½ãã¦ããã¾ããBackbone.jsã®Controllerãæ´»ç¨ãããã¨ã§ãèªä½ã®ã¢ããªã±ã¼ã·ã§ã³ã«ãããã£ãURLã極ãã¦ç°¡åã«å°å ¥ãããã¨ãã§ããã®ã§ãã
ã¾ããä¸è¬çã«ãµã¼ããµã¤ãMVCã§ã¯ãControllerã¯Viewãããã¯ããå½¹å²ãæ
ã£ã¦ãããã¨ãå¤ãã§ããããControllerã®å½¹å²ã¯ãModelããå¿
è¦ãªãã¼ã¿ãåå¾ãããããViewã«ä¸ããViewãããã¯ãã¦HTMLãã¬ã³ããªã³ã°ããã¾ããä¸é£ã®å¦çã§ã常ã«Controllerãä¸å¿ã§ä»åã£ã¦ããæ§å³ã§ãããã®ããå½ç¶ãControllerã¯Viewã®å¨å¦ãç¥ã£ã¦ããå¿
è¦ãããã¾ãã
ä¸æ¹ãã¯ã©ã¤ã¢ã³ããµã¤ãMVCã§ã¯ãäºæ
ã¯ããªãç°ãªãã¾ããã¯ã©ã¤ã¢ã³ããµã¤ãMVCã§ã¯ãViewã¯Modelã®ãã¼ã¿ããªã¢ã«ã¿ã¤ã ã«åæ ãç¶ããªããã°ãªãã¾ããããã®ç¹ããããå¦ççã«ä¸åº¦HTMLãçæããã°å½¹å²ãçµäºãããµã¼ããµã¤ãã¨ã¯éãã¾ãããã®ãããViewã¯Modelãæã¤ãã¼ã¿ã®å¤æ´ã¤ãã³ãï¼Backbone.jsã§ã¯changeã¤ãã³ãï¼ãæ¾ããã¤ãã³ãçºçã®ãã³ã«èªããæ¸ãæããããã«ãã¾ãï¼Observerãã¿ã¼ã³ï¼ããã®ãããControllerã¨Viewã®éã«ç´æ¥çãªé¢ä¿ã¯çãã¾ããããããModelã¨Viewãå¯ã«é£åãã¦ããã®ã§ããControllerã¯ããã¾ã§ãã¢ããªã±ã¼ã·ã§ã³ãæä¾ãããªã½ã¼ã¹ã®è¦ãæ¹ãå¤åãããããã«ã±ãä¸ããã ãã®å½¹å²ããæ
ã£ã¦ããªãã®ã§ãã
Backbone.jsãã¦ã¼ã¶å ¥åã¤ãã³ããå¦çããäºã¤ã®ã«ã¼ã
Backbone.jsã§ã¯ãã¦ã¼ã¶ãçºçãããã¤ãã³ããå¦çããããã«ãäºã¤ã®ã«ã¼ããæ³å®ããã¦ãã¾ããéçºè ã¯ãå¦çã®å 容ã«å¿ãã¦ãããäºã¤ã使ãåããå¿ è¦ãããã¾ãã
(1) Controllerãæä¾ããã«ã¼ãã£ã³ã°æ©è½
URLã®ããã·ã¥ä»¥éã§è¡¨ãããURLãã©ã°ã¡ã³ããå ã«ãControllerãã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ ãå¤æ´ããããã¼ã¸è¦ç´ ã®å¤ããæ¸ãæãããããªé·ç§»ã«ã¯ãã®æ©è½ã使ããï¼ä¾ï¼GMailã«ãããåä¿¡ãã¬ã¤ããéä¿¡ãã¬ã¤ã¸ã®ç§»åçï¼
(2) Viewãæä¾ããdelegateEvents
Viewãæä¾ãããã¤ãã³ããã³ããªã³ã°ã®ä»çµã¿ãModelãã¼ã¿ã®æ´æ°ãããã¼ã¸è¦ç´ ã®ä¸é¨ãæ¸ãæãããããªå°æ©è½ã®å®è£
ã«ã¯ãViewãæä¾ãããã®æ©è½ã使ããï¼ä¾ï¼GMailã«ããããä¸æ¸ãã¡ã¼ã«ã®ç·¨éæ´æ°ããªã¼ãã»ã¼ãæ©è½ããã£ã«ã¿è¨å®ç»é¢ã®è¡¨ç¤ºï¼
Backbone.jsã使ã£ãã¢ããªã±ã¼ã·ã§ã³è¨è¨ã®ãã¤ã³ã
(1) Modelã¯Viewãæèãã¦ã¯ãããªãï¼ModelãViewãå¼ã³åºãéã«ã¯Observerãã¿ã¼ã³ã使ãï¼
ãåè¿°ã®ã¨ãããModelã¯åå©ç¨å¯è½ã§ãªãã¦ã¯ãªãããç¹å®ã®Viewãç¹å®ã®Controllerã«ä¾åãããããªã³ã¼ãããModelå ã«æ··ãã¦ã¯ãªããªãã
(2) Viewã¯Modelãç´æ¥å©ãã¦ããã
ãåè¿°ã®ã¨ããã
(3) Controllerã¯RESTfulã«
ãURLãã©ã°ã¡ã³ãã¯ããã¾ã§URLã®ä¸é¨ã§ãããã(â»æ¬ã¨ã³ããªã®æå¾ã«æ³¨éã追è¨ãã¾ãã)ãRESTfulã«è¨è¨ããªããã°ãªããªãããã©ã°ã¡ã³ãã«ãã¢ã¯ã·ã§ã³ããè¨è¿°ãã¦ã¯ãªããªããURLã表ããã®ã¯ãããã¾ã§ãªã½ã¼ã¹ã®å ´ææ
å ±ã§ããã¹ãã§ããã
ï¼æªãä¾ï¼http://foo.com/bar#delete_comment/3 â URLã«ãã¢ã¯ã·ã§ã³ãæ
å ±ãå«ã¾ãã¦ãããRESTfulã§ãªããªã£ã¦ããããã®URLã¯URLã¨ãã¦æå³ããªããªããã¾ãããã®URLãåèªè¾¼ããã¨ãã³ãªãã¨ã«ãªã£ã¦ãã¾ãã ããããããã£ãã¢ã¯ã·ã§ã³ã¯delegateEventã®æ çµã¿ã§ãViewãModelã«ç´æ¥ä¾é ¼ãããã¨ã§å¦çãããã¹ãã
ï¼è¯ãä¾ï¼http://foo.com/bar#latest_comments/orderby-dateasc-limit-10
ããªã³ã©ã¤ã³ã§å ¥æå¯è½ãªBackbone.jsãµã³ãã«ã³ã¼ãã¯ãããããå°è¦æ¨¡ãªã¢ããªã±ã¼ã·ã§ã³ã§ãããã¨ãå¤ãããããã£ãã¢ããªã±ã¼ã·ã§ã³ã§ã¯ãã¼ã¸é·ç§»ãçºçããªããããã«ã¼ãã£ã³ã°æ©è½è§£èª¬ã®ããããç¡çããURLãã©ã°ã¡ã³ãã«ã¢ã¯ã·ã§ã³ãè¨è¿°ãã¦ãããã®ãå¤ãè¦ãããããããã£ãé¨åã¯çä¼¼ããªãã»ããè¯ãã ããã
(4) Viewã¯Modelã®ç²åº¦ã«ãããã¦é層å/ç´°ååãã
Viewã¨Modelã¯ããããä¸å¯¾ä¸ã«å¯¾å¿ãã¦ããã®ãæã¾ãããViewã¨Modelã対å¿ããããã¨ã§ãããModelãæ´æ°ããchangeã¤ãã³ããçããã¨ã対å¿ããViewãèªåçã«æ¸ãæãããããªè¨è¨ãæ¡ç¨ãããããã¾ããDOMæ¸ãæãã®ç¯å²ãæå°éã«ãããã¨ãã§ãããããæç»é«éåã«å¯ä¸ããã
Backbone.jsã¾ã¨ã
(1) ã¯ã©ã¤ã¢ã³ããµã¤ãMVCã¯ããµã¼ããµã¤ãMVCã¨æ¯ã¹åæãéã
ãWebç³»ã¨ã³ã¸ãã¢ã«ã¨ã£ã¦ãMVCã¯é¦´æã¿ãæ·±ãèãæ¹ã§ããããããã¯ã©ã¤ã¢ã³ããµã¤ãã«MVCãå°å ¥ããã«ããã£ã¦ã¯ããµã¼ããµã¤ãã¨ã®å·®ç°ãå¤ãããããããµã¼ããµã¤ãã§å¾ãå å ¥è¦³ãæ¨ã¦ã¦ãããå¿ è¦ãããã§ãããã
(2) Backbone.jsã§ã¯ãViewâModelã¨ããå¯çµåãçãããããããããªã
ãåè¿°ã®ã¨ããã§ããViewã¯Controllerãçµç±ããã«ãModelã«ç´æ¥ã¢ã¯ã»ã¹ããããã¨ã«ãªãã¾ããããããModelã®åå©ç¨æ§ãé«ãããããModelããViewã¸ã®ã¢ã¯ã»ã¹ã¯ãååã¨ãã¦Observerãã¿ã¼ã³ãç¨ãã¦å®è£ ããããã¨ã«ãªãã¾ãã
(3) URLãã©ã°ã¡ã³ãã¯RESTfulã«è¨è¨ãã
ãã¢ã¯ã·ã§ã³ãURLã«å«ãã¦ã¯ããã¾ãããURLã§ã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ ã表ãããã¨ã¯ãã¢ããªã±ã¼ã·ã§ã³ã«ã¨ã£ã¦é常ã«å¤§ããªã¡ãªããã«ãªãã¾ããURLãRESTful*1ã«è¨è¨ãããã¨ã«ãããAjaxã¢ããªã±ã¼ã·ã§ã³ã«ãé¢ãããããã¼ã¸ã®ããã¯ãã¼ã¯ãå¯è½ã«ãªãããã©ã¦ã¶ãåèµ·åããã¦ã復å ããã¿ãã«ä»¥åã¨åãç»é¢ã表示ããããã©ã¦ã¶ã®ãé²ãããæ»ãããã¿ã³ãã¦ã¼ã¶ã®ç´æã©ããã«åä½ããã®ã§ãã
大è¦æ¨¡ãªJSã¢ããªã±ã¼ã·ã§ã³ãæ§ç¯ããä¸ã§ãMVCãã¿ã¼ã³ã®å°å
¥ã¯é常ã«å¤§ããªå©ãã«ãªãã¾ããBackbone.jsã®ãããªãã¬ã¼ã ã¯ã¼ã¯ã®ç»å ´ã«ãããã¯ã©ã¤ã¢ã³ããµã¤ãã§ã®MVCå°å
¥ãããã¾ã§ã«ãªãç°¡åã«å®è£
åºæ¥ãããã«ãªãã¾ããã
ç¾å¨ããã®åéã§åèã«ãªãããã¥ã¡ã³ãããµã³ãã«ã³ã¼ãã¯ãã¾ã ã¾ã ããç¨å¤ãã¯ãªãããã§ãããã¹ãã¼ããã©ã³å
¨çæã®ä»ãã¯ã©ã¤ã¢ã³ããµã¤ãã§åããªãããªJSã¢ããªã±ã¼ã·ã§ã³ã®éè¦ã¯é«ã¾ãä¸æ¹ã§ããããä»å¾æ°ã«æã§ãç¶æ³ã¯åçã«æ¹åãã¦ãããã®ã¨æããã¾ãã
ä»ã¯çã試è¡é¯èª¤ãç¹°ãè¿ãã¦ãã段éã§ãããããBackbone.jsã¯ã¦ã¼ã¶ã®èªç±åº¦ãé常ã«å¤§ããè¨è¨ã«ãªã£ã¦ãããã®ã®ãç¾ç¶ã®ã³ãã¥ããã£ã®æ´»æ³ãè¦ãã«ã¤ããBackbone.jsãç¨ããã¢ããªã±ã¼ã·ã§ã³éçºã®ãå®çªãã¶ã¤ã³ããè¦åºãããã¾ã§ãããã»ã©æéã¯è¦ããªãã®ã§ã¯ãªããã¨æãã¾ãã
*1:4/8 5:03追è¨ãã¯ã¦ã¶ã³ã¡ã³ãã§ææé ãã¾ãããã#以éã®URLãã©ã°ã¡ã³ãã¯å³å¯ãªæå³ã§ã®URLæ§æè¦ç´ ã§ã¯ãªããã¨ãèããã¨ãURLãã©ã°ã¡ã³ãã§ã¢ããªã±ã¼ã·ã§ã³å ãªã½ã¼ã¹ã表ç¾ããææ³ããRESTfulãã¨å¼ã¶ã®ã¯ééãã§ãããã¨ã«æ°ã¥ãã¾ãããä»ã«ã©ãããè¨èã使ãã®ãé©åãªã®ãåããã¾ããã...
ç°å½¢ã®å»å¢ãã«ãã¡ã¿ã岡å´ãã«å¼ã£è¶ãã¾ãã
[注æï¼äº¬é½å¸å·¦äº¬åºãã¼ã«ã«ãã¿ã§ã]
ä¸ç®è¦ããä¸çå¿ãããã¨ã®ã§ããªãç°å½¢ã®å»å¢å»ºé ç©ã"ã¡ã¿ã岡å´"ã«å¼ã£è¶ããã®ã§ããã®é åãåçã§ã¬ãã¼ããããã¨æãã¾ãã
å¤æ¥ã«æ ããã¡ã¿ã岡å´ã左京åºèè·é¢ã¯ã¨ã¦ãä½ã¿ããã¨ããã
ã¨ã«ããå¤è¦ã«ã¤ã³ãã¯ããããã
室å
ãã¨ã¦ãçªãå¤ãã¦éæ¾çãªãããã¬ã¤ã¢ã¦ããããã¯ãã¨ãªãå¥å¦ã§ããã
åçããã¯ã¢ã©ãè¦ãã«ãããããããªãããã©ããå¤å´ãå
å´ãããããã®å»ºç©ãªã®ã§ã家è³ãé常ã«ãªã¼ãºããã«ã
æ大ã®ç¹å¾´ã¯å ¨å®¤ã«ããããï¼ã¤ç¨æããã¦ããåºçªãåé¨å±ã«ã¯ï¼ã¶æåºã£å¼µããããããã®ãã¡ï¼ã¤ãåºçªã«ãæ®ãï¼ã¤ã¯ãã©ã³ãã«ã¢ãµã¤ã³ããããä¸å±¤ã®é¨å±ã¨å ¥ãéãã«ãªãããã«å²ãæ¯ãããã®ã§ãå¤ããè¦ãã¨å¸å¹ãã¦è¦ããã
ã¡ã¿ã岡å´èªç©ºåçãäºæ£ãã¨ã¬ãã¼ã¿-é段ã¨ãªã¢ã§æ¥ç¶ããæ§æã室å
ããã¯ãåããå´ã®æ£ãè°·ã®åããã«ãã島ã®æ§ã«è¦ããã
æ±ã®ä½ç½®ãå¤ãçªããã¯è°·åããã®å³¶ãéè¿ã«è¦ãããéæ¾çã
ã¡ã¿ã岡å´ã¯é常ã«å¤ãã®éåããã¿ã¼ã³ãç¨æããã¦ãããããã¯ããã¾ã§ä¸ä¾ãåã¯ï¼é¨å±è¦ãã¦ããã£ãããã©ããå ¨ã¦å¤§å¹ ã«éãã¬ã¤ã¢ã¦ãã«ãªã£ã¦ãããï¼ã²ãã£ã¨ãã¦å ¨å®¤éåããã¦ãã¼ã¯ã ã£ããããã®ã ãããï¼ï¼
ä¸ã«ã¯ãããªé¨å±ãï¼åã®é¨å±ã§ã¯ãªãï¼ãåã®ä½æ°ãæ±ã«çµµãæãã¦ãã£ãã
è§ãé常ã«å¤ãç¹å¾´ããµãããã¶ã¤ã³ã¯ãï¼ï¼-ï¼ï¼å¹´ä»£ã®é»å·ç´ç« ãã«ããメタボリズム運動ãæ±²ãã ç©ã建ç©åã®ç±æ¥ã«ããªã£ã¦ãããå
å¡«çãåªå
ããã¦ããããå
¨å®¤ãè§é¨å±ã«ãªããããªæ§æãæ¡ç¨ããã¦ããã建ç¯å½æã¯äººæ°ã®ãã³ã·ã§ã³ã ã£ããã¨[è¦åºå
¸]ãç´å¾ã®ãé常ã«ãããããªã¹ãã¼ã¹ã®ä½¿ãæ¹ã§ããã
å
¨ä½ã¨ãã¦ç°æ§ã«å¯¾ç§°æ§ã«ãã ãã£ãå°è±¡ãåãããä¾ãã°å»ºç©ã®ä¸å¤®é¨ãä¸åºã®ã¨ã¬ãã¼ã¿ãæãã§ä¸¡å´ã«é段ãé
ç½®ããã¦ãããåçæ§ã«æ¬ ããããããã¸ãç¾ããã
ã¡ã¿ã岡å´ç 究家ã®@nankiæ°æ°ãããã®å»ºç©ã«ã¯è³ãæã«é»éæ¯ãé ããã¦ããã
æ°ã¯ç¾å¨ãã¡ã¿ã岡å´3Dã¢ããªã³ã°ãã¼ã¿ã®æ§ç¯ãæããã¦ãããå®æã®æã«ã¯å»ºç©ã«é ããããããªãç§å¯ãæããã«ãªããããããªãã3Dã¢ãã«ã®ä¸æ¥ãæ©ãå®æåã³å¾¹åºããåæãå¾
ãããã¨ããã§ããã
ä¸ã®ç»åã¯ã@nankiæ°ã®æã«ãããé©ãã¹ãã¯ãªãªãã£ã§åç¾ãããã¡ã¿ã岡å´3Dã¢ããªã³ã°ã®ã¹ã¯ãªã¼ã³ã·ã§ãããæ°æ°ããä»ã¾ã§ã®äººçã§æããã¦ããã¢ãã®ä¸ã§ãä¸çªã¯ãªãªãã£ãé«ãå¶ä½ç©ã«ãªã£ã¦ãã¾ã£ãããæ¬ãã¼ã¿ãå
ã«ãFPSã²ã¼ã ãMO(MetaboOkazaki)ããLEGOçãã¡ã¿ããããããã®éçºçæ§ã
ãªä¼ç»ãæå¿ã«ããæãããããäºå®ã
ãªãå§å¦¹ãã³ã·ã§ã³ã¨ãã¼ãããã¡ã¿ãåºæ²¢ããå³äº¬åºã«ããããããåæ§ã«èæ½åãé²ã¿ãæTVçªçµã§ã¯å¿éã¹ãããã¨ãã¦ç´¹ä»ããã¦ããã¨ããå®ã«å¤±ç¤¼ãªè©±ã§ãããå¤è¦ã¯é¡ä¼¼ç¹ãå¤ã
ãããã®ã®ãã·ã«ã¨ããã«å¤§å¹
ãªå·®ç°ãè¦ããããã¡ã¿ãåºæ²¢ã¯ï¼ï¼å¹´æ½å·¥ãã¡ã¿ã岡å´ã¯ï¼ï¼å¹´æ½å·¥ãªã®ã§ãã¡ã¿ãåºæ²¢ã§å¾ããã£ã¼ãããã¯ãã¡ã¿ã岡å´ã«æå
¥ãããã®ã ãããã
(ã¡ã¿ãåºæ²¢)
åã®é¨å±ãå¥ç´åã«ä¸è¦ãããã¨ããã室å
ãã¹ã«ã¼ã ã«ã¯é³¥ã®ç³ãæ£ãã°ã£ã¦ããããããä½ãã§ããããããï¼ãã®å¾ç®¡ç人ããã«ã¯ãªã¼ãã³ã°ãã¦ããã£ãï¼
風é¨ã«ãããããæ½ã¡æã¦ãåã®é¨å±ã®æµ´å®¤çªã
ä»æ¥ã®åå¾ãéä¸ã®å»ä¸ããã©ã¸ãªæ¾éã®ãããªé³ãããã®ã§ãªãã ããã¨æã£ããã女æ§ã¢ãã¦ã³ãµã¼ã®ç¡æ©è³ªãªå£°ã§ãªã«ãï¼ä¹±æ°è¡¨ï¼ï¼ãèªã¿ä¸ãã¦ããã¨ãã¼ãããã³ã°ã«ã®æ¾éããã¨ããä¸å®¤ããæ¼ãåºã¦ãããä¸ä½èª°ãä½ãã§ãããã ãããä¸æ¨æ¥ã¯çªç¶å»ä¸ã®ç«ç½å ±ç¥ãã«ãé³´ãåºããæ°ç§å¾ã«åæ¢ããã
室å
ã«ããè¬ã®é常ãã¿ã³ãã¡ã¿ã岡å´æ´ãé·ã人ã«èãã¦ã¿ãããæ¼ãã¨ä½ãèµ·ããã®ãã¯ç¥ããªããããã
ä»è¿ä¸ä½ã«ã¯ãå»å¢ã¹ãããç¹æã®ç¬ç¹ãªç©ºæ°ãæ¼ããæéãæ¢ã¾ã£ã¦ããæãã人æ°ããªãããã§ã«ããã¤ãªã®ããã ã
ã¡ã¿ã岡å´å
¥ãå£ã建ç©åãè¨ããç¢ãããããæã®æ´ç¤¼ãåããã¿ã絡ã¾ããæåãèªããªããªã£ã¦ããã
å°ä¸ä¸éã«ã¯ãªããªãã¤ã±ã¦ãã¸ã£ãºã»ãã¼ãZAC BARANããããããé ãæçãã¨ã¦ãç¾å³ããã
(ZAC-BARAN åºé·ãæçã®è
ãç´ æ´ããã!!)
å±ä¸ã§ã¯æ¥½å¨ç·´ç¿ããï½ã
ZAC BARANã§ã¨ããä½æ°ã®æ¹ã«åããæ¬ãGeekãè¸è¡å®¶èã®åæ§çãªäººãä½ãã§ããã
ã¡ã¿ã岡å´ã®é åã¯ã¾ã ã¾ã èªãå°½ãããªãã»ã©ããã空室ãã¾ã ãããããªã®ã§ã左京åºå ã§å¼è¶ããæ¤è¨ãã¦ããæ¹ãå¦ä½ã§ãã :)
IIR輪è¬ï¼ ã¯ã¦ãª "21 Link Analysis"
IIR輪è¬ï¼ ã¯ã¦ãªã§ã21 Link Analysisã®çºè¡¨ãæ
å½ãã¦ãã¾ããã
使ç¨ããã¹ã©ã¤ãã¯ä»¥ä¸ã§ãã
IVS Launch Padã«ç»å£ãã¾ãã
12æ8æ¥ã«éå¬ãããIVS2010 Fall Kyoto Launch Padã«ç»å£ããã¦ããã ããLingoã®ç´¹ä»ãããã¦ããã ãã¾ããã
第ï¼ä½ã®è©ä¾¡ãé ããã¨ãã§ãã¾ããããããã¨ããããã¾ããã
å¼ãç¶ãé å¼µã£ã¦ããã¾ãã
çºè¡¨è³æã¯ä»¥ä¸ã§ãã
çºè¡¨ã¯åç»ã¬ã³ã¼ãã£ã³ã°ãããã¦ããããã§ãï¼ãOãï¼