1ランク上のPHP技術者を目指す人のための教材と、勉強のポイント

2014年6月11日(水)
原田 裕介(はらだゆうすけ)

世界中で構築されたWEBサイトが2億5000万を超えるといわれているPHP。その秘密は言語習得の手軽さやCMSパッケージの発達により、初心者にも気軽に高機能なシステムが扱えることにあります。
WordPressやMovableTypeとの連携、OpenPNEなどはもはや語る必要もないくらいに有名になりました。

ちょっとしたCGIやネットショップはもちろん。ネットベンチャーやソーシャルゲームでも手軽に使われ、開発者の数もプログラミング言語の中で非常に高い位置を占めています。

そんなPHPですが、「PHPエンジニアのスキルが低い」「PHPはだめだ」といわれることが多々あります。なぜでしょうか。

気軽に利用できるが故にスキルレベルが低いエンジニアが多いのも事実ですし、さらに言うと前述のパッケージ等があるためにエンジニアでない人でも触ることができるからです。また、言語としての特性もかなり自由で、型の指定は必要ありませんし、オブジェクト指向のサポートも少し前までは余り強くなかった面もあります。

そういった事情もあり、スキルが低い人でも使える言語として広まっていった結果、「PHPエンジニアのスキルが低い」「PHPはだめだ」といわれる現在につながっているのでしょう。

ところが、冷静にPHPの利用状況を見てみるとYahoo! JAPANやGREEなどの大手サイトでも使われており、このことからも、大規模でパフォーマンスが必要な場合や信頼性が必要な場合でも十分耐えられる言語だと分かります。

本コラムでは、その「初心者でも扱いやすいPHP」をさらに上級者として扱うエンジニアを認定する『PHP技術者認定上級試験』に向けて、少しでも多くのPHPエンジニアに上級の道へ進んでもらえればと思い、解説を行っていきます。

試験の区分

まず、PHP技術者認定試験は「初級試験」「上級試験」「ウィザード」の3つに区分されます。
初級試験はその名の通り、合格率8割を超える一番難易度の低い試験ですが、それでも基本をしっかり押さえていないと合格できません。

本コラムで対象とする上級試験はPHP技術者試験の中では真ん中に位置する資格で、これがかなりの難関です。合格率は10%を下回っており、PHPに対して幅広い知識が必要になります。難関試験だけあって合格は大変ですが、受かればそれなりの技術力の証明となります。
筆者は名刺に上級試験合格者である旨を記載していますが、技術コミュニティでの名刺交換の際に「お!」と思ってもらえることはかなり増えました。

上級試験は言語仕様の結構深いことに触れたり、実際の開発では使ったことのない機能なども出てくると思います。特にリフレクションなど、フレームワークを作っている人でもないと触る機会は少ない機能もあります。

普段PHPを使っているから大丈夫!
とは思わず、この機会に細かいところもしっかり勉強していきましょう。

さらに、上級試験に合格すると最上級のウィザードに挑戦するチャンスもあります。こちらは論文審査式となり、論文を既存のPHP技術者認定試験合格者やPHPコミュニティの方による投票で認定者が決まります。現在のところ認定者は出ていないため、非常に難易度が高いことが分かります。

認定者がまだいないということは、今から頑張ればウィザード認定一番乗りも夢ではありません。上級試験にしっかり勉強して望み、ウィザード受験へのチャンスも合格と同時につかみとってください。

試験の受け方

上級試験はCBT方式という、試験会場でコンピューターを使って解答するタイプで、全国にあるプロメトリックの試験会場で毎日実施しています。試験会場も10日程度前まで予約できることが多いため、いつでも試験を受けられます。

筆者の場合もそうでしたが、いつでも受けられるため「完璧にできるようになってから試験の予約をしよう」と思ったまま勉強しない、なんてことがよくあるため、まずは日程を決めて予約してしまうことをオススメします。
予約をしたらその日に合わせて、しっかり勉強していきましょう。

出題範囲と教材

PHP技術者認定試験の公式サイトに出題範囲がありますので見てみましょう。

上記の出題範囲の中で70点以上の得点を得ると上級試験合格者として認定されます。さらに90点以上だとHonor Expertとして認定されますが、こちらも現在のところ認定者がおりません。

主な教材となるものは以下の3つです。

プログラミングPHP 第3版

上級試験のメインの教材。まず勉強すべきはこちらです。

「プログラミングPHP 第3版」からの出題が多く、出題範囲の70%を占めています。70点以上で合格となる上級試験では、極端な話、ここが全部できれば合格できるほど配点が高いため、まずはここをしっかり押さえます。

つい先日に第3版が発行されたので、これから購入する方は第3版の方を購入しましょう。第2版に比べ、古い内容が書き直されています。

PHP.netの公式マニュアル

「プログラミングPHP 第3版」をある程度押さえた上で、追加の範囲となる部分を勉強することをオススメします。

追加の範囲は配点こそ多くないものの、以下のように項目が非常に沢山あります。

  • SPL(Standard PHP Library)
  • 日付クラス
  • PEAR(管理系のコマンドなど)
  • 名前空間
  • クロージャ
  • リフレクション
  • Late Static Binding
  • JSON
  • PDOとネイティブモジュールの違い
  • mysqlndドライバについて
  • 正規表現(pcre, posix, mbstring)
  • APD/Xdebug
  • memcache
  • デバッグの手法
  • Xdebugの機能・使い方
  • パフォーマンスチューニング
  • memcache/memcached
  • フィルター
  • PHPの拡張

現実問題として、「プログラミングPHP 第3版」の範囲だけで70点をノーミスで得点することは無理があるので、こちらもある程度の勉強が必要になります。

ここの部分は、PHP.netの公式マニュアル( http://www.php.net/manual/ja/ )を活用して勉強していきましょう。PHPエンジニアなら必ず一度はお世話になっているページかと思いますが、PHPの公式マニュアルとして内容が非常に充実しています。

徹底攻略 PHP5 技術者認定 [上級] 試験問題集 [PJ0-200]対応

実際の上級試験と同じ問題形式で例題が載っています。
348問という非常に多くの問題があるため解きごたえがあり、実際の試験に類似する問題も多いため、こちらがそれなりに解けるようであれば合格は近いです。

ITトレメ PHP技術者認定・上級問題集

実際の上級試験に即した形で60問の問題が用意されています。
2時間の制限時間を設けて、試験前日の確認問題として利用すると良いでしょう。

PHPのバージョン

現在のPHPの最新安定バージョンは5.5であり、間もなく5.6がリリースされそうなところまできています。
現在のPHP技術者認定試験は5.3ベースとなっているため、5.4以降の新機能については試験のためにわざわざ勉強する必要はありません。

とはいえ、もちろん優れたPHP技術者として最新の機能を追いかけていた方がいいのは当然なので、「知らなくていい」というわけではありません。試験の前でも後でも良いので、勉強して把握しておきましょう。

また、PHP5.6に向けた試験の制作も進んでいますので、そのうち最新版にアップデートされるでしょう。

「プログラミングPHP 第3版」はPHP5.2に合わせて書かれたものを、PHP5.4に合わせて部分的に書き直したりしています。若干のバージョン違いがあるため、足りない部分等はうまく勉強する必要があります。

勉強法のアドバイス

「広く浅く」より「狭く深い」カテゴリを増やしていく

問題集を見ると分かりやすいのですが、問題の形式として以下の例題のように出題されます。

例題)
PHPのオブジェクト指向について以下の設問の中から適切でないものを全てあげよ。

  1. PHPは多重継承をサポートしない。
  2. PHPにはコンストラクタとデスクトラクタは存在しない。
  3. PHPはインターフェースをサポートしない。

3だけどちらか分からない場合、2と3が正解だとして、2だけ選んでも点は一切もらえません。つまり、基本的に設問に出てくる各項目が分かっていないと配点にはならないのです。

そして設問はデータベースならデータベース、XMLならXMLと、同じカテゴリ内から出題されるので、そのカテゴリ全体の理解度を上げていく必要があります。

分からないカテゴリがあってもいいので、完璧なカテゴリを順番に増やしていく方が望ましいのです。

コストパフォーマンスの高い分野から押さえていく

コストパフォーマンスといってもお金の話ではなく、範囲に対しての配点の効率が良い分野のことです。

PHP技術者認定試験の公式サイトにもある通り、分野ごとに配点は違います。

章番号 カテゴリ 配点率
9章 グラフィック 0.04
10章 PDF 0.04
11章 XML 0.05

この3つは割と内容が多くない上に、配点もそれなりにありますので、まずは押さえておくことをオススメします。

章番号 カテゴリ 配点率
7章 ウェブに関するテクニック 0.12
8章 データベース 0.08
12章 セキュリティ 0.12
13章 アプリケーションに関するテクニック 0.08

こちらの四つは範囲こそ広いですが、配点が高く合計で40点にもなりますので、避けては通れません。
試験の話だけではなく、実際のプログラミングでPHPを利用する際にも重要な分野なので、この機会にしっかり押さえておきましょう。

前項の『「広く浅く」より「狭く深い」カテゴリを増やしていく』と合わせて、コストパフォーマンスの高い分野から集中して、順々に理解度を上げていくと良いでしょう。

コードを実際に動かしてみる

プログラミングの勉強なので当然といえば当然なのですが、コードは動かすことが必要です。
目の前にデジタル化されたコードがあったとしても、コピー&ペーストしたりせず、きちんと自分で写経(お手本を見ながら自分で手打ちすること)して動かしてみるのが、理解への近道です。
特にPHPは自由な言語といわれているだけあって、他の言語と同じような気持ちで「こう動く」と想像していたりすると、足下を掬われることになりかねません。

特にユーザーソートのサンプルソースやライブラリを使うコードは、一度書いてみないと混乱します。書いて動かして理解した後に少しオリジナルな変更を加えて遊んでいくと、言語仕様が見えてくるでしょう。

分量もそれほど多くないので「プログラミングPHP 第3版」に出てくるコードくらいは一度書いて動かしてみることをオススメします。

ということで、今回はPHP技術者認定上級試験と受験のコツにお話ししてきました。

次回からは、前半で「プログラミングPHP 第3版」をベースとした基本部分の解説を行い、後半で追加内容の解説をしていきます。追加内容は、SPLやクロージャなどPHP5.3で実装されたものが多い予定です。

上級試験は難易度が高いですが、きっちり勉強すればきっと取得できると思いますので、頑張っていきましょう。

<編集部より> 1ページ目の文章に一部誤りがあったため修正しました。(2014.06.11)

著者
原田 裕介(はらだゆうすけ)
株式会社ユーザーローカル
東京都在住。携帯のホームページ作成サービスでHTMLのコーディングを始めて、PHPerとなる。
株式会社ハッシュシステム代表取締役やtetolの立ち上げ、株式会社イードでニュースメディアの開発やエンジニア採用を経て、現在はアクセス解析ツールの開発を行いながら、個人でもWEBサービスの開発を行っている。PHP技術者認定上級試験の認定者でもあり、受賞歴はmixi scrap challenge優勝など。

 

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています