MVCããªãééã£ã¦ãããï¼
Webã·ã¹ãã ã«MVCãé©ç¨ããã®ã¯ééã£ã¦ãã¾ãï¼æ£ç¢ºã«ã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹ãè¶³ãã¾ããï¼ã
ãã®ããã«æè忢ããã¨ã³ã¸ãã¢ã«ã¯ããããªãããããã¾ããããããä¸åº¦è§£èª¬ãã¦ã¿ã¾ãããã
ç®æ¬¡
- ç®æ¬¡
- ããããMVCã¨ã¯ï¼
- æ´å²ãæ¯ãè¿ã£ã¦ã¿ã¾ããã
- ã¤ã³ãã¼ãã³ã¹ãã¹ãããã¨ORMã®ç»å ´ï¼
- ããããã¹ãã§ãããï¼
- ã¹ãã¢ãããã·ã¼ã¸ã£ã«ãããã¨ã«åé¡ã¯ãªãã®ï¼
- Fetch ãã¦ã°ã«ã°ã«ããªã
- æååé£çµã¯è¦ããªã
- ã©ã¡ããæ¥µç«¯ã§ããï¼
- åé¢éçºããã¹ã
ããããMVCã¨ã¯ï¼
MVCã¯ãã¹ã¿ã³ãã¢ãã¼åãã®ããã°ã©ã ããã¾ãã«ãã¡ããã¡ãã ã£ãã®ã§ããéãæ©è½ã¯ççµåã«ãããï¼ãã¨ããèãã§ä½ãåºããã¾ããã 1980年代ã®é ã®ã話ã§ãã ããèªä½ã¯æ£ããã§ãã
æ´å²ãæ¯ãè¿ã£ã¦ã¿ã¾ããã
Webã·ã¹ãã ããMVCã«é©ç¨ãããããã¨è¨ããåºããã®ã¯2000å¹´é ããã§ãã
ãã®è¾ºããçè§£ããã«ã¯ãå°ãæ´å²ãç¥ãå¿ è¦ãããã¾ãã
1995å¹´é ï¼ç§ã®æ°äººæä»£ï¼ã«Javaãçã¾ãã¾ãããã彿ã¯JavaãWebã§ä½¿ãã®ã¯Appletã§ããï¼ã¯ã£ããè¨ã£ã¦ä½¿ãç©ã«ãªãã¾ããã§ããï¼ã 1995ï½2000å¹´ã«ããã¦ãY2Kï¼2000å¹´åé¡ï¼ãèµ·ãã¾ããã COBOLã§ã¯ã西æ¦ã2æ¡ã§ä¿åãããã¨ãä¸è¬çã ã£ããããã2000年以éã·ã¹ãã ãåããªããªããã¨ããåé¡ã§ãã·ã¹ãã ãæ¹ä¿®ããããã¯ã©ãµãã§ä½ãç´ãããããããã鏿ãããã¯ã©ãµãã·ã¹ãã ãããããä½ããããã¨ã«ãªãã¾ããã ãã®ã¨ãRDBMSãã¡ã¸ã£ã¼ã«ãªãã人æãè¶³ãã¾ããããCOBOLerã大éã«æµå ¥ãã¦ãã¾ããã
ã¤ãã³ãããªãã³ãåãããªãCOBOLerãã仿§ã決ããããã³ã¼ãã¬ãã¥ã¼ããããããªä¸ã®ç«å ´ã«ããããã§ãã æ¬å½ã«æ··æ²ã¨ããæä»£ã§ããã
ãã®ã¨ãCOBOLeréã¯ããRDBMSã¯ã¹ãã¬ã¼ã¸ãSQLã¯ãã¡ã¤ã«ã®èªã¿æ¸ããããæ¹è¨ãã¨ããéããã¾ããã
ã¤ãã³ãããªãã³ãåãããªãä¸ã«ãã俺ãåãããããé åã¯ç¦æ¢ãã¨ãè¨ãåºã人ããããããã¾ãããããç§ãã¡åãã£ã¦ããä¸ä»£ã¯ãã¾ãã¯SQL以å¤ã®ä¸æ¯ãªããã«ãç¹°ãåºããå¿ è¦ããããSQLã¾ã§æãåããªãã£ãã®ã§ãã
çµæããRDBMSã¯ã¹ãã¬ã¼ã¸ãSQLã¯ãã¡ã¤ã«ã®èªã¿æ¸ããããæ¹è¨ãã¨ããã®ãæåã¨ãã¦æ®ã£ã¦ãã¾ã£ãã®ã§ãã
2000年以åã¯ããã©ã¦ã¶ãCSSã«å¯¾å¿ãã¦ãã¾ããã§ããã HTMLèªä½ããã¶ã¤ã³ãåé¢ã§ãã¦ãã¾ããã§ãããããWebã·ã¹ãã ã§MVCãå±ãããã¨ãäºå®ä¸ç¡çã§ããã
2000å¹´ã«ãªããããã³ã ããã«ã®ä¸ã§ãServletãJSPãCSSï¼ã使ãããã©ã¦ã¶ï¼ãªã©ãçã¾ãã¾ãã
Viewãåé¢ãããã¨ãã§ããããã«ãªã£ã¦ããMVCã«ãããããã¨ããæµããã§ããã®ã§ãã
ãã®æµãèªä½ã¯ééãã§ã¯ããã¾ããããæ®å¿µãªããããRDBMSã¯ã¹ãã¬ã¼ã¸ãSQLã¯ãã¡ã¤ã«ã®èªã¿æ¸ããããæ¹è¨ãã¨ããCOBOLerã®éºä¼åã¯æ®ã£ã¦ãã¾ãã¾ããã
ã¤ã³ãã¼ãã³ã¹ãã¹ãããã¨ORMã®ç»å ´ï¼
MVCãé©ç¨ãã¦ããä¸ã§ããã¤ã³ãã¼ãã³ã¹ãã¹ããããã¨ãããã¨ã表é¢åããã¦ããã¾ãã
ããã解決ããããã«ãORMãªããã®ãéçºããã¾ããã
ãã¦ããã®å³ããã£ããè¦ã¦ã¿ã¾ããããViewã«ã¯ãCSSãJavaScriptãªã©ãWebãµã¼ãï¼ãã©ã¦ã¶ï¼ã管è½ãããã®ã¨ãAPãµã¼ãã管è½ãããã®ãããã¾ãã
Controlã¯ãAPãµã¼ãã«éå®ããã¾ãã
Modelã¯ãAPãµã¼ãã¨ãDBãµã¼ãã«åããã¾ããããªããSQLã¯APãµã¼ãã®ç®¡è½ã«ãªã£ã¦ãã¾ãã PHPï¼Eloquentï¼Rubyï¼ActiveRecordï¼ãªã©ã§è¦ã£ã¦ããç§ããè¦ãã°ããªãã¸ã§ã¯ãæåè¨èªçã«ã¯ãç°ç©ã以å¤ã«è¡¨ç¾ããããããã¾ããã ORMã使ã£ãã½ã¼ã¹ã¯ããªãã¸ã§ã¯ãæåè¨èªçã«ãã®ãããæ±ãã½ã¼ã¹ã«ããè¦ããªãã®ã§ããâ¦â¦ã ããã«ãORMã®æ©è½ãViewã«å½ã¦ã¯ãã¦èããã°ããPHPã§æ¸ãã°JavaScriptãCSSãèªåçæãã¦ãããããããå¥å¦ãªæ§é ã«ãªã£ã¦ãã¾ãã
ãããå¥å¦ã¨æããªã人ã¯ããRDBMSã¯ã¹ãã¬ã¼ã¸ãSQLã¯ãã¡ã¤ã«ã®èªã¿æ¸ããããæ¹è¨ãã¨ããCOBOLerãä½ã£ãæåãå¼ãç¶ãã§ããããã§ãã
ããããã¹ãã§ãããï¼
ã¾ã£ããéã®ã¢ã¼ããã¯ãã£ã§ããSQLãAPãµã¼ãã§å®è¡ãããModelã«å ¥ããã¨ãããã¨ã«ç¡çãããã ãªãã¸ã§ã¯ãæåãæ£ããçè§£ãã¦ããã°ãããã«ããéã£ãæ©è½ã¯ççµåã«ãããã¨ããMVCã®ç念ãçè§£ãã¦ããã°ãDBãµã¼ãã«ã¤ã³ã¿ã¼ãã§ã¼ã¹ãç½®ãå¿ è¦ãããã¨åããã¯ãã§ãã
DBãµã¼ãã«ã¤ã³ã¿ã¼ãã§ã¼ã¹ãç½®ãã¨ãã¦ãRDBMSã®ã¡ã¢ãªã¼ç©ºéã§ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨ãã¦æ±ããã®ã¯ã¹ãã¢ãããã·ã¼ã¸ã£ã«ãªãã¾ãã ã¤ã¾ãããAPIã¨ãã¦ã¹ãã¢ãããã·ã¼ã¸ã£ã使ãã¹ããã¨ããçµè«ã«ãªã訳ã§ãã
ãããªããªãã®ã¯èªåã®ã¹ãã«ã§ããã§ããã»ã§ããªããããã¹ã¿ã¼ããã¦ããããã§ãããï¼
ã¹ãã¢ãããã·ã¼ã¸ã£ã«ãããã¨ã«åé¡ã¯ãªãã®ï¼
ãã¡ãããåé¡ã¯ããã¾ãã ãã¹ã¦ã¹ãã¢ãããã·ã¼ã¸ã£ã«ããã«ã¯ãç¾ç¶ã®ä¸è¬çãªã¨ã³ã¸ãã¢ãæã£ã¦ããSQLãæ¸ãã¹ãã«ã§ã¯å ¨ãè¶³ãã¾ããã
ã»ã¨ãã©ã®ã¨ã³ã¸ãã¢ã¯ãSQLã«ããã¦Staticããããããã²ã©ãããã§ãã
ãã®åé¡ã¯SQLã®ã¹ãã«ã端çã«æ¸¬ãã¾ãã åºæ¬æ§æã®åé¡ã§ãããããããééã人ã§RDBMSã«ä¿ã£ã¦ããã¨ãã¦ãéãè²°ãã®ã¯è©æ¬ºã¨è¨ã£ã¦ãè¯ãããã©ãããããªã¨ããã§ãã£ã¦ãããã¾ãããæ£è§£çã¯5ï¼ ãããã§ããStaticãããããæ¹å¤ãã¦ããæ¬äººããStaticããããããã¯ããã«åé¡ã®ãLEFT JOIN決ãæã¡ãããã£ã¦ãã¾ãã
ä¸ç10åãµã¤ãï¼ãã¼ã¸ãããªããï¼ã§ä½¿ããã¦ããWordPressã®å¤æãè¦ã¦ãåããéããæ¥æ¬ã ãã§ã¯ãªãä¸ççã«åãã£ã¦ãã¾ããã
Fetch ãã¦ã°ã«ã°ã«ããªã
ã¹ãã«ãè¶³ããªã人ã«ã¨ã£ã¦ã¯ãã¹ãã¢ãããã·ã¼ã¸ã£ã«ããã¨è¨ãã¨ã
ãã¹ãã¢ãããã·ã¼ã¸ã£ã¿ãããªå®æåº¦ã®ä½ãè¨èªï¼ãã£ã¡ãä½ãï¼ã§ Fetch ãã¦ã°ã«ã°ã«ããããã£ã¡ã大å¤â¦â¦ã
ã¨èããã®ã§ãããã
確ãã«ã¹ãã«ãè¶³ããªã人ãããFetch ãã¦ã°ã«ã°ã«ããããããªãã¨ããããã·ã¹ãã ã¯ä¸ç¬ã§ç ´ç¶»ãã¾ãã
å¼ç¤¾ã§åºå¹¹ã·ã¹ãã ããã¹ã¦ã¹ãã¢ãããã·ã¼ã¸ã£ã§è£½é ããã¨ããã¡ãããã¾ã£ããFetchããªãããã§ã¯ããã¾ããããFetchããã®ã¯1ï¼ ãããã§ãã SQLã®ã¹ãã«ãããã°ãFetchããªãã¨ãããªãå¦çã¯ã»ã¨ãã©ããã¾ããã
ä¾ãã°ãåºå¹¹ã·ã¹ãã ã§Fetchããæ©è½ã«ã¯ãè«æ±æ¸ãä½ãæ©è½ãããã¾ãã ã¨è¨ã£ã¦ãã徿å ã³ã¼ããæå®ãã¦è«æ±æ¸ãä½ãå¦çã¯Fetchããå¿ è¦ã¯ããã¾ããã ããããç· ãæ¥ãæå®ãã¦ä¸æ¬ã§è«æ±æ¸ãä½ãå ´åãæå®ãããç· ãæ¥ã®å¾æå ã®ä¸è¦§ãåå¾ããå ã»ã©ã®å¾æå ã³ã¼ããæå®ãã¦è«æ±æ¸ãä½ãã¹ãã¢ãããã·ã¼ã¸ã£ã«Fetchãã¦æ¸¡ãã¾ãã
ãããããã®ãæ°ãã¦ã1ï¼ ãããã§ãã
ã徿å ã³ã¼ããæå®ãã¦ã1ä»¶åã®è«æ±æ¸ãä½ãã ããªãFetchããªãã§SQLã§å¦çã§ããã
ã¨ããã¹ãã«ãå¿ è¦ã§ãã ãã®ã¹ãã«ãççã«é«ããã¨ããã¨ãç¾ç¶ã§ã¯é«ãã§ãããã ããããå¼ç¤¾ã®ã»ããã¼ã§ã¯ãããã°ã©ãã³ã°æªçµé¨ã®äºåå¡ããã3æ¥ãããã°ã§ããããã«ãªãã¾ãã
æååé£çµã¯è¦ããªã
ãã¹ãã¢ãããã·ã¼ã¸ã£ã¿ãããªå®æåº¦ã®ä½ãè¨èªï¼ãã£ã¡ãä½ãï¼ã§æååé£çµãã¦SQLãæ§ç¯ãããªãã¦â¦â¦ã
ã¨æã人ãããã®ã§ãããã å ã»ã©ã®è«æ±æ¸ã使ããSQLãªã©ãã¨ã¦ãè¤éãªå¦çããã¦ãã¾ãããæååé£çµã§SQLãæ§ç¯ãããã¨ã¯å¼ç¤¾ã§ã¯ã»ã¼ããã¾ããã ãã¡ãã«è©³ããæ¸ãã¾ããã
ã©ã¡ããæ¥µç«¯ã§ããï¼
ããã¹ã¦ã¹ãã¢ãããã·ã¼ã¸ã£ã«ããã¹ããã¨ããã¨ã極端ã ã¨è¨ããã¾ãããã©ã¡ããæ¥µç«¯ã§ããï¼
ã¾ã£ããçéã®ã¢ã¼ããã¯ãã£ã¼ã§ããSQLãããªãã¸ã§ã¯ãæåè¨èªã®ä¸ã§åççæããã å·éã«èããã°ããããªæ¥µç«¯ãªãã¨ã¯ããã¾ããã
ã»ã¨ãã©ã®RDBMSã¯ããªãã¸ã§ã¯ãæåè¨èªã®C++ã§æ¸ããã¦ãã¾ãã CPUã¯SQLãªãã¦çè§£ã§ãã¾ããããããªãã¸ã§ã¯ãæåè¨èªã§æ¸ãããRDBMSã翻訳ããã¦ããã®ã§ãã
翻訳ãããçµæã¯ããå®è¡è¨ç»ãã¨ãã¦è¦ããã¨ãã§ãã¾ãã
åãSQLã§ããå®è¡è¨ç»ãå¤ããSQLã®ä¾ã
å®è¡è¨ç»ããªãã¸ã§ã¯ãæåè¨èªã«ç´ãã¨ãããªæãã«ãªãã¾ãã
SQL â å®è¡è¨ç» â ãªãã¸ã§ã¯ãæåè¨èª
ã¨ãã夿ãã§ããããã«ãªãã°ï¼ã¨ãããããããã§ããªã人ãã¨ã³ã¸ãã¢ã§è¯ãã®ãï¼ï¼
ãªãã¸ã§ã¯ãæåè¨èª â SQLï¼èªåçæï¼â ãªãã¸ã§ã¯ãæåè¨èªï¼èªåçæï¼
ã¨ãããå®è¡æã«ãè»è¼ªã®åéçºããèµ·ãã¦ãã¦ãã便å©ã ãã¨æ¥µç«¯ãªãã¨ãèããã¯ãããªãã§ãã ãããªãã¨ãèãã¦ãã¾ãã®ã¯ããSQLã®ã¹ãã«ãå§åçã«è¶³ããªãããã¨ã証æãã¦ããã ãã®è©±ã§ãã
åé¢éçºããã¹ã
SQLã¨ãªãã¸ã§ã¯ãæåè¨èªã¯ãçéã®ã¢ã¼ããã¯ãã£ã§ãã ç§ã¯ã©ã¡ããåãã«ã§ãã¾ãããããã§ãåæã«èããã®ã¯å°é£ã§ãã
ããã ãSQLãã§ããªãã¨ã³ã¸ãã¢ãããã®ã§ããããSQLãæ å½ããã¨ã³ã¸ãã¢ã¨ããªãã¸ã§ã¯ãæåè¨èªãæ å½ããã¨ã³ã¸ãã¢ãåããæ¹ãããã ã¹ãã¢ãããã·ã¼ã¸ã£ã«ããã°ãããå¯è½ã«ãªãã®ã§ãã
SQLã¨ããªãã¸ã§ã¯ãæåè¨èªãæ å½ããã¨ã³ã¸ãã¢ãåãããã°ããªãã¸ã§ã¯ãæåè¨èªãæ å½ããã¨ã³ã¸ãã¢ã¯SQLãç¥ãå¿ è¦ããªãã
ç¾ç¶ã§ã¯ãå ¨å¡ãSQLãçè§£ãã¦ããå¿ è¦ãããã ãããªæ¥µç«¯ãªãã¨ã¯ãããæ¹ãè¯ãã§ãããã