Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐍 Modern Python Development Environment

Docker uv

🚀 一度構築、どこでも開発 - モダンな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 bash

📁 プロジェクト構成

modern-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 datascience

開発環境起動

Option A: Docker Compose with CLI Tools(推奨)

cd my-project

# 開発環境を起動
docker compose up -d dev

# CLIツールをインストール(初回のみ)
docker compose exec dev ./setup-cli.sh

# 開発環境に接続
docker compose exec dev bash

Option B: Enhanced CLI Script

cd my-project

# 自動CLIツールセットアップ付き開発環境
./run-with-cli.sh

Option C: 基本的なDocker使用

# 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.sh

🔧 カスタマイズ

テンプレートの追加

  1. templates/ に新しいディレクトリを作成
  2. 必要なファイルを配置
    • Dockerfile
    • pyproject.toml
    • .devcontainer/devcontainer.json
  3. 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対応

完全な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開発環境

  • Python 3.12 + uv (高速パッケージマネージャー)
  • pytest, pytest-cov, pytest-mock (テスト)
  • ruff, black, mypy (コード品質)
  • safety, bandit (セキュリティ)

Node.js環境

  • Node.js v20 + npm

AIツール

  • 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/

🔧 CLIツールの自動インストール

永続化されたCLI環境

テンプレートには2つのアプローチが含まれています:

1. 設定の永続化

  • 🔧 設定永続化: CLI設定がコンテナ再起動後も保持
  • 🔐 認証永続化: ログイントークンが自動保存
  • 📦 プロジェクト分離: 各プロジェクトが独立したCLI環境を維持
  • 高速起動: 再インストール不要

2. 便利なワンライナー

# エイリアスを設定(~/.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 Build制限事項

現在、DockerビルドプロセスでGPG署名エラーが発生する問題があります:

問題: libseccomp互換性問題により、Debian Bookwormでのapt-get操作が失敗

解決策:

  1. 最小ベース + 実行時CLIツールインストールアプローチを採用
  2. CLIツールはsetup-cli.shスクリプトまたはrun-with-cli.shで自動インストール
  3. ベースイメージはpython:3.12-slimを使用し、必要最小限のツールのみを含む

📋 要件

  • Docker
  • Git
  • Bash (Windows の場合は WSL2 推奨)
  • 十分なディスク容量(Docker イメージとボリューム用)

🤝 貢献

  1. Fork このリポジトリ
  2. Feature branch作成 (git checkout -b feature/amazing-feature)
  3. 変更をコミット (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Pull Request作成

📄 ライセンス

MIT License. 詳細は LICENSE を参照してください。

🙏 謝辞

  • uv - 高速なPythonパッケージマネージャ
  • ruff - 高速なPythonリンター
  • Docker - コンテナ化プラットフォーム

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages