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

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

研修コース検索

コラム

ゼロから歩くPythonの道

CTC 教育サービス

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

第56回 妥協を知らないBlack様、Pythonのコードを問答無用で自動整形する (菱沼佑香) 2024年10月

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

前回までで、Pythonのコーディング規約であるPEP8について学習しました。
今回からコードをPEP8に沿った形で整形をしてくれるコードフォーマッターBlack様について学びたいと思います。

強制力の強い俺様コードフォーマッター、Black

これまで何度かコードフォーマッターBlack様のお名前をお出ししたかと思います。今回はついにそのBlack様です。まずはテキストから引用します。

---------------------------------------------------------------
P.56
Blackは、.pyファイル内のコードを自動的に整形します。本章で説明したフォーマットのルールを理解しておく必要がありますが、実際の整形作業はすべてBlackが行ってくれます。他の人と一緒にコーディングプロジェクトを進めている場合、コードのフォーマットはBlackに任せておくことにしておけば無駄な議論が必要なくなります。
Blackのルールの多くは変えることができません。
(中略)
完全なスタイルガイドはhttps://black.readthedocs.io/en/stable/the_black_code_style/current_style.htmlでご覧ください。
---------------------------------------------------------------

同じことをするにしても人によって違う表現でコードを書くというのはよくあることなんだそうです。なので、PEP8のようなルールがまとめられたものがあると統一されるので、読みやすくなるという利点があります。でもそこは人間。どうしても曖昧になってしまったり、うっかり癖が出てしまったりすることもありますので、機械的にコードを整えてくれるようにしてあれば、ああでもないここ直さなきゃというやり取りが不要になって楽!ということのようです。

コードフォーマッターはまさに、PEP8に合わせてコードを自動的にきれいにしてくれるツールで、いくつか有名なものがあるそうです。Blackもその中のひとつですが、俺様ツールと呼ばれるほど議論の余地がないレベルで整形してくれるもので、ここ最近の定番と呼ばれるツールと聞いています。チェックしきれない項目もあるそうで、Flake8などの他のツールと併用して使うこともあるのだとか。

Blackをライブラリとして導入してみる。

さて、次にBlackのインストール方法です。
エディタのVS Codeであれば拡張機能としてBlackを使うことができるのですが、テキストではPythonの外部ライブラリとして導入するようです。

なので、コマンドプロンプトでの作業を行います。

---------------------------------------------------------------
P.56、57
Windowsでは、コマンドプロンプトのウィンドウを開き、次のように入力します。


C:¥Users¥Al¥>python -m install --user black

macOSとLinuxでは、ターミナルウィンドウを開き、pythonではなくpython3と入力します(本書でpythonを使う場合はすべてこのように操作してください)。


Als-MacBook-Pro:- al$ python3 -m install -user black

-mオプションを指定すると、pipモジュールをアプリケーションとして実行します。(中略)python -m blackを実行して、インストールが成功したかどうかを確かめてください。No module named black.ではなく、No paths provided.Nothing to go.と表示されればOKです。
---------------------------------------------------------------

私の環境では[python -m black]を実行すると、「One of ’SRC’ or ’code’ is required.」と表示されます。
SRCはSourceの略語だそうで、コピー元、情報源を指すようなので、Blackを適用させたいソース元かコードを入れろ...ということでしょうか?
たぶん入ってるということなんでしょうけれども、もう面倒なので最終的に[pip list]で入っているライブラリのリストを表示させ、確認しました。ちゃんと入ってました。

VS Codeで使いたいのなら、拡張機能からblackを検索して、Black Formatterをインストールしてあげます。もしくは、設定すれば、今回入れた外部ライブラリとしての機能をVS Codeで利用することもできる模様。興味がある方は以下の参考リンクを読んでみて頂ければと思います。
VS Code で Python 用のフォーマッター (Black) を使う

仮想環境venvで、ライブラリのインストールができない時

ところで、個人的なことですが、環境がごちゃごちゃになってわかりにくくなってしまいそうなので、現在、venvを使った仮想環境にチャレンジ中です。仮想環境は要らなくなったら簡単に削除できるため、環境(PC)を汚さずにいろいろ試せるとあっておすすめなんだとか。

そのため、今回のBlack様のインストールは仮想環境を作って実行しているのですが、インストールを実行した結果、以下のエラーが発生しました。


ERROR: Can not perform a ’--user’ install. User site-packages are not visible in this virtualenv.

調べてみると、仮想環境はデフォルトでパッケージを追加しないという設定になっているんだそうで、その設定を変えてあげる必要があるそうです。設定の変更は仮想環境の任意のフォルダにあるcfgファイルで行います。

私の場合、は任意のフォルダ内にあったpyvenv.cfgがそれにあたるようです。中身は以下のようになっています。

fig01

この2行目の値が[false]になっていますので、[True]に変えてあげたら、インストールできるようになりました。

参考サイト
【Python】複数バージョンのPythonを共存させる方法
pyenvで制作した仮想環境でpip --userがエラーを返す時の対処法(macOSの方はこちら)

それではきりが良いので、今回はこちらで終了です。
今回もお付き合いいただきありがとうございました。

 


 

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