😃

新卒エンジニア必見!チームでPythonを効果的に使うためのガイド

2024/09/28に公開

はじめに

こんにちは!株式会社ヘッドウォータースの新卒1年目の矢野と申します。
Pythonはその読みやすさから多くの開発者に選ばれていますが、チームでの開発では特に注意すべきポイントがあります。最近、初の案件に参加したのですがプロジェクトでコーディングをする際に、「最初に知っておきたかった!」と感じた事を書いていきたいと思います。

1. コーディング規約の統一

PEP 8に準拠したコーディングスタイルの採用

Pythonの公式スタイルガイドであるPEP 8に準拠することは、チーム内でのコードの一貫性を保つ上で非常に重要です。例えば、インデントにはスペース4つを使用し、行の最大長は79文字に制限するなどのルールがあります。これにより、コードの可読性が大幅に向上します。

PEP 8の詳細については、以下のリンクから確認できます:https://pep8-ja.readthedocs.io/ja/latest/#id8

linterツールの使用

flake8やpylintなどのLinterツールを導入することで、コーディングスタイルが自動的にチェックされ、一貫性のあるコード品質を維持できます。これらのツールは、コードの誤りやスタイル違反を早期に発見するのに役立ちます。

flake8

flake8はPythonコードのスタイルと品質をチェックするためのツールで、PEP 8ガイドラインに基づいたスタイルチェック、プログラムエラーの検出、複雑すぎるコードの識別などを行います。flake8はプラグインをサポートしており、カスタムチェックを追加することができます。例えば、次のコマンドを使用してflake8をインストールし、プロジェクトディレクトリでコードをチェックすることができます:

pip install flake8
flake8 path/to/your/code

pylint

pylintはもう一つの強力なPythonコード分析ツールで、flake8よりも厳格で詳細なチェックを行います。コーディングスタンダード、エラータイプ、リファクタリングの提案などを提供し、コードの保守性を向上させるための詳細なレポートを生成します。pylintは特に大規模なプロジェクトや、より厳密なコード品質が求められる環境に適しています。以下のようにしてpylintを使用します:

pip install pylint
pylint your_module.py

2. プロジェクト固有の環境変数と関数の確認の重要性

環境変数と関数の整理例

まず、以下のような架空のプロジェクトディレクトリ構造を考えてみます。

/my_project
│
├── /config
│   ├── env_variables.py
│   └── settings.py
│
├── /src
│   ├── utils.py
│   ├── main.py
│   └── tasks.py
│
├── .env
├── README.md
└── requirements.txt

上記のディレクトリ構造では、/configディレクトリに環境変数や設定ファイルを配置し、/srcディレクトリには実際のソースコードを格納しています。環境変数を.envファイルで管理し、Pythonコード内でそれを参照する形式です。

良い例:環境変数の管理

# config/env_variables.py
import os
from dotenv import load_dotenv

load_dotenv()

# 環境変数の読み込み
DATABASE_URL = os.getenv("DATABASE_URL")
API_KEY = os.getenv("API_KEY")

環境変数は.envファイルで定義され、コードから簡単に参照できるようになっています。これにより、異なる環境(開発、テスト、本番)ごとに環境変数を変更することで、同じコードを使用しつつ異なる設定で実行できます。

悪い例:ハードコーディングされた設定

# 悪い例 - 設定がハードコーディングされている
DATABASE_URL = "postgresql://user:password@localhost:5432/mydb"
API_KEY = "abcdef123456"

この例では、データベース接続情報やAPIキーがコード内にハードコーディングされており、環境ごとに設定を変更するたびにコードを編集する必要があります。また、セキュリティのリスクも増大します。

関数の整理と確認の重要性

関数をモジュールごとに適切に分けることも重要です。例えば、utils.pyには再利用可能なユーティリティ関数を、tasks.pyにはタスク関連の関数を配置することで、コードが整理され、保守がしやすくなります。

良い例:再利用可能な関数

# src/utils.py
def calculate_sum(a, b):
    return a + b

この関数は、プロジェクト内のさまざまな部分で再利用することができ、不要なコードの重複を避けることができます。

悪い例:コードの重複

# src/main.py
def calculate_sum(a, b):
    return a + b

# src/tasks.py
def calculate_sum(a, b):
    return a + b

同じ関数が複数のファイルに重複して定義されていると、保守が難しくなり、バグの原因になる可能性があります。

環境変数や関数を確認するためにやること

  1. 環境変数は.envファイルで一元管理し、プロジェクトの異なる環境で使用する設定を明確に分けましょう。
  2. 関数はモジュールごとに整理し、再利用可能なコードを一つの場所にまとめることで、重複を避けることが重要です。
  3. プロジェクトのドキュメントに環境変数や関数の使い方や役割を明記してあるファイルを探しましょう。
ヘッドウォータース

Discussion