Smart UI ã«ã¤ãã¦ãã ãã ãã¨
æ¨å¹´ã®ã¨ã³ããªã¼ã DDDについて、だらだらと ããã®ã³ã®ã³ã«ãªã£ã¦ãã¾ãã¾ããã Smart UI ã¢ã³ããã¿ã¼ã³ã«ã¤ãã¦ã
Smart UI ã¢ã³ããã¿ã¼ã³ã¯ ã³ã®æ¥çã§é常ã«ç®ã«ãããã¿ã¼ã³ã§ãã¾ããç´ äººãç´ äººã®ã¾ã¾ã§ä»äºãåºæ¥ã¦ãã¾ã ãã¿ã¼ã³ãªã®ã§ããããã®æ¯éãè«ããåã«ãã¾ãã¯ã©ããããã®ããæ´çãããã¨ããã§ãã
ä¸è¨ã§è¨ãã°ããSmart UIãã¢ã³ã¿è¯ãè ãªãï¼æªè ãªãï¼ã
* * *
DDD ã® Smart UI âAnti-Patternâ ãèªãã§ããã¨ãããã¯æ¬å½ã«ã¢ã³ããã¿ã¼ã³ãªã®ãã¨ãæãã¦ãã¾ãã
Advantages
- Productivity is high and immediate for simple applications.
ã·ã³ãã«ãªã¢ããªãä½ãä¸ã§ã¯çç£æ§ã¯è¶ é«ãããåºæ¥ãã®ãæ©ããï¼
- Less capable developers can work this way with litte traning.
åºè¾ºã¨ã³ã¸ãã¢ã§ãã¡ãã£ã¨ã®ãã¬ã¼ãã³ã°ã§ä»äºãã§ãã¡ããï¼
- Even deficiencies in requirements analysis can be overcome by releasing a prototype to users and then quickly changeing the product to fit their requests.
è¦ä»¶åæãå ¨ç¶ãã¡ãã¡ã§ãããããã¿ã¤ãããªãªã¼ã¹ããããã¤ã足ãããã«ã¦ã¼ã¶ã®
ã¯ã¬ããè¦æã«æ·»ãããããã£ããã£ã¨è£½åãæ´ãã¦å®æãããã»ã»ãªããã¦å¿ åæ³ã使ããã®ã¯ Smart UI ã®å¼·ã¿ï¼
- Applications are decoupled from each over, so that delivery schedules of small modules can be planned relatively accurately. Expending the system with additional, simple behavior can be easy.
ã¢ããªã±ã¼ã·ã§ã³ãç»é¢æ¯ã«ã¶ã£ãåãã«ãªã£ã¦ããããå°ããªã¢ã¸ã¥ã¼ã«åä½ã®åºè·è¨ç»ãããã¨æ£ããã§ãã¡ãããã·ã¹ãã ã®æ¡å¼µããç°¡åãªæ¯ãèãã®è¿½å ç¨åº¦ãªã ãã£ã¨ããéã
- Relational databases work well and provide integration at the deta level.
ãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã¯ãç»é¢æ¯ã«ã¶ã¤åãã«ãªã£ãã¢ããªãããã¼ã¿ã¬ãã«ã§çµ±åããã®ã«ã¨ã¦ãä¸æãåãã
- 4GL tools work well.
4GLãã¼ã«ãä¸æãå ·åã
- When applicatins are handed off, maintenance programmers will be able to quickly redo portions they can't figure out, becase the effects of the changes should be localized to each particular UI.
ã¢ããªã±ã¼ã·ã§ã³ããªãªã¼ã¹ããå¾ã®ãã¨ãã¡ã³ããã³ã¹ããã°ã©ãã¯ã奴ããç解ã§ããªãé¨å(解決åºæ¥ãªãã£ãé¨å)ããã£ãã£ã¦ãããã ãã¡ãã¡ããã¨ä½ãç´ãã¡ããã¾ããã ã£ã¦å¤æ´ã®å½±é¿ã¯ãã¶ã£ãåããããç»é¢æ¯ã«å±æåããã¦ããã ããã
ï¼ä»¥ä¸ãé©å½è¨³ï¼
ããã¿ãã¨ãSmart UIãã¨ããåºæ¥ããããã¯ãã®ã¢ã¼ããã¯ãã£ã®è©±ã¨ããããã¯ãéçºããã»ã¹ãã²ã£ãããã¦ãç»é¢é§åãã¶ã¤ã³ããç»é¢é§åéçºãã¨è¨ã£ã¦ãã¾ãããã§ãããSmart UI ã«ã¯ã
- å½¢ã«ãªãã®ãæ©ã
- ã¹ãã«ã¯ãããªã
- è¦ä»¶åæããããªã
- ç»é¢æ¯ã«ã¢ããªãã¶ã¤åããªã®ã§ã
- å½±é¿ã¯å±æåããã¦ã¦ä½æ¥ä¾åãªãã並åä½æ¥å¯
- åå²ãªãªã¼ã¹å¯
- ç»é¢åä½ã®å·¥æ°ã足ãã°ããã ããªã®ã§ãè¦ç©ãã楽ã¡ã
- ã¢ããªã±ã¼ã·ã§ã³å ¨ä½ã®çµ±å㯠RDBMS ã«ãä»»ã
- ä¿å®ãå¼ãç¶ãããããã¼ã§ãä½ã¨ããªã£ã¡ãã
ã¨ããç¹å¾´ãããã¾ãã
ããããããã°ã©ãã¯é ·ãç®ã«ãã£ãçµé¨ä¸ Smart UI ãå¿ã¿å«ãã¾ããããããªè²ç¼é¡ãããºãã¦ç¹å¾´ã ããã·ã³ãã«ã«ã¿ãã¨ããªããªãã¤ã±ã¦ãããããªãï¼ã¨æã£ã¦ãã¾ããã¹ãã«ã«ä¾åããªãããä¸å¿ã®ã¢ã¸ã¥ã¼ã«åãããã¦ããã®ã§ãåå²ããã¦ããã¡ãªããã¯äº«åã§ãã¾ãããè¦ç©ãã容æã§ããæ©æ¢°çã«è¨è¨ãã§ãã¦ãã誰ã«ã§ãéçºã§ãããã¨ããç¹å¾´ã¯ãå·¥æ¥å ã¨ãè¨ãæããããããã
ãªãã¨è¨ã£ã¦ã Smart UI ã¯ãã¦ã©ã¼ã¿ã¼ãã©ã¼ã« ã¨éçºçµç¹ã®é層åãé²ãã æ¥æ¬çãªã·ã¹ãã éçºã«ããããããã¾ãã
ãç´ äººã¯æ½è±¡åãé£ããã㯠ã¾ã¤ã㨠ããã®è¨èã§ãããã ãããã¡ã¤ã³ã¢ãã«åæã«ã¯ç¢ºããªæè¡åï¼ããã°ã©ãã³ã°ã®åï¼ãå¿ è¦ã§ããéçºè ï¼ããã°ã©ãï¼ã®æè¡åããã¬ãã®åã«ãè¦ä»¶åæãã§ã¼ãºãéçºè ããåæãããç¶æ³ã§ã¯ãè¦ç©ããéçºã«è¦ä»¶åæãå¿ è¦ã¨ãããªã Smart UI ãã¿ã¼ã³ã¯ãé常ã«å¿å¼·ãå³æ¹ã§ããçé¢ç®ãªè©±ãç¾å®åé¡ã¨ãã¦ã³ã¬ããæããªããããããªãã
ããã¦ãå®éã«éçºãããã·ã¼ã³ã§ããæè¡åã®ããéçºè ãå¿ è¦ã¨ããªãããã管çè ãµã¤ãã¨ãã¦ã¯äººå¡ã®èª¿éãç¨æã§ããããæè²è²»ç¨ãæ¼ããããã¾ããOJT ã¨è¨ãåã®äºå®ä¸ã®ç¡æè²ãã¾ããéãã®ããSmart UI ã¨ããåªããéçºãã¿ã¼ã³ã®ãããããã
ã¹ã¼ãçè¦ç¹ã§ã¯ Smart UI ã¯ãããã§ããï¼ãã£ã¦ãããå¬ããç¹å¾´ã®ã¦ããçãããã°ãã°ãé ·ãéçºè ã®å·£çªããã®ç¾è±¡ãã¨ãã¦èªããã Smart UI ã§ãããã²ãã£ã¨ãã¦ã³ã®æ¥çã¯ãæããæ ã«æ°´ã®æµããããã« Smart UI ã«ãã©ãçããã®ã§ã¯ãªããèªãã®ç´æã®å°ã¨ãã¦è½åçã« Smart UI ãé¸ãã ã®ãããããªãããããªããã¦ãæã£ã¡ããã¾ãã
* * *
ã¨ã¯ãããããããããã°ã©ããä¸è¦ãã¾ãã Smart UI ã®ãã¢ããã³ãã¼ã¸ããèãã¦ãåå°çã«ã¾ã¯ã¾ã¯ã¾ã¯ã£ã¨èº«ã®æ¯ããã ã£ã¦ãã¾ãã®ã¯ãããããã¹ãã¼ããå¼ã³ãæ°å¤ã®éçºè ã鬱ç ã«è¬ãå»ã£ã¦ããå å¶ã§ããã¨ç¥ã£ã¦ããããã§ããæ£ç´ãã©ã¦ããSmart UIãªéçºã«ä¹ã£ã¦é ·ãç®ã«ãã£ãããã°ã©ãã®ãªã¹ãã§ãæ´å²ã®å³æ¸é¤¨ã¯ä¸æ¯ã§ãã
DDD ã§ã¯ Smart UI ã Layered Architecture ã¨å¯¾ã«ãªããã¢ã³ããã¿ã¼ã³ãã¨ä½ç½®ã¥ãã¦ããããã§ã
Disadvantage
- Integration of applications is difficult except through the database.
ãã¼ã¿ãã¼ã¹ãä»ããªãã¢ããªã±ã¼ã·ã§ã³ã®çµ±åã¯ãã¡ãã£ã¡é£ããã
- There is no reuse of behavior and no abstraction of the business problem.Business rules have to be duplicated in each operation to which they apply.
æ¯ãèãã®åå©ç¨ãã§ããªããããã¸ãã¹åé¡ã®æ½è±¡åããã¦ãªãããã¸ãã¹ã«ã¼ã«ãããã使ã£ã¦ãããªãã¬ã¼ã·ã§ã³æ¯ã«éè¤ãã¦ãããã
- Rapid prototyping and iteration reach a natural limit because the lack of abstraction limits refactoring options.
ã©ããããããã¿ã¤ãã³ã°ãã¤ãã¬ã¼ã·ã§ã³ã¯èªç¶ã¨éçãè¿ãããã ã£ã¦ãæ½è±¡åä¸è¶³ããªãã¡ã¯ã¿ãªã³ã°ã®é¸æè¢ãå¶éãã¡ããããã
- Complexity buries you quickly, so the growth path is strictly toward additional simple applications. There is no graceful path to richer behavior.
è¤éããããã«ããªããè¦ãå°½ãããã ãããæ°ããªã·ã³ãã«ã¢ããªã±ã¼ã·ã§ã³ã追å ããããæ¡å¼µã¸ã®éã¯ãªããããããã«ããªãããªæ¯ãèããç´ ç´ã«ä½ãæ¹æ³ã¯ãªãã®ã ãï¼è¨³ãééã£ã¦ãããï¼
ã¾ããä¸è¨ã§è¨ãã°ããåºæ¥ãããã°ã©ã ã¯ã¯ã½ãã¨ãããã¨ã
ã½ããã¦ã§ã¢å·¥å¦ã¯ ä¸è¨ã§è¨ãã°ã人é¡ã¨è¤éãã¨ã®æ¦ãã®è¨é²ã*1ãSmart UI 㯠ãã®å¼·æµãè¤éããã¨æ¦å¨ãæããã«ä½ä¸ã¤ã§ã¬ãã³ã³å¯¾æ±ºãããããªãã®ã§ãããã竹æ§ã§B29ã¨æ¦ããã¨å©ããããã®ããããããªããã¨ãã£ãæãã
ã¾ãããããä¸æºã«æãã®ã¯ããããæ¦éå¡å´ï¼ã¤ã¼ãï¼ã ããã§ãã¹ã¼ãçã«ã¯ãæ¦ãã¯æ°ã ããå è²´ãã¯æ£ãããã®ã®è¦æ¹ãã*2ãã¨ããããå ¨ã¦ãä¸æããã話ããªãã¦ããããç¡ããã®ããã®ãããªããã°ã©ã ã¯ã技術的負債ãã貯ã¾ãã¾ãããªç¶æ ã§ãåæéçºã¯å®ãä¸ãã£ã¦ããæ¡å¼µãä¿å®ã«ãããã¨ã³ã¹ãããããã¾ã*3ãããã¯ã¹ã¼ãã¨ãã¦ãç¾å³ãããªãã
ãããã»ã¼ã«ã¹ãã¼ã¯ã§ã¤ã¤ãããã¨...ã
* * *
ASP.NET ãä¸ã«ããã¥ã¼ããã¦ã®é ãããã㯠ASP âASP.NET移è¡æ¯æ´ã®ãä»äºããã¦ãã¾ããã
ãã㯠ASP ã使ã£ã¦ãSmart UI ã®æ¥µã¿ã®ãããªéçºããã¦ãã¾ããããå½ç¶ãã³ãã¯ã¼ã§æ¼ãåãããã®è¶ æ®æ¥ãåããããã°ã©ã ã®ãã©ãã«å¤çºã§ãã®å¯¾å¿ã§ã®è¶ æ®æ¥ã¨ããæ²æ¨ãªç¾å ´ã§ããã
ã³ã¬ã§ã¯ï¼ã³ã¹ãçã«ï¼ãããªãã¨ãããã¨ã§ãASP.NET ã®ç§»è¡ã®ä¼´ã£ã¦ 3層ã¬ã¤ã¤ã¼æ§é ãå°å ¥ãããã¨ãããã¨ã«ãªãã¾ããââã¨ã©ã人ã æ¥çµã Microsoft ã®ã»ã¼ã«ã¹ãã¼ã¯ ã«ããã®ãããã¦ãããæã£ã¡ãã£ãï¼å ãã¦ãããªããOOPã¯åå©ç¨(ryããªãã¼ã¯ã®ãã¾ãä»ãï¼ã
ã§ã移è¡ã®ããã®è«¸ã ãããåºç¤éçºãã¼ã ã¨ãã¦ãå¤é¨ãããå¼ã°ããã次第ã§ãã
主ãªãä»äºã¯ãASP.NET ã§ãããã¾ã§ãã£ã¦ãããã¨ãåºæ¥ãã®ã調ã¹ãããã©ã®ããã«ã¤ããã°ãããæ¨æºåããããæ¨æºã®ãã¬ã¼ã ã¯ã¼ã¯ãæºåããããªã®ã§ãããé£åã ã£ãã®ã è¦ä»¶ã§ãã£ã 3層ã¬ã¤ã¤æ§é åã§ãã
ã ã£ã¦ããã¾ã¾ã§ Smart UI ã§éçºãã¦ãã¦ã関数禁止令ãã«ãçåãæããªãã§ä»äºããã¦ããéçºè è»å£ã§ããããã«ã®ä¸å£°ã§ãããªãã¨ãè¨ããã¦ãåºæ¥ããããªãããWebUI層ã¨Biz層ã¨Data層ã«åãããã¨ããããã©ããã¡ã¤ã³ãåæããã¨ããããã°ã©ã ãè¨è¨ããã¨ãããã¾ã¾ã§ãã£ããã¨ãå ¨ããªããããã©ãããã°ãããæ³åããã¤ãã¾ãããã»ã»ãããªãããªã200ä½åã
å½ç¶ é£ã³åºã話ãã誰ã§ãæé ã«å¾ãã° 3層ã¬ã¤ã¤ã¼è¨è¨ãã§ãããããªãããã¥ã¢ã«ãä½ãããããã©ãã¡ãã£ã¨ã¾ã£ã¦ãããã¥ã¢ã«åã§ããããããªããããã£ã¦ããã°ã©ã ãä½ãããã°ã©ã ãä½ã£ã¡ããã¾ãã Smart UI ã®ããªã ã¨èªç¶ã«æããã«ã¢ã ãã©ããããåºæ¥ããè«ææ¸ãã¡ãããã¼ã
ãããªãããªã§ãã ãªãã¨åçããã®ã§ãããçµæç¾å ´ã«è延ããã®ã¯ãåç»é¢ã§ã®åå²ããWebUI層ãBiz層ãData層ã¾ã§è²«ããã層ç¶ãªãã¬è³½ã®ç®ç¶ã¢ã¼ããã¯ãã£ã¼ã§ãã...orz*4ãã ã誰ããã¿ã¹ã±ãã
* * *
çµå±ããããã¡ã¯ãã¾ã㯠ä¸ã¤ã®éçºãã¼ã ã«çµã£ã¦ãå®éã®æ¥åãã¼ã ã«åå ã㦠OOPå°å ¥ ãããã¨ã«ãã¾ãããåéã®éãä¸æ©ããã§ãã
ã§ããããã¾ã§ã®éçºã¹ã¿ã¤ã«ããããããå·¥æ°ããããã§ããããASPâASP.NET ã®ç§»è¡ã«ã¤ãã¦ã¯ãä¿å®ãã§ã¼ãºã§ã®å·¥æ°åæ¸ã®ä»ã«ãbuzzã£ã¦ãOOPã®ã¦ãªæå¥ã§ åæéçºãã§ã¼ãºã§ã®å·¥æ°åæ¸ãªãããè© ããã¦ãã®ã§ãã¨ã©ã人ã«ã¨ã£ã¦å·¥æ°ããµãããã®ã¯è©æ¬ºã§ãããã¨ãæè²ã£ã¦ãã£ãã£ã¦ããªãã§ãããªã«æéæããã®ï¼ãã¨ããçåãæã£ã¦ãã¾ã(ããã¾ã§ Smart UI ã ã£ããã)ã
ãã¨ãã¨ãè¨è¨ãããªããSmart UI ãã ã¡ããã¨è¨è¨ãããéçºãæ©ãä½ããããããªãããããªãã°ãéçºè ã©ããã¹ã¦ã«ä»ããè±ç¥ãä¸ãã¦ã¿ããããåºæ¥ããããããã¾ããã
è¦ä»¶åæã«ãæè²ã«ããéãæãããªããã¨ãSmart UI ã®æ¨ã¿ãªã®ã§ãããããã®æ¨ã¿ãæ¨ã¦ããã¨ã«ãªãã¨å°å ¥æç¹ã§èªèãã¦ããªãã£ããã¨ããã®ãããããã®æå ã§ãã
å½¼ãã馬鹿ã§ã¯ãªããããã¡ãªããã®ãªããã¨ã«ã¯ã¹ãããããããã¾ããçµå± ASPâASP.NET 移è¡è¨ç»ã¯ç½ç´ã«æ»ããå¤é¨ã«ã移è¡ãããï¼ãã¨å®£ä¼ãã¦ãã¾ã£ãæåãã¨ããããæ¡å¼µåã .asp ãã .aspx ã«å¤æ´ãããã¨ãããã¨ã§ è½ã¡çããã®ã§ãããï¼ããããªãã§ãï¼
* * *
以ä¸ãSmart UI ãããããã¨ãã¦ãã誰ãå¾ãããªãã£ããã¨è¨ãæ話ã
ä¾é ¼å 容ãããã¦ããã¨ãã¨å¤±æãã話ã ã£ãã¨æãã¾ããããã§ããä»ããæãã°ãSmart UI ãæ¢ããã®ãæ¢ããããã¨ããå¤æãåºæ¥ãªãã£ãã®ã¯ããããï¼ãã¡ï¼ã®å¤±æã ã¨æããå½æ Smart UI ã¨ãããã®ãä½ããæ£ããèªèã§ãã¦ããªãã¦ãSmart UI ã Smart UI ã¨èªèãã¦ããªãæ ã« ä¸éå端㫠Smart UI ããæãåºããã¨ãã¦ããã£ã¦æ²æ¨ãªãã¨ã«ãªãããããªã¢ãªã¬ããªæ¨äºã ã£ãã®ã 㨠ä»ã¯æã£ã¦ã¾ãã
ã¨ããããã§ãããã Smart UI ã«æ¬ ç¹ãããããã¨ãã£ã¦ã責é£ã¯æäºã«éããSmart UI ã«ã¯ã¡ãªãããå¤ãã®ã§ããããã¡ããã¨ãããå«ãã¦ç解ããªããã°ãã¨æãã¾ãã
ãã£ã è¸ãå¼µã£ã¦ãSmart UI ã§ãï¼ãã£ã¦è¨ããã°ããã®ããªãæ¥çµããããä¸æãbuzzwordã¤ãããªãããªï¼ããããã㯠Smart UI ã§ãã½ããã¦ã§ã¢éçºãå·¥æ¥åãã¿ãããªæãã§ãããããã° Smart UI ã®ã¡ãªããçãªãã¨ãç®æãä¼æ¥ã¯è¿·èµ°ããªãã¦ãã¿ã¾ãããä¼ç¤¾ãé¸ã¶ã¨ãã ãã¾ãä¼æ¥ãã¿ã°ã¥ããããããã¦ãé¸ã³ããããªãã¨æã£ãããï¼å¦æ³ï¼
ãããã¯ãã¡ããããããªä¼æ¥ã¯é¸ã°ãªãããé¸æãããã£ï¼ã»ã»ã»ã¦ãæã¡ä¸ãã¨ãã¦ãæå¾ã®æå¾ã§è½ã¨ãã¦ã´ã¡ã³ã
ãããã
Smart UI ã«ã¤ãã¦ã¯ ãã¡ãã®ã¨ã³ããªãç§é¸ã§ãã
- Smart UI が優れている? | システム設計日記
- Smart UI から抜け出すきっかけ | システム設計日記
- Smart UI なら Smart UI らしく | システム設計日記
- 雑然とした Smart UI から 整理した Smart UI へ | システム設計日記
ãªãã¦ããããæ ¼å¥½ãããªãã
追è¨
ã¾ãã ã¾ã¤ãã¨ããã«ã¤ã¶ããããã¨ã¯æã£ã¦ããªãã£ããè¶ ããã¯ãªã§ãã
ãç´ äººã«æ½è±¡åã¯é£ãããã£ã¦ã®ã«å®ç§ã«åæãããã©ãç§èªèº«ã®çºè¨ã ã£ãï¼
Yukihiro Matsumoto on Twitter: "http://d.hatena.ne.jp/minekoa/20100116/1263657955 「素人に抽象化は難しい」ってのに完璧に同意するけど、私自身の発言だっけ?"
ããã£ãè¨æ¶éã!? ã¨ç¦ã£ã¦æãããããããã¾ã¤ãã¨ãããè¨ã£ã¦ããã®ã¯
ãããããåå¿è åãè¨èªãé¿ãã¦ãããã¨ãè¨ãæ¿ããã° ãåå¿è ãè¦æãªãã¨ããä½ã§ãããã ããããããã å½¼ãã¯ãæ½è±¡åããè¦æãªã®ã ã
Matzにっき(2008-02-04)
ã§ããããåå¿è ãã¨ãç´ äººãããè¦æãã¨ãé£ããããããã¥ã¢ã³ã¹ãå ¨ç¶ã¡ãããè¨æ¶ã ãã§æ¸ãã®ã¯ããã¾ãã..orz ãã¿ã¾ããã
*1:ã®ã¼ã¯çã«ã¯ãã¯ã¦ããªãç©èªãã¯ãèç¡ãããããè¤éããã¨æ¦ã£ã¦ã»ããã£ãã§ãããã£ã¡ã®ã»ããå¼·æµã§ãæåéãéçºã never ending ã«ãªãã¾ã...orz
*2:éã«ã®ã¼ã¯ã«èªãããã¨ããã¥ã¼ã¿ã¤ãï¼ï¼ããã«ã¼ï¼é¨éçãªè©±ã«ãªãã¾ããããºã«ã¨ãã·ãªã¢ã§ãã
*3:éçºä¸ã«è² åµãè¿æ¸ä¸è½ã«ãªãã¨ãã¹ãã¼ãçºåã§ããããã©ããã«ã¼ããæè¡çè² åµãçºåï¼ããã¸ã§ã¯ããããã¹ãã¼ããç¶æ ã«ã£ï¼ã
*4:å½æãããã¯ããããã¬ãã£ããªãã®ã¨ãã¦ããåãæ¢ãã¦ããªãã£ãã®ã§ãããこちらãèªãã¨ãè³½ã®ç®ã¢ã¼ããã¯ãã£ãèµ·ç¹ã«ãªãã¡ã¯ã¿ãªã³ã°ãæåããã¦ããã¦ãã¨ã¯ããã ãããã®åä¸è¶³ã ã£ããã ãªããã¨ã¡ãã£ã¡è½ã¡è¾¼ã¿ã¾ã..orz