LoginSignup
5
7

More than 1 year has passed since last update.

PythonZen & PEP 8 検定試験で学ぶ Pythonのするべきことではないこと

Last updated at Posted at 2023-01-03

はじめに

本記事はPythonZen & PEP 8 検定試験の勘所について記載しています。

Pythonに関する検定及び資格試験は、一般社団法人Pythonエンジニア育成推進協会によって運営されています。

本記事執筆時点では以下に示す4種類があります。

PythonZen & PEP 8 検定試験は、2022年3月1日より無償で提供されています。
本試験を受けることで、Pythonのするべきことではないことについて、学ぶことができます。

Pythonの飛躍

国内におけるPythonの動向は、この数年の間に大きく変化しています。

2019年には、基本情報技術者試験の午後試験で出題するプログラム言語に関して、教育機関・産業分野における利用状況等を踏まえてCOBOLが廃止され、Pythonの追加が発表されました。

また経済産業省が定めている個人のIT関連能力を職種や専門分野ごとに明確化・体系化しているITスキル標準では、基礎試験、データ分析試験ともに、ソフトウェアディベロップメントの職種で、応用ソフトのレベル1に掲載されています。

このようなPythonの飛躍の背景とは相反的に、前述したPythonZen & PEP 8 検定試験の記事より、以下のような課題が浮き彫りになっていることが分かります。

Python需要の増加に伴い、Pythonの関連書籍やプログラミングスクールが増える一方、Pythonを知らない人が書いている書籍やPythonZenやPEP 8を知らない講師が、不適切なPython文法を教えてしまうケースが散見されています。

従って正しくPythonを使いこなすためには、基本を疎かにしないことが重要です。

PythonZen & PEP 8 検定試験

PythonZen & PEP 8 検定試験は、PythonZenとPEP 8から20問出題され、合格ラインは正答率70%です。

検定試験はオンラインで行うことができます。
冒頭にも記載していますが、本試験は無料で受けることができ、合格すると、合格者番号が記載された証書を受け取ることができます。

検定試験の目的は、適切なPython文法を理解することです。
まずは、検定試験の範囲であるPythonZenと、PEP 8について知りましょう。

PythonZen

PythonZenは、Pythonの設計に関するBenevolent Dictator for Life (以下、BDFL)の指針となる原則です。

BDFLの起源については、Python の生みの親であるグイド・ヴァンロッサム氏によって、以下のブログにまとめられています。

PythonZenはEaster eggとして含まれています。
Pythonのインタプリタから、import thisを実行することで、その内容が確認できます。

$ python3

  • 出力例
Python 3.9.4 (v3.9.4:1f2e3088f3, Apr  4 2021, 12:32:44) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Zenについては、文字通り仏教用語のを指しています。

PEP 8

PEP 8は、Pythonディストリビューションの標準ライブラリを構成するコーディング規約です。

以下原文です。

PEPはPython Enhancement Proposalsの略で、番号はインデックスです。
PEP 0 – Index of Python Enhancement Proposals (PEPs)から、色々なPEPについて確認することができます。

tool

コードのスタイルチェックで役に立つツールを以下に記載します。

Python Style Checker

PythonCheckerは、Pythonのスタイルを評価するオンラインのツールです。

文法に関するヒントを提供し、スコアを計算して出力します。

pycodestyle

pycodestyleは、コードがPEP8の規則どおりかをチェックするツールです。

以前はpep8と呼ばれていました。
名前が変わった背景は、GitHubのissuesから確認できます。

pipからインストールするためには、以下のコマンドを実行します。

$ pip3 install pycodestyle

Collecting pycodestyle
  Downloading pycodestyle-2.10.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 571 kB/s 
Installing collected packages: pycodestyle
Successfully installed pycodestyle-2.10.0
WARNING: You are using pip version 20.2.3; however, version 22.3.1 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m pip install --upgrade pip' command.

pycodestyleの使用方法は簡単です。
pycodestyleの引数に、チェックするコードを渡して実行します。

$ pycodestyle code.py

pep8に違反している場合は、該当する行を表示します。

禅について

禅の考え方について少し以下に記載します。

禅では二元論的な考えを踏まえて「これはよい」、「これは悪い」という考え方は、推奨されていません。
悪いという代わりに、「するべきことではない」と言うそうです。

従ってよい悪いは問題ではなく、自分自信を平安にできているかどうかが重要です。

禅に興味がある場合は、以下の本がお勧めです。

おわりに

禅は56歳の若さでこの世を去ったアップルの創業者スティーブ・ジョブズにも影響を与えていたと言われています。

Pythonのようなプログラミング言語にも影響を与えていることを考えると、感慨深いものを感じます。

まとめると「するべきことではない」考え方を身に付けることで、コードの保守性を高めることができます。

2023年のスタートは、PythonZen & PEP 8 検定試験から始めてはどうでしょうか。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7