Laravelのvendorディレクトリとは、ライブラリが入っている場所です。
vendor内のファイルは直接編集せず、オーバーライドしましょう。つまり必要部分をプロジェクトのappディレクトリにもってきて編集します。
ただ、このあたりのことって「なるほど」とは思いつつも、一体どういうことか、いまいち分かりにくくないですか?
Laravelを学びたてのときのわたしは、プログラミング経験も少なかったため、vendorディレクトリの意味がよく理解できませんでした。
ただ、ここ、意外と大事なポイントです!!
ぜひ理解してほしいと思い、絵とたとえ話をいれつつ、vendorディレクトリのことを分かりやすく解説してみました。読んでください^^
Laravelのvendorとは?しちゃいけないことは?絵で分かりやすく解説しました
まず前提として、vendorディレクトリに入ったライブラリは、あなたに必要な参考書だとします。
普段はこの参考書を家で使っているとします。
ですが、図書館で勉強するときは、重いので持ち歩きたくありません。そこで、図書館にある同じ参考書を借りて勉強することにしました。
図書館の本は、当然、書き込みをしたりしてはいけませんよね。
そこで図書館で参考書を使う時は、自分用のメモファイルに必要なことを書いておくことにします。
こうしておけば、図書館から出てもいつでも参照できます。
こんな感じの状況、思い浮かべていただけましたか?
参考書は家でも図書館でも、また学校でも参照できますが、自分用のメモを書いておくことはできませんよね。
これと同じように、vendorフォルダの中のライブラリファイルは、編集できません。
もちろん図書館の本と違ってローカル上でライブラリファイルを編集しても怒られませんが^^;
ただ、プロジェクトを本番環境に反映するときには、vendorディレクトリは持っていけないのです。なのでせっかくローカル上で編集しても、無駄になってしまうわけです。
本番環境でvendor内のライブラリをインストールする方法 composer install
では本番環境ではvendor内のライブラリをどうやってもってくるか?
次に、この部分を説明します。
Laravelプロジェクトの中にはcomposer.jsonとcomposer.lockファイルがあります。
composer.json には、必要とするライブラリの種類と、必要なバージョンの条件が書いてあります。
composer.lockには、ライブラリをローカル環境でインストールしたときに、実際にインストールされたライブラリの種類とそれぞれのバージョンが書いています。
- composer.json:必要とするライブラリの種類と、必要なバージョンの条件が記載
- composer.lock:ライブラリをローカル環境でインストールしたときに、実際にインストールされたライブラリの種類とそれぞれのバージョンが記載
本番環境では、このcomposer.lockを参考に、ライブラリの大元から必要なファイルを取ってきます。
このとき、composer installコマンドを使います。
1 |
composer install |
composer.lockファイルがあることで、ローカル環境と、ほかの開発者の環境、本番環境で、同じバージョンをインストールすることができます。
ここ、大事なポイントです!
vendor内のライブラリに変更を加えるには、オーバーライドを行う
なるほど。本番環境でのライブラリのインストール方法は分かりました。
ですが、vendor内のライブラリに自分で変更を加えたい時はどうしたらよいのか?
疑問が残りますよね。
こういった時には、vendorの下の書き換えたいファイルを、プロジェクトのappディレクトリの下にコピーして、そこで変更します。
こうすることで、編集を加えた部分が優先されるようになります。
この作業を、オーバライドと言ったりします。
オーバーライドとは、優先するとか、上書き変更するといった意味です。
先ほどの絵の説明でいうと、自分用のメモで書いた情報が、オーバーライドした情報となります。こちらが、元々の参考書よりも優先される感じですね。
オーバーライドの方法
オーバーライドの方法ですが、何をどのようにするかによって異なります。
たとえばログイン機能を搭載すると、ユーザー情報を登録後に自動でメールが送信されますが、このメールの内容を書き変えたいときは、次のようにします。
- Notification(通知)を新規で作成・編集
- Userモデルファイルに、オーバーライドするための設定をいれる。
まとめ&さいごに
今回はvendorディレクトリについて解説しました。
まとめると、次のとおりです。
- vendorディレクトリの中にはライブラリが入っている
- ローカル上でvendorディレクトリの中を編集しても、本番環境に反映されない
- そのため、オーバーライドを行う。大雑把にいうと、vendorの中の書きかえたい部分をappディレクトリの下にもってきて編集する。
- 本番環境では composer installコマンドを行って、ライブラリをインストールする
今回ご紹介したような知識は、意外と知る機会が少ないかと思います。ただそうなると、Laravelを覚えるのは難しく感じるかもしれません。
わたしはphp学習後、すぐLaravelを学び始めましたが、今回のvendorのことなど、色々とわからないことだらけで苦労しました…
そこで、以前のわたしのように「実務経験は少ないけれど、Laravelを学びたい!」という方のために、「初心者のためのLaravelの教科書」という学習サイトを作り、運営しています。
Laravelの使い方・基本知識を学びつつ、実際のフォーラムサイトを開発していく内容です。
ご興味があればクリックして、ご案内ページを見てみてくださいね。
基礎編は無料です♪
コメント
分かりやすすぎました。
ありがとうございます!♂️
(コメントの♂️は顔文字です。すいません!)
コメントありがとうございます^^
嬉しいです。