Document Actions
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
要約
- The URL to Trackback this entry is:
- http://www.freia.jp/taka/blog/680/tbping

「テストする、テストしない」は、「テストをしていない人へ、テストをしている人へ」が良いかなーと思いました。
Tarek さんに和訳したいと交渉していたのですが、出版社の編集者さんの同意が得られずに断念しました。残念です。
> methane
ありがとうございます。修正しました。他にもいくつか和訳化しました(3章とか)。
> t2y
な、なんだってー!
>> Tarek さんに和訳したいと交渉していたのですが、出版社の編集者さんの同意が得られずに断念しました。
>な、なんだってー!
上記の続報。
・t2yに聞いたところ、同意が得られないというか、返事がなかったそうです。
・別口で、日本の某編集者さんがPACKTの編集者さんと話をしていて、微妙に前進中。
現在、「エキスパートPythonプログラミン(仮)」として出版に向けて数名で翻訳中です!