2年目PHPerが、1年目PHPerはこれやっとけと思うこと

inspired by PHPを勉強するならこれだけは言いたい!PHPのオススメ勉強法

私は、職業プログラマーとしては今年で2年目のペーペーです。それでも上記記事はちょっとなあ、という部分があるので、流れをなぞりつつ、自分なりの考えを書いてみます。

ちなみに、私が参考にしたPHP学習法記事は、WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法です。

まず、「これやっとけ」メニューを先回りして紹介しておきます(これらを勧める理由は後述)。

PHPは簡単か?

「PHPは簡単」というとき、それはおおよそ、以下のいずれかの意味でしょう。

  1. PHPには、C言語のポインタのような難所はなく、Java言語に比べて覚えることが少ない。したがって、これらのメジャーなプログラミング言語より、習得が簡単である。
  2. PHPを使ったWebアプリケーションのサーバサイドプログラミングは、他の言語によるサーバサイドプログラミングよりも簡単である。
  3. PHPは、C/Perl/Java等の文法を取り入れているため、これらを習得している者にとって学びやすい(簡単である)。

私自身、去年の春~夏にかけては、「PHPは簡単だって聞いたけど、覚えることがたくさんあって大変だ!」と思ってました。でも、その後、PerlやRubyをかじっているうちに、PHPでWebアプリを作るのは、他の言語で作るのに比べれば非常に簡単である、と感じるようになりました。PHPには、Webアプリを制作するための便利な機能が用意されているからです。

もっとも、Webアプリケーションの制作じたいは、必ずしも簡単ではありません。プログラミングに加えて、サーバの知識(Linux/Apache等)も必要ですし、多くの場合はデータベース(MySQL等)の知識も必要でしょう。

PHPは、「Webアプリケーションにおけるサーバサイドのプログラミング言語としては、最も学習コストが低い」けれども、「PHPによるプログラミング」や「PHPによるWebアプリケーション制作」を、プログラミング初心者が学ぶ際の学習コストは低くはない、というのが私の考えです。

独学は可能か?

私は、職業プログラマーになる以前から、趣味でJavaScriptをちょこちょこ書いてました。初歩的なプログラミングの習得は、書籍を参考に独学すれば十分に可能です。

ただし、質問できる相手がいない状態での独学は、特に初心者のうちは効率が悪いです。初心者は、本当に初歩的な部分でつまづきます。(私も、初めてPHPを書いた際は、PHPを動かすのにサーバが必要だと知らず、PHPファイルをブラウザーで開いて、「動かないぞ???」とかやってました)

そこでオススメなのが、プログラミングを学べる動画サイト・ドットインストールです。開発環境のセットアップなどの、初心者がつまづきがちな手順は、ドットインストールを参考にすればかなりの割合をクリアできるでしょう。(PHP初心者なら、ローカル開発環境の構築は必見。その後、PHP入門へ)

制御構文は覚えないとダメ?

PHPの制御構文の主なものとして、if/switch(条件分岐)と、for/foreach/while/do-while(繰り返し)があります。一つの処理について複数の構文があるのは、それぞれに異なった使いどころがあるからです。

ifとwhileさえあれば、条件分岐と繰り返しは表現できます。しかし、switchを使ったほうが速い処理を書けることがあります。foreachがあれば配列の処理が楽ちんだし、速いです。forを使えば無限ループのミスが減ります。do-whileも、「最低1回、場合によっては複数回」実行したい処理を書く際には便利です。

普通に開発してれば、制御構文はほとんど全て使います。それぞれを使い分けたほうが、楽だからです。暗記なんてしなくても、自然と覚えます。覚えられないなら、コードを読み書きする量が不足しています。

ifとswitchを相互に書き換えてみたり、foreachで書いた処理をforやwhileで書いたりと、色々試してみると、理解が深まります。

関数は覚えないとダメ?

PHPの関数は、組み込みだけでも1000個以上。拡張も含めれば2000個以上の関数があります。これら全ての名前と使い方を覚えるのは、現実的ではありません(とはいえ、よく使う関数の名前と使い方は、正確に覚えておいたほうが、調べる手間を省けます)。

PHPを書いていると、「関数について調べる」という作業が必要になることがあります。調べるのに必要となる、前提知識があります。それは、「どういう関数が用意されているか」という知識と、PHPのリファレンス「PHPマニュアル」を読むための知識です。

(PHPの情報源としては、PHPマニュアル以外にも色々あります。が、情報の正確さ・充実度・新鮮さなどの点から、PHPマニュアルは別格です)

「どういう関数が用意されているか」という知識を身に付けるのに一番いいのは、PHPマニュアルの関数リファレンスを眺めることです。特に、配列操作関数には、便利な関数があります。

PHPマニュアルの読み方について、関数リファレンスは、

返り値 = 関数名(引数, [オプション引数], …)

という書き方になっています(「返り値」や「引数」といった用語に関しては、入門書を読んで下さい)。intやarrayは、返り値や引数ののことです。また、mixedやvoidといった型もよく見ます。これらはPHPマニュアルにおいて説明のために使用されている疑似的な型で、PHP自体にはmixed型やvoid型というものはありません。

PHPマニュアルを読んで理解できるようになれば、PHP初心者は卒業です。

PHPの開発環境

私は、WindowsのXampp → WindowsのVirtualBoxでUbuntu → MacのVirtualBoxでUbuntu/CentOS という変遷を辿り、現在は「Macのローカル開発環境(homebrew) + VMWare FusionでUbuntu/CentOS + さくらVPS(CentOS)」という構成です。

レンタルサーバーは、アプリの公開等の必要性が生じたら借りる、というのが良いと思います。レンタルサーバーのセットアップの際にはセキュリティ等の設定もしておいた方が良いですが、そういった手順の解説としては、ドットインストールの『さくらVPSの基礎』がオススメです。

プログラムを書くツールは、Windowsのメモ帳のような、テキストエディタを使います。ただし、Windowsのメモ帳は、UTF-8形式の保存に対応していないのでダメです。Windowsならサクラエディタ、MacならCotEditorが、初心者向けの無料エディタとしてはオススメです。

また、IDE(統合開発環境)と呼ばれる、高機能エディタ+αなツールもあります(関数名を途中まで入力すると候補を表示したり、文法エラーを指摘したりします)。無料のものとしてはEclipse/NetBeansなどがあります。使い方を覚えるのに時間はかかりますが、使いこなせるようになると効率的に開発できるようになります。

私は現在、PhpStormという有料のIDEを使っています。汎用IDEであるEclipse等と違い、PhpStormはPHP開発に特化して作られています。従って、初期設定の手間はほぼゼロ。IDE初心者にもオススメです。

PHP・MySQLのオススメ書籍

まず言っておきたいのは「PHP・MySQLの本で古いものはNG」ということ。特にMySQLは、2010年のバージョン5.5以降、文字エンコーディングの設定方法が変わりました。2009年以前のMySQL本を使うと、文字エンコーディングの設定でハマる危険性があります。

PHPに関しても、PHP4(~2004)とPHP5(2004~)ではかなり違いますし、2009年に出たPHP5.3で、いくつかの重要な機能が追加されています。2008年以前の本は避け、2009年以降の本(PHP5.3に対応している本)を選ぶべきです。

PHPの入門レベルの書籍ではイチオシはありません。入門段階に関しては、ドットインストールのPHP入門でいいかも。

独習PHP 第2版
独習PHP 第2版
PHPの入門書ですが、プログラミング初心者には厳しいと思います。オブジェクト指向の基本をゼロから解説し、名前空間等のPHP5.3の機能まで網羅しているPHP入門書は、この本だけ。

パーフェクトPHP (PERFECT SERIES 3)
パーフェクトPHP
対象読者は、「PHPの基本を学習済みのPHPer」「PHP以外のプログラミング言語に習熟しているプログラマー」。本書は、PHPの言語仕様のつまづきやすいポイントや、オブジェクト指向構文、フレームワークの設計、セキュリティ等、プロのPHPプログラマーとして知るべき内容がふんだんに盛り込まれています。

『パーフェクトPHP』の内容に加え、フレームワーク・デザインパターン・テストなど、本書に載っていない重要事項を補っていけば、PHP中級者の仲間入り、と私は考えています。(私自身は、まだ中級者を名乗れる実力ではありません。。。)

データベースに関して、初心者はまずSQLの書き方を学びましょう。SQLは、データベースを操作するために使われる言語です。SQL言語を採用しているデータベースの中で、Webアプリに使われることが多いのがMySQLです。
SQL ゼロからはじめるデータベース操作 (CD-ROM付) (プログラミング学習シリーズ)
SQL ゼロからはじめるデータベース操作
SQLの入門書では一番のオススメ。初心者におもねったごまかしがなく、それでいて分かりやすい。分量は他のSQL本より少ないですが、内容は充実しています。

PHP学習者が最初に作るべきアプリ

はじめは、フォームを使った診断アプリがオススメです(例:あなたのお値段鑑定します)。フォームの入力内容をGETで送信し、$_GETで受け取り、受け取った値に応じて表示を変える、という仕組みです。仕組みは簡単ですが、コンテンツには工夫の余地があり、楽しいです。

PHP+MySQLの連携をひと通り、という意味では、ブログアプリが良いでしょう(ブログの仕様はこの記事の「ブログをつくってみよう」などを参考に)。

セッションを利用したログイン機能に関しては、ドットインストールのユーザー管理をするWebサービスを作ろうもオススメです。

勉強会に出よう

IT系の勉強会は盛んに開催されています。中でも、PHPの勉強会は、初心者歓迎の雰囲気が強いです。勉強会を通して、新しい技術やツールを知ることは多々ありますし、他の会社の様子を知ることで、自分の所属している会社の状況を客観的に把握することもできます。さらに、仕事に結びつくこともあります(私は4月から新しい会社に入るのですが、入社のきっかけはPHPの勉強会でした)。

アウトプットをしよう

一番いいのは、自分でWebアプリケーションを作ることです。本格的なものでなくても構いません。既存のアプリを真似したり、簡単な機能のものを作るだけでも、得るものはあります。書いたコードは、可能であればGitHub等にアップして、他の人にも見てもらえるようにしましょう。他人の目を意識すれば、気持ちが引き締まってコードの品質が上がります。

また、ブログを書くのもオススメです。高度な技術情報でなくても、自分が知ったこととか、自分が詰まったこととかを書き留めておけばOK。

アウトプットを出していくことは、技術者としてのレベルアップには確実に役立ちます。また、転職の際に役立つこともあります。

おわりに

PHPがんばりましょう!

コメントをどうぞ

コメントを残す