ã¯ããã«
æ¬ã¬ã€ãã®ç®ç
ãã®ã¬ã€ãã§ã¯ã人æ°ã®ããPHPãã¬ãŒã ã¯ãŒã¯ã§ããLaravelã®åºæ¬çãªäœ¿ãæ¹ãšãã®äž»èŠãªæ©èœã解説ããŸããLaravelãããããåŠãŒããšæã£ãŠããæ¹ããŸãã¯æ¢ã«å°ã觊ã£ãŠã¿ãããã©ãã£ãšæ·±ãç解ããããšæã£ãŠããæ¹ã ã察象ã«ãLaravelã®é åãšãã®å¯èœæ§ããäŒãããããšæããŸãã
Laravelãšã¯
Laravelãšã¯ãPHPã䜿ã£ãŠWebã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ã®äžã€ã§ãã2000幎代åé ããå©çšãããŠããPHPã¯ããã®èªç±åºŠã®é«ãããå€ãã®Webãµã€ãã§äœ¿ãããŠããŸãããããã®åé¢ãä¿å®æ§ãå®å šæ§ã確ä¿ããããã«ã¯é«åºŠãªæè¡ãæ±ããããŠããŸããã
ããã«å¯ŸããŠãLaravelã¯ãWebã¢ããªã±ãŒã·ã§ã³éçºãç°¡åã«ããããŠæ¥œããããšããã³ã³ã»ããã®ããšãå¿ èŠãªæ©èœãè±å¯ã«çšæãããŠããã ãã§ãªããããããçµã¿åãããŠèªç±ã«ã«ã¹ã¿ãã€ãºããããšãã§ãããããåããŠWebã¢ããªã±ãŒã·ã§ã³ãéçºãã人ãããçµéšè±å¯ãªéçºè ãŸã§å¹ åºãå©çšãããŠããŸãã
1. Laravelã®åºæ¬
1.1 PHPãã¬ãŒã ã¯ãŒã¯ãšããŠã®Laravel
PHPãã¬ãŒã ã¯ãŒã¯ãšã¯ãPHPã§Webã¢ããªã±ãŒã·ã§ã³ãéçºããéã®åºç€ãšãªãããŒã«ã®ããšãæããŸãããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ãã³ãŒãã£ã³ã°èŠçŽãçµ±äžããããã»ãã¥ãªãã£å¯Ÿçãäžå 管çããããã³ãŒãã®åå©çšæ§ãé«ããããšãã£ãå¹æããããŸãã
Laravelã¯ããã®PHPãã¬ãŒã ã¯ãŒã¯ã®äžã§ãç¹ã«äººæ°ãé«ãããã®çç±ã¯ä»¥äžã®éãã§ãã
- ãªãŒã«ã€ã³ã¯ã³ïŒã«ãŒãã£ã³ã°ãããŒã¿ããŒã¹ç®¡çãã»ãã·ã§ã³ç®¡çãèªèšŒããã£ãã·ã³ã°ãªã©ãWebã¢ããªã±ãŒã·ã§ã³éçºã«å¿ èŠãªæ©èœãäžéãæã£ãŠããã
- ç°¡ææ§ãšæè»æ§ïŒçŽæçã§åãããããã³ãŒãã§ãããªãããå¿ èŠã«å¿ããŠæ·±ãã«ã¹ã¿ãã€ãºããããšãå¯èœã
- 掻çºãªã³ãã¥ããã£ïŒäžçäžã«åºãã倧ããªã³ãã¥ããã£ããããå°ã£ããšãã«ã¯å©ãåãæåãæ ¹ä»ããŠããã
1.2 Laravelã®ã€ã³ã¹ããŒã«æ¹æ³
Laravelãã€ã³ã¹ããŒã«ããã«ã¯ããŸãPHPã®ããŒãžã§ã³7.3以äžãå¿ èŠã§ãããããŠãLaravelã¯ComposerãšããäŸåé¢ä¿ç®¡çããŒã«ãéããŠã€ã³ã¹ããŒã«ããŸãã以äžã«ç°¡åãªæé ã瀺ããŸãã
- ãŸãComposerãã€ã³ã¹ããŒã«ããŸããå ¬åŒãŠã§ããµã€ãããããŠã³ããŒãã§ããŸãã
- 次ã«ã¿ãŒããã«ïŒã³ãã³ãããã³ããïŒãéãã次ã®ã³ãã³ããå ¥åããŸãããcomposer global require laravel/installerãããã§Laravelã€ã³ã¹ããŒã©ãã€ã³ã¹ããŒã«ãããŸãã
- ãããŠæ°ããLaravelãããžã§ã¯ããäœæããã«ã¯ããlaravel new project-nameããšããã³ãã³ãã䜿ããŸããããã§ãproject-nameãã¯ä»»æã®ãããžã§ã¯ãåã«çœ®ãæããŠãã ããã
ããã§Laravelã®ã€ã³ã¹ããŒã«ã¯å®äºã§ãããµãŒããèµ·åããŠãäœæãããããžã§ã¯ããæ£åžžã«åäœããã確èªããŠã¿ãŸãããã
1.3 Laravelã®ãããžã§ã¯ãæ§é
Laravelãããžã§ã¯ããäœæãããšãåæç¶æ ã§ããã€ãã®ãã£ã¬ã¯ããªãšãã¡ã€ã«ãèªåçã«çæãããŸãããããã¯äžèŠãããšè€éã«èŠããŸãããå®ã¯ããããæ確ãªåœ¹å²ããããŸãã以äžã«äž»èŠãªãã£ã¬ã¯ããªãšãã®åœ¹å²ã玹ä»ããŸãã
- appïŒã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªããžãã¯ãå«ãŸããå Žæã§ããã¢ãã«ãããªã·ãŒããããã€ããªã©ãLaravelã®äž»èŠãªã¯ã©ã¹ãããã«ä¿åãããŸãã
- bootstrapïŒã¢ããªã±ãŒã·ã§ã³ã®èµ·åãšèªåããŒãèšå®ãå«ãŸããŠããŸãã
- configïŒã¢ããªã±ãŒã·ã§ã³ã®èšå®ãã¡ã€ã«ãæ ŒçŽãããŠããŸãã
- databaseïŒããŒã¿ããŒã¹ã®ãã€ã°ã¬ãŒã·ã§ã³ãšã·ãŒããæ ŒçŽãããŠããŸãã
- publicïŒãŠã§ããµãŒããŒããçŽæ¥ã¢ã¯ã»ã¹ããããã¡ã€ã«ãå«ãŸããŠããŸããäŸãã°ãJavaScriptãCSSãç»åãã¡ã€ã«ãªã©ã§ãã
- resourcesïŒãã¥ãŒãæªã³ã³ãã€ã«ã®ã¢ã»ããïŒLessãSassãJavaScriptïŒãããŒã«ã©ã€ãºãã¡ã€ã«ãªã©ãå«ãŸããŠããŸãã
- routesïŒã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ã«ãŒããå®çŸ©ãããŠããŸãããŠã§ããAPIãã³ã³ãœãŒã«ãæŸéã«ãŒããªã©ãããã«ãããŸãã
- storageïŒã³ã³ãã€ã«ããBladeãã³ãã¬ãŒãããã¡ã€ã«ããŒã¹ã®ã»ãã·ã§ã³ããã¡ã€ã«ãã£ãã·ã¥ããã®ä»ã®ãã¡ã€ã«çæããããã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠçæããããã¡ã€ã«ãæ ŒçŽãããŠããŸãã
- testsïŒèªåãã¹ãé¢é£ã®ãã¡ã€ã«ãå«ãŸããŠããŸãã
- vendorïŒComposerã®äŸåé¢ä¿ãå«ãŸããŠããŸãã
ãããã®ãã£ã¬ã¯ããªæ§é ãç解ããããšã§ãLaravelã®ã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«åäœããã®ãããããŠèªåã®ã³ãŒããã©ãã«é 眮ããã°ããã®ãããããããã«ãªããŸãã
2. Laravelã䜿ã£ãåºæ¬çãªWebã¢ããªã±ãŒã·ã§ã³ã®äœæ
2.1 æ°èŠãããžã§ã¯ãã®äœæ
Laravelã§æ°ãããããžã§ã¯ããäœæããæ¹æ³ã¯ãã§ã«èª¬æããŸããããå床確èªããŸãããããlaravel new project-nameããšããã³ãã³ãã䜿çšããŸããããã§ãproject-nameãã¯ä»»æã®ãããžã§ã¯ãåã«çœ®ãæããŠãã ããã
2.2 ã«ãŒãã£ã³ã°ãšãã¥ãŒã®äœæ
Laravelã§ã¯ãã«ãŒãã£ã³ã°ã¯ãroutesããã£ã¬ã¯ããªå ã®ãweb.phpãã§å®çŸ©ããŸããããšãã°ãããŒã ããŒãžã衚瀺ããããã®ã«ãŒãã£ã³ã°ã¯ä»¥äžã®ããã«ãªããŸãã
Route::get('/', function () { return view('welcome'); });
äžèšã®ã³ãŒãã§ã¯ããŠãŒã¶ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒãURL/’ïŒã«ã¢ã¯ã»ã¹ãããšãã«ããwelcomeããšãããã¥ãŒãè¿ãããã«æå®ããŠããŸãã
ãã¥ãŒèªäœã¯ãresources/viewsããã£ã¬ã¯ããªå ã«ä¿åããŸãããã¥ãŒã¯éåžžãHTMLãçæããããã®Bladeãã³ãã¬ãŒãã䜿çšããŸããããšãã°ããwelcome.blade.phpããšãããã¥ãŒãã¡ã€ã«ãäœæããã°ãäžèšã®ã«ãŒãã£ã³ã°ã§ããã衚瀺ãããŸãã
2.3 ããŒã¿ããŒã¹ãšã¢ãã«ã®æäœ
Laravelã§ã¯EloquentãšããORMïŒObject-Relational MappingïŒãçšæãããŠãããããŒã¿ããŒã¹ãšã¢ãã«ã®æäœã容æã«ãªããŸããäŸãã°ãæ°ãããŠãŒã¶ãããŒã¿ããŒã¹ã«ä¿åããããã®ã³ãŒãã¯ä»¥äžã®ããã«ãªããŸãã
$user = new User; $user->name = 'John Doe'; $user->email = 'john@example.com'; $user->password = bcrypt('password'); $user->save();
ãã®ã³ãŒãã§ããUserãããŒãã«ã«æ°ããã¬ã³ãŒããäœæãããŸãããbcryptãé¢æ°ã¯ãã¹ã¯ãŒããããã·ã¥åïŒæå·åïŒããããã®ãã®ã§ãã
2.4 ãã©ãŒã ã®äœæãšããªããŒã·ã§ã³
Laravelã¯ãã©ãŒã ãªã¯ãšã¹ããšããæ©èœãå©çšããŠãç°¡åã«ãã©ãŒã ã®ããªããŒã·ã§ã³ãè¡ãããšãã§ããŸãããã©ãŒã ãªã¯ãšã¹ãã¯ç¹æ®ãªãªã¯ãšã¹ãã¯ã©ã¹ã§ããã®äžã«ããªããŒã·ã§ã³ã«ãŒã«ãå®çŸ©ããŸãã
äŸãã°ããRegisterRequestããšãããã©ãŒã ãªã¯ãšã¹ããäœæããæ°èŠç»é²ãã©ãŒã ã®ããªããŒã·ã§ã³ã«ãŒã«ãå®çŸ©ããããšãã§ããŸãããã®ã«ãŒã«ã¯ä»¥äžã®ããã«ãªããŸãã
public function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]; }
ãã®ã«ãŒã«ã«ãããååãã¡ãŒã«ããã¹ã¯ãŒããå¿ é ã§ããããšãã¡ãŒã«ã¢ãã¬ã¹ãäžæã§ããããšããã¹ã¯ãŒãã8æå以äžã§ããããšãªã©ããã§ãã¯ããããšãã§ããŸãã
2.5 èªèšŒã®å®è£
Laravelã¯ãŠãŒã¶èªèšŒã®æ©èœãæåããæäŸããŠããŸããLaravel BreezeãLaravel Jetstreamãšãã£ãããã±ãŒãžã䜿ã£ãŠãç°¡åã«èªèšŒã·ã¹ãã ãã»ããã¢ããããããšãã§ããŸãããããã®ããã±ãŒãžã¯æ°èŠç»é²ããã°ã€ã³ããã¹ã¯ãŒããªã»ãããšãã£ãäžè¬çãªèªèšŒæ©èœãæäŸããŸãã
Laravelã®èªèšŒæ©èœã掻çšããããšã§ãã»ãã¥ãªãã£ã«é æ ®ããèªèšŒæ©èœãè¿ éã«å®è£ ããããšãã§ããŸããããã«ãããéçºè ã¯ã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªéšåã«éäžããããšãã§ããŸãã
3. Laravelã䜿ã£ãå®è·µçãªWebã¢ããªã±ãŒã·ã§ã³ã®äœæ
3.1 å®è·µçãªã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ãã¢
ç¬èªã®Webã¢ããªã±ãŒã·ã§ã³ãäœãéãæåã«æ確ã«ããã¹ãã¯ãã®ã¢ããªã±ãŒã·ã§ã³ãäœããããã®ãªã®ãããšããããšã§ããäŸãã°ãããã°ã·ã¹ãã ãã·ã§ããã³ã°ãµã€ãããã£ããã¢ããªãã¿ã¹ã¯ç®¡çããŒã«ãªã©ãèªåãäœããããšæããã®ãã€ã¡ãŒãžããŸãããããã®èšäºã§ã¯ãã¿ã¹ã¯ç®¡çããŒã«ãäœãããšãèããŠã¿ãŸãã
3.2 ããŒã¿ããŒã¹ãšã¢ãã«ã®èšèš
ã¿ã¹ã¯ç®¡çããŒã«ãäœãã«ããã£ãŠã¯ãæäœã§ãããŠãŒã¶ãããŒãã«ãšãã¿ã¹ã¯ãããŒãã«ãå¿ èŠã«ãªãã§ãããããŠãŒã¶ããŒãã«ã«ã¯ãŠãŒã¶ã®ååãã¡ãŒã«ã¢ãã¬ã¹ããã¹ã¯ãŒããªã©ããã¿ã¹ã¯ããŒãã«ã«ã¯ã¿ã¹ã¯ã®ååã詳现ãæéããŠãŒã¶IDïŒã¿ã¹ã¯ãã©ã®ãŠãŒã¶ã«å±ããŠãããã瀺ãïŒãªã©ãä¿åãããŸããã¢ãã«ã¯ãããã®ããŒãã«ã«å¯Ÿå¿ããŸãã
3.3 ã«ãŒãã£ã³ã°ãšãã¥ãŒã®èšèš
次ã«ãã©ã®URLãã©ã®æ©èœã«å¯Ÿå¿ããããèšèšããŸããäŸãã°ãã/tasksãã¯ãŠãŒã¶ã®ã¿ã¹ã¯äžèŠ§ããã/tasks/createãã¯æ°èŠã¿ã¹ã¯äœæãã©ãŒã ã衚瀺ããã/tasks/{id}ãã¯æå®ããIDã®ã¿ã¹ã¯ã®è©³çŽ°ã衚瀺ããããšãã£ãããã«èšèšããŸãããã¥ãŒã¯ãããã®ã«ãŒãã£ã³ã°ã«å¿ããŠäœæããŸãã
3.4 ããªããŒã·ã§ã³ãšèªèšŒã®èšèš
ãã©ãŒã ããéä¿¡ãããããŒã¿ã¯å¿ ãããªããŒã·ã§ã³ãè¡ããé©åã§ãªãããŒã¿ãä¿åãããªãããã«ããŸããäŸãã°ãæ°èŠã¿ã¹ã¯äœæãã©ãŒã ã§ã¯ãã¿ã¹ã¯åã空ã§ãªãããšã詳现ãäžå®ã®é·ã以å ã§ããããšãªã©ããã§ãã¯ããã§ãããããŸãããŠãŒã¶ãèªåã®ã¿ã¹ã¯ã ããæäœã§ããããã«ãèªèšŒãšèªå¯ã®èšèšãéèŠã§ãã
3.5 ãã¹ããšãããã€
ã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªæ©èœãå®æãããããŠããããã¹ããæ©èœãã¹ããè¡ããã³ãŒãã®å質ãä¿èšŒããŸããLaravelã¯PHPUnitãšãããã¹ããã¬ãŒã ã¯ãŒã¯ãæšæºã§ãµããŒãããŠãããèªååãã¹ããè¡ãããããªã£ãŠããŸããæåŸã«ãå®æããã¢ããªã±ãŒã·ã§ã³ãWebãµãŒãã«ãããã€ããŸããLaravelã¯å€ãã®ãã¹ãã£ã³ã°ãµãŒãã¹ãšé£æºãå¯èœãªããããããã€ã容æã§ãã
4. Laravelã®ã³ãã¥ããã£ãšãªãœãŒã¹
4.1 å ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãšãã¥ãŒããªã¢ã«
Laravelã®åŠç¿ãå§ããæåã®äžæ©ã¯ãå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ããã§ãã¯ããããšã§ããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ã¯ãLaravelã®å šãŠã®æ©èœã«ã€ããŠè©³çŽ°ãªèª¬æãæäŸããŠããŸãããŸããLaravelã®å ¬åŒãŠã§ããµã€ãã«ã¯ãLaravelã®åºæ¬ãåŠã¹ããã¥ãŒããªã¢ã«ãæäŸãããŠããŸãããã®ãã¥ãŒããªã¢ã«ã¯ãæ°ããªLaravelãããžã§ã¯ããå§ããããã®è¯ãã¹ã¿ãŒããã€ã³ããšãªããŸãã
4.2 Laravelã«é¢ããããã°ããã©ãŒã©ã
èªåäžäººã§åé¡ã«çŽé¢ããå ŽåãLaravelã®ã³ãã¥ããã£ã¯ãšãŠãå©ãã«ãªããŸããStack OverflowãLaravelã®å ¬åŒãã©ãŒã©ã ã¯ãã³ãŒãã®åé¡ã解決ããããã®è¯ããªãœãŒã¹ãšãªããŸãããŸããå€ãã®éçºè ãèªèº«ã®ããã°ã§Laravelã«é¢ãããã³ãããã¥ãŒããªã¢ã«ãå ±æããŠããŸããLaravel NewsãLaracastsãªã©ã¯ãLaravelã®ææ°æ å ±ãåŸãããã®è¯ããªãœãŒã¹ã§ãã
4.3 Laravelã«é¢ããæžç±ãšã³ãŒã¹
ãããã£ãšäœç³»çãªåŠç¿ãæãã®ã§ããã°ãå€ãã®æžç±ããªã³ã©ã€ã³ã³ãŒã¹ãå©çšå¯èœã§ãã”Laravel: Up and Running” ã “Laravel From Scratch” ã¯ãLaravelãæ·±ãç解ããããã®è¯ãéžæãšãªããŸãããããã®ãªãœãŒã¹ãå©çšããããšã§ãèªèº«ã®ã¹ãã«ã磚ããããé«åºŠãªWebã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœã«ãªããŸãã
çµè«
Laravelã®åŠç¿ã®äžæ©
ãã®èšäºãéããŠãLaravelã®åºæ¬çãªæŠå¿µãšãã®äœ¿ãæ¹ã«ã€ããŠç解ãæ·±ããããšãã§ããããšã§ããããLaravelã¯éåžžã«ãã¯ãã«ã§ã倧èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã察å¿ããããšãã§ãããã¬ãŒã ã¯ãŒã¯ã§ãããããããã®äžæ¹ã§ãåŠç¿ã³ã¹ãã¯æ¯èŒçäœããåå¿è ã§ãç°¡åã«å§ããããšãã§ããŸãã
ãããŸã§ã®å 容ã¯Laravelã®åºç€ãã«ããŒããŠããŸããããŸã ãŸã æ¢æ±ãã¹ãé åã¯ãããããããŸããLaravelã¯ã³ãŒãã®åå©çšãä¿é²ããå®å šãªWebã¢ããªã±ãŒã·ã§ã³ãäœãããã®æ©èœãæäŸããŠããããããã掻çšããããšã§éçºããã»ã¹ãããå¹ççã«ããããšãã§ããŸãã
次ã®ã¹ããã
次ã«é²ãããã®æè¯ã®ã¹ãããã¯ãèªåèªèº«ã§ãããžã§ã¯ããéå§ããæãåããããšã§ããçè«ã ãã§ã¯ãªããå®éã«ã³ãŒããæžãããšã§åŠç¿ãæ·±ãŸããŸããäŸãã°ãããã°ã¢ããªã±ãŒã·ã§ã³ãäœã£ãŠã¿ãããŸãã¯æ¢åã®ãµãŒãã¹ãLaravelã§åçŸããŠã¿ããªã©ãèªåã«ãšã£ãŠæå³ã®ãããããžã§ã¯ããéžã¶ãšè¯ãã§ãããã
ãããŠãäœãåé¡ã«ééãããšããæ°ããªç¥èãåŸãããšãã«ã¯ãLaravelã®è±å¯ãªã³ãã¥ããã£ãªãœãŒã¹ã掻çšããŠã¿ãŠãã ãããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãããã°ããã©ãŒã©ã ãæžç±ããªã³ã©ã€ã³ã³ãŒã¹ãªã©ãåŠç¿ããµããŒãããããã®ãªãœãŒã¹ã¯ãããããããŸãã
Laravelã®æ ã¯ãããããæ¬åœã®ã¹ã¿ãŒãã§ããããªããçŽ æŽãããWebã¢ããªã±ãŒã·ã§ã³ãäœãåºãããšãå¿ããæåŸ ããŠããŸãã