PHPの効率的な学習法: YYPHP60回開催を通じて、先輩PHPerから得られた35の知見

## はじめに

本稿は、PHPを学ぼうとする人ができるだけ要領よくPHPを身につけられるよう、PHPの学び方を紹介するものです。「どうやってPHPを勉強したら効率的に身につけられるか？」、「PHPを勉強するにあたって何を読んだらいいか？」、「みんなどんな勉強のしかたをしているか」といった疑問をお持ちなら、本稿は役に立つものになるはずです。

### YYPHPと本稿執筆の背景

![](https://cdn.suin.io/qiita/2018-12-01-effective-php-learning/1.jpg)

本題に入る前に、本稿執筆の背景を説明しておきます。[YYPHP]というPHPプログラマが毎週集い、雑談するイベントが東京の高田馬場にて開催されています。すでに回数は60回を超え、PHP初心者からPHP歴10年を超えるベテランまでが参加するイベントに成長しました。

YYPHPは普通の勉強会とは異なり、参加者が話したい雑談テーマを持ち寄り、2時間雑談しまくる形態をとっています。雑談テーマは毎回変わるのですが、開会から現在に至るまで何度も「PHPの勉強法」についての相談や質問、意見交換が頻繁に行われてきました。せっかく有益な情報交換がなされてきたので、それをYYPHP参加者以外の方々にも伝えたい。そういう想いから本稿の執筆に至りました。

* YYPHPの参加方法を知りたい方は、[Connpass](https://yyphp.connpass.com/)をご覧ください。
* YYPHPの雰囲気を覗きたい方は、[YouTubeの動画](https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG)をご覧ください。
* YYPHPの過去ログを読みたい方は、[Qiitaに投稿されたイベントレポート](https://qiita.com/tags/yyphp)をご覧ください。

### 本稿の特徴

#### リアルな質問と回答に基づいています

本稿は、[YYPHP]に参加したPHP初級者からの質問と、それに対する回答を元にしています。実際に寄せられた質問には次のようなものがあります。

* PHPをどうやって学んできましたか？
* どうしたらPHPを効率的に身につけらえますか？
* プログラマー1年目に知っておきたかったと後悔していることは何ですか？
* 1年目に何を勉強したらいいですか？
* どうやってPHPの情報をキャッチアップしていますか？
* スキル上げるために自分なりにやっていることは何ですか？
* プログラマーとしての目標設定はどうやったらいいですか？
* Laravelを何で勉強しましたか？

回答はベテランのPHPプログラマからのもあれば、PHP初級者の最近の経験に基づくものもあります。

#### 矛盾するアドバイスを収録しています

本稿は、[YYPHP]の主催者と参加者から寄せられたアドバイスを元にしているため、アドバイス同士で矛盾する内容もあります。**記事全体の整合性をもたせるよりも、様々な選択肢があることを示すことを優先しているため**です。本稿をお読み下さる皆さまにおかれましては、ご自分の学び方に合っていると思うものを取捨選択していただければ幸いです。

#### 誰に向けて書かれているか？

読者のメインターゲットは、**PHPを始めて1年目のプログラマです**。特に「PHPをどうやって勉強していったらいいか？」、「他の人はどんな勉強法をしてきたか？」といった疑問を持っている方は、効率的な勉強方法知りたいと感じている方に向けて書かれています。

**PHPを教える立場の方も参考になるはず**です。YYPHPに寄せられた学習にまつわる質問や相談は、過去60回の中で繰り返し出てきたものばかりだからです。本稿を読むことで、初心者が共通して感じている悩みや疑問点とそれに対するアドバイスを知ることができるかと思います。

#### アドバイスはつまみ食いしてください

本稿には様々なアドバイスが紹介されていますが、全部読むのは大変かと思います。できるだけアドバイスごとに独立した形になるよう気をつけて書いていますので、気になるところだけをつまみ食いして読んで頂いて構いません。

#### 謝辞

有益な質問とノウハウをくださった全YYPHP参加者にお礼申し上げます。

## 学びのガイドライン

YYPHPで出てきたアドバイスをカテゴリ分けすると、具体的な学習法と、学び方の姿勢に関するものの2つがあります。良い学習姿勢が持てれば、長い目で見て強い推進力を持って勉強に望めます。そこで、まずは大切な学び方の心構え、ガイドラインを紹介します。

* [知らないことを放置しない]
* [正しいところにお金を使う]
* [技術に対する「愛」を持つ]
* [PHPとフレームワークは分けて学ぶ]
* [情報収集源に英語を加える]
* [必要になったら、必要なところだけ勉強する]

## 学びの実践

この章では、YYPHPの参加者からあった学習の実践方法をいくつか紹介していきます。

### 手を動かして学ぶ

手を動かして学ぶとは、実際にPHPでコードを書きプログラムを作ることです。この学び方の目的は、読書や受講のような座学と異なり、自身の技を磨くところにあります。では、どのような切り口で取り組んで行けば良いのか見ていきましょう。

* [作りたいものを作る]
* [ゼロからはじめない]
* [シェルアプリケーションを作る]
* [PHPで書き直してみる]
* [自分のサーバを持つ]

### ウェブ上の資料を活用して学ぶ

YYPHPで読んでおいたほうがいいという意見が出てきたウェブで読める読み物を紹介しておきます。

* [php.net(PHP公式マニュアル)]
* [PHP: The Right Way]
* [slideshareにアップされているスライド資料]
* [キュレーションメディア]

### 技術書を読んで学ぶ

この章では、技術書の読み方や買い方、おすすめの技術書などを紹介していきます。

* [なぜ技術書を読むべきか？なぜ技術書(だけ)を読むべきでないか？]
* [どうやって技術書を読んでいくべきか？]
* [今すぐ役立たない技術書にも価値があるということ]
* [気に入った技術書を買おう]
* [自宅に広めのデスクを用意しよう]
* [PHP入門者におすすめの最初の一冊]
* [PHP初心者におすすめの技術書]
* [脱PHP初心者におすすめの技術書]
* [PHPのセキュリティを理解するための技術書]
* [きれいなコードの書き方が学べる技術書]

### 受講して学ぶ

最近PHPを始めたYYPHP参加者の中には、オンライン講座を受講したことがある人が少なくありません。ここではYYPHPの参加者が受講してみたオンライン講座とその感想を紹介します。

* [PHPのコースがあるオンライン講座とその感想]
* [最近は動画で学ぶのが普通になってきている？]
* [1.5倍速再生で時短する]

### 人との関わりの中で学ぶ

PHPは独学でも習得可能なプログラミング言語だと思いますが、それでも誰かと学んだほうが、より効率的に吸収できるはずです。この章では、PHPを効率的に勉強できる人的な環境づくりのアドバイスをいくつか紹介します。

* [ベテランの先輩を作る]
* [東京に来る]
* [イベントに参加する]

### ツールを駆使して学ぶ

PHPを学ぶに当たって、身の回りの道具を上手に使いこなすのも効率的な学習につながります。この章では、ツールに関することを中心に紹介していきます。

* [Google検索を上手に使おう]
* [Google翻訳を使おう]
* [PhpStormを使おう]
* [手元にスニペットをさくっと実行できる環境を用意しておこう]

## おわりに

本稿では、PHPを学ぼうとする人ができるだけ要領よくPHPを身につけられるよう、PHPの学び方を紹介してきました。PHPをどう勉強したらいいか悩んでいる方に少しでも参考になってくれれば幸いです。

本稿は様々なアドバイスがあり、全て実践するのはなかなか難しいかもしれません。また、自分に合うやりかた、合わないやり方もあったかと思います。参考にしつつも、自分にぴったりの学び方を見つけていってください。

最後に[YYPHP]もよろしくお願いします^^

* YYPHPの参加方法を知りたい方は、[Connpass](https://yyphp.connpass.com/)をご覧ください。
* YYPHPの雰囲気を覗きたい方は、[YouTubeの動画](https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG)をご覧ください。
* YYPHPの過去ログを読みたい方は、[Qiitaに投稿されたイベントレポート](https://qiita.com/tags/yyphp)をご覧ください。

本稿は[YYPHP Advent Calendar 2018](https://qiita.com/advent-calendar/2018/yyphp)の1日目でした。明日以降も面白そうな投稿が待ち構えてますので、ぜひ「購読」ボタンクリックをお願いします :sparkles::pray_tone1::sparkles: 

**そして、なんと！ 明日12月2日のアドベントカレンダーは、本稿でも紹介した[『PHP中級者を目指す 〜言語を使いこなすための本〜』]の著者@konosumiさんの投稿です。**

## 付録

* [Laravelは何で学んだらいいか？] … PHPからは逸れますが、Laravelの学び方ついてもよく話題になるので、触れておきます。
* [YYPHPからの推薦図書] … 本稿で紹介した技術書一覧

[PHPの効率的な学習法]: /suin/items/edb067f2e5df713e966d

[学びのガイドライン]: /suin/items/edb067f2e5df713e966d#学びのガイドライン
[知らないことを放置しない]: /suin/items/ef5b0ba6392f01c54466
[正しいところにお金を使う]: /suin/items/802aed54852480c53f17
[技術に対する「愛」を持つ]: /suin/items/425fdb14f054722011bd
[PHPとフレームワークは分けて学ぶ]: /suin/items/fb85f760343b836b09b9
[情報収集源に英語を加える]: /suin/items/b713631fe5ea4dc54b44
[必要になったら、必要なところだけ勉強する]: /suin/items/d15411c8d7a48219b3f5

[学びの実践]: /suin/items/edb067f2e5df713e966d#学びの実践
[手を動かして学ぶ]: /suin/items/edb067f2e5df713e966d#手を動かして学ぶ
[作りたいものを作る]: /suin/items/5d232e6602244c6809cd
[ゼロからはじめない]: /suin/items/706d0a63b30cb9d2a8cf
[シェルアプリケーションを作る]: /suin/items/04b3a55a035f9c556e41
[PHPで書き直してみる]: /suin/items/556118d28f1e1cf11729
[自分のサーバを持つ]: /suin/items/97537e52f66bd6fb2a1e

[ウェブ上の資料を活用して学ぶ]: /suin/items/edb067f2e5df713e966d#ウェブ上の資料を活用して学ぶ
[php.net(PHP公式マニュアル)]: /suin/items/79a6851f83ac5dfdca94
[PHP: The Right Way]: /suin/items/af37e052daeda403a9aa
[slideshareにアップされているスライド資料]: /suin/items/0e4a4abdfb5d6969ff02
[キュレーションメディア]: /suin/items/501511b376bafd0b2b80

[技術書を読んで学ぶ]: /suin/items/edb067f2e5df713e966d#技術書を読んで学ぶ
[なぜ技術書を読むべきか？なぜ技術書(だけ)を読むべきでないか？]: /suin/items/dffb3ffdbc5db24b83f5
[どうやって技術書を読んでいくべきか？]: /suin/items/2d2e4152148458e47bf2
[今すぐ役立たない技術書にも価値があるということ]: /suin/items/0f86045e4f93d1ee36e0
[気に入った技術書を買おう]: /suin/items/aaf5ff81c7a200abb263
[自宅に広めのデスクを用意しよう]: /suin/items/df2756c320bf0905a9eb
[PHP入門者におすすめの最初の一冊]: /suin/items/dd52d61c3de1f9c858f8
[PHP初心者におすすめの技術書]: /suin/items/3ca30a2885005374bce8
[脱PHP初心者におすすめの技術書]: /suin/items/44a40a28e699fcf5d5cb
[PHPのセキュリティを理解するための技術書]: /suin/items/bc4a4c9899f3db836a3e
[きれいなコードの書き方が学べる技術書]: /suin/items/eb8955534b203f1c9ed7

[受講して学ぶ]: /suin/items/edb067f2e5df713e966d#受講して学ぶ
[PHPのコースがあるオンライン講座とその感想]: /suin/items/d14a21d9ba59a07daa6f
[最近は動画で学ぶのが普通になってきている？]: /suin/items/bf0f5754f946b2ecf07a
[1.5倍速再生で時短する]: /suin/items/7589d1bc4f0a29b9994b

[人との関わりの中で学ぶ]: /suin/items/edb067f2e5df713e966d#人との関わりの中で学ぶ
[ベテランの先輩を作る]: /suin/items/36805b7d9076eca1d186
[東京に来る]: /suin/items/b4f7157fdb281e8b82af
[イベントに参加する]: /suin/items/3b0ff7389d5c1634a724

[ツールを駆使して学ぶ]: /suin/items/edb067f2e5df713e966d#ツールを駆使して学ぶ
[Google検索を上手に使おう]: /suin/items/c0a6ed6f5d4deadb3c91
[Google翻訳を使おう]: /suin/items/83d0a425ebbf0634d535
[PhpStormを使おう]: /suin/items/7a11bb236b5e9eb21528
[手元にスニペットをさくっと実行できる環境を用意しておこう]: /suin/items/46291c4d5e8248c66bb4

[おわりに]: /suin/items/edb067f2e5df713e966d#おわりに

[付録]: /suin/items/edb067f2e5df713e966d#付録
[Laravelは何で学んだらいいか？]: /suin/items/71da2bfe25ee1a5f5161
[YYPHPからの推薦図書]: /suin/items/b69f2399b43acaf902f3

[『絶対に挫折させないアプリ開発　はじめてのLaravel』]: https://plumsa.booth.pm/items/1048008
[『パーフェクトPHP』]: https://amzn.to/2PHt4Pt
[『PHP中級者を目指す 〜言語を使いこなすための本〜』]: https://amzn.to/2zhoddu
[『独習PHP 第3版』]: https://amzn.to/2QXEYkW
[『プログラミングPHP 第3版』]: https://amzn.to/2QXI5cq
[『初めてのPHP』]: https://amzn.to/2QXIOua
[『いちばんやさしいPHPの教本 人気講師が教える実践Webプログラミング 』]: https://amzn.to/2zuiZvb
[『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践』]: https://amzn.to/2ScNKvz
[『現場で役立つシステム設計の原則』]: https://amzn.to/2SeHIuC
[『Clean Code アジャイルソフトウェア達人の技』]: https://amzn.to/2Rj4l0z
[『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』]: https://amzn.to/2Rnbq0s
[『CODE COMPLETE 第2版 上 完全なプログラミングを目指して』]: https://amzn.to/2zrt63I
[『CODE COMPLETE 第2版 下 完全なプログラミングを目指して』]: https://amzn.to/2DYmJsN
[『PHPフレームワーク Laravel入門』]: https://amzn.to/2zx9Ge2
[『Laravelエキスパート養成読本』]: https://amzn.to/2Q1Lzyt

[YYPHP]: https://yyphp.connpass.com

<!--本稿を書くのに割いた時間: 18時間48分-->