【Laravel】初心者から実務をこなしていくまでの6ヶ月にやったこと


CODEBASE2期生、新卒1年目の [@avocadoneko](https://twitter.com/avocadoneko) です。
仕事では主に Laravel / Vue.js を使って、開発をしています。

## この記事について


#### どんな人に読んでほしいか
- プログラミングを学び始めたばかりの人
- これから PHP, Laravel を学びたいと思っている人
- Laravel で開発している会社に入社する予定の人

#### 書いてあること
- 初心者が PHP と Laravel をどうやって勉強してきたか
- 仕事で学んだ Laravel のこと

#### 書いてないこと
- PHP、Laravel 以外のこと（Git とか Web のこととか他の言語とか）

#### 注意
- いくつか紹介している記事や動画では、Laravel のバージョンが古いことがあります。

## やったこと

### まずはPHPを触ってみる
#### ■ [Progate](https://prog-8.com)

<img width="400" alt="[logo_1.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/d2199617-6d15-e969-b658-de30da1aaa97.jpeg">



ゲーム感覚でプログラミングを学べる教材。
有料版は月額980円。
超初心者が PHP はどんな言語なのか知るのの導入に役立つと思う。実際、プログラミングが何もわからない状態でもサクサクと進めることができた。
但し、Progate だけやっていても仕方がないので、基礎を学んだ後はやらなくてもいいと思う。

- [PHP( Ⅰ ~ Ⅳ )](https://prog-8.com/languages/php)

#### ■ [ドットインストール](https://dotinstall.com)

<img width="300" alt="[logo_2.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/df9e2b55-1ca0-0a72-334a-b02ed2115519.png">




月額1,080円（無料でも多くの動画を視聴できる）で手軽に学べる動画教材。
ローカル環境構築の方法も動画になっているので、動画を見るだけではなく、自分のPCで再現して学ぶのがおすすめ。
手を動かして学ぶのが好きな人には向いていると思う。
Laravel の動画に入る前に、PHPで小さいアプリケーションを作る動画をやるのが良さそう。

以下、良いなと思った動画↓


- [PHP入門](https://dotinstall.com/lessons/basic_php_v2)
- [PHPデータベース入門](https://dotinstall.com/lessons/basic_php_db)
- [PHPでビンゴシートを作ろう](https://dotinstall.com/lessons/bingo_php_v2)
- [PHPでログイン機能を実装しよう](https://dotinstall.com/lessons/sns_php_v3#!faq)
- [Laravel 5.5入門](https://dotinstall.com/lessons/basic_laravel_v2)

### 書籍 
#### ■ [詳細! PHP 7+MySQL 入門ノート](https://www.amazon.co.jp/詳細-PHP-7-MySQL-入門ノート/dp/4800711304)

<img width="200" alt="book_1.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/9edce832-d954-95e4-ffd1-e3c348884c73.jpeg">

この本は最初から読んでいって、知らなかったことだけ自分のPCで実行してみると良い。
また、 一番読んでほしいところは Chapter7 の「オブジェクト指向プログラミング」の章。
クラスの定義方法、継承、コンストラクタなど知っておくべき基本的なことについてについて、実際のコードと共に説明されている。

#### ■ [PHPフレームワーク Laravel入門](https://www.amazon.co.jp/PHPフレームワーク-Laravel入門-掌田津耶乃/dp/4798052582)

<img width="200" alt="[book_2.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/f1c25a18-a7c7-881f-a702-b0b577243a30.jpeg">



Laravel 入門書として一番おすすめの本がこちら。
レビューにもある通り、かなり回りくどく書かれているからこそ、入門書として人気が高い。
この本の使い方は、とりあえず写経。
書いてあることは全部必要な知識だから、隅から隅まで読むべき。
写経は GitHub でリポジトリを作って動く単位でコミットしていき、コミットメッセージに気づいたことを書くといいと思う。
写経のやり方については下記の記事にわかりやすく書いてある。
[技術書の写経を始めたのでやり方を書いておく](https://kousy.hatenablog.com/entry/2018/10/15/155505)

完全に理解しようとして行き詰まるより、とにかく読み切ることを目標にして、70~80%くらいの理解で最後のページまで写経するといいかもしれない。
また、丸々一冊読み切った本は、後に振り返るのにも便利。


### 記事
#### ■ [【PHP超入門】クラス～例外処理～PDOの基礎](https://qiita.com/7968/items/6f089fec8dde676abb5b)
`$this` とか スコープ定義演算子とか、とにかく PHP の基礎が全くわかってなかった頃にお世話になった記事。
初心者がつまずきやすいところがピンポイントで書かれていて、何度も助けられた。


### チュートリアル
#### ■ [Laravel 5.5 入門として「基本のタスクリスト」を作成する](https://beiznotes.org/making-task-list-with-laravel55-1/)
検索したら大量に出てくるチュートリアルの中でも、これは特に分かりやすかったなという印象。コントローラを使わずに `web.php` に処理を書いてタスクリストを実装しているので、使用するファイルが少なく、混乱せずにできた。
（実際開発するときはありえないけど、初心者には向いているチュートリアルだと思う）
さらなるステップとして、ここに機能を追加していくのもいい。私の場合は編集機能を追加した。

#### ■ [Laravelで飲食店検索LINE Botを作ろう！](https://www.techpit.jp/p/laravel-line-bot)
このチュートリアルは私はやったことがないが、もっと前からあったらやってみたかった。
有料だが、Docker 開発環境の準備から丁寧に説明しているチュートリアルは少ない上、LINEbot を作るまでできたらそれなりに達成感がありそう。


###  Laravelでオリジナルのアプリを作る

DB 設計から機能、UI まで、一つのアプリを作ってみるのがおすすめ。
先に完成物の機能を具体的に決めてから実装したほうが良い。
自分が作りたいものを作るのが一番良い。
私の場合は下記のような機能を実装した。

- 新規登録 / ログイン機能
- イベントの作成 / 編集 / 削除
- イベントごとに写真を追加 / 削除

テーブル数は3-4つくらいが丁度よかった。
余裕があったら、API叩いて、画面遷移なしでイベントや写真を作成・削除できるようにしてもいいかも。
自分でアプリを作ることで、自分がわからない部分が明確になるし、完成させたら自信になる。





## 業務に入ってから

仕事では独学と違って、0から何かを作ることは少ない。
初めて会社のプロダクトコードをみたときは、ファイルとコード量が多すぎてびっくりした。
業務ではチームで開発するし、人の入れ替わりがあるので保守性を意識する必要があるため、「動く」だけでなく「読める」コードを書く意識をしなければいけない。


### 書籍

#### ■ [PHPフレームワーク Laravel実践開発](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%AE%9F%E8%B7%B5%E9%96%8B%E7%99%BA-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798059072/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=Laravel&qid=1575870539&s=books&sr=1-1)

<img width="200" alt="book_4.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/b714f82a-67cd-a321-ee08-27fa1f919c69.jpeg">

前に紹介した書籍「PHPフレームワーク Laravel入門」（以下、青本）の中級者向けバージョン。
青本を読み終わった人向け。
同じ著者なので、青本が読みやすくて気に入ったら、こちらも読んでみると良い。
レビューで内容が薄いとあるが、その分気軽に読めるので全体を流し読みするのには最適。足りない部分はググって補うといいかと思う。
また、これもレビューにある通り、誤字脱字は多いのでたまに自分のPCで動かしてみても動かないことがあるので注意。

#### ■ [PHPフレームワーク Laravel Webアプリケーション開発](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel-Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B35-5-LTS%E5%AF%BE%E5%BF%9C/dp/4802611846/ref=asc_df_4802611846/?tag=jpgo-22&linkCode=df0&hvadid=295706574430&hvpos=1o2&hvnetw=g&hvrand=16983119984194650319&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1028853&hvtargid=pla-523780196376&psc=1&th=1&psc=1)

<img width="200" alt="book_3.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316060/1e62e3b1-21fb-f2d2-bd0b-beadfcb70870.jpeg">

この本は、仕事でコードを書く上でのユースケースがたくさん書かれている。
どうやって実装したらいいか迷ってるときに、この本に手を伸ばすと、解決することがある。
全部読むというより、辞書代わりに手元に置いておくと良い。


### 記事
#### ■ [Laravelで始める依存性の注入（DI）](https://qiita.com/harunbu/items/079ea728d2c9cf4f44d5)

DIってなんだ？？となったときに読んで役に立った記事


#### ■ [Laravelで実践クリーンアーキテクチャ](https://qiita.com/nrslib/items/aa49d10dd2bcb3110f22)
Laravel をクリーンアーキテクチャに当てはめるなら、どういう感じになるのか？そもそもクリーンアーキテクチャって？？？となったときに読んで役立った記事。

### わからなくなったら

#### ■ [Laravel 日本語公式ドキュメント](https://readouble.com/laravel/6.x/ja/)
実装中にわからないことがあってググった時、まずは公式ドキュメントを読むのがいい。
私は最初、書いてある日本語が難しくて読めなかったから、ある程度 Laravel に慣れてきたらでもいいと思う。
バージョンの違いや正確性を考慮すると、公式ドキュメントを読むのがいちばん（当たり前のことだけど）。

#### ■ [Laravel API](https://laravel.com/api/6.x/)
ドキュメントに書いてないメソッドなどもここで検索すれば出てくる。





---

この記事は [CODEBASE okinawa Advent Calendar 2019](https://qiita.com/advent-calendar/2019/codebase-okinawa) 13日目の記事です。