CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
こんにちは、吉政創成 菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。
前回は、コードを自動で整形してくれるBlack様についてと、インストール方法まで学びました。
今回は、実際に使ってみたいと思います。
Black様はコマンドプロンプトやターミナルウィンドウからの実行以外に、Jupyter NotebookやPyCharmなどのエディタ以外でも実行することができるそうです。私自身はBlack様をVS Codeで試しに使ってみたことしかありません。
Blackの仕様的な詳細は以下のサイトをご覧ください。
https://github.com/psf/black
---------------------------------------------------------------
P.57
例としてyourScript.pyというファイルを自動整形してみましょう。Windowsのコマンドラインから、次のように実行します(macOSやLinuxでは、pythonではなくpython3としてください)。
C:¥Users¥Al>python -m black yourScript.py
このコマンドを実行すると、yourScript.py内のコードがBlackのスタイルガイドに沿って整形されます。
Blackを直接実行できるように環境変数PATHがすでに設定されているかもしれませんが、その場合は次のように入力するだけでyourScript.pyをフォーマットできます。
C:¥Users¥Al>black yourScript.py
フォルダー内のすべての.pyファイルに対してBlackを実行したい場合は、個々のファイルではなく、フォルダーを指定してください。
C:¥Users¥Al>python -m black C:¥yourPythonFiles
---------------------------------------------------------------
例えばこんなプログラムをBlack様にお見せしてみました。
結果...。
1行目の終わりに括弧がついてませんので、「Oh no!」と怒られます。エラーがあった次の行の部分が引っ張り出されているようなので、前の行を確認すればエラー箇所が見つけられそうです。
ちなみに文字化けは絵文字です。絵文字。爆発とハートブレイクらしいです。
修正してもう一度通してみると、「All done!」と表示され、問題がないことが分かります。そして、相変わらず文字化けしてますが、ケーキとキラキラの絵文字でお祝いされるようです。
より詳しい内容やVS Codeで使う時のことは以下のブログで解説されていました。ぜひご参考に。
【black】Pythonのソースコードを自動整形!!コードフォーマットで議論するのはもう止めませんか?
Blackで使えるオプションなどを確認したいときは、[python -m black --help]と入力すると一覧が表示されます。
基本的にBlackの設定は変更することができませんので、Blackでチェックしきれない部分のチェックや、修正させたくない場合にはBlackを使わず、他のコードフォーマッターを一部分に使うなど、合わせ技を取ることがあると聞いたことがあります。
ただ、どうやら一部変更が可能なオプションというのもあるようです。ここからは内容をまとめつつ、補足&一部引用という形でお送りします。(P.58~59)
なお、コードはすべてWindowsでの記述です。
Pythonコードの1行当たりの標準的な長さは80文字だそうですが、Blackは1行88文字という設定になっているそうです。1行があまり長くても見にくくなってしまいますが、これを自分の好みに合わせて変えることができるそうです。
変えたいときは以下のようにコマンドオプションをつけて書きます。
C:¥Users¥xxx>python -m black -l (文字数) yourScript.py
※数字の1ではなく、小文字のLで書かれています。
文字列にはシングルクォート(')かダブルクォート(")を付けますが、Blackはダブルクォートで統一するそうです。シングルクォートだと、英語などの時にわかりにくくなりますしね。ただ、文字列にダブルクォートが入っていた場合は、シングルクォートに変換するそうです。
例)d = "Zophie said, &"meow"" → d = 'Zophie said, "meow"'
これを変えてほしくない場合は以下のように、Sオプションを加えて書けばいいそうです。
C:¥Users¥xxx>python -m black -S yourScript.py
もし先ほどのオプションと並列で使いたい場合は以下のように書けばいいとのこと。
C:¥Users¥xxx>python -m black -l (文字数) -S yourScript.py
Blackはチェックしたコードを自動で整形してくれますが、整形する前に確認したいケースはあると思います。基本的には自分でバックアップをとるなり、バージョン管理ソフトを利用して、前後を確認してもらうことになると思いますが、オプションを使えば変更前にプレビューで確認することができるそうです。
C:¥Users¥xxx>python -m black --diff yourScript.py
例えば実行するとこんな感じで表示されます。(これは先ほどのファイルとは別のものです。)
「-」が削除される内容で、「+」が「-」に変わって置き換えられる内容になります。
変更される内容に問題がないのであれば、[--diff]を消して実行すればいいようです。
プロジェクトチームによっては、そのプロジェクト特有のルールが存在することがあるようで、そういった場合には、Blackのように強制的な矯正をされると困ってしまうことがあるのだとか。そこで、コードの一部分に対してBlackが作用しないようにする方法です。
# fmt: off
(コード)
#fmt: on
このように、Blackのコード整形をオフにしたい行の前にコメントで「# fmt: off」と入れ、再開したい行の前に「#fmt: on」と入れてあげると、コードの空白部分やその他のフォーマットには影響しないようになるそうです。
それではきりが良いので、今回はこちらで終了です。
今回もお付き合いいただきありがとうございました。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes