概要
Python開発で使うVimの基本設定と、flake8などのコードチェックツールの使い方を整理する。
Pythonではインデントが構文に影響するため、エディタ設定は見た目だけでなく実行結果にも関係する。
Vimのファイルタイプ別設定とコードチェックを組み合わせることで、保存前後のミスを見つけやすくなる。
この記事の構成
- 対象環境と利用上の注意
本文記載時の環境と現在そのまま利用できない箇所を確認。 - 作業時の注意点
設定変更やコマンド実行前に確認しておきたい注意点を整理。 - Vimの共通設定
Vimの共通設定の手順と確認ポイントを整理。 - Python用のVim設定
Python用のVim設定の手順と確認ポイントを整理。 - コードチェックツールのインストール
コードチェックツールのインストールの手順と確認ポイントを整理。 - コードチェックの一例
コードチェックの一例の意味と要点を具体例から整理。
対象環境と利用上の注意
- 本文記載時の環境
VimのftpluginとPython向けのflake8を利用する、Unix系OSの設定例。
Vim・Python・flake8の特定バージョンには固定していない。 - 確認時期
2026年8月にVim・Python・flake8の公式資料と照合。
新規環境へ同じ設定を一括適用する検証は行っていない。 - 現在そのまま利用できない箇所
警告内容や設定の推奨値はツールのバージョンとプロジェクト規約で変わる。
行長などは掲載値を固定的に採用せず、利用中のツールとチームの規約へ合わせる。
作業時の注意点
- filetype設定
Python用設定が読み込まれない場合はディレクトリやファイル名を確認。 - タブとスペース
混在するとインデントエラーや読みにくさにつながる。 - flake8の警告
行番号、列番号、エラーコードの順に読む。 - プラグイン追加
最初から入れすぎず、必要なチェックから増やす。
実施内容
Vimの共通設定
-
ホームディレクトリに
.vimrcファイルを作成
.vimrcに設定を追記することでVimに反映される。
touch ~/.vimrc -
Pythonを使う上で最低限必要な自動インデントとシンタックスハイライトのみ設定
$ vim ~/.vimrc filetype plugin indent on # 自動インデントの設定 syntax on # シンタックスハイライトの設定
Python用のVim設定
-
ホームディレクトリに
.vim/ftplugin/python.vimファイルを作成
設定ファイルをファイルタイプ別に分割できるため、Pythonスクリプト専用の設定を定義することができる。$ mkdir -p ~/.vim/ftplugin $ touch ~/.vim/ftplugin/python.vim -
Vimの設定を追記
下記は、PEP 8が示す「1段につきスペース4つ」「コードは原則79文字以内」という基本に合わせた設定例となる。これだけでPEP 8のすべてへ準拠するわけではなく、行長などの方針はプロジェクトの規約を優先する。$ vim ~/.vim/ftplugin/python.vim setlocal expandtab # タブをスペースに置き換える設定 setlocal tabstop=4 # タブのインデント幅を4に設定 setlocal shiftwidth=4 # 自動インデント時の幅を4に設定 setlocal softtabstop=4 # Tabキー入力時の幅を4に設定 autocmd BufWritePre <buffer> %s/\s\+$//e # このバッファの保存時に行末スペースを除去 setlocal textwidth=79 # 自動折り返しの幅を79文字に設定PEP 8ではコードを原則79文字以内、コメントとdocstringを72文字以内としている。一方、チームで合意している場合はコードを99文字まで広げる選択肢も示されているため、
textwidthやflake8の設定は開発ルールに合わせる。
コードチェックツールのインストール
- flake8のインストール
Pythonで多く使用されているコードチェックツールflake8をインストール。
flake8は、pyflakes、pycodestyle、mccabeを組み合わせて、論理的な誤り、コーディングスタイル、循環的複雑度を確認できる。インストールされるバージョンはPython環境によって異なるため、flake8 --versionで確認。
$ python -m pip install flake8 $ flake8 --version
コードチェックの一例
以下、flake8、pyflakes、pycodestyle、mccabeの一例。
-
flake8 : コードチェック
$ flake8 example.py example.py:11:1: E302 expected 2 blank lines, found 1 example.py:12:21: W291 trailing whitespace … -
pyflakes : コードチェック
$ pyflakes example.py example.py:74: undefined name 'Http404' … -
pycodestyle : PEP8に準拠しているかチェック
$ pycodestyle example.py example.py:10:1: W293 blank line contains whitespace example.py:11:1: E302 expected 2 blank lines, found 1 example.py:12:21: W291 trailing whitespace … -
mccabe : 循環的複雑度のチェック
flake8ではデフォルト無効になっているため、下記のように--max-complexityを指定すれば循環的複雑度のチェックが可能となる。
$ flake8 --max-complexity 10 coolproject ... coolproject/mod.py:1204:1: C901 'CoolFactory.prepare' is too complex (14)
その他、flake8には、flake8-docstringsやflake8-import-orderなど色々なプラグインが用意されており、必要に応じてカスタマイズすることができる。
まとめ
- Python開発では、Vimのインデント設定がコード品質に直結する。
- flake8を使うと、コーディングスタイルや未定義名を確認でき、
--max-complexityを指定すれば複雑度も検査できる。 - まずは最小限の設定から始め、必要に応じてチェックを増やすと扱いやすい。