2018年　PHP/MySQLの最も効率的な学習法　新人研修でひとまず読ませておきたい教材

#独学や新人研修に使える教材
##PHPの学習に最適な要素
　コーダーにPHPもやってもらいたい場合、新人にPHPを指導する場合、独学でWEBプログラミングを学ぶ場合などを想定して最適な学習法を考えました。

　新人に覚えてもらいたいことを網羅すると、

* 基本的な構文
* 具体的な制作イメージ
* データベースの概念、簡単な使い方
* PHPからデータベースの操作(PDO)
* セキュリティ関係
* 制作ツール

　以上のようになります。
これを満たしている教材がなかなかないのがもどかしいところです。

##基礎入門教材

　入門教材で最適なのは
[PHPしっかり入門教室 使える力が身につく、仕組みからわかる。](https://www.amazon.co.jp/PHP%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-%E4%BD%BF%E3%81%88%E3%82%8B%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8F%E3%80%81%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%8B%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B%E3%80%82-%E5%B0%8F%E5%8E%9F-%E9%9A%86%E7%BE%A9/dp/4798153370)

![51UEt4pIViL._AC_US240_QL65_.jpg](https://qiita-image-store.s3.amazonaws.com/0/240587/cd74688b-87d2-c174-0925-f2fa6b14885a.jpeg)


###概要
　これまではひとまず「いきなりはじめるPHP~ワクワク・ドキドキの入門教室~ 」でも読ませておけばつまずくこともないだろう、ということで導入してきたのですが、インストールの解説も古いし、何より中身が簡単すぎる。とても実務で使うイメージまでは持たせることのできない教材でした。


　こちらの教材の良いところは、各章で文法解説から入り、必ず何かしらの機能づくりをしているところ。なるほどその手があったかというような構成になっています。3章では変数導入後に別のページに送ったPOSTデータを受信する課題、6章では配列導入後に、2次元配列をデータベースからの取得データと見立ててHTML上で表示する課題、など基礎の定着確認が実践と織り交ぜられてとにかく分かりやすく実務的。まずはこれを読んでやっておいてね、で無理なく先に進めます。また、データベース関連が弱い入門書が多い中、掲示板やログイン認証の作りがしっかりと押さえられているのも教材として良書と言えるポイント化と思います。


###Gitなどのツールに触れている
WEBアプリケーションを制作するうえでPHPのみに知識では成り立ちません。この教材のありがたいのがGitなどでのバージョン管理に関してふれていることや、WordpressのPHP部分の具体的な扱い方についても触れている点です。現役のエンジニアが書いているのがよく分かります。


###セキュリティ関係が適切なタイミングで扱われている
　入門書でセキュリティに関する項目をきっちり扱っているのも助かります。書籍ももう少し厚めのレベルアップした教材を使えばある程度は網羅しているのですが、新人に渡しておいてもスラ～と読み飛ばしていて実務で使えていないことが多いです。こちらの教材ではその都度必要な場面でセキュリティの高め方やその意義について解説されています。


###MVCに基づいたコード
　何気にすごいのがHTMLタグをエコーしないなどが徹底されているところです。読み進めていくと途中から関数ファイルを使った簡易的MVC構成を指導しているのですが、この導入がありがたいです。ライターが書いた教材では平気でHTMLタグを出力していたり、HTML内で必要のないプログラムを実行していたり言語の役割分けも無く書かれていることがありますが、押さえるところがきっちりと押さえられています。

　以上の観点から新人の学習用には、翔泳社の「PHPしっかり入門教室 使える力が身につく、仕組みからわかる。」が最適かと思います。



##応用入門教材

　ここからが選択が難しくなります。私もまだ正しい流れを模索中です。オブジェクト指向をきっちり導入して実際の実務に生かせるようになるための教材という観点で探しました。結論でいうと実現できている教材は「無い」です。特にオブジェクト指向はJavaなどをやっていればデフォルトで必要になりますが、PHPではなくても簡易的なサイトを作れるのでなかなかその存在意義が伝わらない。PHPの応用面を鍛えてフレームワークを使いこなせるようにするためにはフレームワークの学習との組み合わせがよいのではないかと思います。

###オブジェクト指向の基礎を学ぶ教材

[独習PHP](https://www.amazon.co.jp/%E7%8B%AC%E7%BF%92PHP-%E7%AC%AC3%E7%89%88-%E5%B1%B1%E7%94%B0%E7%A5%A5%E5%AF%9B-ebook/dp/B01FH3KVNU/ref=sr_1_2?s=books&ie=UTF8&qid=1520407743&sr=1-2&keywords=%E7%8B%AC%E7%BF%92PHP&dpID=51mFlyK3IUL&preST=_SX342_QL70_&dpSrc=srch)

![51mFlyK3IUL._AC_US240_QL65_.jpg](https://qiita-image-store.s3.amazonaws.com/0/240587/1067b826-5667-f7f2-8218-cc7eefeba4f4.jpeg)


　「独習PHP」はオブジェクト指向を学ぶ最良教材です。ただ、具体例が少ないのが問題です。WEBアプリケーション上でどうやってオブジェクトを使っていくのかイメージがわかないといわれることが多く、実際の制作に入ってようやく理解したというエンジニアが多いように思います。

　もしくは次の教材でもよいかと思います。

[パーフェクトPHP](https://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88PHP-PERFECT-3-%E5%B0%8F%E5%B7%9D-%E9%9B%84%E5%A4%A7/dp/4774144371/ref=sr_1_1?s=books&ie=UTF8&qid=1520407906&sr=1-1&keywords=%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88PHP&dpID=51HF4xSFQNL&preST=_SX218_BO1,204,203,200_QL40_&dpSrc=srch)

![hsids.jpg](https://qiita-image-store.s3.amazonaws.com/0/240587/44b55df3-6575-d9bb-9721-c8f4b14170cb.jpeg)



　こちらは複数人によって書かれているためか難易度がまちまち。セキュリティ項目はしっかり押さえていますが、フレームワークの解説はいささか難易度が高すぎます。よく質問をうけることが多かったのと、フレームワークでも学習して制作のイメージが持てるようになると分かることなので新人の段階で独学で苦労してもらう必要な無いかもしれません。というより、フレームワークの質問が負担に感じました。その難易度が押さえられて説明が丁寧なら「独習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%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798052582/ref=sr_1_1?s=books&ie=UTF8&qid=1520408493&sr=1-1&keywords=Laravel)

![hdishis.jpg](https://qiita-image-store.s3.amazonaws.com/0/240587/7df899cd-6007-22b6-32b1-4b91c94aacfa.jpeg)

 フレームワークははやりがあるので学習コストも考えて導入する必要がありますが、今から学習させるならLaravelでよいのではないでしょうか。ただし、最新のプログラミング知識満載のため難易度がかなりあがります。この「Laravel入門」は導入が丁寧なため理解がしやすいようです。オブジェクト指向と合わせてフレームワークは一緒に学習するのがおすすめです。

##学習の仕方

　プログラミング知識は日がたつほどどんどん深くなっていってます。手を動かす練習もほどほどにベースになる知識を読み込んで覚えてくる新人のほうがよく育つと思います。1冊目の「PHPしっかり入門教室 使える力が身につく、仕組みからわかる。」はじっくりとタイピングしながら学習、オブジェクト指向以降はある程度タイピングは省略して考えることを重視、できれば他にも何冊か読んでおくくらいのつもりでいたほうがよいでしょう。