Laravelの教科書を読んでいて、こう思ったことないですか?
- 書いてある通りに打てば動く。でも、なんで動いているのか分からない
- ファイルが多すぎて、どこに何があるのか分からない
- 自分で何か作ろうとすると、どこに何を書けばいいのか分からない
僕が今Laravelを教えている人も、最初はまさにこれだったんですね。
「どこに何があって、どのファイルがどういう役割なのか分からないから、どこに何を書いたらいいか分からない」って言っていました。
僕自身も、PHPを学んだあと、アプリをどう作っていけばいいのか分からなくて、数年足踏みしています。
結論だけいうと、
Laravelが意味不明なのは、書き方を覚えていないからじゃないです。流れが見えていないからなんですね。
この記事では、その「流れ」を1回分だけ追っていきます。
Laravelが意味不明になる3つの理由
理由1:ファイルが多すぎる
Laravelのプロジェクトを作ると、最初からフォルダとファイルが大量にあるじゃないですか?
あれを見て「全部覚えないといけないのか」って思って、止まる人が多いです。
でも、最初に触るのは4つの場所だけです。
残りは、しばらく開かなくても大丈夫です。
理由2:裏で勝手に動いている
Laravelって、いろんなことを自動でやってくれるんですね。
SQLを書いていないのにデータが取れたり、{{ }} で書くだけで安全に表示されたり。
便利なんですけど、何が自動で起きているのか分からないと、意味不明に見えます。
理由3:教科書の順番と、作るときの順番がちがう
教科書は、説明しやすい順番で書いてあります。
でも、実際に1つの画面を作るときは、ルート → コントローラー → モデル → ビューの順番で動くんですね。
この順番が頭に入っていないと、読んだことがバラバラのまま残ってしまいます。
1回の流れ:URLを開いてから画面が出るまで
ブラウザでURLを開く
↓
① ルート(routes/web.php):このURLなら、どこに行くか
↓
② コントローラー(app/Http/Controllers/):何をするか
↓
③ モデル(app/Models/):データベースからデータを取る
↓
④ ビュー(resources/views/):画面にする
↓
画面が出る
例えば「投稿の一覧」の画面なら、こうなります。
① ルート:案内係
Route::get('/posts', [PostController::class, 'index']);
「/posts が開かれたら、PostController の index に行ってください」。
ルートがやっているのは、これだけなんですね。処理は書きません。
② コントローラー:何をするか決める
public function index(): View
{
$posts = Post::latest()->get();
return view('posts.index', ['posts' => $posts]);
}
投稿を取ってきて、ビューに渡す。
コントローラーは、その画面で何をするかを決める場所です。
③ モデル:データベースとやりとりする
Post っていうモデルは、posts っていうテーブルとつながっています。
Laravelは、モデルの名前(単数)から、テーブルの名前(複数)を自動で決めてくれるんですね。
なので、Post::latest()->get() って書くだけで、SQLを書かなくてもデータが取れます。
ここが一番「意味不明」になりやすいところかなと思います。答えは、モデルが代わりにやってくれている、っていうだけです。
④ ビュー:画面にする
@foreach ($posts as $post)
<h2>{{ $post->title }}</h2>
@endforeach
コントローラーで 'posts' って名前で渡したので、ビューでは $posts が使えます。
流れが分かると、エラーの場所も分かる
この4つが頭に入ると、エラーが出たときに見る場所が決まってきます。
| 出たもの | 見る場所 |
|---|---|
| 404(ページが見つからない) | ① ルート |
Target class ... does not exist. | ① ルートの上の use |
Undefined variable $posts | ② コントローラーからビューへの渡し方 |
| データが出ない | ③ モデル・テーブルの中身 |
| 画面が崩れている | ④ ビュー |
意味不明だったものが、「どこで止まっているか」に変わるんですね。
1周目で意味不明なのは、普通です
正直に言うと、Laravelは1周で分かるものじゃないです。
僕が伴走したSさんは、Laravelの教科書を5周して、やっと流れが分かってきたって言っていました。
最初は一緒にやらないと進まない日もありました。
でも、何回も通していくうちに流れが分かって、自分でどういうコードを書けばいいか分かるようになって、ChatGPTへの質問の仕方も上手くなっていったんですね。
なので、1周目は書き方を覚えようとしなくていいです。
4つの場所を行ったり来たりする感覚だけつかんでもらえればと思います。
一人でやるときのコツ
今動いている画面を1つ選んで、4つのファイルを開く
教科書で作った画面を1つ選んで、その画面のルート・コントローラー・モデル・ビューを、自分で開いてみてください。
「このURLを開いたら、この順番でこのファイルが動く」って、声に出して説明できたらOKです。
分からないところは、手前から順番に確かめる
「全部分からない」ってなったら、①ルートから順番に「ここは分かる?」って自分に聞いてみてください。
分からなくなった場所が、今つまずいているところです。
AhaGateの場合
AhaGateでLaravelを教えるときも、最初に書き方は教えないんですね。
- どのファイルがルートで、どのファイルがコントローラーかを、実際のフォルダを開きながら一緒に確認する
- 「ここは分かりますか?」とこちらから聞いて、分からない場所を一緒に見つける
- 答えじゃなくてヒントを出す(自分で考える力をつけるため)
- コードだけじゃなくて「どう考えたか」も見る
料金は月30,000円(税込)・入会金なしです。都度払いで、いつでも止められます。
まずはLINEでの無料相談からで大丈夫です。勧誘はしません。
よくある質問
Q. 教科書を何周しても意味不明なままです。
A. 書き方を追っているからかもしれないです。一度、書き方は置いておいて、「この画面は、どのファイルを通っているか」だけを追ってみてください。
Q. Laravelの前に、素のPHPはやったほうがいいですか?
A. やったほうがいいと思っています。Laravelが裏でやってくれていることを一度自分でやっておくと、意味不明なところがかなり減ります。
Q. AIに聞けば分かりますか?
A. 何が分からないかが言える段階なら、AIで十分です。ただ、「全部分からない」状態だと、AIに何を聞けばいいかも分からないんですね。先に4つの場所だけ押さえてから聞いてみてください。
まとめ
- Laravelが意味不明なのは、流れが見えていないから
- 最初に触るのは、ルート・コントローラー・モデル・ビューの4つだけ
- 流れが分かると、エラーの場所も分かる
- 1周目で意味不明なのは普通。Sさんも教科書5周でやっと分かった
まずは今動いている画面を1つ選んで、4つのファイルを開いてみてください。
次に読む記事
LINEでの無料相談を受け付けています。 「Laravelが全部分からない」という相談で大丈夫です。勧誘はしません。