IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

ゼロから歩くPythonの道

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第52回 PEP8と誰でも読みやすいPythonコードとは? (菱沼佑香) 2024年5月

こんにちは、吉政創成 菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。

さて、前回で2章の「環境設定とコマンドライン」を終えました。
今回からは3章の「Blackを使ってコードフォーマットを整える」に入っていきます。

やみくもなプログラミングから、美しいプログラミングへの第一歩を

まずはテキストの引用から。

---------------------------------------------------------------
P.48
こんなコードは嫌われる
同じように動作をするコードをさまざまな方法で書くことができます。例えば、コンマの後に半角スペースを入れてリストを書いたり、一貫性をもって引用文字を使ったりします。
spam = [‘dog’, ‘cat’, ‘moose’]
スペースの数や引用文字の使い方を変えてリストを書いたとしても、構文的には問題ないPythonコードになります。
spam= [ ‘dog’ ,‘cat’, "moose"]
1つ目のコードのような書き方を好むプログラマーは、スペースによる視覚的な分離と引用文字の統一感がよいと感じるのではないでしょうか。ところがプログラマーの中には、プログラムが正しく動作するかどうかにかかわらない細かなことは気にしたくないので後者を選択する人もいます。
(中略)
複数のプログラマーが同じソースコードに対してそれぞれのスタイルで書いてしまうと、たとえエラー泣く動作したとしても一貫性のない煩雑なものになってしまいます。それだけでなく、お互いのコードを自分のスタイルに合うように再フォーマットして時間を無駄にしたり、議論を引き起こしたりすることもあります。
---------------------------------------------------------------

プログラミングをするときに、初心者としては、とりあえずテキスト通りにやってみようとなりますので、細かいことは正直構っていられません。動くものを作るのがとりあえずの優先事項なので!
と、強気に言ってみたものの、引用に書いてある通り、少し学習が進んでくると躓いて、誰かにコードを見てもらいたくなったり、さらにスキルがついてくると、いろいろな人が入り混じったプロジェクトに参加したりといった場面が出てくることになります。そうなったときに、とりあえずテキトーにコードを書いていると自分でも読みにくく感じたり、自分も相手も読み解くのに時間が掛かってしまったりといったことが起きてくるため、なるべく共通のルールに沿っておく方が望ましいようです。

PEP8と俺様コードフォーマッター Black様

さて、Pythonは基本的にだれが書いても可読性が高い言語だと言われていますが、高い理由にはPEP8というコーディング規約の存在も大きな影響を与えているようです。なので、きちんとした書き方を身に着けるにはPEP8を覚えてしまうのがいいようです。
https://peps.python.org/pep-0008/

PEP8に具体的に何が書かれているかというと、Pythonを使う上での文法上のルール(例えばスペースの位置とか)がいろいろと記述されています。ただ、たくさんあるので、正直覚えきれないこともあると思います。
そこで、章のタイトルにあるコードフォーマッターの出番です。コードフォーマッターを使うと、自動的にPEP8に準拠したソースコードに変換してもらうことができます。コードフォーマッターにはいくつかあるそうですが、その中でもBlackというコードフォーマッターが特に最近は人気なのだとか。
Blackは俺様ツールと呼ばれるほど容赦なく強制的に矯正してくれるそうで、登場当初は賛否両論だったそう。ただ余計なことを考える必要なく、効率的にソースコードが書けるという事で、今や人気ツールだと聞きます。
というわけで、ここでテキスト引用です。

---------------------------------------------------------------
P.48
Pythonコア開発チームによって書かれたスタイルガイドの1つに、『Python Enhancement Proposal 8(PEP8)』があります。
(中略)
PEP8を権威あるコーディング規約と考えるPythonプログラマーは多いですが、PEP8の作者自身はそうではないと主張しています。ガイドの「A Foolish Consistency Is the Hobgoblin of Little Minds(極端な固執は狭量な心の現れである)」の章では、個々のフォーマットルールに従うよりも、プロジェクト内の一貫性と読みやすさを維持することがスタイルガイドを実施する主な理由であると読者に伝えています。
PEP8には次のようなアドバイスもあります。「スタイルガイドを適用できないことがあるかもしれませんが、そんなときは一貫性を崩してもよいのだということを知ってください。疑問に思うことがあるなら、あなた自身が最善の判断を下してください。」すべてに従うにしても、部分的に従うにしても、あるいはまったく従わないにしても、PEP8のドキュメントを読む価値はあるでしょう。
本書ではBlackを使ってコード整形するためBlackのスタイルガイドに準拠しますが、これはPEP8のスタイルガイドを参考にしています。Blackがいつも手元にあるとは限らないので、コード整形のガイドラインについては学んでおいた方がよいでしょう。
---------------------------------------------------------------

極端な固執は狭量な心の現れ...なんともズシィっとくる言葉ですね...。いろんな意味で肝に銘じたいと思います。

さて、ここでBlack様のインストールかなと思いきや、この後はPEP8で書かれていることの一部を学ぶようです。
PEP8にはいろいろな項目があり、大項目としてはこんな感じの内容が含まれているようです。各項目はさらに細かくいろいろありますが、ここでは省略します。

  • コードのレイアウト
  • 文字列の引用符
  • 式とステートメント内の空白
  • 末尾のカンマの使用
  • コメントの入れ方
  • 命名規則
  • プログラミングの推奨事項

この後テキストで学習するのは、大きく分けてスペースの使い方と空行の挿入方法となります。
上記の項目のコードレイアウトあたりに多く含まれている内容の中から取り出されているようです。

全てを一度に学び覚えるのは難しいと思いますので、とりあえず最低限覚えておこうという内容なんだと思います。よく使われるものですし、イメージもしやすいですよね。
これ以外のプログラミングが進むにあたって必要となる内容については、その時にPEP8に戻って見られるよう、どんな項目があるのか程度は目を通しておいた方が良いかもしれません。興味がある方はぜひ確認してみてくださいね。

それではきりが良いので、こちらで終了です。次回は、スペースの使い方について学んでみたいと思います。
今回もお付き合いいただきありがとうございました。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes