(表紙は変更になる可能性があります)
(上記ボタンは一旦、アスキー・メディアワークスのサイトに遷移します)
Contents
『エキスパートPythonプログラミング』(著:Tarek Ziade、訳:稲田直哉, 渋川よしき, 清水川貴之, 森本哲也、アスキーメディアワークス刊) より、序文を一部引用・掲載します。
Pythonコミュニティや、一般的なオープンソースコミュニティがもっとも大切にしている価値観のうちの1つが、知識を共有するということです。私がオープンソースに関わる仕事をはじめた10年ほど前に、私は人々の興味の中心がお金ではない、という事実にたいへん感銘を受けました。そこに参加する多くの人達は、学んで、体験して、共有したいと考えていました。
私にとって本を書くという行動は、Pythonという言語について私が関心を持っていることを、他の人と共有するための手段です。また、Webのおかげで、一度本を書くと、読者とオンライン上で出会うことができるため、新たな人とのつながりもできます。
私はこれまでに、母国語であるフランス語で本を2冊書き、その後、より多くの読者に届けたいと思い、英語で1冊書きました。しかし、世界にはフランス語や英語を読むことができない人や、自分の母国語で書かれた本のほうが安心するという人が数多くいることを知るたびにフラストレーションを感じていました。
今あなたが手にしている本は、Naoki INADA、Takayuki SHIMIZUKAWA、Yoshiki SHIBUKAWAそしてTetsuya MORIMOTOの4人がすばらしい仕事をしてくれたおかげで出版されることになった、私の英語の本の日本語翻訳です。彼らはきちんと仕事をこなし、その過程で多くの誤植や間違いを修正していったので、オリジナルの英語版よりも日本語版のほうがより良いものとなりました。
特に、私は現在日本語を学んでいるということもあるため、私はこの翻訳を本当に誇りに感じています。私が書いた英語のものと同じように、この本を楽しんでもらえることを願っています。書籍の内容について話をしたい場合には、 tarek at ziade.org まで遠慮無くメールを送ってください。
– Tarek Ziade
本書の良いところは数え切れないほどありますが、特にすばらしい点が2つあります。
1つ目は、Pythonという言語の「今」がたくさん詰まっているという点です。Pythonは後方互換性の高さのために、初めて学習したときのバージョンの知識のままで困ることがない、という特徴がありますが、本書を読むとPythonの進化の恩恵を、そのベストプラクティスとともに学ぶことができます。
2つ目は、egg、PyPI、virtualenv、buildout、Buildbot、Sphinx、Mercurial、Tracなど、ソフトウェア開発のライフサイクルの各段階における現在のベストプラクティスがまとめて読めるようになっているという点です。新しい言語の学習には、「文法やイディオム」のほかに「どのようにその世界で活動していけばいいのか」も含まれますが、現在のPythonにおけるプラグマティックな開発方法を知ることができます。
このような情報がまとめられている書籍は、Pythonだけでなく、他の言語についてもこれまではありませんでした。この本は「Pythonを知っている」状態から「Pythonをマスターしている」状態に成長するための本であると同時に、他の言語をある程度マスターしている人がPythonの世界でどのように活動していけばいいのかを知るのにも適しています。
翻訳にあたって、翻訳者の間で共有していたZenは2つです。1つ目は原著の良さを十分に読者の皆さんに届けられるように、たとえ内容は高度でも、わかりやすい日本語になるように注意を払いました。たった1つの段落の翻訳をどうするのかについて、議論を数時間にわたって繰り広げたこともありました。2つ目は、原著の出版から時間がたち、状況が変化した部分を最新にするというものです。原著はPython 2.5を対象にしていますが、現在幅広く使われている2.6に説明を合わせたほか、いくつか古くなっていた情報を更新したり、最新の情報をノート欄や脚注という形式でふんだんに追加しました。原著には脚注がないため、脚注で記述されている内容はすべて訳者による注釈になります。
現在、Pythonは2.X系から3.X系への大々的なマイグレーションを行っています。そのため、言語のコアに関わる2章と3章の説明については、3.X系に関する補足も加えました。なお、5章からはさまざまなツールが登場していますが、まだ3.X系に移行しきれていないツールも数多くあるため、ここに関しては原著と同様に2.X系に絞って動作の検証を行っています。ただし、著者のTarekが『本書はだれのために書かれたのか?』というセクションで語っているとおり、現時点のツールを使ってみて学んだ考え方や仕事の流れなどは、ツールが変わっても生き続けるものばかりです。ムダになることはないでしょう。
また、プログラミングのイディオムとしてまとめて説明されることが少なく、3への移行で影響を受ける、文字列とUnicodeに関する章を「付録A」として書き下ろしで追加しています。
まとめ
リスト内包表記
ジェネレータ
コルーチン
ジェネレータ式
まとめ
組み込み型のサブクラス化
Python のメソッド解決順序(MRO)を理解する
ベストプラクティス
プロパティ
スロット
まとめ
PEP 8 と命名規則のベストプラクティス
パブリック変数とプライベート変数
プロパティ
クラス
モジュールとパッケージ
クラス名
モジュール名とパッケージ名
まとめ
パッケージのテンプレートを作る
まとめ
Atomisator: 導入
全体像
DBとのマッピングを作る
API を提供する
atomisator.feed
atomisator.main
Atomisator を配布する
パッケージの依存関係
まとめ
buildout コマンド
さらに先へ
まとめ
中央集中型システム
中央集中か、分散か?
Mercurial
まとめ
まとめ
| [1] | 10章の内容をreST,HTML,PDF,ePub形式で公開しています。 sphinx-users.jpサイト を参照して下さい。 |
運用
制作者のレイアウト
まとめ
受け入れテスト
ユニットテスト
ユニットテストの落とし穴
まとめ
Python はメモリをどのように扱うか
ネットワークのプロファイリング
まとめ
循環的複雑度を計測する
オーダーを計算する
リストの探索
list の代わりにsetを使う
外部呼び出しを減らし、仕事量を減らす
マルチスレッドとは
Python はスレッドをどのように扱うのか?
決定性キャッシュ
非決定性キャッシュ
まとめ
Proxy パターン
Facade パターン
まとめ