PyCon JP 2025 Logo
広島国際会議場
JPEN
Satoshi Kaneyasu

Satoshi Kaneyasu

複雑化したリポジトリをなんとかした話、pipenvからuvによるモノレポ構成への移行

ラン日本語
04:30 - 05:0030min
DAY 1
09/26
FRI

Pythonを用いた開発において、途中からuvを採用したモノレポ構成へ移行した際の道のりを共有します。 私のプロジェクトでは、当初pipenvを用いてシンプルなリポジトリで開発を始めましたが、開発が進むにつれ、リポジトリに性質の異なるモジュールが生まれ、開発の属人化・デプロイ手順の複雑化・それに伴うCI/CDパイプラインのメンテナンスコストの上昇が見られるようになりました。 これに対して、リポジトリの構成を見直し、uvを使用したモノレポ構成に変更することを決めました。 本セッションでは、この経験をもとにモノレポ構成への変更を決めた要因、構成変更の方針の立て方、変更の過程における対処方法、作業における生成AIの活用方法、構成変更によるメリットとデメリット、その対処法についてお話しします。

リポジトリ構成に課題を感じている方、チームでの開発効率やCI/CDの運用改善に関心のある方に、ヒントや具体的な実践例を持ち帰っていただける内容を目指しています。


トーク詳細 / Description

本セッションでは、Python開発プロジェクトにおいて、当初の pipenv によるシンプルな構成から、uv を活用したモノレポ構成へと移行した道のりと、その工夫についてお話しします。
以下のような流れで、実際に直面した課題と、それに対する技術的・運用的な解決策を紹介します。

  • pipenv を用いた初期構成
    開発初期に選択した環境構成と、その背景について説明します。

  • 開発が進むにつれて顕在化した課題
    要件の変化、開発者の増減、思想の変化などにより発生した、属人化・手順の複雑化・CI/CD のメンテナンス負荷といった具体的な課題についてお話しします。

  • なぜモノレポ構成を目指すのか
    構成見直しの狙いや、許容したリスクについてお話しします。

  • 構成変更のスケジューリング
    構成変更は完全な切り替えではなく、段階的に進めています。構成変更のプロセスと、その判断基準について触れます。

  • uv にタスクランナーがない問題への対応
    pipenv や poetry にある「スクリプト定義」が uv には存在しません。途中段階で採用した代替手段と、最終的な落とし所についてお話しします。

  • 既存のリンターやフォーマッターの統合方法
    構成変更に伴い、リンターやフォーマッターも見直すかどうかを検討しました。こちらも途中段階での対応と、最終的な落とし所についてお話しします。

  • デプロイ手順の見直しと CI/CD の再設計
    パイプラインが肥大化していた状態から、構成変更によってメンテナンスしやすい形に再構築したアプローチを紹介します。

  • 構成変更作業における生成 AI の活用
    ディレクトリ構成の変更、デプロイスクリプトの作成、デプロイの検証といった場面で生成 AI を活用した例を紹介します。

  • 「共通モジュール」の扱い
    モノレポ構成にしたことで重複コードが目立つようになり、共通モジュールの作成を決めました。しかし、共通モジュールはそれ自体がモノレポ構成内の各モジュールからの読み込みに苦労する要因となったため、その対策を共有します。

Satoshi Kaneyasu

Satoshi Kaneyasu

プロフィール