ã¯ããã«
åªä»ãæ¡ä»¶ã§ PHP Laravel 11 ã䜿ã£ãŠããŸããããããèããŠã¿ãããã¢ã€ã¬ããã«å
¥ç€ŸããŠãã®ãã¬ãŒã ã¯ãŒã¯ããã䜿ã£ãŠããŸãããäœãã©ãããã®ïŒããšåãããããããšèªåã®äžã§ããã ïŒãšããçããç¡ãããšã«æ°ã¥ããŸãããïŒæ¥ããããã»ã»ã»ïŒ
ãšããããšã§ãGoogle Cloud ãæšå¥šããŠãã DX éçºäºæ¥éšããã Gemini Advanced ã䜿ã£ãŠãããã¥ã¡ã³ããå
¥æãã€ã€å
¬åŒããã¥ã¡ã³ããèªãã§èªåãªãã®çããäœã£ãŠè¡ãããšæããŸãã
Gemini ãšãã£ããã«åŠãã§ã¿ãŠã»ã»ã»æ©ããã©çµè«
Gemini ãšãã£ããã«åŠãã§ã¿ãŠã»ã»ã»æ©ããã©çµè«ã
å€§èŠæš¡ïŒãŠãŒã¶ãŒæ°ãã¡ã¢ãªäœ¿çšéããã©ãã£ãã¯éïŒããšã³ããŠãŒã¶ãŒæ°ã®å¢å ãèŠèŸŒããéçºã§ã¯ Laravel ãéžæããã»ããè¯ãã§ãããªããªãã¡ã¢ãªå¢å ããã°ããç°å¢ãæŽã£ãŠããã®ããã® Laravel ã ããã§ãããŸãã1 人ã§ãã«ã¹ã¿ãã¯ã«éçºãã§ããã®ã Laravel ã®è¯ãç¹ã§ãããªããªããããã³ãã®ãã¬ãŒã ã¯ãŒã¯ãå匷ããããšãªã PHP ã ãã§ãHTML ãš CSS ãå°ãããã°ã©ã ããã ãã§ããããã§ããWeb éçºãããããšãå
šãåããŠã§ãããã¯å€§ããªãã€ã³ãã ãšæããŸãã
ãŸããLaravel 11 ã¯ãPHP åå¿è
ã«ãšã£ãŠããWeb éçºäºåæºåããæŽããŠãããé¢åãªäœæ¥ããèªååããããããŠãçŸããã³ãŒãããæžãããã®ã¬ã€ãã©ã€ã³ãæäŸããŠããããéåžžã«åªãããã¬ãŒã ã¯ãŒã¯ã§ãã
PHP éçºè
ãå€ãïŒåºæ¬çãªææ³ãçè§£ããŠããããšåæã§ãïŒç°å¢ã§ããã ããã«éçºãã§ããŸããã³ãã¥ãã㣠(StackOverFlow ã§è³ªå) ãããã®ã§è³ªåãããããå
¬åŒããã¥ã¡ã³ããæ¥æ¬èªã§èªããã®ã§ããããã§ãã
èªåã®çµéš
èªåããªã Laravel 11 ã䜿çšããŠããã®ãã§ãã
- PHP ã MVC ( Model-View-Controller ) ãã€ãã³ãããªãã³èšèšã§ã®éçºçµéšããããã«ãŒãã£ã³ã°ãã³ã³ãããŒã©ããã¥ãŒã®é£æºãã©ã«ããŒæ§æããæŽãã°æ¥œã« Web ããŒãžãäœãããšæããŠããã
- ãªããžã§ã¯ãæåèšèªã®çµéšãããã°ãã€ã³ã¿ãŒãã§ã€ã¹ããããã®èšèšãã³ããæŽãã°ããã«çè§£ã§ããã
- æ¡ä»¶ã§ Laravel åæã§é²ããããšãå€ããïŒåã身ãªçç±ã§ããã»ã»ã»ïŒ
èè¶³
éã«ããªããžã§ã¯ãæåèšèªã®çµéšããªãæ¹ã¯ã©ãæããã®ãèããŠã¿ããã§ãããããã®çµéšãªã®ã§ãããJava ã®å€éç¶æ¿ãã¯ã©ã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãã«ãã»ã«åã«ã¯ãããŠééãããšãæ¬æ°ã§ããããªãã£ãããã§ãããã®ãšãã倧åŠã®ææã TAã»SA ã«æ¬æ°ã§é·æéãã«ãããŠããã£ãŠèª²é¡ãããªãåäœãåããŸãããããå€§åŠæä»£ã®æ¹ã«ã¯æè¬ããæããŸããïŒæ³£ïŒãã€ã³ã¿ãªãããæ¥œã ãšæã£ãããã£ãŠãããããããŠèµ·ãäžãããªããªããŸããã
Laravel å ¬åŒããã¥ã¡ã³ããèªãã§ã¿ãäžã§ã®è¯ããšãã
Gemini ã« Laravel ã«ã€ããŠè¯ãç¹ãæžããŠãã Laravel å
¬åŒããã°ãæœåºããŠããããŸããïŒäŸ¿å©ã§ããã
èªãã èšäºïŒãLaravel 11 Now Available
- Laravel Reverb
ãªããšãæ°Žå¹³ã¹ã±ãŒãªã³ã°ã«å¯Ÿå¿ããŠããŸããããããšã³ããŠãŒã¶ãŒãå€ãããã« Laravel ã䜿çšãããŠããçç±ã®ïŒã€ãããããŸããããFuthermore, Reverb supports horizontal scaling via Redisâs publish / subscribe capabilities, allowing you to distribute your WebSocket traffic across multiple backend Reverb servers all supporting a single, high-demand application
- SQLite By Default
ããã©ã«ãã§ DB ã䜿ãããªããŠã芪åãªãã§ããããèªåã®çµéšã§ãããMySQL ãšã®æ¥ç¶ãããããã«éçºç°å¢ãäœã£ããšãã¯èŠåŽããŸãããç°¡æãª PoC éçºãããã«ã§ããŠããŸããŸããããã¯äŸ¿å©ã - New Artisan commands
å人çã«ãããã¡ãã£ãšå¬ããã§ããä»ã®ãã¡ã€ã«ãæ¢ããŠã enum ã interface ã¯ã©ã¹ãæžããŠããããã§ããã³ãã³ãå©ãã°ãã³ãã¬ãåŒã³åºããã®ã§ããã«ãã¡ã€ã«äœæã§ããŸããã
Laravel éçºè ã® YouTube èŠã
Taylor Otwell: ç¥ãããã Laravel ã®èµ·æºããã¶ã€ã³ãã¿ãŒã³ãLivewire vs InertiaãAI ãªã©! ã 5æ29æ¥ã«å ¬éã«ãããããèŠãŠããŸããïŒ
ãã£ã±ã Ruby on Rails ãæèããŠãããã ãªããšæããŸãããRuby on Rails ã䜿ã£ãŠãããšããã®ã§ãããåã㊠Laravel è§Šã£ããšãã«ãªãã䌌ãŠããïŒïŒãšæããŸããã
ãã® Youtube ã§ã¯ããšã³ãžãã¢ã¯ AI ã«ä»äºã奪ãããã®ãïŒã«ã€ããŠãèšåããŠããŸãããã®ç¹ã«é¢ããŠãFramework ã®éçºè
ã¯äžå
ãã·ãã¢ã®ãšã³ãžãã¢ã¯ãããªããšã¯æã£ãŠããªãã寧ãçç£æ§ãäžãã£ãŠãããšèšåããŠããŸãããç§ãããæããŸããããŒããŒããå©ããŠããŒã¿ãäœããããªåçŽäœæ¥ã¯ Gemini ã«ãŸãããŠãã£ãã®ã§ãããæäœæ¥ã ãšæ°æéãããããªã»ã»ã»ãšãªããããªäœæ¥ã 2 ã 3 ç§ã§çµãããŸãããå®ã¯ãã®æç« ã«ãè±æ°åã®ååŸã«åè§ã¹ããŒã¹ãããããã«æçµçã«æ ¡æ£ã®ããã«ä¿®æ£ããŸããã1 ç§ãããããçµããããŠãããŸãããããããšãã
YouTube ã«ãŠè³ªåãã§ãŠããã®ã§èããŸãããããã®ãããªåçŽäœæ¥ã Gemini ã«ãªã¯ãšã¹ãããããã«ãããã°ã©ãã³ã°ã®ç¥èãå¿
èŠãšãæããŸããã
Gemini ã«èããŠã¿ãïŒããã®é³ãåºãªãã»ã©ããããããã£ãã®ã§ãç§ã®æç« ããåŸã«æ¥ãŠããããŸãïŒ
次ã¯Gemini ã«ãããŠã¿ãŸããããGemini ã®ã¢ãã«ã¯ 2.5 Flash ã§ãã
ââââââââââââââââââââââââââââââââââââââââââââââ
ãªãããã¬ãŒã ã¯ãŒã¯ããå°å ¥ãããšè¯ãã®ãïŒ
Webãµã€ããWebã¢ããªã±ãŒã·ã§ã³ãéçºããéãããã°ã©ãã³ã°èšèªïŒPHPãªã©ïŒã ãã§ãŒããããã¹ãŠãæ§ç¯ããããšãå¯èœã§ããããããããã¯éåžžã«å€§å€ãªäœæ¥ã§ãã
äŸãããªããå®¶ã建ãŠãã®ã«ãæšæãäŒæ¡ãããšããããå§ããéãããžãèªåã§äœããèšèšå³ãäžããæããããªãã®ã§ãã
ããã§ããã¬ãŒã ã¯ãŒã¯ããç»å ŽããŸãããã¬ãŒã ã¯ãŒã¯ã¯ãWebéçºã§ãã䜿ãããæ©èœïŒããŒã¿ããŒã¹æ¥ç¶ãURLã®ç®¡çãã»ãã¥ãªãã£å¯Ÿçãªã©ïŒã®ãå ±éã®éªšçµã¿ããã䟿å©ãªéšåãããããããæäŸããŠãããããŒã«ã§ãã
ãã¬ãŒã ã¯ãŒã¯ãå°å ¥ããã¡ãªããã¯ä»¥äžã®éãã§ãã
â éçºå¹çã®åäž (Rapid Development):
- Webã¢ããªã±ãŒã·ã§ã³ã«ã¯ããŠãŒã¶ãŒèªèšŒãããŒã¿ããŒã¹æäœãã«ãŒãã£ã³ã°ïŒURLãšã³ãŒãã®ãããã³ã°ïŒãå ¥åå€ã®æ€èšŒãªã©ãå€ãã®å ±éæ©èœãå¿ èŠã§ãããã¬ãŒã ã¯ãŒã¯ã¯ãããã®ãå®åçãªåŠçïŒãã€ã©ãŒãã¬ãŒãã³ãŒãïŒããæ¢ã«å®è£ æžã¿ããŸãã¯ç°¡åã«å©çšã§ããåœ¢ã§æäŸããŸãã
- ããã«ãããéçºè ã¯ãŒãããã³ãŒããæžãæéãçããã¢ããªã±ãŒã·ã§ã³ã®ãããžãã¹ããžãã¯ïŒãã®ã¢ããªã±ãŒã·ã§ã³ç¬èªã®æ©èœïŒãã®å®è£ ã«éäžã§ããŸããçµæãšããŠãéçºæéãå€§å¹ ã«ççž®ããããæ©ãã¢ããªã±ãŒã·ã§ã³ããªãªãŒã¹ã§ããŸãã
â ã³ãŒãã®æšæºåãšä¿å®æ§ (Standardization & Maintainability):
å€ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãMVC (Model-View-Controller) ã®ãããªç¹å®ã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ãæ¡çšããŠããŸããLaravelããã®MVCãã¿ãŒã³ã«åŸã£ãŠãããã³ãŒãããModelïŒããŒã¿åŠçïŒããViewïŒè¡šç€ºïŒããControllerïŒå¶åŸ¡ïŒãã«æç¢ºã«åé¢ããããä¿ããŸãã
ãã®æ§é åãããã¢ãããŒãã«ãããã³ãŒãã®å Žæãæç¢ºã«ãªããããŒã éçºã«ãããŠã³ãŒãã®çµ±äžæ§ãä¿ãããŸããä»ã®éçºè
ãæžããã³ãŒããçè§£ãããããªããå°æ¥çãªæ©èœè¿œå ãäžå
·åä¿®æ£ïŒä¿å®ïŒã容æã«ãªããŸãã
â ã»ãã¥ãªãã£ã®åŒ·å (Enhanced Security):
- Webã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã° (XSS) ãSQLã€ã³ãžã§ã¯ã·ã§ã³ãã¯ãã¹ãµã€ããªã¯ãšã¹ããã©ãŒãžã§ãª (CSRF) ãªã©ãæ§ã ãªã»ãã¥ãªãã£è åšã«ãããããŠããŸãã
- ãã¬ãŒã ã¯ãŒã¯ã«ã¯ããããã®äžè¬çãªWebæ»æã«å¯Ÿããçµã¿èŸŒã¿ã®å¯Ÿçæ©èœãæäŸãããŠããŸããPHPåå¿è ãæ°ã¥ãã«ããã»ãã¥ãªãã£ããŒã«ãé²ãã®ã«åœ¹ç«ã¡ãããå®å šãªã¢ããªã±ãŒã·ã§ã³ãéçºã§ããŸãã
â ã³ãã¥ããã£ãšããã¥ã¡ã³ã (Community & Documentation):
- Laravelã®ãããªäººæ°ã®ãããã¬ãŒã ã¯ãŒã¯ã«ã¯ãäžçäžã«æŽ»çºãªéçºè ã³ãã¥ããã£ãååšããè±å¯ãªå ¬åŒããã¥ã¡ã³ããå€ãã®åŠç¿ãªãœãŒã¹ïŒãã¥ãŒããªã¢ã«ãèšäºãåç»ãªã©ïŒãæäŸãããŠããŸãã
- éçºäžã«åé¡ã«çŽé¢ããéããªã³ã©ã€ã³ã§è§£æ±ºçãèŠã€ããããã£ãããã³ãã¥ããã£ã«è³ªåããŠå©ããæ±ããããã£ããããŸãã
// =========================================== // ãã¬ãŒã ã¯ãŒã¯ãªã (å šãŠæåã§æ§ç¯) // =========================================== /* - èªåã§ããŒã¿ããŒã¹æ¥ç¶ã³ãŒããæžã - èªåã§URLãšPHPãã¡ã€ã«ã®çŽä»ãã管çãã - èªåã§ã»ãã¥ãªãã£å¯Ÿçãå®è£ ãã - èªåã§ãŠãŒã¶ãŒèªèšŒã·ã¹ãã ãæ§ç¯ãã - ... (å€ãã®å®åäœæ¥) â æéãšåŽåããããããã¹ãå€ããã»ãã¥ãªãã£èåŒ±æ§ */ // =========================================== // â // =========================================== // =========================================== // ãã¬ãŒã ã¯ãŒã¯ãã (Laravel 11) // =========================================== /* â ããŒã¿ããŒã¹æ¥ç¶ã¯èšå®ãã¡ã€ã«ã§å®çµ â ã«ãŒãã£ã³ã°ã¯å°çšãã¡ã€ã«ã§ç°¡æœã«å®çŸ© â çµã¿èŸŒã¿ã®ã»ãã¥ãªãã£æ©èœãå©çš â ã³ãã³ãäžã€ã§èªèšŒæ©èœãçæ ... (å ±éæ©èœã®èªåå/éšåå) â æ©ã宿ãããã³ãŒããæŽçããããå®å šæ§ãé«ã */
PHPåå¿è ã«ãšã£ãŠLaravel 11ãè¯ãçç±
Laravel 11ã¯ãäžèšã®ãã¬ãŒã ã¯ãŒã¯ã®ã¡ãªãããæå€§éã«æŽ»ããã€ã€ãç¹ã«PHPåå¿è ã«ãšã£ãŠåŠç¿ããããããã«èšèšãããŠããŸããå ·äœçãªçç±ãå°éçšèªã亀ããŠèŠãŠãããŸãããã
â
ç°¡çŽ åãããã¢ããªã±ãŒã·ã§ã³æ§é ãšéäžç®¡ç (bootstrap/app.php)
Laravel 11ã®å€§ããªå€æŽç¹ã®äžã€ã¯ãåæã®ãã¡ã€ã«æ§æã倧å¹
ã«ç°¡çŽ åãããããšã§ããLaravel 10ãŸã§ã¯å€ãã®èšå®ãã¡ã€ã«ã config ãã£ã¬ã¯ããªã app/Http/Middleware ãã£ã¬ã¯ããªã«æ£ãã°ã£ãŠããŸããããLaravel 11ã§ã¯ããããåæžãããbootstrap/app.php ãã¡ã€ã«ã«å€ãã®èšå®ãéäžããããã«ãªããŸããã
[Image of Laravel 11 simplified application structure] åŸæ¥ã®Laravelã®ã€ã¡ãŒãž: config/  app.php  auth.php  database.php  ... (倿°ã®èšå®ãã¡ã€ã«) app/Http/Kernel.php (ããã«ãŠã§ã¢å®çŸ©) app/Http/Middleware/ (åããã«ãŠã§ã¢ãã¡ã€ã«) Laravel 11ã®ã€ã¡ãŒãž: bootstrap/  app.php (ã¢ããªã±ãŒã·ã§ã³ã®åæèšå®ãããã«ãŠã§ã¢ããµãŒãã¹ãããã€ããªã©ãããã«éçŽ) config/  (å¿ èŠæäœéã®ãã¡ã€ã«ã®ã¿)
â PHPåå¿è ãžã®ã¡ãªãã
- åŠç¿ã³ã¹ãã®äœæž: ã¢ããªã±ãŒã·ã§ã³ã®åæèšå®ãåºæ¬çãªæ¯ãèããå®çŸ©ããå Žæã bootstrap/app.php ã«éçŽãããããšã§ãã©ãã«äœãèšå®ããã°è¯ããè¿·ãããšãæžããã¢ããªã±ãŒã·ã§ã³ã®å šäœåãææ¡ãããããªããŸãã
- èšå®ã®äžå 管ç: ããã«ãŠã§ã¢ïŒåŸè¿°ïŒããµãŒãã¹ãããã€ããšãã£ãéèŠãªèšå®ããã®ãã¡ã€ã«ã«éçŽãããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®æ¯ãèããäžç®æã§ç®¡çãããããªããŸãã
â
匷åãªArtisanã³ãã³ãã«ããéçºã®èªåå
Laravelã«ã¯ãArtisan (ã¢ãŒãã£ã¶ã³) ãšåŒã°ããã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ (CLI) ããŒã«ãä»å±ããŠããŸããããã¯ãéçºè
ãé »ç¹ã«è¡ãäœæ¥ãèªååããããã®åŒ·åãªããŒã«ã§ãã
+-------------------------------------------------+ | ããªã (éçºè ) | | â `php artisan` ãå®è¡ | +-------------------------------------------------+ | | | +---------------------------------------------+ | | | Laravel Artisan (CLIããŒã«) | | | | - ã³ãŒãã®ã²ãªåœ¢çæ (äŸ: ã¢ãã«ãã³ã³ãããŒã©ãŒ) | | | | - ããŒã¿ããŒã¹ã¹ããŒã管ç (ãã€ã°ã¬ãŒã·ã§ã³) | | | | - èªèšŒæ©èœã®èªåçæ | | | | - ãã¹ãå®è¡ | | | | - ... ãã®ä»å€æ° | | | +---------------------------------------------+ | | | | â (èªååãããçµæ) | +-------------------------------------------------+ | Webã¢ããªã±ãŒã·ã§ã³ (æ©èœè¿œå ã»å¹çå) | +-------------------------------------------------+
å ·äœçãªäŸ:
â ããŒã¿ããŒã¹ã¹ããŒã管ç (Migrations):
- éåžžãããŒã¿ããŒã¹ã®ããŒãã«æ§é ã倿Žããã«ã¯ãCREATE TABLE ã ALTER TABLE ãšãã£ãSQLæãçŽæ¥æžãå¿ èŠããããŸãã
- Laravelã®Migrationæ©èœã䜿ããšãPHPã³ãŒãã§ããŒãã«ã®æ§é ãå®çŸ©ããphp artisan make:migration create_products_table ã§ã²ãªåœ¢ããphp artisan migrate ã§å®éã®ããŒãã«ãããŒã¿ããŒã¹ã«äœæã§ããŸããããã«ãããããŒã¿ããŒã¹ã®å€æŽå±¥æŽãã³ãŒããšããŠç®¡çïŒããŒãžã§ã³ç®¡çïŒã§ããããŒã éçºãç°å¢æ§ç¯ã容æã«ãªããŸãã
// database/migrations/YYYY_MM_DD_HHMMSS_create_products_table.php (äžéšæç²)
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id(); // äž»ã㌠(id) ãèªåçæ
$table->string('name'); // æåååã® name ã«ã©ã
$table->integer('price'); // æŽæ°åã® price ã«ã©ã
$table->timestamps(); // created_at ãš updated_at ã«ã©ã ãèªåçæ
});
}
public function down(): void
{
Schema::dropIfExists('products');
}
};
â èªèšŒæ©èœã®è¿ éãªå®è£ (Laravel Breeze):
- ãŠãŒã¶ãŒç»é²ããã°ã€ã³ããã°ã¢ãŠãããã¹ã¯ãŒããªã»ãããšãã£ãèªèšŒæ©èœã¯ãWebã¢ããªã±ãŒã·ã§ã³ã§éåžžã«äžè¬çã§ãããå®è£ ã«ã¯å€ãã®æéãšã»ãã¥ãªãã£ã®èæ ®ãå¿ èŠã§ãã
- Laravel 11ã§ã¯ãcomposer require laravel/breeze ãš php artisan breeze:install ãšãã2ã€ã®ã³ãã³ããå®è¡ããã ãã§ããããã®èªèšŒæ©èœã®UIïŒãã¥ãŒïŒãã«ãŒãã£ã³ã°ãã³ã³ãããŒã©ãŒããã€ã°ã¬ãŒã·ã§ã³ãã¡ã€ã«ãèªåçã«çæãããŸããPHPåå¿è ããŒãããå®è£ ããåŽåãå€§å¹ ã«åæžã§ããŸãã
â PHPåå¿è ãžã®ã¡ãªãã:
- è€éãªäœæ¥ã®æœè±¡å: ããŒã¿ããŒã¹æäœãèªèšŒæ©èœãšãã£ããåå¿è ã«ã¯é£ããéšåãArtisanã³ãã³ãã代è¡ããŠããããããæ¬è³ªçãªã¢ããªã±ãŒã·ã§ã³ããžãã¯ã«éäžã§ããŸãã
- ãšã©ãŒã®åæž: æäœæ¥ã«ãããã¹ãæžããå®å®ããéçºãå¯èœã§ãã
â
Eloquent ORMã«ããçŽæçãªããŒã¿ããŒã¹æäœ
Laravelã®ãEloquent ORM (Object-Relational Mapping)ãã¯ãããŒã¿ããŒã¹ã®ããŒãã«ãPHPã®ããªããžã§ã¯ãããšããŠæ±ããããã«ããæ©èœã§ããããã«ãããSQLæãçŽæ¥æžããªããŠããããŒã¿ããŒã¹ãšã®ããåããéåžžã«ç°¡åã«ãªããŸãã
+---------------------+ +---------------------+ +---------------------+ | ããªãã®PHPã³ãŒã | | Eloquent ORM | | ããŒã¿ããŒã¹ | | (ãªããžã§ã¯ãæäœ) | | (SQLãžã®å€æ) | | (ããŒãã«ãããŒã¿) | +---------------------+ +---------------------+ +---------------------+ | User::find(1); | <--- > | SELECT * FROM users | <--- > | usersããŒãã« | | Product::create(...);| <--- > | INSERT INTO products| <--- > | productsããŒãã« | | $user->update(...); | <--- > | UPDATE users SET ...| <--- > | | +---------------------+ +---------------------+ +---------------------+
å ·äœçãªäŸ:
ãŠãŒã¶ãŒIDã1ã®ãŠãŒã¶ãŒæ å ±ãååŸãã:
// éåžžã®SQLã®å Žå: SELECT * FROM users WHERE id = 1; // PHPã§PDOãªã©ã䜿ã£ãŠSQLãå®è¡ããçµæãé åã§åãåã // Eloquent ORMã®å Žå: use App\Models\User; // Userã¢ãã«ãã€ã³ããŒã $user = User::find(1); // IDã1ã®ãŠãŒã¶ãŒãæ€çŽ¢ããUserãªããžã§ã¯ããšããŠååŸ echo $user->name; // ãªããžã§ã¯ãã®ããããã£ãšããŠãŠãŒã¶ãŒåã«ã¢ã¯ã»ã¹
æ°ããååãäœæãã:
// éåžžã®SQLã®å Žå: INSERT INTO products (name, price) VALUES ('éç', 100);
// PHPã§PDOãªã©ã䜿ã£ãŠSQLãå®è¡
// Eloquent ORMã®å Žå:
use App\Models\Product; // Productã¢ãã«ãã€ã³ããŒã
$product = Product::create([ // é
åã§ããŒã¿ãæž¡ããæ°ããProductãªããžã§ã¯ããäœæããããŒã¿ããŒã¹ã«ä¿å
'name' => 'éç',
'price' => 100
]);
â PHPåå¿è ãžã®ã¡ãªãã:
- SQLç¥èã®è»œæž: è€éãªSQLæãèŠããå¿ èŠããªããPHPã®ãªããžã§ã¯ãæåã®ç¥èã§ããŒã¿ããŒã¹ãæäœã§ããŸãã
- å¯èªæ§ã®åäž: ã³ãŒããçŽæçã§èªã¿ããããªããŸãã
- ã»ãã¥ãªã㣠(SQLã€ã³ãžã§ã¯ã·ã§ã³å¯Ÿç): Eloquentã¯ãããªãã¢ãã¹ããŒãã¡ã³ããããã©ã«ãã§äœ¿çšããããããŠãŒã¶ãŒããã®å ¥åå€ãçŽæ¥SQLæã«åã蟌ãŸããããšãé²ããSQLã€ã³ãžã§ã¯ã·ã§ã³ãšãã£ãäžè¬çãªããŒã¿ããŒã¹æ»æããèªåçã«ä¿è·ããŠãããŸãã
â
Bladeãã³ãã¬ãŒããšã³ãžã³ã«ãããã¥ãŒã®åé¢
Laravelã¯ãMVC (Model-View-Controller) ãšããèšèšãã¿ãŒã³ãæ¡çšããŠãããã¢ããªã±ãŒã·ã§ã³ã®åœ¹å²ãæç¢ºã«åé¢ããŠããŸãããã®ãã¡ãViewïŒè¡šç€ºïŒããæ
åœããã®ããBladeããšãããã³ãã¬ãŒããšã³ãžã³ã§ãã
Bladeã䜿ããšãPHPã®ããžãã¯ãšHTMLããããã«åé¢ããŠèšè¿°ã§ããŸãã
ååäžèЧ
@if (count($products) > 0) {{-- PHPã®ifæãšã»ãŒåãæå³ --}}
-
@foreach ($products as $product) {{-- PHPã®foreachæãšã»ãŒåãæå³ --}}
- {{ $product->name }} - {{ $product->price }}å {{-- 倿°è¡šç€ºãèªåã§ãšã¹ã±ãŒããããïŒ --}} @endforeach
ååããããŸããã
@endifâ PHPåå¿è ãžã®ã¡ãªãã:
- ã³ãŒãã®æŽç: HTMLã®äžã«PHPã®ã³ãŒããæ··åšããŠèªã¿ã«ãããªããã¹ãã²ããã£ã³ãŒãããé²ããŸãã衚瀺ããžãã¯ãšããžãã¹ããžãã¯ãæç¢ºã«åé¢ãããŸãã
- çŽæçãªæ§æ: @if ã @foreach ãšãã£ããã£ã¬ã¯ãã£ãïŒBladeç¬èªã®åœä»€ïŒã¯ãPHPã® if ã foreach ã«äŒŒãŠãããéåžžã«çŽæçã«çè§£ã§ããŸãã
- XSS察ç: {{ $variable }} ã®ããã«äºéã®æ³¢æ¬åŒ§ã§å€æ°ã衚瀺ãããšãèªåçã«ãšã¹ã±ãŒãåŠçïŒç¹æ®æåãç¡å®³åïŒãè¡ãããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã° (XSS) æ»æãé²ãã®ã«åœ¹ç«ã¡ãŸãã
â
ããã«ãŠã§ã¢ã«ãããªã¯ãšã¹ãåŠçã®ç®¡ç
ããã«ãŠã§ã¢ã¯ãHTTPãªã¯ãšã¹ããã¢ããªã±ãŒã·ã§ã³ã®ã³ã¢ããžãã¯ïŒã³ã³ãããŒã©ãŒãªã©ïŒã«å°éããåããŸãã¯ã¬ã¹ãã³ã¹ãã¯ã©ã€ã¢ã³ãã«è¿ãããåã«ããªã¯ãšã¹ããåŠçãããäžéå±€ãã®ãããªãã®ã§ãã
+-----------------------------------------------------------------+ | ã¯ã©ã€ã¢ã³ã (ãã©ãŠã¶) | | â HTTPãªã¯ãšã¹ã | +-----------------------------------------------------------------+ | | | +-------------------------------------------------------------+ | | | Laravelã¢ããªã±ãŒã·ã§ã³ | | | | +-------------------------------------------------------+ | | | | | ããã«ãŠã§ã¢ (äŸ: èªèšŒãã§ãã¯ãCSRFä¿è·ããã°èšé²) | | | | | | â ãªã¯ãšã¹ããåŠç/ãã£ã«ã¿ãªã³ã° | | | | | +-------------------------------------------------------+ | | | | | â (ããã«ãŠã§ã¢ãééãããªã¯ãšã¹ã) | | | | | | ã³ã³ãããŒã©ãŒ (ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ããžãã¯) | | | | | | â ããŒã¿ããŒã¹æäœãããžãã¹ããžã㯠| | | | | +-------------------------------------------------------+ | | | +-------------------------------------------------------------+ | | | | â HTTPã¬ã¹ãã³ã¹ | +-----------------------------------------------------------------+
â å ·äœçãªäŸ:
- èªèšŒããã«ãŠã§ã¢ (auth): ãã°ã€ã³ããŠãããŠãŒã¶ãŒã®ã¿ãã¢ã¯ã»ã¹ã§ããããŒãžïŒäŸ: 管çç»é¢ïŒãèšå®ããéã«äœ¿çšããŸãããªã¯ãšã¹ããæ¥ããããŸãããã«ãŠã§ã¢ããŠãŒã¶ãŒããã°ã€ã³ããŠããããã§ãã¯ãããã°ã€ã³ããŠããªããã°ãã°ã€ã³ããŒãžã«ãªãã€ã¬ã¯ãããŸãã
// routes/web.php (ã«ãŒãã£ã³ã°å®çŸ©ã®äžéš)
use App\Http\Controllers\DashboardController;
Route::middleware('auth')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
});
// ãã® '/dashboard' ã«ãŒãã¯ã'auth' ããã«ãŠã§ã¢ã«ãã£ãŠä¿è·ããã
- CSRFä¿è·ããã«ãŠã§ã¢: ã¯ãã¹ãµã€ããªã¯ãšã¹ããã©ãŒãžã§ãª (CSRF) æ»æããã¢ããªã±ãŒã·ã§ã³ãä¿è·ããŸãããã©ãŒã éä¿¡æã«èªåçã«ããŒã¯ã³ãæ€èšŒããäžæ£ãªãªã¯ãšã¹ãããããã¯ããŸãã
â PHPåå¿è ãžã®ã¡ãªãã
- é¢å¿ã®åé¢: èªèšŒããã°èšé²ãã»ãã¥ãªãã£ãã§ãã¯ãšãã£ãå ±éã®åŠçãã³ã³ãããŒã©ãŒããåé¢ã§ãããããã³ã³ãããŒã©ãŒã®ã³ãŒããã·ã³ãã«ã§èªã¿ããããªããŸãã
- åå©çšæ§: äžåºŠæžããããã«ãŠã§ã¢ã¯ãè€æ°ã®ã«ãŒããã°ã«ãŒãã«é©çšã§ãããããã³ãŒãã®éè€ãé²ããŸãã
â
ããã©ãŒãã³ã¹ã®åäž
Laravel 11ã¯ãPHP 8.2以äžã®å¿
é åãšãã«ãŒãã£ã³ã°ãDIã³ã³ãã (Dependency Injection Container)ãEloquent ORMãªã©ã®å
éšåŠçã«ãããŠãããã©ãŒãã³ã¹ã倧å¹
ã«æ¹åãããŠããŸãã
â PHPåå¿è ãžã®ã¡ãªãã:
- æèããã«é«éå: åå¿è ãèªåã§ããã©ãŒãã³ã¹æé©åã®è€éãªææ³ãåŠã¶å¿ èŠãªããããã©ã«ãã§é«éãªã¢ããªã±ãŒã·ã§ã³ãéçºã§ããŸããPHP 8.2ã®JIT (Just-In-Time) ã³ã³ãã€ã«ãªã©ã®æ©æµãåããããŸãã
ãããŸã§èªãã§ãããæ¹ãžãç§ãªãã®ãŸãšã
Laravel ã¯ã¡ãžã£ãŒãªãã¬ãŒã ã¯ãŒã¯ã§ãããã³ããšã³ãã®ãã¬ãŒã ã¯ãŒã¯ãéžæããªããŠããã®ã§äœ¿ããããããéžã°ããŠãããã ãããªãšæããŸãããPHP ç°å¢ã§ããŠãŒã¶ãŒæ°ã®å¢å ãèŠèŸŒããéçºã«æºãã£ãŠããã®ã§ Laravel ã䜿ã£ãŠããããšãããã£ãŠã¹ãããªïŒïŒã§ãããã ãHTML ãš CSS ãèŠæãªç§ã¯ .blade ãã¡ã€ã«ã«åèŠå «èŠããŠããŸãã
ãšã³ãžãã¢æŽã ã㯠10 幎è¿ããšããé·ãç§ã§ãããGemini ã®ãããã§ãããªã«å匷ããããæ¹ããŠãã¬ãŒã ã¯ãŒã¯ãéžæããã®ã¯ãªãã§ã ãããšããšã³ãžãã¢ãšããŠã®æèåãšç¥è UP ã«ç¹ãã£ããšæããŸãã
ãããŸã§èªãã§ããã ããããããšãããããŸããã