【PHP8】 PHP8技術者認定上級試験 ベータ試験を受けてきた

昔[PHP7技術者認定初級試験](https://qiita.com/rana_kualu/items/130fab56656c3e450d61)を受けて合格しましたが、先日それに引き続いて[PHP8技術者認定上級試験](https://www.phpexam.jp/2020/12/11/php8/)というものが発表されました。

> 一般社団法人BOSS-CON JAPAN（代表理事：吉政忠志、所在：東京都世田谷区、以下「BOSS-CON JAPAN」）は、BOSS-CON JAPAN内組織であるPHP技術者認定機構がPHP8技術者認定上級試験を2020年秋に実施することを発表しました。
> 本ベータ試験を2021年2月7日に東京で開催します。

このベータ試験を受けてきたのでその感想です。


# 試験内容

・問題数30問
・制限時間135分
・7割正解で上級、5割正解で準上級認定
・受験料金は税抜15000円、学割あり。
・β試験は5000円。合格認定は本試験と同じ。
・ほぼ3択。たまに4択があった。複数選べはなかった。

いきなり[公式](https://www.phpexam.jp/2020/12/11/php8/)の概要と違うやんけ。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/2624bcc0-ae79-1959-5109-7bc9deb448d1.png)

制限時間は事前に訂正がありましたが、問題数の変更は現地でいきなり言われました。


# 受験するまでの流れ

## 事前準備

[Peatixのページ](https://peatix.com/event/1743461/view)から普通に申し込んだ。

本試験はおそらく[オデッセイ](https://cbt.odyssey-com.co.jp/phpexam.html)から申し込むことになると思いますが、正式公開前のため今はまだありません。


## 当日

用意するものは鉛筆と消しゴム。
吊るしのシャーペンを[適当に買った](https://twitter.com/rana_kualu/status/1358268513442385928)ら[千円する高級品](https://www.pilot.co.jp/products/pen/sharp_pen/sharp_pen/s10/)でした。

本試験は当然[CBT](https://cbt.odyssey-com.co.jp/column/cbt-ibt.html)になりますが、β試験はまだCBTに載ってないので昔懐かしの紙をめくって問題を読んでいくタイプの試験です。

受験者は5名。


　　＿人人人＿
　　＞　5名　＜
　　￣Y^Y^Y^￣


これまで受けたベータ試験でも十数人とかだったことはありますが、さすがに1桁人は初めてな気がします。

名簿を見たかんじ、そもそも申込者が10名くらいしかいなかったみたいですが、実際に会場まで来たのはさらにその半分でした。
来なかった人は受験料5k払い損というわけですね。

そもそもこの刺客自体がほとんど話題になっていないうえ、気が付いたとしてもPHP7初級を取っていないと受けにくい上級試験ですからね。
ただ、ベータ試験は何度か受けたことがあるのですが、本試験とちがって手作り感溢れるかんじで面白かったりするので、気が付いたらどんどん受けてみるといいと思います。
受験料も安いことが多いですし、駄目元でも合格すればちゃんと認定されますからね。


## 注意事項

試験開始前に注意事項の解説がありました。

・本試験はCBTなので選択式にせざるをえないが、記述式のように能力を測る試験にしたい。そのために試行錯誤している。
・問題文が間違っていたり不明瞭だったりするかもしれないので、その場合は問題文に×や△をつけて。
・答え合わせと共に問題文の精査も行うので、受験結果が出るのは最大3か月後になるかもしれない。
・問題文の品質があまりに低ければ、β2やβ3試験も行うかもしれない。

こんなかんじで、本試験では考えられないような所も気を付ける必要がありますね。

# 勉強

何もしていません。

そもそもまだ始まってない試験なので、参考書なんて全くありませんしね。

[公式](https://www.phpexam.jp/2020/12/11/php8/)によると出題範囲はこんなかんじです。
どうして3が二つあるのかは知らぬ。

| No. | セクション名 | 出題数 |
|---|---|---|
| 1 | インストールと設定 | 2問 |
| 2 | 言語リファレンス（通常） | 22問 |
| 3 | 言語リファレンス(バージョンアップ関連) | 8問 |
| 3 | セキュリティ | 7問 |
| 4 | 機能 | 2問 |
| 5 | 基本的な関数 | 18問 |
| 6 | その他 | 1問 |

試験範囲を見ると言語リファレンスと関数が多めですが、関数は星の数ほどあるので、こちらを対策するのはあまり現実的とは言えません。
受験した感じからしても、マニュアルの[言語リファレンス](https://www.php.net/manual/ja/langref.php)あたりを眺めておくとよいと思います。


# 試験内容

ほとんどの問題が、3つの選択肢のうち間違っているものをひとつ選べというパターンでした。

実際の問題はもちろん出せないので、以下は概ねこんな感じだったという内容で私が創作した例題です。

## 例題

■ 問題

以下の選択肢より、誤っているものをひとつ選べ。

- (1)

PHPのメソッドは`final`キーワードを付けると、子クラスにおいてそのメソッドを上書きするすることができなくなる。
そのため、

```php
declare(strict_types=1);
error_reporting(-1);

class BaseClass {
   final private function test() {
       echo "BaseClass::test() called\n";
   }
}

class ChildClass extends BaseClass {
   private function test() {
       echo "ChildClass::test() called\n";
   }
}
```

このプログラムを実行すると、結果は

```php
Fatal error: Cannot override final method BaseClass::test()
```

となる。


- (2)(3)

※省略


## 経過

こんなかんじの問題が27問*3択くらい続きました。
上記例はまだ短い方で、もっと長い問題も多々ありました。

プログラムをプリントアウトしているため、やたら問題文の行数が多くなっていました。
具体的には100ページちょっと。
つまり1問あたり3ページ強です。

また、プログラムをプリントアウトしたことのある人はわかると思いますが、紙の上のプログラムは読みにくいです。
特に白黒ですし、背景色などで区別もできませんし、ページをまたいで続いているときはさらに分断されてしまいますからね。

そのせいもあって、135分で30問なんて余裕すぎるだろと思っていたけどそこまででもなく、一周終わった時点で90分くらい経過していました。
まあ、問題文の読みにくさはCBTになったら解決することなので、本試験では読解にそこまで時間はかからないと思いますが。

その後もういちど最初から見直して、2周したところで時間いっぱいとなりました。


# 試験の感想

あんまり上級っぽくない。

上級っていうからもっと要件定義や設計、ジェネラリスト的な視点が入ってきたりするのかと思えばそういうのは一切なく、試験の内容は非常にプログラミングに寄った内容、スペシャリスト向けだとかんじました。
たとえば想定規模から適切な技術を選択するみたいなそういうかんじのは無いです。

スペシャリスト向けならそれはそれでいいのですが、そのわりに試験内容はただの選択式です。
さすがにCCIEラボ試験レベルのものをやれとまでは言いませんが、実際に入力して実装を行う試験もやっぱりほしいですよね。
[既存の仕組み](https://cbt.odyssey-com.co.jp/phpexam.html)を使うでしょうから難しいとは思いますが、[atcoder](https://atcoder.jp/)や[paiza](https://paiza.jp/paiza_game_history)あたりと提携したりできれば嬉しいですね。

難易度としては、初級よりは明らかに難しいですが、"上級"という言葉からイメージされるほどではなかったかなあという印象です。
問題文を読むだけで答えがわかる問題が1/4くらいあったかんじで、この時点で既にほぼ準上級は約束されたようなものです。
こんなこと書いてて落ちたら恥ずかしいですが。

あと個人的には、[新機能とか追って](https://qiita.com/rana_kualu/items/c110cb244c3ee38c6859)いて十分だろと思っていたところに、わりと基本的なところでの知識の抜けが発覚したりしたので、基礎の振り返りという意味ではよい試験だったと思います。


## 問題の品質について

最初の注意事項に従い、×を2問と△を2問に付けました。

×のひとつは、`var_dump()`の出力が正しいかを質問しているのにソースに`var_dump()`が入ってないというものです。

もうひとつは単純なtypo。
`$_SESSION`と書くべきところで`$_COOKIE`と書いていた、みたいな意味のある間違いではなく、`$_SESSHION`と書いていたみたいなミスです。

これらは正しくない選択肢という意味では正解と言えますが、しかしこれが理由で間違いというのは、さすがに本質を外しすぎていると思います。


△のひとつは、異なる問題で全く同じ選択肢が現れるというもので、出題ミスというわけではないけどちょっとどうかなと思ったので記載しました。
他の試験でもわりと時々見かけることがある程度のものなのですが、PHP8上級の場合は問題文が長く、ソースコードまで全く同じになっているので目立っちゃうんですよね。

もうひとつの△は……………………忘れた！


あとクラス名に`class Hoge`とか使ってるのはよくないと思った。

全体的には、酷いというほどでもないけど、まだまだブラッシュアップは必要だな、という印象でした。

β2や本試験があったら、ぜひみんなも受けてみましょう。


# 成績

成績が出るのは数か月先なのでまだわかりません。
結果がわかったらまた記事にでもしましょう。


# その他

試験と言っても堅苦しい感じではなく、試験官もわりとフランクなかんじで、落ち着いて受験できました。

あと同日に[徳丸実務ベータ試験](https://www.phpexam.jp/2020/12/11/tokumarukaiden-2/)なんてのをやってたんですね。
こっち存在に気が付いてなかった。
気付いていたらこちらも受けたのに。