スキップしてメイン コンテンツに移動

Pythonの自動整形パッケージ、おすすめは"black"

Pythonのコーディングを進めていくと、改行の位置や空白の置き方などに一定のルールに従って記載したくなってくるかと思います。特に多人数で共同で開発を進める場合、それぞれが独自のルールと感性でコーディングをしていきますと、フォーマットがバラバラになってしまいます。この違いは他の人のコードを確認するときのストレスの元になってしまいます。

その問題を解決する方法の一つに「コーディングルールを決める」という手段があります。このルールに則っていたら、大丈夫、もう文句は言わない!という決め事をしてしまえば、もうその事で言い合いになる心配はありません。プロジェクトの目的そのものに集中することができます。PythonにはPEP8という一般的に用いられるコーディング規約があります。多くのコードがこのPEP8に基づいて作成されています。このPEP8に則っているかどうかをチェックして、自動に整形してくれるフォーマッターがPythonのパッケージとしていくつか公開されています。その中で、筆者が一番オススメなのが"black"というパッケージです。

Pythonのコンソール上で、 整理したいファイルのあるディレクトリに移動し、以下のコマンドを実行してみましょう。

black .

これで、現在のディレクトリ以下にある全てのPythonファイルを自動で整形してくれます。blackは他のフォーマッターと違って、元となるPEP8よりも厳しいルールを用いており、オプションでもそのルールをほとんど変更することができない、という特徴を持っています。もともとPEP8は結構融通の効くルールなので、どうしても人によって書き方がバラけてしまう、という問題があります。それならば、ガチガチに固めてしまいましょう、という思想のフォーマッターです。そこまでコードの綺麗さにこだわりがない筆者にとっては、余計な事を考えずに全てのコードの形式を統一できるので、非常に助かっています。

「コマンドが見つかりません」と表示されて実施できない場合

blackがインストールされていない環境のようです。環境管理にpipを用いている場合は、以下のコマンドを実行してみて、現在の環境にインストールされているパッケージを確認してみましょう

pip list

リストの中にblackがない場合、pipを使ってblackをインストールしましょう。下記のコマンドでインストールできます。

pip install black

Spyderで実施したい場合

Python用の総合開発環境Spyderでも、コンソールがありますので、blackを実施する事ができます。ですが、Spyderはデフォルトでは対話式シェルIPythonで起動されるので、そのままでは実施できません。下記のコマンドで実行する必要があります。
!black .

先頭に"!"をつけることで、システムシェルでの実行に切り替えることができます。

対象ファイルを指定したい場合

整形を行うファイルを指定したい場合には"."の代わりに、ファイル名を入力します。

black file.py

設定ファイルでオプション指定したい場合

そんなに設定できることは多くないですが、設定ファイルでオプションを指定できます。いろいろなファイルの書き方がありますが、筆者は「pyproject.toml」というファイル名(形式)で指定しています。

[tool.black]
line-length = 98
include = '\.pyi?$'

"line-length"は1行あたりの最大許容文字数です。PEP8では最大79文字まで、blackのデフォルトでは最大88文字までになっています。著者はもう少し長いほうがきれいに収まるので、98文字にしています。

"include"は整形対象となるファイル名を正規表現で指定します。上記の設定例では、拡張子が"py"と"pyi"のファイルを整形対象としています。

isortと共存させたい場合

blackはPythonのソースコードを整形することができますが、import文の順番を並び替えることはできません。一定のルールに基いてimport文を並び替えるには、「isort」という別のパッケージを利用しなくては行けません。isortの使い方は以前の記事で紹介しましたが、blackと併用するためには、isortの設定を blackと合わせる必要があります。そうしないと、isortで修正するたびにblackの厳しいルールに違反してしまいます。筆者はblackと同様にpyproject.yomlで設定しています。
[tool.black]
line-length = 98
include = '\.pyi?$'
[tool.isort]
profile = 'black'
line_length = 98

"profile"は基本となる設定のセットを指定できます。"black"と指定することで、blackと同一の整形ルールで修正を実施してくれます。

"line_length"は1行あたりの最大許容文字数です。blackで設定した98文字に設定することでblackによる修正との差異をなくしています。

参考URL

コメント

このブログの人気の投稿

Sourcetreeを使って、特定のブランチやタグをローカルに再現する方法 - フェッチ(fetch)を使おう -

今や、プログラミング開発に欠かせない存在となったGit。上司や同僚から「修正版をブランチ"devlop"にプッシュしたから、それを反映させてね」「安定版はタグ”v1.2”だから、よろしくね」と言われることもあるでしょう。その時に「どうやってブランチやタグって変えたらいいかわからない」「そもそも言われたブランチやタグが見当たらないんだけど…」となったら、とても困ってしまいます。そんなときにどうしたらいいか、本記事では Sourcetree を使用している環境を想定して、おすすめの手順を紹介します。環境によって具体的な操作は異なるものの、手順自体は一緒です。基本的には、 フェッチ(fetch)をしてリモートリポジトリをちゃんと確認 すればよいのです。 1. コミットしていないファイルをなくそう まず、Sourcetreeのコミット一覧に「コミットされていない変更があります」とあるかどうか確認します(下記図赤下線参照)。「コミット」の箇所に青マークでコミットされてないファイル数も表示されます(下記図赤枠参照)。その変更をコミットするか、破棄するかを行い、コミットされていない変更がない、きれいな状態にしましょう。そうしないと、後の作業中にエラー等が発生して進まなくなってしまいます。 2. フェッチしよう フェッチとは、 リモートリポジトリの最新の履歴の取得だけを行う 操作です。これによって、自分から見えていなかったブランチ・タグが見えるようになります。ブランチへのマージが伴うプッシュやプルと異なり、単に履歴を取得するだけなので、意図しないコミットが発生しません。安心して実施しましょう。Sourcetreeでは下記図赤枠部分をクリックすれば、フェッチを行うことができます。 その際出てくるポップアップで「すべてのリモートからフェッチ」「全てのタグを取得」をチェックしてください(下図赤下線参照)。 3. 目的のブランチ・タグを見つけよう 目的のブランチ・タグを見つけるのに便利なのが、Sourcetreeの左側領域にある「ブランチ」「タグ」「リモート」「スタッシュ」です。目的のブランチを探したい場合は「リモート」をクリックして現れる「origin」をさらにクリックしましょう。これでリモート上にあるブランチの一覧を見ることができます。タグの場合は「タグ」をクリック

GitHubのプライベートリポジトリからクローンできてもプッシュできないときの対処法 - Write権限の有無を確認しよう -

 以前、 SourceTreeを使って、GitHubのプライベートリポジトリにアクセスする方法 を記事にしました。その際、プライベートリポジトリからクローンできても、プッシュできない!という現象に遭遇するときがあります。下記のように、”そんなリポジトリは存在しないよ”というエラーが表示されます。 remote: Repository not found. もし、そのリポジトリがOrganaizationに属するものならば、 あなたのアカウントの権限が”Read”のみで、”Write”になっていない 可能性があります。権限に関してOrganaizationの管理者に確認してもらいましょう。 管理者がどういうルールで権限を決定しているのかによって、対応が変わるかと思います。一番手っ取り早い対応は、全てのメンバーのデフォルト権限を”Write”に変えてしまえばよいでしょう。Organaizationのページの右上にある「Settings」をクリックし、左に表示されるメニューから「Member privileges」を選択します。すると、左下のような画面が表示されますので、赤枠で囲っている「Base permissions」のプルダウン部分を"Write"に変更してください。 その他に、リポジトリ毎にアクセスできるメンバーを管理したい場合もあるかと思います。その際にはリポジトリの「Settings」→「Manage access」を選択し、設定等を変更してください。

SourcetreeでGitHubのプライベートリポジトリをクローンする

Sourcetree は、初心者でも操作しやすいgitのGUIツールです。基本無料のソフトなので、あらゆる人が導入・利用しやすいという利点を持ちます。ですが、GitHubで非公開、つまりプライベートのリポジトリを取り扱う場合には、初期設定に一工夫が必要です。 本記事で紹介する設定の流れは以下の通りです。前提として、1)GitHubのアカウントとプライベートリポジトリを既に所有しているが、2)Sourcetreeを自身のPCにまだインストールしていない状態を想定しています。 GitHubのPersonal access tokenを作成する Sourcetreeを自身のPCにインストールする SourcetreeにGitHubのアカウントを登録する プライベートリポジトリをクローンする 今回はPersonal access tokenという手法を用います。秘密鍵や公開鍵が必要なSSH接続とは異なり、アカウント名とパスワードのみで認証できます。そのため、アカウント管理がより重要となりますので、 2段階認証 でより強力なアカウント保護をおこなうことをお勧めします。また、本記事で紹介するのはWindowsでの利用です。Macでもほぼ同じ流れになるかと思いますが、試してはいませんのでご了承ください。 1. GitHubのPersonal access tokenを作成する GitHubのPersonal access tokenとは、GitHub API またはコマンドラインを使用するときに GitHub への認証でパスワードの代わりに使用できる機能です。このトークンを自身のGitHubアカウントで作成することで、Sourcetreeからプライベートリポジトリにアクセスすることができるようになります。具体的な作り方は下記のGitHub公式ページををご参考ください。 Personal access tokenの作成方法: https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token ポイントは手順8に書かれているS