概要
- Python を本格的に使い始めた理由と、その魅力の再発見。
- AI開発 や「現場投入」レベルのPythonアプリ構築で感じたギャップ。
- プロジェクト構成 や推奨ツール・ライブラリの紹介。
- 実践的な設定例 やワークフローの共有。
- 個人の経験に基づく 強い主観を含む内容。
Pythonを本気で使い始めた理由と進化の実感
- AIブーム による巨大なビジネスチャンスの到来。
- AI分野のデファクト言語 としてのPythonの地位。
- 以前は 小規模なスクリプト作成 用途が主だったが、AIアプリ開発を機に本格利用。
- VSCodeとの親和性 や、Unix系OSへの標準搭載による利便性。
- Pythonエコシステムの進化 (ライブラリ・ツールの充実、速度向上、モダンな文法)。
- 例:Cythonによる高速化、__init__などのレガシー要素の隠蔽。
プロダクション用途とスクリプト用途のギャップ
- Jupyter Notebookや簡易スクリプト と 本番運用アプリ の間に大きな差。
- 本番向け開発 に必要なツール・構成・ワークフローの重要性。
プロジェクト構成の好みと理由
- モノレポ (フロントエンド+バックエンドを単一リポジトリで管理)推奨。
- 複数リポジトリは検索性や管理性が悪化。
- 一人開発なら分割は不要、シンプルさ重視。
- プロジェクト自動生成ツール の理想像を模索中(CCDSはDS向けでフルスタックにはやや不向き)。
- 典型的なプロジェクト構成例:
- .github/:GitHub ActionsやDependabot設定
- .vscode/:VSCode用設定
- docs/:ドキュメント(MkDocs利用)
- project-api/:バックエンドAPI(FastAPI等)
- data/:データセットや静的ファイル
- notebooks/:Jupyterノートブック
- tools/:開発・デプロイ用スクリプト
- src/app/:アプリ本体
- src/tests/:テストコード
- project-ui/:フロントエンド(Next.js, React等)
- 各種設定ファイル(Dockerfile, Makefile, pyproject.toml, .gitignore, .pre-commit-config.yaml など)
- 命名規則 は短く・ハイフン区切り、snake_caseは避ける。
- フロントエンドとバックエンドは責務分離、重い処理はAPIサーバー側へ。
Pythonツールボックス
- uv :高速なパッケージ管理&ビルドツール
- 依存関係管理・仮想環境作成・インストール・ビルドを一元化
- 主要コマンド例:uv init, uv add, uv sync, uv venv activate
- 重要ファイル:pyproject.toml
- ruff :超高速リンター&フォーマッター
- isort, flake8, autoflakeなどを統合
- PEP8準拠
- ty :静的型チェックツール
- typingモジュールと組み合わせて型安全性向上
- Astral製(uv, ruffも同社製)
- pytest :標準的なテストフレームワーク
- シンプルなテスト記述・豊富なプラグイン
- テスト実行例:uv run pytest
- Pydantic :データ検証&設定管理
- 環境変数や.envから設定を自動読み込み・型検証
- 例:BaseSettings継承クラスで設定管理
- MkDocs :静的ドキュメントサイト生成
- OSSプロジェクトのデザインを流用しやすい
- FastAPI :高速API構築フレームワーク
- Starlette, Pydanticベースでパフォーマンス・型安全性に優れる
- dataclasses :データ格納用クラスの簡易定義
- __init__や__repr__などの自動生成でボイラープレート削減
バージョン管理とCI/CD
- GitHub Actions :CI/CDパイプライン自動化
- OSごとのテスト・ビルドを簡単に設定
- 例:Dockerコンテナ内でpytest実行
- Dependabot :依存パッケージの自動アップデート
- .github/dependabot.ymlで設定
- Gitleaks :機密情報のコミット防止
- APIキーやパスワード漏洩対策
- pre-commit :コミット前フックで静的解析や整形を自動実行
- ruffやgitleaksとの組み合わせ推奨
まとめとコメント募集
- 紹介したツール・構成は筆者の主観が強い が、実際の開発で役立ったものばかり。
- 他におすすめのツールや工夫があれば、ぜひコメントで共有してほしい。