注: この記事はLaravel6辺りの頃までの話で止まっています。
今はもうLaravel8なので、選ぶべきバージョンの話からはあまり参考にしないほうが良いと思います。
ここ最近Laravelの需要が増えてきた結果、新参の人がどんどんLaravelを選択していってる傾向に感じます。
そこで、今現在Laravelをこれから勉強しようと思ってる人に対して軽く書きたいなと思います。
PHP初心者、一度もフレームワークを使ったことがない人、英語を読むのが辛い人
正直なところ、最初にLaravelを選択するのはあまり良い選択肢では無いでしょう。
理由として、どうしても入門書が少ないことが大きいです。あとは技術的に知っておくべきことが意外とあること。
最低限知ってないとLaravel覚えるのが厳しいこと
- クラスの理解(インスタンス作成/コンストラクタ/継承/メソッド)
- 名前空間の理解
- オートローダーの理解(spl_autoload_register関数かcomposer自体)
- PSR-0, PSR-1, PSR-2(これはルールの理解なので知識としてあればOK)
- PHP7以降の知識(特に5.5以降は。新しい便利な演算子や書き方が増えて、Laravelもそれに合わせる方向に進んでいます)
以上がLaravelを覚えるために、前提として知っておいたほうが良いことです。
他のフレームワークを一度触ってからでも遅くありません。パーフェクトPHPなどの本を一度やってくることを勧めます。(結構古い本ですが、PHPを理解するにはおすすめです。(Composerに関しては書いてないので、PHP: The Right Wayを見ましょう))
選ぶべきバージョンは?
一時期までは5.1が最適とされていましたが、5.5以降のバージョンアップによる改変がそこまで大きくないこともあり最新の6系を触るほうが良いでしょう。(5.5系のチュートリアルは多いので5.5をちょっとやるのも手なのかも)
勉強するときは、フロントエンド周りやヘルパー周り等は6系で分割が進んでいるので最初の開始部分は6系のものを参考にするべきです。
チュートリアル的なもの
5.1のときはドキュメントにチュートリアルが存在したのですが、現在のドキュメントには存在しません。
6はそこまで5.5からアップデートがきつくないので5.5を覚えて6に行っても良いかも。
ちょっと変わったところとして、フロントエンド周りがほぼほぼ外部ライブラリに移動したのと、基本の認証のscaffoldが変わったくらい。JavaScriptとCSSスカフォールド 6 Laravel
英語ならLaracastsに無料のチュートリアル的なものがあります。
https://laracasts.com/series/laravel-6-from-scratch
ドットインストールにはLaravel5の入門動画が存在します。
こちらは5.5を前提として学ぶことができます。(途中から有料ですが)
PHPや他の言語でフレームワーク使っていた人
最新の6を使うと良いでしょう。LTSは良いです。2年は必ずサポートされるので社内のプロジェクトでも安全安心。
Laracastsというサイトがあるので、そちらで英語の教材の動画を見ることが可能です。
Laravel,シリーズ物に絞った結果 - Laracasts
日本語のドキュメントに関してはほとんど6.0の翻訳が完了しているのもあり、できそうな人はすぐ6.0からやりましょう。
もしも、PHPに関する経験が浅い場合は PHP: The Right Way を見ると良いでしょう。また、PSR(PHP Standards Recommendations)に関しても目を通しておいたほうが良いです。
正直、こっち側の人はある程度パワーを持ってる人だと思うので、あまり言うことがないです・・・。
私の場合
ちょっといいねの数がちょいちょい来るのと、今私がLaravelを触ってないこともありアップデート出来てないのを申し訳なく感じるので、私が理解していった方法を軽く書きます。
といっても、私はLaravelの本質を理解するのに1年~2年かかりました。
私の場合、当時FuelPHPの情報をアウトプットしていましたがFuelPHPの更新状況やちょっとうーんとなる点が出てきていたので情報収集をしていたところ、勉強会でたまたまLaravelを知りました。
当時は4系で、IoC Container(現在のサービスコンテナ)やFacade等、正直名前からは想像が難しくよくわからないものが多かったです。(それまでやってたFWはCodeIgniter2系やFuelPHP1系)
根幹がIoC Containerなのは勉強会でなんとなくわかったので、最初はとりあえず見えてるControllerやView、Model周りの知識を軽くつけてからIoC Container、通称DIコンテナの理解をソースから追っかけてました。
そこではすぐには理解は出来なかったし、ただとりあえずこいつを読めるようになればLaravelはある程度わかるはずだという謎の自信があったので、入念にソースをxdebugなどのツールを駆使して追っかけてた記憶があります。
そこから、他の人の作ったライブラリを見つつ、VoiceTextAPIを1ファイルのクラスにしてLaravelから読めるようにライブラリを作りました。(ここではまだ理解があやふやだったものの、ちゃんと読めたことに嬉しかった記憶があります)
その後、ふとしたタイミングでコンストラクタインジェクションとメソッドインジェクションの意味を知り、サービスコンテナの強み、Laravel自体の強みを理解することが出来ました。
最近、DIコンテナの記事を書きました。
最高にわかるDIコンテナ(特にPHPにフォーカスした
以前私がLaravelのサービスコンテナに関する記事を書いたのですが、これも貼っときます。正直これは図式化してないので把握が難しい気がする
最後
ということで、軽く思っていたことを書いた感じになります。
Laravelの需要は今後も伸びそうな予感がします。ただバージョンアップされていくにつれてどんどん難しくなっているのでパワーで途中まで乗り切って、あとは見えた道を見逃さないように歩いていきましょう。