ハイパーモダン(hypermodern)という言葉は20世紀初頭を代表するチェスプレーヤーたちが考案した、当時モダンであると考えられていたオープニング戦略を超える斬新な戦略に由来するものです。本書はPythonを使った開発におけるハイパーモダンな戦略を提示します。Poetry、Nox、pytest、Ruff、uv、Ryeといった新しいツールを活用して、ワークフローをさらに効率化し、堅牢かつ信頼性の高いプロジェクトにする手法を紹介します。ハイパーモダンな戦略を通じて、開発において本当に重要なことを学べる1冊です。
ハイパーモダンPython
―信頼性の高いワークフローを構築するモダンテクニック
Claudio Jolowicz 著、嶋田 健志、鈴木 駿 訳
- TOPICS
- Python
- 発行年月日
- 2024年09月
- PRINT LENGTH
- 288
- ISBN
- 978-4-8144-0092-8
- 原書
- Hypermodern Python Tooling
- FORMAT
- Print PDF EPUB
目次
訳者まえがき はじめに Ⅰ部 インストールと環境 1章 Pythonのインストール 1.1 複数のPythonのバージョンをサポートする 1.2 Pythonインタプリタを探す 1.3 WindowsにPythonをインストールする 1.4 Windows用Python 1.5 macOSにPythonをインストールする 1.5.1 HomebrewのPython 1.5.2 python.orgのインストーラ 1.6 LinuxにPythonをインストールする 1.6.1 Fedora 1.6.2 Ubuntu 1.6.3 その他のLinuxディストリビューション 1.7 Unix用Python 1.8 pyenvによるPythonのインストール 1.9 AnacondaからPythonをインストールする 1.10 挑戦的な新しい世界:HatchとRye 1.11 インストーラの概要 1.12 まとめ 2章 Python環境 2.1 早わかりPython環境 2.1.1 Pythonのインストール 2.1.2 ユーザごとの環境 2.1.3 仮想環境 2.2 pipxによるアプリケーションのインストール 2.2.1 pipxの使い方 2.2.2 pipxのインストール 2.2.3 pipxによるアプリケーションの管理 2.2.4 pipxによるアプリケーションの実行 2.2.5 pipxの構成 2.3 uvによる環境の管理 2.4 Pythonモジュールの検索 2.4.1 モジュールオブジェクト 2.4.2 モジュールキャッシュ 2.4.3 モジュールスペック 2.4.4 ファインダとローダ 2.4.5 モジュールパス 2.4.6 サイトパッケージ 2.4.7 初心に帰る 2.5 まとめ Ⅱ部 Pythonプロジェクト 3章 Pythonパッケージ 3.1 パッケージのライフサイクル 3.2 Wikipediaサンプルプロジェクト 3.3 なぜパッケージングするのか 3.4 pyproject.toml 3.5 buildを使ったパッケージの作成 3.6 Twineを用いたパッケージのアップロード 3.7 ソースからプロジェクトをインストールする 3.8 プロジェクトレイアウト 3.9 Ryeによるパッケージ管理 3.10 wheelとsdist 3.11 プロジェクトメタデータ 3.11.1 プロジェクト名 3.11.2 プロジェクトのバージョニング 3.11.3 ダイナミックフィールド 3.11.4 エントリポイントスクリプト 3.11.5 エントリポイント 3.11.6 作成者とメンテナ 3.11.7 プロジェクトの説明とREADME 3.11.8 キーワードとクラス分類子 3.11.9 プロジェクトURL 3.11.10 ライセンス 3.11.11 要求されるPythonのバージョン 3.11.12 必須の依存関係とオプショナルな依存関係 3.12 まとめ 4章 依存関係の管理 4.1 アプリケーションに依存関係を追加する 4.1.1 httpxでAPIを利用する 4.1.2 Richによるコンソール出力 4.2 プロジェクトの依存関係の指定 4.2.1 バージョン指定子 4.2.2 エクストラ 4.2.3 環境マーカー 4.3 開発依存パッケージ 4.3.1 例:pytestを使ったテスト 4.3.2 オプショナルな依存関係 4.3.3 requirementsファイル 4.4 依存関係をロックする 4.4.1 pipとuvによる依存関係のフリーズ 4.4.2 pip-toolsとuvでrequirementsをコンパイルする 4.5 まとめ 5章 Poetryによるプロジェクト管理 5.1 Poetryのインストール 5.2 プロジェクトの作成 5.2.1 プロジェクトメタデータ 5.2.2 パッケージコンテンツ 5.2.3 ソースコード 5.3 依存関係の管理 5.3.1 キャレットの制約 5.3.2 エクストラと環境マーカー 5.3.3 ロックファイル 5.3.4 依存関係の更新 5.4 環境の管理 5.5 依存関係グループ 5.6 パッケージリポジトリ 5.6.1 パッケージリポジトリにパッケージを公開する 5.6.2 パッケージソースからのパッケージの取得 5.7 プラグインによるPoetryの拡張 5.7.1 Export 5.7.2 Bundle 5.7.3 ダイナミックバージョニングプラグイン 5.8 まとめ Ⅲ部 テスト、静的解析、自動化 6章 pytestによるテスト 6.1 テストを書く 6.2 テストの依存関係 6.3 テストしやすい設計 6.4 フィクスチャとパラメタライズテスト 6.5 フィクスチャの上級テクニック 6.6 プラグインによるpytestの拡張 6.6.1 pytest-httpserverプラグイン 6.6.2 pytest-xdistプラグイン 6.6.3 factory-boyとfaker 6.6.4 その他のプラグイン 6.7 まとめ 7章 Coverage.pyによるカバレッジ測定 7.1 Coverage.pyを使う 7.2 分岐カバレッジ 7.3 複数の環境におけるテスト 7.4 並列カバレッジ 7.5 サブプロセスにおける測定 7.6 カバレッジが目指すもの 7.7 まとめ 8章 Noxによる自動化 8.1 最初のステップ 8.2 セッション 8.3 複数のPythonインタプリタで動かす 8.4 セッション引数 8.5 カバレッジの測定 8.6 セッションの通知 8.7 サブプロセスにおけるカバレッジ測定 8.8 パラメタライズセッション 8.9 セッションの依存関係 8.10 PoetryプロジェクトでNoxを使う 8.11 nox-poetryによる依存関係のロック 8.12 まとめ 9章 Ruffとpre-commitによるリント 9.1 リンタの基礎 9.2 Ruffリンタ 9.2.1 PyflakesとPycodestyle 9.2.2 素晴らしいリンタとその入手先 9.2.3 ルールと警告の無効化 9.2.4 Noxによる自動化 9.3 pre-commitフレームワーク 9.3.1 pre-commitの初歩 9.3.2 フックの内部動作 9.3.3 自動修正 9.3.4 Noxからpre-commitを実行する 9.3.5 Gitからpre-commitを実行する 9.4 Ruffフォーマッタ 9.4.1 コードフォーマットのアプローチ:autopep 9.4.2 コードフォーマットのアプローチ:YAPF 9.4.3 妥協を許さないコードフォーマッタ 9.4.4 Blackコードスタイル 9.4.5 Ruffによるフォーマット 9.5 まとめ 10章 安全性とインスペクションのための型アノテーション 10.1 型アノテーションの利点とコスト 10.2 型付け言語の概略 10.2.1 変数アノテーション 10.2.2 部分型 10.2.3 Union型 10.2.4 漸進的型付け 10.2.5 関数アノテーション 10.2.6 クラスアノテーション 10.2.7 型エイリアス 10.2.8 型ジェネリック 10.2.9 プロトコル 10.2.10 古いPythonとの互換性 10.3 mypyによる静的型チェック 10.3.1 mypyの初歩 10.3.2 Wikipedia再び 10.3.3 Strictモード 10.3.4 Noxによるmypyの自動化 10.3.5 型付きPythonパッケージの配布 10.3.6 テストに対する型チェック 10.4 型アノテーションの実行時インスペクション 10.4.1 @dataclassデコレータを自作する 10.4.2 実行時型チェック 10.4.3 cattrsによる構造化 10.5 Typeguardによる実行時型チェック 10.6 まとめ 索 引