> ◆目次
>
> はじめに
> 本書はだれのために書かれたのか?
> 本書でカバーしている内容
> 本書を最大限に活かすために
> サンプルソースコードのダウンロード
> 本書の表記法
>
> 第1章 現在のPythonのステータス
> 1.1 今どこにいて、どこに向かおうとしているのか?
> 1.2 Python 2の扱い方
> 1.3 最新情報への追従
> 1.3.1 PEP文書
> 1.3.2 活動しているコミュニティ
> 1.3.3 その他のリソース
> 1.4 まとめ
>
> 第2章 現代的なPythonの開発環境
> 2.1 事前準備
> 2.2 Pythonのパッケージングエコシステム
> 2.2.1 pipコマンドを利用したPythonパッケージのインストール
> 2.3 実行環境の分離
> 2.3.1 アプリケーションレベルの分離とシステムレベルの分離
> 2.4 アプリケーションレベルの環境分離
> 2.4.1 Poetryによる依存パッケージ管理
> 2.5 システムレベルの環境分離
> 2.5.1 コンテナ化と仮想化
> 2.5.2 Dockerを使った仮想環境
> 2.5.3 Vagrantを使った仮想的な開発環境
> 2.6 人気のある生産性向上ツール
> 2.6.1 拡張インタラクティブセッション
> 2.6.2 IPythonを使う
> 2.6.3 スクリプトやプログラムにシェルを組み込む
> 2.6.4 インタラクティブ・デバッガ
> 2.6.5 その他の生産性向上ツール
> 2.7 まとめ
>
> 第3章 Pythonの新しい要素
> 3.1 事前準備
> 3.2 最近追加された言語機能
> 3.2.1 辞書のマージと更新の演算子
> 3.3 代入式
> 3.3.1 構造的パターンマッチ
> 3.3.2 型ヒントのジェネリック型
> 3.3.3 Union型と | 演算子
> 3.3.4 位置専用引数
> 3.3.5 zoneinfo モジュール
> 3.3.6 graphlib モジュール
> 3.4 新機能ではないが、依然として輝いている機能
> 3.4.1 breakpoint() 関数
> 3.4.2 開発モード
> 3.4.3 モジュールレベルの __getattr__() と __dir__() 関数
> 3.4.4 f-stringを使った文字列のフォーマット
> 3.4.5 数値リテラルのアンダースコア
> 3.4.6 secretsモジュール
> 3.5 まとめ
>
> 第4章 Pythonと他の言語の比較
> 4.1 事前準備
> 4.2 クラスモデルとオブジェクト指向プログラミング
> 4.2.1 スーパークラスへのアクセス
> 4.2.2 多重継承とメソッド解決順序
> 4.2.3 クラスインスタンスの初期化
> 4.2.4 属性アクセスのパターン
> 4.2.5 ディスクリプタ
> 4.2.6 プロパティ
> 4.3 動的ポリモーフィズム
> 4.3.1 演算子のオーバーロード
> 4.3.2 関数とメソッドのオーバーロード
> 4.4 データクラス
> 4.5 関数型プログラミング
> 4.5.1 ラムダ関数
> 4.5.2 map()、filter()、reduce()関数
> 4.5.3 部分オブジェクトとpartial()関数
> 4.5.4 ジェネレータ
> 4.5.5 ジェネレータ式
> 4.5.6 デコレータ
> 4.6 列挙型
> 4.7 まとめ
>
> 第5章 インターフェイス、パターン、モジュール化
> 5.1 事前準備
> 5.1.1 インターフェイス
> 5.1.2 簡単な歴史: zope.interface
> 5.1.3 関数アノテーションや抽象基底クラスを使用する
> 5.1.4 型アノテーションを使ったインターフェイス
> 5.2 制御の反転と依存性注入
> 5.2.1 アプリケーションにおける制御の反転
> 5.2.2 依存性注入フレームワークの利用
> 5.3 まとめ
>
> 第6章 並行処理
> 6.1 事前準備
> 6.2 並行性とは何か?
> 6.3 マルチスレッド
> 6.3.1 マルチスレッドとは?
> 6.3.2 Pythonはどのようにスレッドを扱うのか?
> 6.3.3 いつマルチスレッドを使うべきか?
> 6.3.4 マルチスレッドを使用したアプリケーション例
> 6.4 マルチプロセス
> 6.4.1 multiprocessing
> 6.4.2 プロセスプールを使う
> 6.4.3 マルチスレッドのためのmultiprocessing.dummy
> 6.5 非同期プログラミング
> 6.5.1 協調的マルチタスクと非同期I/O
> 6.5.2 Pythonにおける async と await
> 6.5.3 非同期プログラミングの実践例
> 6.5.4 Future を利用して同期コードを結合する
> 6.6 まとめ
>
> 第7章 イベント駆動プログラミング
> 7.1 事前準備
> 7.2 イベント駆動型プログラミングとは何か
> 7.2.1 イベント駆動 != 非同期
> 7.2.2 GUIにおけるイベント駆動プログラミング
> 7.2.3 イベント駆動通信
> 7.3 イベント駆動プログラミングのスタイル
> 7.3.1 Callback-basedスタイル
> 7.3.2 Subject-based スタイル
> 7.3.3 Topic-based スタイル
> 7.4 イベント駆動アーキテクチャ
> 7.4.1 イベントとメッセージキュー
> 7.5 まとめ
>
> 第8章 メタプログラミングの要素
> 8.1 事前準備
> 8.2 メタプログラミングとは何か?
> 8.3 デコレータを使って実行前の関数を変更する
> 8.3.1 さらなる深みへ: クラスデコレータ
> 8.4 クラスインスタンスの生成処理への割り込み
> 8.5 メタクラス
> 8.5.1 メタクラスの構文
> 8.5.2 メタクラスの使用例
> 8.5.3 メタクラスの落とし穴
> 8.5.4 メタクラスの代わりに __init_subclass__() メソッドを利用する
> 8.6 コード生成
> 8.6.1 exec, eval と compile
> 8.6.2 抽象構文木
> 8.6.3 importフック
> 8.6.4 Pythonによるコード生成の注目すべき例
> 8.7 まとめ
>
> 第9章 PythonとC/C++をつなぐ
> 9.1 事前準備
> 9.2 拡張モジュールの中心となるC/C++
> 9.3 拡張モジュールのコンパイルとロード
> 9.4 拡張モジュールを使う理由
> 9.4.1 コードのクリティカルな部分の性能を向上する
> 9.4.2 別の言語で書かれたコードを利用する
> 9.4.3 サードパーティーの動的ライブラリを利用する
> 9.4.4 効率の良い独自のデータ構造を作る
> 9.5 拡張モジュールを書く
> 9.5.1 ピュアC拡張モジュール
> 9.5.2 Cythonを使って拡張モジュールを書く
> 9.6 拡張モジュールのデメリット
> 9.6.1 増加する複雑さ
> 9.6.2 デバッグの難しさ
> 9.7 拡張モジュールを使わずに動的ライブラリを利用する
> 9.7.1 ctypesモジュール
> 9.7.2 CFFI
> 9.8 まとめ
>
> 第10章 テストと品質保証の自動化
> 10.1 事前準備
> 10.2 テスト駆動開発の原則
> 10.3 pytestを使ったテストの書き方
> 10.3.1 パラメータ化テスト
> 10.3.2 pytestのフィクスチャ
> 10.3.3 スタブの利用
> 10.3.4 モックとunittest.mockモジュール
> 10.4 品質保証の自動化
> 10.4.1 テストカバレッジ
> 10.4.2 スタイルフィクサーとコードリンター
> 10.4.3 静的型解析
> 10.5 ミューテーションテスト
> 10.6 便利なテストユーティリティ
> 10.6.1 リアルなデータのフェイク
> 10.6.2 時間のフェイク
> 10.7 まとめ
>
> 第11章 Pythonパッケージの作成と配布
> 11.1 事前準備
> 11.2 ライブラリのパッケージ作成と配布
> 11.2.1 Pythonパッケージの構造
> 11.2.2 パッケージ配布物の種類
> 11.2.3 パッケージの登録と公開
> 11.2.4 パッケージのバージョンと依存の管理
> 11.2.5 自分のパッケージをインストールする
> 11.2.6 名前空間パッケージ
> 11.2.7 パッケージスクリプトとエントリーポイント
> 11.3 Webアプリケーションのためのパッケージ作成
> 11.3.1 Twelve-Factor App 宣言
> 11.3.2 Dockerの有効性
> 11.3.3 環境変数の扱い
> 11.3.4 アプリケーションフレームワークにおける環境変数の役割
> 11.4 スタンドアローン実行形式の作成
> 11.4.1 スタンドアローン実行形式が便利なシーン
> 11.4.2 人気のあるツール
> 11.4.3 実行可能形式のパッケージにおけるPythonコードの難読化
> 11.5 まとめ
>
> 第12章 アプリケーションの挙動とパフォーマンスの監視
> 12.1 事前準備
> 12.2 エラーとログ情報の取得
> 12.2.1 Pythonのログの要点
> 12.2.2 良いログのプラクティス
> 12.2.3 分散ログ
> 12.2.4 あとで確認するためにエラーを取得する
> 12.3 カスタムメトリクス取得のためにコードに計装する
> 12.3.1 Prometheusを利用する
> 12.4 分散アプリケーションのトレーシング
> 12.4.1 Jaegerによる分散トレーシング
> 12.5 まとめ
>
> 第13章 最適化
> 13.1 事前準備
> 13.2 パフォーマンスの問題の原因
> 13.2.1 コードの複雑さ
> 13.2.2 過度なリソース確保とリーク
> 13.2.3 過剰なI/Oとブロッキング処理
> 13.3 コードのプロファイリング
> 13.3.1 CPU使用量のプロファイル
> 13.3.2 メモリ使用量のプロファイリング
> 13.4 正しいデータ構造を選び計算量を減らす
> 13.4.1 リストからの探索
> 13.4.2 setを使う
> 13.4.3 collectionsモジュールを使う
> 13.5 トレードオフを利用する
> 13.5.1 ヒューリスティックアルゴリズムや近似アルゴリズムを使う
> 13.5.2 タスクキューを使って遅延処理を行う
> 13.5.3 確率的データ構造を利用する
> 13.5.4 キャッシュ
> 13.6 まとめ
> 索引
>@shimizukawa - 午前11:10 · 2023年7月11日 『エキスパートPythonプログラミング 改訂4版』の見本きたーー!箱デカ、と思ったら2冊だった。それにしても分厚い!!
>584ページ 3900円です!4版は中身も相当濃いですよ!!