YAPFでPythonのコードを整形する【Formatter】

YAPFでPythonのコードを整形する【Formatter】 プログラミング

プログラマーは、チームで仕事をすることが多いです。
そこで問題になることがあります。

「文字列はダブルコーテーション(”)で囲むべきだ」
「いや、文字列はシングルコーテーション(‘)で囲むべき」

「ソースのインデントはタブでやるべきだよ」
「いや、ソースのインデントはスペース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】」を終わります。

タイトルとURLをコピーしました