コードフォーマットとツール

コードの品質を向上するツール。

Black
Pythonコードフォーマッタ。
Ruff
高速なLinter/フォーマッタ。
mypy
静的型チェッカー。
フォーマッタ
コードのスタイルを統一するツール。
Linter
コードの問題を検出するツール。
型チェッカー
型のエラーを検出するツール。
pre-commit
コミット前に自動実行されるフック。
CI
継続的インテグレーション。

Black

Pythonコードフォーマッタ

Blackは「Pythonコードフォーマッタ」のようなもの。PEP 8に準拠したコードスタイルを自動的に適用します。これにより、コードの一貫性を向上できます。

なぜBlackが必要か?

Blackは、コードスタイルを統一するのに適しています。これにより、コードレビューの効率を向上できます。

いつ使うか?

  • コードスタイルを統一する場合
  • PEP 8に準拠する場合
  • コードレビューの効率を向上する場合
  • チーム開発を行う場合

実践テクニック

pre-commitフックを使う

pre-commitフックを使うことで、コミット前に自動的にフォーマットできます。これにより、コードスタイルの一貫性を保てます。

CIパイプラインに統合する

CIパイプラインに統合することで、プルリクエスト時に自動的にフォーマットをチェックできます。これにより、コード品質を向上できます。

Black
# Blackの基本
# コードのフォーマット
black main.py
# ディレクトリ全体のフォーマット
black src/
# 差分を表示
black --diff main.py
# チェックのみ(変更しない)
black --check main.py

Ruff

高速なLinter/フォーマッタ

Ruffは「高速なLinter/フォーマッタ」のようなもの。Rustで実装されており、非常に高速です。これにより、Lintとフォーマットを高速化できます。

なぜRuffが必要か?

Ruffは、高速なLintとフォーマットをするのに適しています。これにより、開発効率を向上できます。

いつ使うか?

  • 高速なLintを行う場合
  • 高速なフォーマットを行う場合
  • 大規模なプロジェクトを開発する場合
  • CI/CDパイプラインを最適化する場合

実践テクニック

設定ファイルを使う

設定ファイルを使うことで、Lintルールをカスタマイズできます。これにより、プロジェクトに適したルールを適用できます。

Blackと併用する

Blackと併用することで、Lintとフォーマットを分離できます。これにより、役割分担を明確にできます。

Ruff
# Ruffの基本
# Lintの実行
ruff check main.py
# 自動修正
ruff check --fix main.py
# フォーマット
ruff format main.py
# ディレクトリ全体のLint
ruff check src/

mypy

静的型チェッカー

mypyは「静的型チェッカー」のようなもの。型アノテーションに基づいて型のエラーを検出します。これにより、バグを早期に発見できます。

なぜmypyが必要か?

mypyは、型のエラーを早期に発見するのに適しています。これにより、コードの品質を向上できます。

いつ使うか?

  • 型のエラーを早期に発見する場合
  • 型アノテーションを使用する場合
  • 大規模なプロジェクトを開発する場合
  • チーム開発を行う場合

実践テクニック

厳格なモードを使う

厳格なモードを使うことで、より厳しく型チェックできます。これにより、型のエラーを徹底的に検出できます。

設定ファイルを使う

設定ファイルを使うことで、型チェックのルールをカスタマイズできます。これにより、プロジェクトに適したルールを適用できます。

mypy
# mypyの基本
# 型チェックの実行
mypy main.py
# 厳格なモード
mypy --strict main.py
# エラーを無視
mypy --ignore-missing-imports main.py
# 設定ファイルを使用
mypy main.py

合格ライン

Blackを使える
Ruffを使える
mypyを使える
コードフォーマットとツールの使い分けができる

演習課題

課題1: Blackの使用
Blackを使って、コードをフォーマットしてください。
課題2: Ruffの使用
Ruffを使って、Lintとフォーマットを行ってください。
課題3: mypyの使用
mypyを使って、型チェックを行ってください。

参考文献

この記事は以下の公的ガイドライン/標準に基づいています。