はじめに
PHP関連のプロジェクトに参画している一方、PHPの経験が無いため、本試験を通して知識を増やす目的で受験しました。
上級試験を受ける前の私のレベル感としては、PHP8初級試験合格レベルの知識量です。
初級試験合格後すぐに上級試験の模試を受けてみたのですが、悩む以前にそもそも知らない内容が多くあるという状態でした。
PHP8上級試験の概要
※2024/12/15時点
- 試験時間:2時間、問題数:30問、出題形式:選択式
- 7割以上正解で上級試験合格、5割以上-7割未満の正解で準上級試験合格
(特にスコア1275点以上(正答率85%)でウィザード級合格) - 主教材はhttps://www.php.net/
試験範囲は、「PHPマニュアルのおおよそ一通り」です。
初級試験と違い、読解を中心とした問題が多いのでそれなりに時間がかかります。
- 暗記すれば合格するような試験ではなく、コーディング力を測れるような試験を作りたい
- 重箱の隅をつつくような難易度の上げ方はせずに、長文コード読解を中心とした設問にしたい
(PHP上級試験の試験コンセプトとは。そして就職活動への有効活用についてより)
学習方法
PHP8上級/準上級試験 出題範囲解説~学習のコツ~に記載されている項目を学習しました。
1. 模試
まず上級試験の模試を受けました。理由は以下の通りです。
- 自分の現在の知識量を把握するため
- 問題の雰囲気を知るため
- どのような勉強が効果的か指針を立てるため
模試を受けた後は、(回答があるので)一問ずつ見直して、
- 各問題に関する周辺知識
- なぜそのような正解になるのか言語化
をマークダウンでまとめました。
2. 古庄親方の上級コラム
「コラムを読む→添付されているコードを書いて動かす→(マニュアルにも軽く目を通して)マークダウンでまとめる」という流れです。
知識の整理という目的以外に、既知の内容があったり、逆に記載が少なものもあったため、自分専用のまとめノートを作り後で見返していました。
3. コラムでは扱っていないが試験範囲である項目の学習
- セキュリティ
- 機能
- 基本的な関数
上記についても、「マニュアルを読む→実際にコードを動かす→マークダウンにまとめる」という学習しました。
セキュリティ
マニュアルよりも独習PHPを参考にしました。
試験範囲(PHP8上級/準上級試験)に記載されている脆弱性については、マニュアルよりも独習PHPの方が記載が豊富です。
基本的な関数
試験範囲に記載されている関数について、一通りミニマムコードを書いて挙動を確認しました。(こちらについてもマークダウンにまとめました。)
正直、量が膨大で対策のしようがないですが、出題割合が30%と多いです。模試でも多く出題されますし、また受験してみて確かに出題割合が多い印象でした。
(補足)
私が勉強していた時点で、古庄親方の上級コラムが扱っていた項目は、「インストールと設定」、「言語リファレンス」だけでした。
(※今でも新しいコラムが追記されているため、将来的には試験範囲すべてを網羅するかもしれません。)
本コラムですが、大体以下のような読み方をしてただくことを想定しています。...ここまでで大体「試験対策」としての学習は十分にできると思います。
とコラム#000「はじめに」に書いてありますが、(準上級ではなく)上級試験合格を確実に狙うならば、上記に挙げたコラム以外の学習も必要だと受験して改めて感じました。
4. 模試(2回目)
一通り学習が終わったタイミングで、どれくらい知識が定着したかを把握するためにもう一度模試を受けました。
すっかり忘れていたこと、残りの時間で何を重点的に学習すべきかが把握できとても価値あるものでした。なお、2回目の模試についても1回目と同様にマークダウンでまとめています。
試験を受けて(たしかにウィザード級だった)
ウィザード級とれなかったのがけっこう悔しいです。あと5問正解する必要がありました。
受験してわかりますが、さらに5問正解するのは自分にはかなり厳しかったです。
ウィザード級受かる人は、経験値があって細かいとこまで正確にわかるということ 確かにウィザードです。
現時点で勉強を続けてもウィザード級はとれない気がしました。(たまたま勉強したところがピンポイントで複数問出ればとれるかもしれませんが)あれはPHP経験の浅い人が勉強がんばってとれるものではない気がします。
たくさん関数を使ったことある人、色々なエラーを対処してきたことある人がとれる点数 勉強してとれるのが上級、重箱の隅じゃないけど、長い期間PHPをいじってきた細かいとこまで知識ある人がとれるのがウィザード級だな という印象です。
ちなみに、項目「基本的な関数」の正答率が一番低かったです。その関数を使ったことあるか?の経験が影響してくると思いました。