PythonZen & PEP 8 検定試験 体験記
仕事で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 検定試験とは
- PEP 8 (Style Guide for Python Code)
- PEP 20 (The Zen of Python)
- 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.
- 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!
- 受験をした結果
PythonZen & PEP 8 検定試験とは
PythonZen & PEP 8 検定試験とは、その名のとおり、Pythonを知るのに、重要なPEP 8および20に関する試験です。
こちらは、2022年に始まり、無償で受験することができます。
試験実施の背景
サイトの記載を見ると、Pythonを学ぶならちゃんとPythonの理念をちゃんと知った上で勉強した方がよいということで無償にしているようです。こういうのは非常に助かります。
PythonZen & PEP 8 検定試験
Pythonは人工知能、機械学習、ビッグデータ、ネットワークインフラ(自動運用等)で中心的に使用されています。各分野の成長が著しく、Pythonの求人数は年間1.5倍前後で増えています。Python需要の増加に伴い、Pythonの関連書籍やプログラミングスクールが増える一方、Pythonを知らない人が書いている書籍やPythonZenやPEP 8を知らない講師が、不適切なPython文法を教えてしまうケースが散見されています。このままの状況が続くと、不適切なPython文法を書いてしまうPythonエンジニアが増える可能性があり、Pythonエンジニア育成推進協会はPythonZenやPEP 8を学ぶ意識を市場で高めるべく、PythonZenとPEP 8から出題する「PythonZen & PEP 8 検定試験」を無償で提供することにいたしました。
試験概要
試験概要は以下のとおり、20問です。サイトで登録するとすぐに受験URLが記載されたメールが来て受験できます。
試験名称:PythonZen & PEP 8 検定試験
PythonZen & PEP 8 検定試験
概要:PythonZen(The Zen of Python)とPEP 8に関する知識を問う試験
受験料金:無料
ハッシュタグ:#pythonzen検定
問題数:20問(すべて選択問題)
合格ライン:正答率70% ※合格者には電子ファイルで認定証を発行します。
試験方式:WBT(インターネットが接続できるブラウザ環境があれば、だれでも受験できます)
出題範囲: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を読んで、検定試験を受験してみると良いと思います。