資格

PythonZen & PEP 8 検定試験 体験記

mabushiisign

仕事で3年前くらいからちょっとずつ触り出したPython。何もわからないまま、なんとなく使っていたけど、ちゃんと言語仕様とかルールとかを勉強しようと思い立ちました。

そんななか、Pytonには、JavaでいうJEP (JDK Enhancement Proposals)と同じように、PEP(Python Enhancement Proposals)というPythonの拡張提案をまとめる仕組みがあります。

その中にコーディングスタイルに関するPEP 8 (Style Guide for Python Code)や、Pythonの基本的な設計思想が書かれたPEP 20 (The Zen of Python)があります。

PythonZen & PEP 8 検定試験とは

PythonZen & PEP 8 検定試験とは、その名のとおり、Pythonを知るのに、重要なPEP 8および20に関する試験です。

こちらは、2022年に始まり、無償で受験することができます。

PythonZen & PEP 8 検定試験
PythonZen & PEP 8 検定試験

試験実施の背景

サイトの記載を見ると、Pythonを学ぶならちゃんとPythonの理念をちゃんと知った上で勉強した方がよいということで無償にしているようです。こういうのは非常に助かります。


Pythonは人工知能、機械学習、ビッグデータ、ネットワークインフラ(自動運用等)で中心的に使用されています。各分野の成長が著しく、Pythonの求人数は年間1.5倍前後で増えています。Python需要の増加に伴い、Pythonの関連書籍やプログラミングスクールが増える一方、Pythonを知らない人が書いている書籍やPythonZenやPEP 8を知らない講師が、不適切なPython文法を教えてしまうケースが散見されています。このままの状況が続くと、不適切なPython文法を書いてしまうPythonエンジニアが増える可能性があり、Pythonエンジニア育成推進協会はPythonZenやPEP 8を学ぶ意識を市場で高めるべく、PythonZenとPEP 8から出題する「PythonZen & PEP 8 検定試験」を無償で提供することにいたしました。

PythonZen & PEP 8 検定試験

試験概要

試験概要は以下のとおり、20問です。サイトで登録するとすぐに受験URLが記載されたメールが来て受験できます。

試験名称:PythonZen & PEP 8 検定試験
概要:PythonZen(The Zen of Python)とPEP 8に関する知識を問う試験
受験料金:無料
ハッシュタグ:#pythonzen検定
問題数:20問(すべて選択問題)
合格ライン:正答率70% ※合格者には電子ファイルで認定証を発行します。
試験方式:WBT(インターネットが接続できるブラウザ環境があれば、だれでも受験できます)
出題範囲:PythonZenとPEP 8より出題

PythonZen & PEP 8 検定試験

PEP 8 (Style Guide for Python Code)

こちらは、コーディングスタイルになります。
基本的には、読みやすいコードを書くためのルールになります。ただ、プロジェクトでルールがある場合は、そちらが優先されます。

具体的な内容は、公式ドキュメントや日本語訳・解説を参照してみてください。

公式ドキュメント(英語): https://peps.python.org/pep-0008/
Qiitaの記事: https://qiita.com/search?q=PEP8

また、vscodeなどには、PEP8を守れるようにチェックする拡張機能も用意されています。

PEP 20 (The Zen of Python)

Pythonの基本的な設計思想が書かれたものになります。19個の格言が書かれています。
これを読むと、なんでこんな構文なんだろうというのが特に他の言語を知っていると、少しわかります。

公式ドキュメント(英語): https://peps.python.org/pep-0020/
Qiitaの記事: https://qiita.com/search?q=PEP20

1. Beautiful is better than ugly.

「醜い」より「美しい」

2. Explicit is better than implicit.

「暗黙」より「明示」

3. Simple is better than complex.

「複雑」より「シンプル」

4. Complex is better than complicated.

それでも、「複雑」は「わかりづらい」よりはまし

5. Flat is better than nested.

「ネスト(入れ子)」より「フラット」

6. Sparse is better than dense.

「密集」より「隙間がある」

7. Readability counts.

「読みやすさ」は重要

8. Special cases aren’t special enough to break the rules.

特殊であることはルールを破る理由にならない

9. Although practicality beats purity.

しかし、実用性を求めると純粋さが失われることがある

10. Errors should never pass silently.

エラーは無視してはいけない

11. Unless explicitly silenced.

ただし、無視していいと明示されているものはいい

12. In the face of ambiguity, refuse the temptation to guess.

曖昧なものに出逢ったら、その意味を適当に推測してはいけない

13. There should be one– and preferably only one –obvious way to do it.

何かいいやり方があるはずだ。誰が見ても明らかな、たったひとつのやり方が

14. Although that way may not be obvious at first unless you’re Dutch.

そのやり方は一目見ただけではわかりにくいかもしれない。オランダ人にだけわかりやすいなんてこともあるかもしれない。
※ Pythonの生みの親のGuido van Rossum氏がオランダ人のため

15. Now is better than never.

ずっとやらないでいるよりは、今やれ

16. Although never is often better than right now.

でも、「今”すぐ”にやる」よりは「やらない」ほうがいいこともある

17. If the implementation is hard to explain, it’s a bad idea.

説明が難しいのなら、その実装は良くないということ

18. If the implementation is easy to explain, it may be a good idea.

説明がカンタンなら、その実装は良いのかも

19. Namespaces are one honking great idea — let’s do more of those!

名前空間は優れたアイデアであるため、積極的に利用しよう

受験をした結果

私も受験しました。

結果は、1回目は、65点で不合格。。
2日おいて、改めて受験し、100点満点で合格できました。

Pythonを始めたけど、なんとなく使っているという方は、PEP8と20を読んで、検定試験を受験してみると良いと思います。

ABOUT ME
mabushiisign
mabushiisign
B'zとdoaとミスチルと登山が好きな40代のプログラマです。 普段は、SIer企業で働いています。
記事URLをコピーしました