Date: 2009-10-25
Tags: python, pyspa

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

  • 要約

索引

../../_images/20091025_expert-python-programming.jpg