- はじめに
- 各個別設定を紹介
- やっていないこと
- 改善点
--
- 質問、疑問などありましたら随時声かけてください
- チャットでも OK
--
- Python でシステムを作る際の開発環境を紹介
- PJ メンバーはシステム開発経験が少ない事を想定
- 環境構築の難易度は低い
- PJ としての統一を優先
- 自由度は低い
--
- 後から追加するのは難しい
- PJ 開始時からある程度の設定をしておく
--
https://github.com/yamap55/python_repository_simple
--
- Docker で開発環境作成
- その環境で開発
- その環境でデバック
- ローカルは綺麗なまま
- VS Code の設定、拡張機能も統一
--
https://github.com/yamap55/python_repository_simple/blob/master/.devcontainer/devcontainer.json
--
- Git, VS Code だけあればよい
- VS Code の設定や拡張機能も設定済み
- Lint, Pytest も動く
--
.vscode/setting.json
は .gitignore に含めている- 拡張機能もローカルのものが使用可能
--
- 絶対必要なものだけ
- font、icon、色など個人の好みは設定しない
- 開発者が良いと思ったのはチームで検討して取り入れる
- Python3.8
https://github.com/yamap55/python_repository_simple/blob/master/.flake8
--
- 設定は設定ファイルに記載
- 指摘を残さないように設定
- docstring を強制
- flake8-docstrings
- ダブルクォート
- flake8-quotes
- ファイル保存時に強制起動
- CI で実行
--
- 基本は black に従う
- 1 行の文字数だけ緩和
- ファイル保存時に強制起動
- CI で実行
- チェックだけ
--
- 色々便利
- 以前の資料
--
- 型チェック
- Pylance は Pyright を内包
--
- Pylance の補完が便利なので型は基本
- Pylance は VS Code の拡張機能なので CI での実行は Pyright を使用
- Stub を入れる
- まだ、すべては強制できない
- 指摘を残さないように設定
--
- Python は動的型付け言語
- 型が指定されていないライブラリは多い
- 型を定義可能
- pandas や numpy もある
https://github.com/yamap55/python_repository_simple/blob/master/pytest.ini
--
- 設定は設定ファイルに記載
- カバレッジ
- pytest-cov
- 遅いテストを意識
- CI で実行
- ここでは設定していないが、Warning を Error と扱う事も検討したほうが良い
https://github.com/yamap55/python_repository_simple/tree/master/.github/workflows
--
- push 時に CI で実行
- PR の画面から遷移しなくてすむようにreviewdogを活用
https://github.com/yamap55/python_repository_simple/blob/master/.github/dependabot.yml
--
- ライブラリのバージョンはアップデートを忘れがち
- 脆弱性など大きな障害が発生する前にこまめなアップデートを行う
https://github.com/yamap55/python_repository_simple/blob/master/docker-compose.yml
--
- RDB など何らかのアプリケーションを追加する事が多いので compose で構築
- 環境変数はほぼ必ず使用されるので
.env
で管理
https://github.com/yamap55/python_repository_simple/blob/master/logging.conf
--
- 後回しにされがちなので最初に定義
- 形式は ini 形式だが、yaml や dict はお好み?
- dict を使用するほうが新しいとのこと
- docstring の build
- pip
- pyproject.toml
- flake8 が非対応
- shell, dockerfile などの linter 追加
- shellcheck, hadolint など
- dockerfile に対して Dependabot 設定
- textlint
- VS Code 拡張機能の選別