Pythonの細かい書き方で議論しない。Make組ブログスマートフォン用の表示で見るMake組ブログPython、Webサービスや製品開発、ライブラリー開発についてhirokikyが書きます2019-06-03もうPythonの細かい書き方で議論しない。大切なことだとは思いますが、生産性にはあまり直結しません。(個々の問題について逐次議論するのがエネルギーを無駄にしてしまいます。一度決めて、再利用するようにしたいものです)。(「私はflake8を使ってるから結構です」と思われるかもしれませんが、少し違う話なので読んでみてください)。github.comblackはPythonのコードフォーマッターで、自動的にPythonプログラムの書き方を修正してくれます。いうPythonのコードスタイルにも準拠していますので安心です。Python向けの自動フォーマッターはいくつかありますが、他のフォーマッターとの違いは何でしょうか?一言で言うと、blackはより制限が強いということです。ありますが、blackはより制限が強く、自由に設定ができないのが特徴です。PEP8では触れられていない、改行の仕方や、シングルクォートとダブルクォートの統一、末尾カンマの統一、余計な丸括弧の削除、数値リテラルの書き方統一などをしてくれます。私の捉え方としては、blackは「自動フォーマッター」というよりも「制限のきついPEP8」です。設定できることはせいぜいファイルの幅(文字数)や除外するディレクトリーの設定くらいでしょうか。開発プロジェクトごとの違いや好みを反映することはほぼできません。「うちのプロジェクトはルールで、こう改行するように決めている」というのであれば、改宗するか、諦めるしかありません。改行位置とかも自動で揃えられるので「ここの論理行はここで改行するのが好き」とかそういうのは無理です。どこで改行するのかシングルクォートを使うのか、ダブルクォートを使うのかで議論したくない「プロジェクトごとに色々設定」できないほうが楽で良い私個人としてはこの「設定させない」というのは良いと思っています。mumble...)。プロジェクトに導入しました。見ると他に使っている人のコメントが読めます。Djangoのソースコード開発ではblackを使うというプロポーザルがアクセプトされています。言っていますので、性急に捉える必要はないでしょう。https://github.com/python/black#note-this-is-a-beta-productblackを使おうblackは単なるコマンドなので、インストールして使うだけです。<target>blackを設定しよう基本的にblackにはあまり設定できる項目がありませんが、文字の幅や無視するパスを指定できます。おいて、以下のように書けます。この例では「1行の文字数は99文字」という設定と、blackの対象にしないディレクトリーを設定しています。venv)'''書き方はこちらを参照してください。github.comblackをプロジェクトに導入しよう既存のPythonのプロジェクトにblackを導入する場合、単に「コマンドとして使う」だけでは不十分です。プロジェクト内で定期的に実行して、Pythonコードの品質を保つようにしましょう。CIで定期的に実行することです。書いて単体テストとして実行する方法です。オプションを付けると「blackの書き方に則ってるかどうか」のチェックだけしてくれます。バージョン表示もできるので同時に実行していても良いでしょう。blackを自動で実行しようエディターで実行するようにすると良いです。spacemacsは対応中のようです。2019年6月3日現在だとdevelopブランチにはマージされているようです(yapfでなくフォーマッターとしてblackを指定できるようになるようです)。precommitの実行は設定していません。使っていることと思います。blackはflake8と併用できますが、併用する場合は一部非互換の部分があるのでちゃんと設定しましょう。blackと同じ幅を指定すればOKです。blackはデフォルトで88文字なので、black側で設定しないときはここで88を指定しましょう。互換がない点を無視するための設定です。ともblackは共存できます。blackはインポート順は直さないですが、isortのデフォルトの書き方に文句を言うので設定します。設定すると良いです(例によって行の文字数は99文字に設定しています)。インストールしましょう。オプションについてや、エディターの設定など)。blackについてはaodagさんのこのトークでも紹介されてます。他にもPythonのプロジェクトにおいて効率的に開発する方法が説明されてますので参考にしてください。20:27もうPythonの細かい書き方で議論しない。GitHubのメンバーになりました。月別アーカイブPyQという製品を作っていますスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。