🚀 一度構築、どこでも開発 - モダンなPython開発環境をDocker + uvで実現
- 🔧 フル開発ツールセット: uv, ruff, pytest, mypy, vulture, safety, bandit
- 🐳 Dockerによる環境統一
- 📦 テンプレートで即座にプロジェクト開始
- 💾 容量効率的な差分管理
- 🤖 Claude Code & Gemini CLI対応
- 🔄 自動依存関係更新: 週次で最新ライブラリに更新
- 🛡️ セキュリティ重視: pre-commit hooks + セキュリティスキャン
- 📋 AI開発支援: CLAUDE.mdによる開発ルール定義
# 便利なCLIツールをインストール
./scripts/install-dev-cli.sh
# 即座に開発開始!
./scripts/dev.sh shell
# または エイリアス使用(インストール後)
pydev shell# 1. ベース環境のビルド
cd base && ./build.sh
# 2. 開発環境を起動(現在のディレクトリをマウント)
docker run -it --rm -v $(pwd):/workspace modern-python-base:latest
# 3. 新プロジェクト作成
./scripts/create-project.sh my-project minimal
cd my-project
# 4. 開発開始!
docker compose up -d
docker compose exec dev bashmodern-python-devenv/
├── README.md # 使い方説明
├── LICENSE # MIT推奨
├── base/ # ベース環境
│ ├── Dockerfile # Python 3.12 + uv + 開発ツール
│ ├── compose.yml # Docker Compose設定
│ └── build.sh # ビルドスクリプト
├── templates/ # プロジェクトテンプレート
│ ├── minimal/ # 最小構成
│ ├── webapp/ # FastAPI + SQLAlchemy
│ ├── datascience/ # Pandas + Jupyter
│ ├── ml/ # PyTorch + Transformers
│ └── cli/ # Click + Rich
├── scripts/ # ユーティリティスクリプト
│ ├── create-project.sh # 新プロジェクト作成
│ ├── update-base.sh # ベース更新
│ └── install.sh # セットアップスクリプト
└── docs/ # (現在整理中)
| テンプレート | 説明 | 主要パッケージ |
|---|---|---|
minimal |
最小構成 + 全開発ツール + CLI対応 | ruff, pytest, mypy, vulture, safety, bandit |
webapp |
Web API開発 | FastAPI, SQLAlchemy, Pydantic |
datascience |
データ分析 | Pandas, NumPy, Jupyter |
ml |
機械学習 | PyTorch, Transformers, Scikit-learn |
cli |
CLI開発 | Click, Rich, Typer |
# 基本的な使い方
./scripts/create-project.sh <プロジェクト名> <テンプレート>
# 例: FastAPI Webアプリケーション
./scripts/create-project.sh my-api webapp
# 例: データサイエンスプロジェクト
./scripts/create-project.sh analysis datasciencecd my-project
# 開発環境を起動
docker compose up -d dev
# CLIツールをインストール(初回のみ)
docker compose exec dev ./setup-cli.sh
# 開発環境に接続
docker compose exec dev bashcd my-project
# 自動CLIツールセットアップ付き開発環境
./run-with-cli.sh# Dockerで開発環境起動
docker build -t my-project-dev .
docker run -it --rm -v $(pwd):/workspace my-project-dev
# または VS Code Dev Containersを使用
code . # .devcontainer/devcontainer.json が自動認識される# ベースイメージを最新に更新
./scripts/update-base.shtemplates/に新しいディレクトリを作成- 必要なファイルを配置
Dockerfilepyproject.toml.devcontainer/devcontainer.json
scripts/create-project.shを更新
base/Dockerfile を編集して、共通で使用したいパッケージを追加:
# 例: 追加パッケージのインストール
RUN uv pip install --system \
pandas \
requests \
python-dotenv週次で自動的に依存関係を最新バージョンに更新します:
- 自動実行: 毎週月曜日 9:00 UTC
- 手動実行: GitHub Actionsから手動トリガー可能
- PR自動作成: 更新内容をPRで確認・承認
- safety: 既知の脆弱性をチェック
- bandit: コードの潜在的セキュリティ問題を検出
- pre-commit hooks: コミット前の自動チェック
- 秘匿情報の環境変数管理
- 入力値検証の強制
- SQLインジェクション対策
- ログ出力時の秘匿情報除外
完全なCI/CDパイプラインを標準で提供:
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: uv sync --all-extras --dev
- name: Run all checks
run: |
uv run ruff format --check .
uv run ruff check .
uv run mypy src/
uv run vulture src/
uv run safety check
uv run bandit -r src/
uv run pytest --cov=src- Python 3.12 + uv (高速パッケージマネージャー)
- pytest, pytest-cov, pytest-mock (テスト)
- ruff, black, mypy (コード品質)
- safety, bandit (セキュリティ)
- Node.js v20 + npm
- Claude Code CLI (コード生成・レビュー)
- Gemini CLI (AI支援)
# 1. プロジェクト開始
docker run -it --rm -v $(pwd):/workspace modern-python-base:latest
# 2. 依存関係管理
uv add requests fastapi
uv remove package-name
# 3. コード品質チェック
ruff check .
black .
mypy .
# 4. テスト実行
pytest --cov=src tests/
# 5. セキュリティチェック
safety check
bandit -r src/テンプレートには2つのアプローチが含まれています:
- 🔧 設定永続化: CLI設定がコンテナ再起動後も保持
- 🔐 認証永続化: ログイントークンが自動保存
- 📦 プロジェクト分離: 各プロジェクトが独立したCLI環境を維持
- ⚡ 高速起動: 再インストール不要
# エイリアスを設定(~/.bashrc または ~/.zshrc に追加)
alias pydev='docker run -it --rm -v $(pwd):/workspace modern-python-base:latest'
alias pydev-bg='docker run -d --name pydev-$(basename $(pwd)) -v $(pwd):/workspace modern-python-base:latest tail -f /dev/null'
alias pydev-connect='docker exec -it pydev-$(basename $(pwd)) bash'現在、DockerビルドプロセスでGPG署名エラーが発生する問題があります:
問題: libseccomp互換性問題により、Debian Bookwormでのapt-get操作が失敗
解決策:
- 最小ベース + 実行時CLIツールインストールアプローチを採用
- CLIツールは
setup-cli.shスクリプトまたはrun-with-cli.shで自動インストール - ベースイメージは
python:3.12-slimを使用し、必要最小限のツールのみを含む
- Docker
- Git
- Bash (Windows の場合は WSL2 推奨)
- 十分なディスク容量(Docker イメージとボリューム用)
- Fork このリポジトリ
- Feature branch作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Pull Request作成
MIT License. 詳細は LICENSE を参照してください。