プログラマーは、チームで仕事をすることが多いです。
そこで問題になることがあります。
「文字列はダブルコーテーション(”)で囲むべきだ」
「いや、文字列はシングルコーテーション(‘)で囲むべき」
「ソースのインデントはタブでやるべきだよ」
「いや、ソースのインデントはスペース4つでしょ」
「いやいや、ソースのインデントはスペース2つがいいですよ」
ウンザリしませんか?
でも、これはプログラミング開発の現場では本当にある話です。
タブが勝手にスペース4つに変更されていることも普通にあります。
こういうちょっとしたことで、個人的にはソースの可読性が落ちます。
ましてや、自分が新規で開発したソースが、勝手に変更されていれば尚更です。
このような無駄な争いを起こさないために、Formatterが存在します。
この記事では、PythonのFormatterであるYAPFに関して解説していきます。
本記事の内容
- YAPFとは?
- YAPFのシステム要件
- YAPFのインストール
- YAPFの動作確認
それでは、上記に沿って解説していきます。
YAPFとは?
YAPFの公式ページ(GitHubページ)
https://github.com/google/yapf
YAPFは、PythonのFormatterです。
YAPFはGoogleが開発したオープンソースです。
これだけでプログラマーとしては、「うぉー」となります。
完全にGoogleブランド信仰です。
そして、そのGoogleブランド製のYAPFは、他のFormatterとは違うと主張しています。
他のPythonのFormatterとは異なるアプローチを採用しているということです。
YAPFに名指しされたのは、以下のFormatterとなります。
- autopep8
- Pep8Ify
もちろん、上記の二つもPythonのFormatterです。
とにかく、自信満々な説明がなされています。
インストールと行きたいところですが、先にYAPFのシステム要件を確認しておきましょう。
YAPFのシステム要件
YAPFの最新バージョンは、0.30.0となります。
この最新バージョンは、2020年4月24日にリリースされています。
最近は、更新頻度が落ちています。
これはマイナスに捉えるより、プラスに捉えた方がよいでしょう。
Formatterの仕様が、コロコロと変わるのは嫌ですからね。
完成形に近づいているのだとプラスに捉えます。
そして、YAPFのシステム要件で注意すべきは、Pythonのバージョンだけです。
サポートしているPythonのバージョンは、以下。
- Python 2.7
- Python 3.6.4以降
3.6.4以降というのは、なかなか厳密です。
普通なら、3.6以降ぐらいのアバウトなモノですけどね。
事前に、Pythonのバージョンを確認しておきます。
>python -V Python 3.8.6
3.6.4以降であるため、Pythonのバージョンはクリアしています。
また、OSに関してはどこでも動きます。
WindowsでもLinuxでも、Pythonさえ動けばどこでもということでしょう。
あと、要件ではありませんが注意すべき点があります。
Python 2.7でYAPFを動かすならば、Python 2系のソースのみが整形の対象です。
同じように、Python 3系でYAPFを動かすなら、Python 3系のソースのみが整形の対象となります。
以上が、YAPFのシステム要件となります。
では、YAPFをインストールしていきましょう。
YAPFのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 20.3.3 setuptools 51.1.2
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、YAPFのインストールです。
YAPFのインストールは、以下のコマンドとなります。
pip install yapf
インストールは一瞬で完了です。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- pip 20.3.3 setuptools 51.1.2 yapf 0.30.0
YAPFには、他に依存するライブラリはありません。
依存ライブラリが少ないということは、いろんな環境に導入しやすいということです。
それでは、YAPFの動作確認を行いましょう。
YAPFの動作確認
動作確認には、コンソール(コマンドプロンプト)で以下のコマンドを実行します。
>yapf -v yapf 0.30.0
YAPFの最新バージョンがインストールされていることを確認できます。
これで動作確認は、十分と言えば十分です。
ただ、せっかくなのでソースを整形してみましょう。
公式ページのサンプルを参考にして、test.pyを作成します。
test.py
x = { 'a':37,'b':42, 'c':927} y = 'hello ''world' z = 'hello '+'world' a = 'hello {}'.format('world') class foo ( object ): def f (self ): return 37*-+2 def g(self, x,y=42): return y def f ( a ) : return 37+-+a[42-x : y**3]
このソースが、YAPFでどのように整形されるのでしょうか?
パスは適当に調整してください。
yapf test.py
これだけで整形された内容が、以下のように標準出力されます。
x = {'a': 37, 'b': 42, 'c': 927} y = 'hello ' 'world' z = 'hello ' + 'world' a = 'hello {}'.format('world') class foo(object): def f(self): return 37 * -+2 def g(self, x, y=42): return y def f(a): return 37 + -+a[42 - x:y**3]
なお、整形した結果をそのまま元ファイルに反映するには、以下のコマンドを実行します。
yapf -i test.py
オプションに「-i」を付けただけです。
とても簡単にYAPFでソースの整形ができました。
以上で、「YAPFでPythonのコードを整形する【Formatter】」を終わります。