「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」の3年後

自分にとって「恩師」ともいえるような記事がDesignmapさんのWebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法です。

自分は2012年4月から、Web制作会社に入って、マークアップエンジニア・PHPエンジニアとして働き始めました。当時のスキルは以下のような状態でした。

  • HTML/CSS:ブログとかやってたので、大体書ける(HTML/XHTML&スタイルシートレッスンブックという本を読了した程度)
  • JavaScript:ちょっと遊んだ程度。
  • PHP:ほぼ未経験。FizzBuzzくらいなら…。
  • Web全般の知識:一般人としては詳しい部類だが、専門家レベルではない

プログラムに関しては、制御構造が分かっててFizzBuzzくらいは書けるけど、オブジェクト指向とかは全然わかってない、といった状態でした。

会社に入ってからしばらくは、よくわかるPHPの教科書(私が読んだのは旧版です)で勉強させてもらって、その後仕事でPHPを書き始めました。

この頃に出会ったのが、WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法でした。私のブログの2012年6月頃の記事を見返すと、新版Perl言語プログラミングレッスン入門編を読んでたりしますが、これは前述の記事の影響です。

その後3年くらい経ったので、振り返りも兼ねて、自分なりに「PHPの勉強法」について書いてみようと思います。

現状について

システム開発会社でプログラマーをやっています(前述したWeb制作会社は1年で辞めて、その後今の会社に入社しました)。業務経験は2012年からなので、今年で4年目。業務で使用経験のあるプログラミング言語は以下の通りです。

  • PHP: メイン言語
  • JavaScript: よく書くけど得意ではない…
  • C#: Windowsデスクトップアプリ構築のために最近使い始めた
  • Perl: Perlしか使えないサーバでテキスト処理を行いたいことがあったので
  • ActionScript(Flash): Web制作会社時代に

また、個人的に勉強していて、多少の読み書きはできる言語としては、C, C++, Ruby, Python, Javaといったところです。

最も得意かつ手に馴染んでいる言語はPHPです。また、分野的には、最も得意なのはWebのサーバサイドで、リレーショナルデータベースのテーブル設計やサーバの構築・オペレーションもある程度できます。

PHP1年目の勉強の経歴について

『新版Perl言語プログラミングレッスン入門編』

前述したように、『よくわかるPHPの教科書』でPHPの勉強を始めましたが、当時はあまりプログラムがわかっていなかったです。個人的に買って勉強した本としては、まず、『新版Perl言語プログラミングレッスン入門編』です。

この本は、Perlの本なので、PHPとは直接関係はありません。また、Perlには豊富な省略記法のような、初心者には優しくない機能も多いです。

しかし、『新版Perl言語プログラミングレッスン入門編』は、Perlの機能のうち、初心者の学習の妨げになるような部分を意識的に排除しており、「Perlのコードとしてはちょっと格好悪いけど、初心者にはわかりやすい」内容になっていました。特によかったのは正規表現の解説で、本書の解説ほどわかりやすい解説をほかの本で見たことがありません。

HTTPの入門について

PHPをやっていても、最初のうちはHTTPについて気にすることはあまりないと思います。しかし、フォームのGETとPOSTって何? といった疑問を解決するためには、HTTPの知識が必要です。また、昨今はスマホアプリのサーバサイド構築の仕事も増えていますが、そうした案件ではWeb APIというものを作る必要があり、Web APIの作成にはHTTPの理解が必須です。

HTTPについては、Webを支える技術を読みました。REST APIの設計など、初心者には難しい部分もありますが、HTTPやURIといった基本的な概念を学ぶだけでも本書を読む価値はあります。

Unixについて

Web開発をするなら、Unixについて学ぶことは必須に近いです。Windows Serverの案件もあるにはありますが、Unix(Linux)を使った案件の方が圧倒的に多いです。

また、昨今では、Mac(OS X)が、Web開発の開発環境として、標準に近い地位を築いています。Macでは簡単に使える開発ツールが、Windowsではひと手間必要、という事例は数多くあります。そして、Macは最も手軽なUnix環境でもあります。

開発環境はMac(OS X)、サーバサイドはLinux、というのが、Web開発の現場で最も多いパターンでしょう。

私の場合、当初はWindows PCにLinuxの仮想マシンを入れて勉強していましたが、1年目の夏にMacBookを買って、それから一気にUnixの理解が進んだという記憶があります。

ドットインストールのUNIXコマンド入門を足掛かりに、コマンドラインの操作を覚えていきました。最近は入門 Unix for OS X 第5版という本があるので、これで覚えるのも良いと思います。

また、サーバの設定ファイルを編集する際にはvi(vim)というエディタを使うことが多いです。このエディタは非常に癖が強いですが、基本的な操作だけでもできるようになっておきましょう。私はドットインストールのvim入門を取っ掛かりにしました。

Linuxについては、まずはVirtualBoxを使ったローカル開発環境の作り方を学んでおくとよいでしょう。これも、ドットインストールのローカル開発環境の構築が参考になりました。

PHP

『よくわかるPHPの教科書』の後しばらくしてから、Head First PHP & MySQLを読みました。この本で、基本的な概念が身についたと思います。

また、オブジェクト指向の理解のため、独習PHP 第2版も読みました。「お勉強」的で、読んでいて楽しい類の本ではありませんが、PHPの言語仕様を一通り解説していて、とてもためになりました。

また、パーフェクトPHPも読みました。ただ、1年目の頃に読めたのはPHPの言語仕様の部分だけで、フレームワークの自作のところは全然わかりませんでした。

SQL

会社で貸与された基礎からのMySQLを読みました。SQLを初歩から丁寧に解説した書籍です。

振り返ってみて

「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」は、プロのPHPエンジニアになるためのエッセンスを上手くまとめた記事であったと思います。私自身、大いに参考になりました。ただ、PHPのコミュニティはユーザ層が幅広いです。「Wordpressのテンプレートをカスタマイズしたい」といったあたりがボリュームゾーンかもしれず、そういった人には不要な部分もある点は否めません。

新しいPHPの入門記事(ノンプログラマーにおすすめしたいPHPの独学方法)から「Webデザイナーや」という部分が取り除かれたのも、「Webデザイナーにここまで必要ない」という意見が多かったからかもしれません。

最新の「ノンプログラマーにおすすめしたいPHPの独学方法」について

以前の記事と比べると、いくつか変更点があるようです。

個人的に最も注目したのが、プログラミングを覚えるための入門書が、Perlの本ではなくJavaの本になっていること。

『Perl言語プログラミングレッスン入門編』は名著ですが、Perlという言語の昨今の地位を鑑みると、手放しでおすすめはできません。

一方、Javaは相変わらず有力な言語ですし、Javaのオブジェクト指向はPHPのオブジェクト指向とよく似ています。また、PHPにはオブジェクト指向の高度な概念(デザインパターン等)について学べる書籍がほとんどありませんが、Javaには高度な概念まで学べる書籍が多数あります。そういった点を鑑みても、PHPの初心者でもJavaに触れておくことは決して損にはなりません(むしろ、そのままJavaエンジニアになった方がいいかも…)。

その他、最新動向に応じた適切なアップデートがされていると思います。

落ち穂拾い

「ノンプログラマーにおすすめしたいPHPの独学方法」に書かれていないことについて、簡単に補足します。

PHPの将来性

PHPは、メジャーになって以来ずっと、「ダメ言語」の烙印を押されてきました。PHPのダメな部分は言語の設計にあるため、簡単に直すことはできません。実際、他の言語を使ってからPHPに戻ると、ちょっとイケてないなあ、と思う部分は多々あります。一方で、PHPがWebのサーバサイドで最も幅広く使われている言語の1つであることも確かです。

なぜ、PHPが最も人気のある言語の1つなのか。その答えは、PHPで構築された膨大な資産にあります。WordpressをはじめとしたCMS、Wikipediaも使ってるMediaWiki等、数多くのWebアプリケーションがPHPで構築されています。これらの資産がなぜPHPで構築されたのかは、それぞれに事情があるのでしょうが、結果として、PHPを使えば、高機能なWebサイトが驚くほど簡単に構築できます。

また、複雑なWebアプリケーションを構築するためのWebアプリケーションフレームワークと呼ばれるソフトウェアも多数公開されています。

これら膨大な資産がある限り、PHPの人気が衰えることはないでしょう。

PHPエンジニアのキャリアパス

私は、PHPエンジニアは二極化していて、この傾向は今後も続くと思っています。1つの極は、複雑なシステムの開発を行うプログラマーで、私自身はこちらに属します。もう一方の極が、WordpressベースのWebサイトの構築を行うような、「PHPを使えるWeb制作者」です。

PHPプログラマーの場合、PHPだけでなく、様々な技術に習熟する必要があります。一方、「PHPを使えるWeb制作者」は、PHPの知識はWordpress等を扱うのに必要最低限のレベルでも十分です。

どちらにもいえることとしては、PHPだけに注力するのではなく、さまざまな分野を幅広く学んだほうがよい、ということです。

セキュリティ

昨今ではWebサイトに対する攻撃は幅広く行われており、Webアプリケーションの開発者に求められるセキュリティの水準は高まっています。一般公開するWebアプリケーションでは、少なくともクロスサイトスクリプティング(XSS)とクロスサイトリクエストフォージェリ(CSRF)、データベースを使用しているサイトならSQLインジェクション等の対策も必須です。

セキュリティ対策としては、IPAの安全なウェブサイトの作り方が第一級の資料になります。

フレームワーク

PHPについて勉強し始めてしばらくすると、気になり始めるのが「フレームワーク」というものです。Webアプリケーションフレームワークは、Webアプリケーションに共通した課題を解決するためのソフトウェアのひな形のようなものです。複雑なシステム開発では、フレームワークをもとにしてシステムを開発するのが一般的です。

PHPフレームワークのでは一般に「MVC(Model-View-Controller)」という構造でアプリケーションを構築するようになっているため、いずれかのMVCフレームワークの使い方を覚えれば、他のMVCフレームワークも2週間程度で基本的な機能が使えるようになります。

しかし、はじめてのフレームワークの学習コストはかなり高いです。仕事で使う場合でも、1か月で身につけばいいほうです。独学なら、数か月単位の学習期間が必要になっても不思議ではありません。学習には、チュートリアルを読むのもいいですが、並行して自分で簡単なアプリケーション(TODOアプリ等)を作ってみると理解が深まります。

また、初心者に適したフレームワークというのはあまりないように思います。SymfonyやZendはフレームワーク自体が複雑なのでやや学習コストが高いですが、それ以外のフレームワーク(Laravel, CakePHP, FuelPHP等)ではそれほどの差は無いと思います。逆に、機能の少ないマイクロフレームワーク(Slim, Silex等)もありますが、この場合は自分でアプリケーションの設計を行う必要があるので、初心者はいわゆる「フルスタックフレームワーク」で、Webアプリケーションの一般的な構築パターンを学んだほうがいいです。

個人的に初心者におすすめなのはFuelPHPですが、その理由ははじめてのフレームワークとしてのFuelPHP 改訂版という良書が存在するためです。

ディスカッションに参加

1件のコメント

コメントをどうぞ

コメントを残す