BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

Laravelを最新版公式に沿ってシンプルに導入。あと感想。

結論

環境構築は親切だけどMVCの書き方はRailsに慣れてたらだいぶ癖があるかも。Railsってスゲーんだな、って思ったわ。

なぜ使おうと思った?

地理的な問題で、Rails書ける仕事ってなかなか募集していないので、ならば次にやるべきフレームワークは?という観点でLaravelを選んだ。WordPressも同時進行で触ってみる予定。

どのような動きをしたか

色んなワードでググったが、そこには、まごうことなき地獄が広がっていた。QiitaやZennの初心者が導入しました記事、ベテランによるあれやこれやカスタマイズしまくってる(あんま参考にならない)導入事例、Windows向けの丁寧なチュートリアル(一番参考になりそうだったけど、Macと結構違うんですよね・・。導入後は参考にできそうだけど)、はしょりの多い分かりにくい公式、などなど。

とりあえず、phpの環境構築自体が鬱陶しい感じだったので、ならば学んだDockerを使おうかと思いそれで色々見てると、金言発見。

根本的な間違いは「初心者が書いた変なブログを参考にしてること」
Laravelで絶対にやってはいけないことの筆頭。
初心者から見ると「ブログを書いてる人はきっとLaravelに詳しいんだろう」と勘違いするけどそんなことは全くなく「ブログを書いてるのも99%は初心者」
ベテランから見ると間違ったことばかり書いてる初心者で迷惑すぎる存在。

開発環境にDockerを使いたいなら公式のLaravel Sailを使う。これ以外は全部無視していい。
公式ドキュメト通りにlaravel.buildで新規プロジェクトを作ればそのまますぐsailが使えるように全部準備される。
DBが使えるように.envも自動で変更されるので自分で変更するような余計なことはしなくていい。
初心者が間違えるのは変なブログを見てしなくていい余計なことをするから。

引用元: https://teratail.com/questions/r1tal080g333xx

あまりに耳が痛いが、早めにこの回答に出会えて良かったと思う。という訳で公式見ながらLaravel Sailを使ったら、あっさり導入完了。Docker最高。そりゃあさあ、Dockerなしで導入する知識もあった方がいいと思いますよ。でも、とりあえず、LaravelやPHPの概念に触れたいんですよ。衝動なんですよ、これは。

Laravel Sailとは

非常に説明しにくいが、Laravel公式が(Railsと違って)親切にも用意してくれている、「LaravelをDockerで簡単に導入できるようにしてくれる」一連のコマンドのようなものです。フレームワークやライブラリではない。

やった手順

以下、MacでDockerをインストールしている前提で、導入〜ビュー表示までです。Qiitaの素人記事とか玄人記事と違って、「2023/09/06時点の最新版のLaravelの公式ドキュメントにのっとって最低限のことだけやってる」と思います。思い・・ます。

  1. ターミナル開く
  2. cdにて、アプリのフォルダがいっぱい入ってるフォルダに行く(俺の場合はprojects)
  3. curl -s "https://laravel.build/任意のアプリ名" | bash を実行(なんか不安になるよな、このコマンド。引数渡せるのか?って思うし)
  4. 5分くらいかかる
  5. cdで任意のアプリ名に移動
  6. ./vendor/bin/sail up を実行すると、docker compose upとかrails sみたく、以後ログが出るようになるので、それ以降にLaravel関連のコマンドを使う場合はターミナルで別窓を作ったりVSCode上のターミナルを使う
  7. alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail' を実行すると、以後sail 〇〇でphp 〇〇の代わりのコマンドを使えるようになる。すごいね、Docker。すごいね、Sail。ちなみにここまでは全て公式ドキュメントどおり。以下は、公式ドキュメントのMVCのそれぞれの箇所を見てもあまりシンプルな事例を書いてないせいで、他のチュートリアルとかChatGPTとかで調べた。いや、ほんまRailsチュートリアルとかドキュメントと違って、公式ドキュメントって、各項目、のっけから応用しまくりなコードがバンバン出てくるのよ。どうなってんの?Railsが優しすぎるのか?やさしさに包まれすぎてるのか?
  8. sail artisan make:controller PostController でコントローラーを作る。今回はpostという名前にします
  9. sail artisan make:model Post でモデルを作る。今回はデータベースいろわんのであまり意味ないですが。
  10. mkdir resources/views/post と touch resources/views/post/index.blade.php でビューファイルを作ります。ここにビューファイルを置きます。
  11. web.phpに下記コード1を追加(ルーティングの設定です)
  12. PostController.phpのclass PostController extends Controller内にコード2を追加
  13. index.blade.phpをコード3にまるっと書き換え(サンプルなんでなんでもいいですが)
  14. この状態でlocalhost/post に行くと、サンプルページが表示されるはず。

コード1

// use〇〇の下に
use App\Http\Controllers\PostController;

// 最下に
Route::get('/post', [PostController::class, 'index']);

コード2

    public function index()
    {
        return view('post.index');
    }

コード3

<!DOCTYPE html>
<html>
<head>
    <title>Sample Page</title>
</head>
<body>
    <h1>Welcome to the Sample Page</h1>
    <p>This is the sample view for the index action of SampleController.</p>
</body>
</html>

これから

モデルをいごいごしまくるど!おー!!