Python 3 エンジニア認定実践試験に合格してPython試験をコンプリートしたので色々まとめてみた

:::note info
この記事は[Udemy Advent Calendar 2022](https://qiita.com/advent-calendar/2022/udemy) 25日目の記事です。
:::

筆者は3年前Python 3 エンジニア認定データ分析試験(受験当時はベータ試験)に合格した記念に投稿した以下の記事は御陰様で多くの方に読んでいただくことができ、同時に沢山の`いいね`を頂戴しました。

https://qiita.com/y-vectorfield/items/36fc6d773f01ae33cd2c

あれから3年の月日が経ち、新たに一般社団法人Pythonエンジニア育成推進協会主催の「<font color="RED">実践試験</font>」が開始されました。受験してみたところ、:cherry_blossom:無事合格:cherry_blossom:しました。これでPython試験は4つ全てに合格し、無事コンプリートしました。よって、今回も記憶が薄れないうちに実際に取り組んだ試験対策等の情報をdumpしておこうと思います。 :dancer: :dancer_tone1: :dancer_tone2: :dancer_tone3: :dancer_tone4: :dancer_tone5: :dancers: 

https://cloud.watch.impress.co.jp/docs/news/1447729.html

# 受験の動機
実は筆者はベータ試験の時に一度受験しています。ベータ試験を受験した時期は実は資格試験の受験についてモチベーションがかなり低下していたことも有り、十分な試験対策をしないまま試験に臨んでしまい。お釈迦様となってしまいました。しかもベータ試験最終日に受験したためリベンジは出来ませんでした。その後、モチベーションが回復してきた所に今回の試験開始をたまたま知ったため、捲土重来を期すことにしました。これまで基礎試験、データ分析試験、PythonZen & PEP 8 検定試験と取得したため、コンプリートしておきたいという狙いも有ります。

# 試験の概要
具体的な試験対策の説明に入る前に試験の概要について記載します。現状Python 3 エンジニア認定試験には以下の4つの試験区分が有ります。このうち前半2つは上述の過去記事で扱っています。本記事では後半の2つを扱います。

* 基礎試験
* データ分析試験
* Python Zen & PeP 8 検定試験
* 実践試験

本記事で扱う試験の概要は以下の通りです。

## Python Zen & PeP 8 検定試験
* 概要：PythonZen（The Zen of Python）とPEP 8に関する知識を問う試験
* 受験料金：無料
* 問題数：20問（すべて選択問題）
* 合格ライン：正答率70％

## 実践試験
* 概要：Pythonを実践的に使っていく上で重要な仕様やライブラリの使い方を問う試験
* 受験料金：1万2千円（外税）　学割6千円（外税）
* 問題数：40問（すべて選択問題）
* 合格ライン：正答率70％

### 参考
* 公式情報

https://www.pythonic-exam.com/exam

* 試験申し込みは以下から

https://cbt.odyssey-com.co.jp/pythonic-exam.html

# 試験対策
以下では基礎試験は合格しているレベルの知識が既に有る方が実践試験を受験することを前提に記載します。

## 対策書籍(試験範囲)
技術評論社から発行されている「Python実践レシピ」が試験対策書籍です。この書籍から試験問題は出題されます。500ページを超える大著なので1通り読むだけでも骨の折れる代物です。。。:scream: :scream_cat:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/d4d42d5b-a91f-b476-5ed3-20c498863eb5.png)

https://gihyo.jp/book/2022/978-4-297-12576-9

#### 出題内容
書籍からは以下の表に示す割合で各章の内容が出題されます。問題数は全40問です。なお、出題されない7、12、15、19章については割愛しています。出題内容の特徴として **Python本体の機能からのみの出題** という特徴が有ります。書籍内では世の中的によく使われているサードパーティー製のライブラリについても解説されていますが、試験範囲では全て除外されています。 <font color=RED>よってあまり使われなくなっていると書籍で解説されていてもPython本体の機能なら試験対策として勉強する必要が有り、ある程度割り切った勉強が必要です。</font>データ分析試験ではNumPyやPandasといったサードパーティー製のライブラリを試験範囲として扱っています。Pythonを実践的に使う知識を問うならサードパーティー製のライブラリを試験範囲に入れても良いのではないかと思いました。そして、仮にPython本体の機能であってもあまり利用されていない機能は試験範囲から除外するなどして今後よりPythonを実践的に使う知識を問う試験になれば良いなと思います。筆者は以下の範囲を一通りコードを実行して試しました。<font color=RED>試験では実行結果の内容を問われる出題が有るため、1度手を動かして試しておくことは重要です。</font>

|章|タイトル|問題数|問題割合|備考|
|---|---|---|---|---|
|1章|Pythonの環境|1|2.5%||
|2章|コーディング規約|2|5.0%||
|3章|Pythonの言語仕様|7|17.5%||
|4章|Pythonのクラス|3|7.5%||
|5章|タイプヒント|2|5.0%|5.2 mypyは除く|
|6章|テキストの処理|4|10.0%||
|8章|日付と時刻の処理|2|5.0%|8.4 dateutilは除く|
|9章|データ型とアルゴリズム|5|12.5%|9.3 bisectは除く<br>9.5 pprintは除く|
|10章|汎用OS・ランタイムサービス|2|5.0%||
|11章|ファイルとディレクトリへのアクセス|2|5.0%||
|13章|特定のデータフォーマットを扱う|2|5.0%|13.3 configparserは除く<br>13.4 PyYAMLは除く<br>13.5 openpyxlは除く<br>13.6 Pillowは除く|
|14章|インターネット上のデータを扱う|2|5.0%|14.3 Requestsは除く<br>14.5 emaiは除く|
|16章|テスト|3|7.5%|16.4 pytestは除く<br>16.5 pydocは除く|
|17章|デバッグ|2|5.0%|17.3 traceback は除く|
|18章|暗号関連|1|2.5%|18.3 cryptography は除く|

試験範囲ではないライブラリにも有用な物が多数有ります。試験後に再読して活用したいと思っています。

## Python Zen & PeP 8 検定試験
問題数は多く有りませんが、PeP 8についての出題も有ります。実際の開発でも役立つのでPeP 8を勉強するのはとても良いことだと思います。PeP 8についてはPython Zen & PeP 8 検定試験が無料で受験出来ます。以下のURLにアクセスしてメールアドレスを登録すると試験問題のリンクが登録したメールアドレス宛に送られてきます。不合格の場合何度でも挑戦できますが、(筆者が試した当時は)問題は固定の様です。しかし、実践試験の対策にもなるので基礎試験と合わせて事前に受験しておくと良いと思います。

https://pythonzen-pep8-exam.jp/

合格すると、下図の様な合格証がメールで送付されて来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/c8e34309-3a8f-2662-3ac2-57aa9f5b2a55.png)

## 模擬試験
実際に実践試験に合格した方が作成された模擬試験アプリです。問題のレベルは初級、中級、上級と3段階になっており、上級の問題は本番試験のレベルと同じぐらいかやや簡単ぐらいのレベル感でした。(あくまで筆者の個人的な感触)しかし解説も付いており、なおかつ対策書籍のページ番号まで記載されており、大変素晴らしい模擬試験アプリです。解答後履歴から正誤情報なども参照できるため、自分の苦手な分野、強化すべき分野が一目瞭然です。

https://python-basic.com/

* 今後追加されると良いなと思った機能
    * 模擬試験モード(75分の時間制限有り)
    * ランダム出題機能(初級、中級、上級全てからランダムに出題)

# 実際に受験してみて
具体的な問題の内容は口外出来ないことになっているので、感想程度にはなりますが。。。

:smile: 今後の開発に活かせるPythonの知識を習得できた。(実際に活用した)
:smile: 今後使ってみたいと思うライブラリを知ることが出来た。(特にスクレイピング、暗号化関連)
:confounded: 出題は結構重箱の隅をつつく様な問題も有り、ギリギリ滑り込みでの合格でした。
:confounded: 日頃自動補完に頼っているので関数名などを意外と覚えていないことを痛感しました。。。
:heart_eyes: 今後もPythonを愛用して開発が出来ればと改めて思いました。

# まとめ
Python 3 エンジニア認定実践試験についてまとめました。本来はベータ試験の段階で合格したかったのですが、叶わず、本試験となってからの合格となりました。また合格体験記を投稿してノベルティーを貰おうかなと思っています。この試験に合格したことで、これまでに取得した資格は計40個に到達しました。記念の記事を投稿するべく準備中ですが、まとめるのに時間を要しそうです。。。:scream: