Expert Python Programming の目次の和訳¶
Tarek Ziadé 著の Expert Python Programming の目次を和訳しました。Pythonの初心者向けではなく、何かの言語(Python, Ruby, Perl, ...)を理解している人がPythonを取り巻く開発環境、作法などを理解するのにとても良い本だと思います。
本は以下から購入できます。PACKTのサイトからは 10章: プロジェクトの文書化 が丸々1章分DL出来ます。
自分はPACKTで購入して、紙の本とPDFとセット購入で45$でした。PDFには注文者の住所と名前が全ページに印字されます。紙の本はシンガポールでオンデマンド印刷されて1ヶ月くらいで手元に届きました。
Tarek自身による紹介文
目次(英語) の内容を和訳しました。1時間ちょっとで訳したので間違い等あると思います。指摘歓迎。
エキスパートPythonプログラミング¶
目次¶
序文¶
1章: 始めよう¶
- Pythonのインストール
- Pythonの実装系
- Jython 
- IronPython 
- PyPy 
- その他の実装 
 
 
- Linux へのインストール
- パッケージインストール 
- ソースコンパイル 
 
 
- Windows へのインストール
- Python のインストール 
- MinGW のインストール 
- MSYS のインストール 
 
 
- Mac OS X へのインストール
- パッケージインストール 
- ソースコンパイル 
 
 
 
 
- Python プロンプト
- インタラクティブプロンプトのカスタマイズ
- iPython: より良いプロンプト 
 
 
 
 
- setuptools のインストール
- 動作原理を理解する 
- EasyInstallを使ったsetuptoolsのインストール 
- distutilsにMinGWのフックを入れる 
 
 
- 作業環境
- エディターと補助ツールを使う
- コードエディター 
- Vimのインストールと設定 
- その他のエディタを使う 
- その他のバイナリ 
 
 
- 統合開発環境を使う
- PyDev と Eclipse を使う 
 
 
 
 
- 要約 
2章: 構文ベストプラクティス - クラスの世界¶
- リスト内包表記 
- イテレータとジェネレータ
- ジェネレータ 
- コルーチン 
- ジェネレータ表現 
- itertools モジュール
- islice: The Window Iterator 
- tee: The Back and Forth Iterator 
- groupby: The uniq Iterator 
- その他の関数 
 
 
 
 
- デコレータ
- デコレータの書き方 
- 引数チェック 
- キャッシュ 
- プロキシ 
- コンテキストプロバイダ 
 
 
- with と contextlib
- contextlib モジュール 
- Context Example 
 
 
- 要約 
3章: 構文ベストプラクティス - クラスを超えて¶
- 組み込み型のサブクラス化 
- super クラスを使ってメソッドにアクセスする
- Pythonのメソッド解決順序(MRO)を理解する 
- super の落とし穴
- super と従来型の呼び出しを混在させる 
- 親クラスと異なる引数定義の混在 
 
 
 
 
- ベストプラクティス 
- Descriptors と Properties
- Descriptors
- イントロスペクション Descriptor 
- メタ descriptor 
 
 
- Properties 
 
 
- スロット 
- メタプログラミング
- __new__ メソッド 
- __metaclass__ メソッド 
 
 
- 要約 
4章: 良い名前の選択¶
- PEP 8 と名前付けのベストプラクティス 
- 名前付けのスタイル
- 変数
- 定数 
- パブリックとプライベートの変数 
 
 
- 関数とメソッド
- プライベートの論争 
- 特殊メソッド 
- 引数 
 
 
- プロパティー 
- クラス 
- モジュールとパッケージ 
 
 
- 名前付けガイド
- "has" か "is" を二値型に前置する 
- シーケンス型は複数形にする 
- 辞書に明示的な名前を付ける 
- 一般的な名前を避ける 
- 既存の名前を避ける 
 
 
- 引数のベストプラクティス
- イテレーティブなデザインのための引数構築 
- 引数とテストを信じる 
- *args 引数と **kw 引数は気をつけて使おう 
 
 
- クラスの名前 
- モジュールとパッケージの名前 
- Working on APIs
- Tracking Verbosity 
- 名前空間木の構築 
- コードの分割 
- Eggを使う 
- Deprecation 手順を使う 
 
 
- 役に立つツール
- Pylint 
- CloneDigger 
 
 
- 要約 
5章: パッケージを作る¶
- 全てのパッケージで共通のパターン
- setup.py: 全てをコントロールするスクリプト
- sdist 
- build と bdist 
- bdist_egg 
- install 
- パッケージのアンインストール 
- develop 
- test 
- register と upload 
- 新しいコマンドを作る 
- setup.py の役に立つ要約 
- その他の重要なメタデータ 
 
 
 
 
- テンプレートベースのアプローチ
- Python Paste 
- テンプレートを作る 
 
 
- パッケージのテンプレートを作る 
- 開発サイクル 
- 要約 
6章: アプリケーションを作る¶
- Atomisator: 導入 
- 全体像 
- 開発環境
- テストランナーを追加する 
- パッケージ構造を追加する 
 
 
- パッケージを書く
- atomisator.parser
- 最初のパッケージを作る 
- 最初のdoctestを作る 
- テスト環境を構築する 
- コードを書く 
 
 
- atomisator.db
- SQLAlchemy 
- APIを提供する 
 
 
- atomisator.feed 
- atomisator.main 
 
 
- Atomisator を配布する 
- パッケージの依存関係 
- 要約 
7章: zc.buildoutを使う¶
- zc.buildout の哲学
- ファイル構造を調整する
- 最小の設定ファイル 
- [buildout] セクションのオプション 
 
 
- buildout コマンド 
- レシピ
- 重要なレシピ 
- レシピを作る 
 
 
- Atomisator buildout 環境
- buildout フォルダ構造 
 
 
- さらに先へ 
 
 
- リリースとと配布
- パッケージをリリースする 
- リリース設定ファイルを追加する 
- アプリケーションのビルドとリリース 
 
 
- 要約 
8章: コードの管理¶
- バージョン管理システム
- 中央集中型システム 
- 分散システム
- 分散の戦略 
 
 
- 中央集中か、分散か? 
- Mercurial 
- Mercurial でプロジェクトを管理する
- 専用フォルダのセットアップ 
- hgwebdir の設定 
- Apache の設定 
- 認証の設定 
- クライアントの設定 
 
 
 
 
- 常時結合
- Buildbot
- Buildbotのインストール 
- Buildbot と Mercurial のフック 
- Apache と Buildbot のフック 
 
 
 
 
- 要約 
9章: ライフサイクルの管理¶
- 異なるアプローチ
- ウォーターフォール開発モデル 
- スパイラル開発モデル 
- 漸進型開発モデル 
 
 
- ライフサイクルの定義
- プランニング 
- 開発 
- 総合デバッグ 
- リリース 
 
 
- トラッキングシステム設定
- Trac
- インストール 
- Apache 設定 
- アクセス許可設定 
 
 
- Trac でのプロジェクトライフサイクル
- プランニング 
- 開発 
- クリーニング 
- リリース 
 
 
 
 
- 要約 
10章: プロジェクトの文書化¶
- テクニカルライティングの7つのルール
- 2ステップで書く 
- Target the Readership 
- シンプルなスタイルを使う 
- 情報の範囲を制限する 
- 現実的なコード例を使う 
- 必要十分なアプローチを使う 
- テンプレートを使う 
 
 
- reStructuredText 入門
- セクション構造 
- リスト 
- インラインマークアップ 
- リテラルブロック 
- リンク 
 
 
- ドキュメントをビルドする
- 書類をビルドする
- デザイン 
- 使い方 
- 手順 
 
 
 
 
- 書類を作成する
- Building the Landscape
- プロデューサーのレイアウト 
- カスタマーのレイアウト 
 
 
 
 
- 要約 
11章: テスト駆動開発¶
- テストをしていない人へ
- テスト駆動開発の原則
- ソフトウェアの退行を防ぐ 
- コードの品質を上げる 
- 最良の開発者ドキュメントを提供する 
- 強健なコードを素早く生産する 
 
 
- どんなテストがありますか?
- 受け入れテスト 
- ユニットテスト 
- Python の標準テストツール 
 
 
 
 
- テストをしている人へ
- ユニットテストの落とし穴 
- ユニットテストの置き換え
- nose 
- py.test 
 
 
- フェイクとモック
- フェイクを構築する 
- モックを使う 
 
 
- ドキュメント駆動開発
- ストーリーを書く 
 
 
 
 
- 要約 
12章: 最適化: 一般原則とプロファイリングテクニック¶
- 最適化の3つのルール
- まず動くように作る 
- ユーザー視点で動くようにする 
- コードの可読性(とメンテナンス性)を維持する 
 
 
- 最適化戦略
- 他の原因を見つける 
- ハードウェアをスケールする 
- 速度テストを書く 
 
 
- ボトルネックを見つける
- CPU使用率のプロファイルを取る
- Macro-Profiling 
- Micro-Profiling 
- Pystoneで計測する 
 
 
- メモリ使用率のプロファイルを取る
- Pythonがメモリをどのように使うか 
- メモリのプロファイルを取る 
 
 
- ネットワーク使用率のプロファイルを取る 
 
 
- 要約 
13章: 最適化: 解法¶
- 複雑さを縮小する
- Measuring Cyclomatic Complexity 
- Big-O 表記を計測する 
- シンプルにする
- リストの探索 
- Listの代わりにSetを使う 
- 外部呼び出しをやめ、仕事量を減らす 
- コレクション型を使う 
 
 
 
 
- マルチスレッドを使う
- マルチスレッディングとは? 
- Pythonはスレッドをどのように使うか 
- スレッドをいつ使うべきか?
- Building Responsive Interfaces 
- Delegating Work 
- マルチユーザーアプリケーション 
- シンプルな例 
 
 
 
 
- マルチプロセスを使う
- Pyprocessing 
 
 
- キャッシュを使う
- Deterministic Caching 
- Non-Deterministic Caching 
- Pro-Active Caching 
- Memcached 
 
 
- 要約 
14章: 有用なデザインパターン¶
- 生成パターン
- Singleton 
 
 
- 構造パターン
- Adapter
- Interfaces 
 
 
- Proxy 
- Facade 
 
 
- 振る舞いパターン
- Observer 
- Visitor 
- Template 
 
 
- 要約 
索引¶
 
