AIãšãŠã§ãéçºãèåãããããšã¯ãããžãã¹ããŒãœã³ã«ãšã£ãŠæ°ããªäŸ¡å€ãçãå¯èœæ§ãç§ããŠããŸããããã§æ³šç®ãããã®ããèªç¶èšèªåŠçãæ±ãChatGPTãšãæè»æ§ã«å¯ãã PHPãã¬ãŒã ã¯ãŒã¯ã§ããFuelPHPã®çµã¿åããã§ãããã®èšäºã§ã¯ãChatGPTã掻çšããŠFuelPHPã®ãã¯ãŒãæ倧éã«åŒãåºãæ¹æ³ã解説ããŸããç§ãã¡ãæ¢ãã®ã¯ããããã®åºç€ããé«åºŠãªã»ãã¥ãªãã£å¯ŸçããããŠæé©åãããããã©ãŒãã³ã¹ã«è³ããŸã§ã®å šè¬ã«ããããã¯ããã¯ã§ããçŸä»£ã®ããžãã¹ã§èŠæ±ãããã¹ããŒããšå¹çæ§ãå®çŸããããã«ãFuelPHPãšChatGPTãã©ã®ããã«çµ±åã掻çšããŠããã°è¯ãã®ãããã®ãã³ããæäŸããŸãã
1. ChatGPTãšFuelPHPã®æŠèŠ
1.1 ChatGPTã«ã€ããŠã®åºç€ç¥è
ChatGPTã¯ãèªç¶èšèªåŠçæè¡ã«ãããé©æ°çãªé²åã®äžéšãšããŠç»å ŽãããäŒè©±åã®äººå·¥ç¥èœã§ãããã®AIã¯ãå€å²ã«æž¡ã質åã«çãããã人éã®èšèãç解ããŠé©åãªå¿çãçæããèœåãæã£ãŠããŸããç¹ã«å¯Ÿè©±åœ¢åŒã§ã®èªç¶ãªããåããåŸæãšããŠãããå€çš®å€æ§ãªã¢ããªã±ãŒã·ã§ã³ã§ã®å©çšãå¯èœã§ãã
ChatGPTã¯å€§èŠæš¡èšèªã¢ãã«ã«åºã¥ããŠããããã®èšç·Žã«ã¯èšå€§ãªããã¹ãããŒã¿ãçšããããŸãããããã«ãããChatGPTã¯æèãææ¡ããæå³ã®ããäŒè©±ãå±éããããšãã§ããŸããæè¡çãªã¢ã·ã¹ã¿ã³ããããæè²ããŒã«ããšã³ã¿ãŒãã€ã¡ã³ããŸã§ã圹å²ã¯ç¡é倧ã§ãã
ChatGPTã掻çšããããšã§ãããžãã¹ã¯é¡§å®¢ãµãŒãã¹ãèªååãããããŠãŒã¶ããã¯ãã«ã«ãªãµããŒããå¿ èŠãšããéã«å³åº§ã«å¯Ÿå¿ããèœåãé«ããããšãæåŸ ãããŸãããŸãããŠã§ããµãŒãã¹ãšçµã¿åãããããšã§ããããªãããªãŠãŒã¶ãŒäœéšãæäŸããããšãååã«å¯èœã§ãã
1.2 FuelPHPã®ç¹åŸŽãšæŽå²
FuelPHPã¯ãPHPã§æžããã軜éã§ãã¬ãã·ãã«ãªãã¬ãŒã ã¯ãŒã¯ã§ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ã³ãã¥ããã£äžå¿ã§éçºãããŠãããMODULARITY(ã¢ãžã¥ã©ãªãã£)ãšEXTENSIBILITY(æ¡åŒµæ§)ãéèŠããŠããŸããMVCïŒModel-View-ControllerïŒã¢ãŒããã¯ãã£ã®ã»ããViewModelïŒPresenterãšãåŒã°ããïŒããµããŒãããŠããç¹ãç¹çãããŸãã
FuelPHPã¯ãã»ãã¥ãªãã£æ©èœã匷åãããŠããããã©ãŒã ã®å ¥ååŠçãSQLã€ã³ãžã§ã¯ã·ã§ã³é²æ¢ã®ããã®æ©èœãªã©ãéçºãå®å šãã€å¹ççã«é²ããããšãæå©ãããŸãããŸããRESTful APIã®æ§ç¯ã容æã«ããæ©èœãåããŠãããAPIããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³éçºã«ãé©ããŠããŸãã
FuelPHPã®åããŠã®ããŒãžã§ã³ã¯2011幎ã«ãªãªãŒã¹ããã以æ¥PHPã³ãã¥ããã£å ã§ãã®äœçœ®ã確ç«ããŠããŸãããã·ã³ãã«ã§ç°¡åãªAPIãæ¡åŒµæ§ã®é«ãããããŠæ¢åã®PHPæ©èœãæ倧é掻ããã¢ãããŒãã¯ãå€ãã®éçºè ã«æ¯æãããŠããŸãã
1.3 ChatGPTãšFuelPHPã®çžæ§
ChatGPTãšFuelPHPã¯ã察話åã¢ããªã±ãŒã·ã§ã³ã®éçºã«ãããŠãé«ãçžæ§ãæã£ãŠããŸããChatGPTã®æè»ãªèšèªåŠçèœåãšãFuelPHPã®å ç¢ãªãã¬ãŒã ã¯ãŒã¯åºç€ã¯ã䜿ãåæã®è¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®å¶äœã«å¯äžããŸãã
FuelPHPãæäŸããã»ãã¥ã¢ãªç°å¢å ã§ChatGPTãçµã¿èŸŒãããšã§ãéçºè ã¯ãŠãŒã¶ãŒããã®å ¥åãå®å šã«åŠçããé©åãªåºåãæäŸããããšãã§ããŸãããŸããViewModelãä»ããŠã®ããŒã¿åŠçã®æµãã¯ãChatGPTã®å¿çããžãã¯ãšãéåžžã«ãããããããŠããŸãã
ããã«ãFuelPHPã®RESTful APIã®ãµããŒãã¯ãChatGPTã掻çšããããã¯ãšã³ããµãŒãã¹ã®éçºã容æã«ããã¹ã±ãŒã©ãã«ãªãã£ããããããAIã¢ã·ã¹ã¿ã³ãã®æ§ç¯ãå®çŸããŸãã
1.4 FuelPHPã«ãããMVCã¢ãã«ã®ç解
MVCã¢ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãModelãViewãControllerã®3ã€ã®ã³ã³ããŒãã³ãã«åããèšèšãã¿ãŒã³ã§ããFuelPHPã§ã¯ãã®MVCã¢ãã«ãæ¡çšããŠãããåã³ã³ããŒãã³ããæ確ã«åé¢ããããšã§ãéçºã®å¹çãé«ããŠããŸãã
ãModelãã³ã³ããŒãã³ãã¯ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãšããžãã¹ããžãã¯ãæ åœãããViewãã¯ãŠãŒã¶ã€ã³ã¿ãŒãã§ãŒã¹ã®è¡šç€ºã«é¢ããããControllerãã¯åæ¹ã®æ©æž¡ãããã圹å²ãæãããŸãããã®åé¢ã¯ãã³ãŒãã®åå©çšæ§ãé«ããã¡ã³ããã³ã¹ã容æã«ããé·æããããŸãã
FuelPHPã§ã¯ããã®MVCã«å ããŠãViewModelã䜿ã£ãPresentation Logicã®åé¢ãå¯èœã§ãããã®æ©èœã¯ãç¹ã«ããŒã¿è¡šç€ºã«é¢ããããžãã¯ãšUIãããã«çã«ããå©ããšãªããéçºè ã¯ããã¯ãªãŒã³ãªã³ãŒããæžãããšãã§ããŸãã
2. FuelPHPã®ã€ã³ã¹ããŒã«ãšã»ããã¢ãã
FuelPHPã¯PHPã«ãã軜éã§ãã¬ãã·ãã«ãªãã¬ãŒã ã¯ãŒã¯ã§ãå€ãã®éçºè ããã®é«éãªæ§èœãšã¢ãžã¥ãŒã«æ§ãè©äŸ¡ããŠããŸãããã®ç« ã§ã¯ãFuelPHPãæ£ããã€ã³ã¹ããŒã«ããŠã»ããã¢ããããããã®æé ã詳ãã説æããŠãããŸãã
2.1 ãµãŒããŒç°å¢ã®æºåãšèŠä»¶
FuelPHPãå©çšããã«ã¯ãäºããµãŒããŒç°å¢ãæºåããå¿ èŠããããŸããäžè¬çãªã¬ã³ã¿ã«ãµãŒããŒãVPSããããã¯ããŒã«ã«ã®éçºç°å¢ã«PHPã®å®è¡ç°å¢ãèšçœ®ããã°ãFuelPHPã®éçºãå¯èœãšãªããŸãã
å¿ èŠãªãµãŒããŒæ¡ä»¶ãšããŠã¯ãPHP 5.4以äžãã€ã³ã¹ããŒã«ãããŠããããšãåºæ¬ãšãªããŸãããŸããããŒã¿ããŒã¹ãšããŠMySQLãPostgreSQLãSQLiteãªã©ãå©çšã§ããããããã«å¿ãããã©ã€ããå¿ èŠã§ãã
ä»ã«ããéçºå¹çãåäžãããããã«ãComposerãGitãšãã£ãããŒã«ã®å©çšãæšå¥šãããŸãããããã®ããŒã«ãäºåã«ã€ã³ã¹ããŒã«ãããŠãããšãå°å ¥ããã»ã¹ãããã¹ã ãŒãºã«é²è¡ããŸãã
2.2 FuelPHPã®ã€ã³ã¹ããŒã«ããã»ã¹
FuelPHPãã€ã³ã¹ããŒã«ããã«ã¯ãComposerãå©çšããã®ãæãç°¡åãªæ¹æ³ã§ããComposerãçšããããšã§ãFuelPHPã«å¿ èŠãªäŸåé¢ä¿ã®ã©ã€ãã©ãªãèªåçã«ã€ã³ã¹ããŒã«ãããŸãã
ã³ãã³ãã©ã€ã³ãããcomposer create-project fuel/fuel [ãããžã§ã¯ãå]ããšå ¥åããããšã§ãå¿ èŠãªãã¡ã€ã«ãããŠã³ããŒããããæå®ãããã£ã¬ã¯ããªã«FuelPHPã®ãããžã§ã¯ããäœæãããŸãã
ã€ã³ã¹ããŒã«ãå®äºãããããµãŒããŒãžã®èšçœ®ãèšå®ãã¡ã€ã«ã®ç·šéãè¡ããFuelPHPãæ£ããåäœããããšã確èªããŸãããã®æ®µéã§ã®ç°å¢èšå®ã¯ã次ã®æ®µéã§ããéçºç°å¢ã®æ§ç¯ã«ã倧ããé¢ãã£ãŠãããããæ éã«å®æœããŠãã ããã
2.3 éçºç°å¢ã®æ§ç¯ãšèšå®
ãµãŒããŒã«FuelPHPãèšçœ®ããåŸãéçºç°å¢ãæŽããå¿ èŠããããŸãããã®ç°å¢æ§ç¯ã§ã¯ããšãã£ã¿ãIDEã®éžå®ããããã°ããŒã«ã®ã€ã³ã¹ããŒã«ãªã©ãå¹ççãªéçºã«å¿ èŠãªéå ·ãæããããŸãã
ç¹ã«éèŠãªã®ããããŒã«ã«ã§ã®éçºãµãŒãã®æºåã§ããå èµã®PHPãµãŒããŒããMAMPãXAMPPãLaragonãšãã£ãããŒã«ã䜿ã£ãŠãæ軜ã«éçºç°å¢ãæ§ç¯ã§ããŸãã
ãŸããFuelPHPã¯èšå®ãã¡ã€ã«ãéããŠçŽ°ããªèšå®å€æŽãè¡ãããšãã§ããŸããããã«ãããããŒã¿ããŒã¹æ¥ç¶æ å ±ãã»ãã·ã§ã³ã®åãæ±ãæ¹ãããã«ã¯ã«ãŒãã£ã³ã°èŠåãŸã§ãæè»ã«ã«ã¹ã¿ãã€ãºãå¯èœã§ãã
2.4 FuelPHPãããžã§ã¯ãã®ãã£ã¬ã¯ããªæ§é
FuelPHPã®ãããžã§ã¯ãã¯æ確ãªãã£ã¬ã¯ããªæ§é ãæããŠãããããããã®éšåãç¹å®ã®åœ¹å²ãæã£ãŠããŸãã’app’ãã£ã¬ã¯ããªã¯ã¢ããªã±ãŒã·ã§ã³å°çšã®ã¯ã©ã¹ãã³ã³ãããŒã©ãã¢ãã«ããã¥ãŒãªã©ãé 眮ãããŸãã
‘public’ãã£ã¬ã¯ããªã¯ãŠã§ããµãŒããŒããçŽæ¥ã¢ã¯ã»ã¹ãããéçãã¡ã€ã«ããšã³ããªãã€ã³ããšãªãindex.phpãã¡ã€ã«ãªã©ãå«ãŸããŸããã»ãã¥ãªãã£ã匷åããããã«ããã®ãã£ã¬ã¯ããªã®ã¿ãå ¬éãããããã«èšå®ããŸãã
ãã®ä»ã«ã’fuel’ãã£ã¬ã¯ããªã¯FuelPHPã®ã³ã¢ãã¡ã€ã«ãã’packages’ãã£ã¬ã¯ããªã¯è¿œå ã®ããã±ãŒãžãã¢ãžã¥ãŒã«ãä¿æããŸãããã®ããã«æŽçãããæ§é ã«ãããéçºè ã¯ã³ãŒãã®ç®¡çåã³æ¡åŒµããããããªã£ãŠããŸãã
3. ChatGPTã掻çšããéçº
3.1 ChatGPTã€ã³ãã°ã¬ãŒã·ã§ã³ã®åºæ¬
ChatGPTã®å°å ¥ã¯ããããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«äººå·¥ç¥èœã®ãã¯ãŒãä»å ããå¹æçãªæ段ã§ãããã®ããã»ã¹ã¯ãAPIæ¥ç¶ã®èšå®ããå§ãŸããŸããChatGPT APIã¯ãããªããéçºããã¢ããªã±ãŒã·ã§ã³ã«èªç¶èšèªåŠçæ©èœãçµ±åããããã®ãšã³ããã€ã³ããæäŸããŸãã
ã€ã³ãã°ã¬ãŒã·ã§ã³ã«éããŠéèŠãªã®ã¯ãAPIããŒã®ä¿ç®¡ãšç®¡çã§ãããã®APIããŒã¯ç§å¯æ å ±ãšããŠåãæ±ããäžæ£ã¢ã¯ã»ã¹ããä¿è·ããå¿ èŠããããŸãããŸããChatGPT APIãžã®ãªã¯ãšã¹ãåæ°ã«ã¯å¶éããããããå¹ççãªåŒåºãæŠç¥ãèšç»ããããšãèèŠã§ãã
ãŸããChatGPTã¯ãç¹ã«èªç¶èšèªãæ±ããµãŒãã¹ã®éçºã«ãããŠãéåžžã«äŸ¡å€ããã¢ã»ãããšãªãåŸãŸãããŠãŒã¶ãŒãšã®å¯Ÿè©±ãèªååããããããã¹ãããŒã¹ã®ãã©ãŒã ã®ä»£ããã«äŒè©±åã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããããã«äœ¿çšããããšãå¯èœã§ãã
3.2 FuelPHPå ã§ã®ChatGPT APIã®å©çšæ¹æ³
FuelPHPã¯ãç°¡æœã§æè»æ§ã®é«ããã¬ãŒã ã¯ãŒã¯ã§ãããRESTful APIãšã®çµ±åã容æã§ããChatGPT APIã䜿çšããã«ã¯ããŸãFuelPHPãæšå¥šããHTTPã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããããã«ãããå®å šã«HTTPãªã¯ãšã¹ããéä¿¡ããå€éšAPIãšã®éä¿¡ãå¯èœã«ãªããŸãã
APIã®å©çšã«ãããŠã¯ãã³ã³ãããŒã©ãŒå ã§ãšã³ããã€ã³ããžã®ãªã¯ãšã¹ããæ§ç¯ããå¿ èŠãªãã©ã¡ãŒã¿âãå梱ããããšã倧åã§ããæåããå¿çãåŸãåŸã¯ããã®å 容ãé©åã«åŠçãããŠãŒã¶ãŒã«æäŸãã圢ã§ã¢ãŠããããããããšã«ãªããŸãã
å®å šãªAPIã®å©çšãä¿èšŒããããã«ãFuelPHPã®ç°å¢èšå®ãã¡ã€ã«ã§APIããŒã管çããããšãæšå¥šããŸãããã®ããŒã¯ãµãŒããŒãµã€ãã«ä¿æãããã¹ãã§ãããã¯ã©ã€ã¢ã³ããµã€ãã«é²åºããããšã¯é¿ããªããã°ãªããŸããã
3.3 ãŠãŒã¶ãŒå ¥åã«å¯ŸããChatGPTã®ã¬ã¹ãã³ã¹ã®ã«ã¹ã¿ãã€ãº
ChatGPTã®ã¬ã¹ãã³ã¹ã¯éåžžã«æè»ã§ãæ§ã ãªåœ¢åŒã®ãŠãŒã¶ãŒå ¥åã«å¯Ÿå¿å¯èœã§ãããã ããã¢ããªã±ãŒã·ã§ã³ã®ç®çã«å¿ããŠã¬ã¹ãã³ã¹ãã«ã¹ã¿ãã€ãºããããšãéèŠã§ããããšãã°ãã«ã¹ã¿ããŒãµããŒããèªååããéã¯ãç¹å®ã®ããŒã¯ãŒãã«åºã¥ããŠæ¢å®ã®åçãçšæããããšãã§ããŸãã
ã¬ã¹ãã³ã¹ãã«ã¹ã¿ãã€ãºããã«ã¯ãå ¥åããŒã¿ã«å¯ŸããååŠçãåŸåŠçãè¡ãã³ãŒããå®è£ ããŸããããã«ããããã£ãããããã®åçãããé¢é£æ§ãæã¡ããŠãŒã¶ãŒã«ãšã£ãŠæçãªæ å ±ãæäŸã§ããããã«ãªããŸãã
FuelPHPãã¬ãŒã ã¯ãŒã¯ã§ã¯ãã¥ãŒã䜿ã£ãŠã¬ã¹ãã³ã¹ã®ãã©ãŒãããã調æŽããããšãã§ããŸããããã«ããããŠãŒã¶ãŒãžã®ãã£ãŒãããã¯ããã芪ãã¿ãããããã€ç解ãããã圢ã§è¡šç€ºãããããã«ãªããŸãã
3.4 ä¿å®æ§ãšæ¡åŒµæ§ãèæ ®ããèšèš
ã¢ããªã±ãŒã·ã§ã³ãé·æã«ããã£ãŠéçšããŠããããã«ã¯ãä¿å®æ§ãšæ¡åŒµæ§ãèæ ®ããèšèšãäžå¯æ¬ ã§ããFuelPHPã¯ã¢ãžã¥ã©ãŒèšèšãæ¡çšããŠãããã³ã³ããŒãã³ãã容æã«åãæ¿ãããã¢ããã°ã¬ãŒããããããããšãã§ããŸãã
ChatGPTãšã®çµ±åã«ãããŠããå°æ¥ã®APIã®å€æŽãæ°æ©èœã®è¿œå ã«å¯Ÿå¿ã§ããããã«ãã³ãŒãã¯æè»ãã€ã¢ãžã¥ãŒã«æ§ãæãããŠããããšãæšå¥šãããŸããããã«ãããå¿ èŠã«å¿ããŠã·ã¹ãã ãã¢ããããŒãããã«æ°ããæ©èœãåãå ¥ããããæ¢åã®æ©èœãæ¹åããããšãå¯èœã§ãã
ãŸããããããªã³ãŒããå¿æããããã¥ã¡ã³ããé©åã«ä¿å®ããããšã§ãããŒã ã¡ã³ããŒéã®ã³ãã¥ãã±ãŒã·ã§ã³ãä¿é²ããéçºããã»ã¹ãã¹ã ãŒãºã«é²ããããšãã§ããŸããã³ãŒãã®èªã¿ããããšããã¥ã¡ã³ãã®æŽåã¯ãé·æçãªèŠç¹ã§ã®ãããžã§ã¯ãã®æåãžãšç¹ãããŸãã
4. FuelPHPã«ãããã»ãã¥ãªãã£å¯Ÿç
FuelPHPãã¬ãŒã ã¯ãŒã¯ã¯ãéçºè ãå ç¢ãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®å€ãã®ã»ãã¥ãªãã£æ©èœãæäŸããŸãããã®ç« ã§ã¯ãFuelPHPã§å®å šãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®äž»èŠãªã»ãã¥ãªãã£æ©èœã解説ããŸããã³ãŒãã®å®å šæ§ãä¿ã¡ãªãããæè»æ§ãšã¹ããŒããç¶æããããã«ãããã®æŠå¿µãé©åã«ç解ãé©çšããããšãéèŠã§ãã
4.1 ã»ãã¥ã¢ãªå ¥åãšåºåã®åŠç
FuelPHPã§ã¯ãå ¥åã«å¯ŸããããªããŒã·ã§ã³ãšãšã¹ã±ãŒããæ¬ ãããŸãããå ¥åå€ãæ€èšŒãããæå³ããªãã³ãã³ããã¹ã¯ãªããã®æ³šå ¥ãé²ãããšã§ãã¢ããªã±ãŒã·ã§ã³ã®å®å šæ§ãå€§å¹ ã«åäžããŸããFuelPHPã®ããªããŒã·ã§ã³ã¯ã©ã¹ã掻çšããããšã§ãç°¡åãã€å¹ççã«ããŒã¿ã®æ€èšŒãå¯èœã§ãã
åºåã®éããšã¹ã±ãŒãåŠçãéèŠãšãªããŸããç¹ã«HTMLã®ãã¥ãŒã«å€æ°ã衚瀺ãããéãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æãé²ãããã«ããšã¹ã±ãŒãåŠçãè¡ãããšãèŠæ±ãããŸããFuelPHPã§ã¯ããã¥ãŒãã³ãã¬ãŒãã«ãããŠèªåã§ãšã¹ã±ãŒãåŠçãé©çšããèšå®ãå¯èœã§ãã
ãŸããSQLã€ã³ãžã§ã¯ã·ã§ã³ãé²ãããã«ãFuelPHPã®ORMïŒãªããžã§ã¯ãé¢ä¿ãããã³ã°ïŒã䜿çšããããšãæšå¥šãããŠããŸããããã«ãããçŽæ¥SQLæãèšè¿°ããããšãªãããŒã¿ããŒã¹ã®æäœãã§ããå®å šæ§ãå¢ããŸãã
4.2 CSRFããã³XSSæ»æã®é²åŸ¡
ã¯ãã¹ãµã€ããªã¯ãšã¹ããã©ãŒãžã§ãªïŒCSRFïŒã¯ããŠãŒã¶ãŒããã°ã€ã³ããç¶æ ã§ãæªæãããŠãŒã¶ãŒãåœé ãããªã¯ãšã¹ããéä¿¡ãããæ»æã§ããFuelPHPã¯ã»ãã·ã§ã³ãããŒã¯ã³ç®¡çæ©èœã䜿ã£ãŠCSRFæ»æãé²ãæ段ãåããŠããŸãããã©ãŒã ããã®éä¿¡ã«ãããŠã¯ãã»ãã·ã§ã³ã«çŽã¥ããããŒã¯ã³ã®äœ¿çšãéèŠã§ãã
XSSæ»æã«å¯ŸããŠã¯ãå è¿°ã®éãåºåæã®ãšã¹ã±ãŒãåŠçãæå¹ã§ããFuelPHPã§ã¯ãããã©ã«ãã§HTMLãšã³ãã£ãã£ãžã®å€æãè¡ããã¹ã¯ãªããã®å®è¡ãé²æ¢ããŸããããã«ãJavascriptãçšããæäœã®å®å šæ§ãé«ããããã«ããHTTPããããŒã®å±æ§ãèšå®ããããšãæšå¥šãããŠããŸãã
ãããã®å¯Ÿçãç·åããããšã§ãWebã¢ããªã±ãŒã·ã§ã³ã¯ããå åºãªãã®ãšãªããŸããFuelPHPã®å ¬åŒããã¥ã¡ã³ãã¯ããããã®æ»æãã身ãå®ãããã®ã¬ã€ãã©ã€ã³ãæäŸããŠãããéçºè ããããã®å¯Ÿçãå®è£ ããéã®è²ŽéãªãªãœãŒã¹ãšãªã£ãŠããŸãã
4.3 ãªãŒã»ã³ãã£ã±ãŒã·ã§ã³ãšèªå¯ã®å®è£
ã¢ããªã±ãŒã·ã§ã³ã«ããããªãŒã»ã³ãã£ã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®æ£åœæ§ã®ç¢ºèªãè¡ãããã»ã¹ã§ããFuelPHPã«ã¯Authããã±ãŒãžãå«ãŸããŠããããã°ã€ã³ããŠãŒã¶ãŒç»é²ããã¹ã¯ãŒãå埩ãšãã£ãæ©èœãå®è£ ããããšãã§ããŸãããªããFuelPHPã®Authããã±ãŒãžããã¡ã€ã³ãã¥ãŒãã³ã°ããããšã§ãããŸããŸãªèŠä»¶ã«å¯Ÿå¿ããã«ã¹ã¿ã èªèšŒãå®çŸã§ããŸãã
èªå¯ã«é¢ããŠã¯ããŠãŒã¶ãŒãç¹å®ã®æäœãèš±å¯ãããŠãããã©ããã管çããããã»ã¹ã§ããFuelPHPã§ã¯ãããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹ã³ã³ãããŒã«ãªã¹ãïŒRBACïŒãåããŠããããŠãŒã¶ãŒã«çŽ°ããæš©éãå²ãåœãŠãããšãã§ããŸãããã®æ©èœã䜿çšããããšã§ãã»ãã¥ãªãã£ã¬ãã«ãåäžãããªããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžãå³ãããšãã§ããŸãã
ãªãŒã»ã³ãã£ã±ãŒã·ã§ã³ãšèªå¯ã®äž¡æ¹ã確å®ã«æ©èœããããšã¯ãã¢ããªã±ãŒã·ã§ã³å šäœã®ã»ãã¥ãªãã£æ§é ã®åºç€ã圢æããŸãããããã®å®è£ ã«é¢ãã詳现ã¯ãFuelPHPã®å ¬åŒããã¥ã¡ã³ããã³ãã¥ããã£ãæäŸãããªãœãŒã¹ãåç §ããé©åãã€å®å šãªã·ã¹ãã ãæ§ç¯ããããšãèèŠã§ãã
4.4 ã»ãã¥ãªãã£ãã¹ããã©ã¯ãã£ã¹
FuelPHPãçšããéçºã«ãããŠã¯ãå®æçãªãœãããŠã§ã¢ã®ã¢ããããŒããäžå¯æ¬ ã§ããããã«ãããè匱æ§ãä¿®æ£ãããã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãç¶ç¶ããŠç¶æãããŸããéçºæ®µéã§ã»ãã¥ãªãã£å¯Ÿçãçµã¿èŸŒãããšã§ãå°æ¥çºçããã§ãããã»ãã¥ãªãã£åé¡ãžã®åããå¯èœãšãªããŸãã
ãŸããç§å¯æ å ±ã¯ç°å¢å€æ°ãŸãã¯èšå®ãã¡ã€ã«ã«ä¿åãã¹ãã§ããããããã®æ å ±ã¯ãªããžããªã«ã¯å«ããªãããã«ããé©åãªæš©é管çãè¡ãã¹ãã§ããã»ãã¥ãªãã£ç£æ»ããŒã«ãéçã³ãŒã解æããŒã«ã掻çšããããšããã»ãã¥ãªãã£ã確ä¿ããäžã§æå¹ãªæ段ã§ãã
æåŸã«ãæè²ã¯ã»ãã¥ãªãã£ã確ç«ããäžã§ç¡ããŠã¯ãªããªãèŠçŽ ã§ãããéçºè éã§ã®ã»ãã¥ãªãã£ã«é¢ããç¥èã®å ±æãšå®æçãªã»ãã¥ãªãã£èšç·Žãæšå¥šãããŸããå šå¡ãã»ãã¥ãªãã£æèãæã¡ãæ å ±ãã¢ããããŒãããŠããããšã§ãæ»æè ããäžæ©å ãè¡ãå åºãªã¢ããªã±ãŒã·ã§ã³ãåµåºã§ããã§ãããã
5. FuelPHP ãµã€ãã®ããã©ãŒãã³ã¹æé©å
FuelPHPã§éçºããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããšã¯ããŠãŒã¶ãŒäœéšã®åäžãšæ€çŽ¢ãšã³ãžã³ã®ã©ã³ãã³ã°æ¹åã«çŽçµããŸããé«éãªã¬ã¹ãã³ã¹ã¿ã€ã ã¯ããµã€ãã®å°éæ§ãšä¿¡é Œæ§ã象城ããéèŠãªææšãšãªããŸãã以äžã§ã¯ãFuelPHPã«ç¹åããããã€ãã®å¹æçãªããã©ãŒãã³ã¹æé©åææ³ãæ¢ç©¶ããŸãã
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«å¯Ÿå¿ããæé©åçãè¬ããããšã¯ããµã€ãã®å¿çæ§ãé«ããéµãšãªããŸãããã£ãã·ã³ã°ã®å°å ¥ãããŒã¿ããŒã¹ã¯ãšãªã®å¹çåãéçãªãœãŒã¹ã®æé©åããããŠã¬ã³ããªã³ã°é床ãäžããæè¡ã¯ããµã€ãã®ããã©ãŒãã³ã¹ãåäžãããããã«äžå¿çãªåœ¹å²ãæãããŸãã
ãããã®ãã¯ããã¯ã¯ãããããããŒããµã€ããæ§ç¯ããéã«åãã£ãŠæ€èšãå®è£ ããå¿ èŠããããFuelPHPã®æè»æ§ãšæ¡åŒµæ§ã掻ãããŠãæé«ã®ããã©ãŒãã³ã¹ãå®çŸããããã®æ段ãæäŸããŸãã
5.1 ã¬ã³ããªã³ã°ã®é床åäžã®ããã®ãã¯ããã¯
FuelPHPãã¬ãŒã ã¯ãŒã¯äžã§ã®ã¬ã³ããªã³ã°é床ãé«ããæåã®ã¹ãããã¯ãå¹ççãªãã³ãã¬ãŒããšã³ãžã³ã®äœ¿çšã§ããFuelPHPã®ãã³ãã¬ãŒããšã³ãžã³ã¯è»œéã§ãããç¡é§ãªåŠçãçãããŒãžã®ããŒãæéãççž®ããã®ã«å¯äžããŸãã
次ã«ããã¥ãŒã®äžã§å©çšãããããžãã¯ãå¯èœãªéãã·ã³ãã«ã«ä¿ã¡ãŸããè€éãªèšç®ãããŒã¿åŠçã¯ãã³ã³ãããŒã©ãã¢ãã«ã«ç§»è¡ãããããšã§ããã¥ãŒã®ã¯ãªãŒã³ãªä¿æãšã¬ã³ããªã³ã°ã®é«éåãå³ãããšãã§ããŸãã
ãŸããããŒãžã¬ã³ããªã³ã°åã®ããŒã¿æºåæéãæå°åããããã«ãé©åãªããŒã¿ã®äºåããŒãã£ã³ã°ãEager Loadingã掻çšããããšãéèŠã§ããããã«ãããããŒã¿ããŒã¹ãžã®äžèŠãªã¯ãšãªæ°ãæžãããå šäœçãªãµã€ãã®ã¬ã³ããªã³ã°é床ãäžããããšãã§ããŸãã
5.2 ããŒã¿ããŒã¹ã¯ãšãªã®æé©å
ããŒã¿ããŒã¹ã¯ãšãªã®ããã©ãŒãã³ã¹ãæ¹åããããšã¯ãFuelPHPã§éçºããããŠã§ãã¢ããªã±ãŒã·ã§ã³å šäœã®é床ãå€§å¹ ã«åäžãããããšãã§ããŸããã¯ãšãªã®å¹çåã¯ãé«éãªã¢ããªã±ãŒã·ã§ã³ã®èŠãšãèšããã§ãããã
ã¯ãšãªã®æé©åã«ã¯ãã€ã³ããã¯ã¹ãé©åã«èšå®ããããšãå¿ é ã§ããé©åãªã€ã³ããã¯ã¹ãæã€ããšã§ãããŒã¿ã®ååŸé床ãå€§å¹ ã«åäžããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãæ¹åããŸãããŸããäžå¿ èŠãªã«ã©ã ã®éžæãé¿ããå¿ èŠãªããŒã¿ã®ã¿ãååŸããããã«ã¯ãšãªãæžãããšãéèŠã§ãã
ããã«ãORMïŒObject-Relational MappingïŒã䜿çšããéã¯ãN+1åé¡ã«æ³šæããé¢é£ããããŒã¿ãå¹ççã«ããŒãããããã«Eager Loadingçã®ãã¯ããã¯ã掻çšããããšãæšå¥šãããŸãã
5.3 ãã£ãã·ã³ã°æŠç¥ã®å®è£
ãã£ãã·ã³ã°ã¯ãFuelPHPã«ãããããã©ãŒãã³ã¹æ¹åã®åŒ·åãªæ段ã§ããããŒã¿ããªããžã§ã¯ãããã£ãã·ã¥ã«ä¿åããããšã§ãåããªã¯ãšã¹ãã«å¯ŸããŠäœåºŠãããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããšãé²ããå šäœã®å¿çæéãå€§å¹ ã«ççž®ããŸãã
FuelPHPã¯ãã¡ã€ã«ãã¡ã¢ãªããŸãã¯ããŒã¿ããŒã¹ããŒã¹ã®ãã£ãã·ã³ã°ã·ã¹ãã ããµããŒãããŠãããéçºè ã¯å Žåã«ãã£ãŠæãé©åãªãã£ãã·ã³ã°æŠç¥ãéžæããããšãã§ããŸãããŸããèšå®å¯èœãªæå¹æéãæã€ãã£ãã·ã¥ãå©çšããããšã«ãããããŒã¿ã®é®®åºŠãä¿ã¡ã€ã€å¹çãæ倧åããããšãå¯èœã§ãã
ç¹ã«èªã¿åãé »åºŠã®é«ãããŒã¿ãèšç®ã³ã¹ãã®é«ãåŠççµæã¯ããã£ãã·ã¥ã«ä¿åããŠããããšã§ããã©ãŒãã³ã¹ã®åäžã«å€§ããè²¢ç®ããŸãããã£ãã·ã¥ã®ãµã€ãºãåçæé »åºŠã®ãã©ã³ã¹ãé©åã«ç®¡çããããšã§ããªãœãŒã¹ã®æµªè²»ãé²ããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãã§ããŸãã
5.4 éçãªãœãŒã¹ã®å¹ççãªæ±ã
éçãªãœãŒã¹ïŒCSSãã¡ã€ã«ãJavaScriptãã¡ã€ã«ãç»åãªã©ïŒã®ããŒãã¯ããŠã§ããµã€ãã®é床ã«å€§ããªåœ±é¿ãäžããŸããFuelPHPã§ã¯ããããã®ãªãœãŒã¹ãå¹ççã«æ±ãããšã§ãããŒãžã®ããŒãæéãæžå°ãããããšãã§ããŸãã
éçãªãœãŒã¹ãå§çž®ããããšã¯ãããŒã¿éä¿¡éãåæžããããŒãæéãççž®ããããã®æå¹ãªæ¹æ³ã§ãããŸããCSSãšJavaScriptã¯å¯èœãªéãå€éšãã¡ã€ã«ã«ããŠããã£ãã·ã¥å¯èœãªãã®ã«ããŸããããã«ããããªãœãŒã¹ã®åå©çšãä¿é²ããäœåãªãããã¯ãŒã¯ã©ãŠã³ãããªãããé¿ããããšãã§ããŸãã
å ããŠãéçãªãœãŒã¹ã®é ä¿¡ã«CDNïŒContent Delivery NetworkïŒãå©çšãããŠãŒã¶ãŒã®å°ççãªäœçœ®ã«åºã¥ãé ä¿¡é 延ãæå°éã«æããããšãå¹æçãªæŠç¥ã§ããããã«ãå¿ èŠãªãªãœãŒã¹ã®ã¿ãããŒãããããã«ã³ãŒãã®åå²ãé 延ããŒããå®æœããããšã«ãã£ãŠãåæããŒãæã®ããã©ãŒãã³ã¹ãåäžãããŸãã
6. ç¶ç¶çãªæ¹åãšè¿œè·¡
ãœãããŠã§ã¢éçºã«ãããŠãç¶ç¶çãªæ¹åã¯æåã®ã«ã®ãæ¡ããŸããç¹ã«ããã¬ãŒã ã¯ãŒã¯ã掻çšããéçºãããšãã°ãFuelPHPã䜿ã£ããããžã§ã¯ãã§ã¯ãå¹çæ§ãšè¿ éãªãªãªãŒã¹ãµã€ã¯ã«ãæåŸ ãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã®ããã®äž»èŠæŠç¥ã«çŠç¹ãåœãŠãŠãæ¥ã ã®éçºããã»ã¹ãã©ã®ããã«è¿œè·¡ãæ¹åããããæ€èšããŠãããŸãã
ç¶ç¶çãªæ¹åéçšã¯ããããã¯ãã®å質ãé«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãç®çãšããŠããŸãããããå®çŸããããã«ã¯ãå ·äœçãªæ¹æ³è«ãå¿ èŠã§ããããã«ã¯ããã°ãã¢ãã¿ãªã³ã°ã®ã¢ãããŒãããŠãŒã¶ãŒãã£ãŒãããã¯ã®å¹æçãªçµ±åãã³ãŒãããŒã¹ã®ãªãã¡ã¯ã¿ãªã³ã°ãæ°æ©èœã®é©æãªè¿œå ãå«ãŸããŸãã
ããã§åãäžããåæŠç¥ã¯ãFuelPHPãšããç¹å®ã®ãã¬ãŒã ã¯ãŒã¯ãåæã«ãã€ã€ãäžè¬çã«ãé©çšå¯èœãªãã¯ããã¯ã§ããããããé©åã«å®æœããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã«ãšã£ãŠäŸ¡å€ãããã®ãžãšé²åããŠããã§ãããã
6.1 ãã°ãšã¢ãã¿ãªã³ã°ã®éèŠæ§
ã¢ããªã±ãŒã·ã§ã³ã®å¥å šæ§ãç¶æããããã«ã¯ããã°ãšã¢ãã¿ãªã³ã°ãäžå¯æ¬ ã§ããFuelPHPã§éçºãããã¢ããªã±ãŒã·ã§ã³ã«ãããŠãããšã©ãŒããã©ã³ã¶ã¯ã·ã§ã³ãã·ã¹ãã ããã©ãŒãã³ã¹ãªã©ã®æ å ±ãç確ã«èšé²ããç£èŠããããšãæ±ããããŸããããã«ãããåé¡ãæ©æã«çºèŠãããè¿ éãªå¯Ÿå¿ãå¯èœã«ãªããŸãã
é©åãªãã°ã®å®è£ ã¯ããããã°äœæ¥ã容æã«ããäºæãã¬ãšã©ãŒãã»ãã¥ãªãã£ã®è匱æ§ãæããã«ããããšãã§ããŸããFuelPHPã§ã¯ããã°ã¬ãã«ã现ããèšå®ã§ãããããå¿ èŠãªæ å ±ãå¹ççã«åéã§ããŸãã
äžæ¹ã§ã¢ãã¿ãªã³ã°ããŒã«ã䜿çšããããšã§ããªã¢ã«ã¿ã€ã ã®ããŒã¿åæãè¡ããã·ã¹ãã ã®ããã©ãŒãã³ã¹ãææ¡ããããšãã§ããŸããããã«ãããããã©ãŒãã³ã¹ããã«ããã¯ã®ç¹å®ããªãœãŒã¹äœ¿çšçã®æé©åãå®çŸããŸãã
6.2 ãŠãŒã¶ãŒãã£ãŒãããã¯ã®çµ±åãšå¯Ÿå¿
ãŠãŒã¶ãŒãã£ãŒãããã¯ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ¹åæ§ã決å®ããããã§äžå¯æ¬ ãªæ å ±æºã§ããFuelPHPã䜿çšããã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®ãã£ãŒãããã¯ãå¹çããçµ±åããæ¹åã«ç¹ããäœå¶ãæŽããå¿ èŠããããŸãã
ãŠãŒã¶ãŒããã®æèŠãèŠæãåéããããã®ä»çµã¿ãã¢ããªå ã«çµã¿èŸŒãããšã§ã䟡å€ããã€ã³ãµã€ããåŸãããŸããåéããããŒã¿ã¯ãåé¡ã蚺æããæ¹åæ¡ãåªå é äœä»ãããã®ã«åœ¹ç«ã¡ãŸãã
åå¿ããäœå¶ã確ä¿ããŠããããšã§ããŠãŒã¶ãŒã¯èªåãã¡ã®æèŠãå®éã«åæ ããããšæããããæ·±ããšã³ã²ãŒãžã¡ã³ããçã¿åºãããšãã§ããŸãããããŠããŠãŒã¶ãŒãã£ãŒãããã¯ãéããŠå®æçãªã¢ããããŒãèšç»ãå®è¡ããããšã¯ããŠãŒã¶ãŒã«ãšã£ãŠé åçãªã¢ããªã±ãŒã·ã§ã³ãç¶æããããã«éèŠãªããã»ã¹ã®äžã€ã§ãã
6.3 ã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ãšãããã€ã¡ã³ãæŠç¥
ãœãããŠã§ã¢ã¯å€åãç¶ãããã®ã§ãããã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ã¯ãã®é²åãæ¯ããŸããFuelPHPã§ã®ã¢ããªã±ãŒã·ã§ã³éçºã§ã¯ãç¶ç¶çã«ã³ãŒãã®è³ªãèŠçŽããæ¹åããããšãæšå¥šãããŸãã
ãªãã¡ã¯ã¿ãªã³ã°ã¯åã«ã³ãŒããã綺éºã«ãããããšã«ãšã©ãŸãããã¡ã³ããã³ã¹ã®å®¹æãããæ©èœã®è¿œå ã»å€æŽã®ããããã«å€§ããå¯äžããŸãããããããªãã¡ã¯ã¿ãªã³ã°ã®ããã»ã¹ã¯èšç»çã«è¡ãã¹ãã§ãããç¹ã«å€§èŠæš¡ãªå€æŽã®åã«ã¯é©åãªãã¹ããå®æœããããšãéèŠã§ãã
ãŸãããããã€ã¡ã³ãã«ã€ããŠãèæ ®ãå¿ èŠã§ããç¶ç¶çãªã€ã³ãã°ã¬ãŒã·ã§ã³(CI)ãšç¶ç¶çãããã€ã¡ã³ã(CD)ã®ãã©ã¯ãã£ã¹ãåãå ¥ããããšã§ãæ°ããã³ãŒãã®ãããã€ãã¹ã ãŒãºãã€å¹ççã«è¡ãããšãã§ããŸããFuelPHPã¯ãããã®ãã©ã¯ãã£ã¹ãšçžæ§ãè¯ããéçºããã»ã¹ã®èªååã«å¹æçã«å©çšã§ããŸãã
6.4 ã¢ããããŒããšæ°æ©èœã®è¿œå
ã¢ããªã±ãŒã·ã§ã³ã®ãªãªãŒã¹åŸããã¢ããããŒããšæ°æ©èœã®è¿œå ã¯å®æçã«è¡ãããã¹ãã§ããããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã«ãšã£ãŠé åãä¿ã¡ç¶ããããšãã§ããŸããFuelPHPã䜿çšããŠããå Žåããã¬ãŒã ã¯ãŒã¯ã®ã¢ãžã¥ã©ãŒæ§é ã掻çšããŠãæ¡åŒµæ§ãšã¡ã³ããã³ã¹æ§ãé«ãä¿ã€ããšãå¯èœã§ãã
æ°æ©èœãè¿œå ããããšã§ããŠãŒã¶ãŒã®é¢å¿ãæ¹ãã€ãã競åä»ç€Ÿãšã®å·®å¥åãå³ãããšãã§ããŸããããããæ©èœè¿œå ã¯æ éã«è¡ãå¿ èŠãããããŠãŒã¶ããªãã£ãæ¢åæ©èœãšã®æŽåæ§ãåžžã«èæ ®ããããšã倧åã§ãã
ãããã®ããã»ã¹ã¯ãã¢ãžã£ã€ã«éçºãšé£æºããŠè¡ãããããšãå€ãããŠãŒã¶ãŒãã£ãŒãããã¯ãçŽ æ©ãåãå ¥ããåžå Žã®å€åã«æè»ã«å¯Ÿå¿ããããšãã§ããŸããFuelPHPã¯ãããã®èŠä»¶ã«å¿ããããã®åŒ·åãªããŒã«ã»ãããæäŸããéçºè ãæ°ããã¢ã€ãã¢ãå¹ççãã€å¹æçã«å®çŸããã®ããµããŒãããŸãã