TL;DR
Pythonコードをクラス・関数ごとに分割し、自動でGitコミットするツールを作りました。
背景
開発現場では、1つのPythonファイルに数千行のコードが詰め込まれ、複数のクラスや関数が混在していることがよくあります。
このような巨大なファイルでは、目的のクラス定義を探すのが大変です。
課題
クラスごとにファイルを分割すれば可読性は向上しますが、既存の長大なコードを手作業で整理するのは非常に手間がかかります。
さらに、コードを分割した後も、コードレビューをしやすくする必要があります。
また、クラスを移動した場合、外部からの参照が壊れないようにする対応も求められます。
ツールの紹介
そこで開発したのが python-code-splitter です。
インストール
pip install python-code-splitter
使い方
分割したいPythonファイルを指定するだけです。
python-code-splitter path/to/file.py
実行すると、path/to/file/
ディレクトリが作成され、各クラスは個別のファイルに分割されます。
例えば、SampleClass
というクラスが含まれていた場合、file
ディレクトリ下にsample_class.py
というファイルが作成され、そこにクラスの定義が移動します。
実行前
└── path
└── to
└── file.py
実行後
└── path
└── to
└── file
├── __init__.py
└── sample_class.py
また、移動後も元のコードが正しく動作するよう、
__init__.py
に SampleClass
の import
が自動で追加されます。
Gitとの連携
--git
オプションを付けると、分割ごとにGitコミットを自動作成し、
ファイルパスに応じて適切なブランチも作成されます。
python-code-splitter path/to/file.py --git
特定のターゲットのみ移動
--targets
オプションを使用すると、クラス定義のみを分割できます。
python-code-splitter path/to/file.py --targets class
まとめ
python-code-splitter を使えば、
大規模なPythonコードを効率的に分割し、Gitのコミット履歴もレビューしやすい単位にできます。
ぜひ試してみてください!