SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

Python - 開発向けVim設定:インデント・PEP8・コードチェック

概要

Python開発で使うVimの基本設定と、flake8などのコードチェックツールの使い方を整理する。

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
    

コードチェックの一例

以下、flake8pyflakespycodestylemccabeの一例。

  • 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-docstringsflake8-import-orderなど色々なプラグインが用意されており、必要に応じてカスタマイズすることができる。

まとめ

  • Python開発では、Vimのインデント設定がコード品質に直結する。
  • flake8を使うと、コーディングスタイルや未定義名を確認でき、--max-complexityを指定すれば複雑度も検査できる。
  • まずは最小限の設定から始め、必要に応じてチェックを増やすと扱いやすい。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp