PHP
Sass
laravel
docker

[初心者]Laravel始めたての人は寄って行って

はじめに

自分は開発経験自体は記事の投稿時点で半年くらいの初心者学生エンジニアです。
私は現在業務でlaravelを使っているのですが、つまづいた箇所・紛らわしいなーという箇所を解説できたら初学者に役立つかなーと思い書こうと思いました。(もちろん自分も初学者です)
本当にエンジニアと呼べるのか怪しいくらいですしあくまで個人の考えとか解釈なので、先輩方に対しては訂正などのコメントは大大大歓迎です。が、初学者の方々に対しては間違ってることもいっぱいありますので、絶対鵜呑みにせず参考にしかしないでくださいね!!

  • 自己紹介
    • 情報,数学系学科の学生
    • 現在はlaravelを使って開発を行なっている
    • 小さいチームなのでサーバーサイドとフロントサイドどちらも携わる
  • 1年前の私
    • 学校の勉強は必要十分しかせず、プログラミング経験は学校でjavaをいじった程度。改心してこれから勉強しまくります。
    • サーバーって何?webって?MySQLってプログラミング言語?開発って何?みたいな状態
    • エンジニアになりたいと思い全く未経験でバイトみたいな形で開発に携わる

開発環境

laradockっていう便利なのを使いました。
細かい部分は忘れてしまいドキュメントも残してないので、割愛します。。

  • OS X 10.13
  • PHP 7.1.7
  • Laravel 5.5.3
  • docker 17.09.0-ce
  • docker-compose 1.16.1
  • nginx + PHP-FPM + MySQL

dockerっていうのは、自分のPCの内部に独立した実行環境を作れるソフトウェアです。
自分のPCに擬似サーバーを作れるみたいな感じです。

docker-composeっていうのは、いくつかの実行環境をそれぞれdockerでコマンド打って立ち上げるのがめんどくさいので、それらを一括で立ち上げてくれる便利なやつです。
開発にはwebサーバーだったりDBだったり色々必要だと思うんですが(自分の場合はnginx + PHP-FPM + MySQL)、それぞれを一括で立ち上げてくれるんですねー。

なんだかしょっぱなからややこしい感じですが、ぶっちゃけあんま僕も全然わかってないので、今はなんとなくの理解で大丈夫だと思います!というか環境構築とかは何度もやって理解していくもので、最初から全部理解しようとするのは非効率だと思っているので、僕は逃げまくってます。

で、これらの環境を超簡単に作ってくれるlaradockっていうお助けキャラがいるので安心してください。
laradockについては説明は省くので、他のサイトを参考にしてください!
自分はこのqiitaの記事を参考にさせていただきました!https://qiita.com/yudaifuijta0121/items/846d5e8e86ec5b2d908e

あとはcomposerのインストールとかですかね。

ていうかlaradockってdocker-compose.yml見るといっぱいいろんなコンテナの設定書いてあって、 docker-compose start でもいっぱい立ち上がるんですが、 docker-compose stop の時は4つとかしかコンテナ止めてないんですよね。イメージ引っ張ってくれば色々使えるみたいな感じなんですかね?全然わかりません誰か教えてください。。

ディレクトリ構成

よく触るファイル

├── app
│   ├── Console
│   ├── Exceptions
│   ├── Http
│   ├── Models
│   ├── Notifications
│   ├── Observers
│   ├── Providers
│   ├── Services
│   └── helpers.php
├── database
│   ├── factories
│   ├── migrations
│   └── seeds
├── public
│   ├── css
│   ├── js
├── resources
│   ├── assets
│   ├── lang
│   └── views
├── routes
│   ├── admin.php
│   ├── user.php
│   └── web.php
├── storage
│   ├── debugbar
│   ├── framework
│   └── logs
├── bootstrap
├── config
├── tests
└── vendor

これが大体自分がメインだと思うディレクトリ・ファイルですね。
簡単に説明すると、

  • app
    • app ってざっくりなディレクトリ名なので一言では表しづらいですが、よく触るのはcontrollersやバリデーションをかくrequestsなどがあるHttpと、その名の通りモデルのある Models くらいで、他のディレクトリも触ることはたまにありますが、頻度は多くないです。
  • bootstrap
  • config
    • 諸々の設定ファイルがあるところです。データベースのパスワードとか、サイトのドメインとかとにかく色々設定してます。
  • database
    • factories : テストの際にデータを保存できるかとかを確認しないといけないので、そのためのダミーデータを作ったりししてるとこだと思います。テストまだやってないからよくわからない
    • migrations : テーブル定義をするファイル。ここにマイグレーションファイルっていう各テーブルにどんなカラムがあるかとかを書いたファイルをおいて、php artisan migrateってやるとデータが空のテーブルを作ってくれる。
    • seeds : migretionで作った空のテーブルにダミーのデータを入れるためのやつ。自分のプロジェクトでは値はロジックを書く場合と、csvを使って一括挿入する場合があります。
  • public
    • コンパイルされたcssファイルとjsファイルとかが置かれてます
  • resources
    • asstes : コンパイルされる前のjsファイルやsassファイルなどがおいてあります。
    • lang : 言語別のバリデーションのメッセージとか書くところですね。自分は日本語しか書いてないですけど。
    • view : MVCのVに当たるビューファイルがおいてあります。
  • routes
    • 名前のままですが、ルーティングの設定をするところですね。
  • storage
    • debugbar,logsはデバッグ?とエラーログとかがたまり続けるみたいです。定期的に消しましょう。
  • tests
    • テストコードがあるファイルですね
  • vendor
    • laravelが用意してくれてるフレームワークのコアなのでいじらないようにしましょう。大抵の場合gitで管理もしません。

またすぐ更新しますので、お待ちください。

疲れたので、続きはまた更新します。
まだまだ世の中にこんな情報たくさんあるわ!って感じのことしか書いてないですが、これからの更新をお待ちください。
自分も作業しながらハマった場所・解決策など更新していきたいと思っているので、いいねとかストックとかお願いします。要望ございましたらなんでもコメントでお願いします。