2015/02/18 「Pythonプロフェッショナルプログラミング第2版」が2/28発売¶
Category: 'book', 'Python', 'beproud', 'work', 'sphinx'
Pythonプロフェッショナルプログラミング、第2版を書きました。 さきほど印刷所に最終版を提出した、ということで、ちょと紹介します。
前回の第1版は3年前: 2012/03/27 会社で執筆した「Pythonプロフェッショナルプログラミング」が3/27発売 。
コンセプトは変わらず、 BPStyle 。「Pythonで仕事をしていく上でのBPのノウハウ」を集めた本です。みなさんの仕事での参考になれば幸いです。
第2版での見所と章構成を紹介します。
みどころ¶
3つの章を新しく書き下ろしました。
3章. Pythonプロジェクトの構成とパッケージ作成
Pythonでの開発に必須なツール、pipとvirtualenvを紹介。 2章で作成したWebアプリケーションを題材に、Pythonの開発を始めるときのディレクトリ構成、 setup.pyの用意、リポジトリの登録、PyPIへの公開、といった流れを扱っています。
9章. Pythonパッケージングと運用への活用
Pythonパッケージングを活用して、デプロイやCIに適用する、といった内容です。 3章の応用編です。
11章. 環境構築とデプロイの自動化
Deployの話は第1版でもありましたが、内容がFabricからAnsibleに変わりました。 といっても、Ansibleの詳しい内容は別のAnsible本等にまかせて、サーバー構築時の 考え方と、それをAnsibleでどうやって扱っていくのかというところにフォーカスしています。
全体的に現在のバージョン、一般的な作法に合わせて書き直しました。また、BPの社内標準の現状にあわせて更新しています。
- Ubuntu 14.04, Python 2.7.6 をベースに更新しました
- distributeとsetuptoolsは紹介から消してpipだけにしました
- エディタの比較紹介を追加しました: Vim, Emacs, PyCharm
- HTMLが出てくるところはHTML5で書き直しました
- Tracの説明はなくなってRedmineだけになりました
- Skypeの説明はなくなってSlackになりました
- チケットテンプレートで運用している話を追記しました
- testfixturesの紹介を追加し、noseからpytestに変更しました
- Sphinxは1.3に更新しました
- Djangoは1.7を扱っていて、southからDjango migrationに書き直されました
- chardet, feedparserの紹介を削除し、requestsの紹介を追加しました
もう内容が古いなんて言わせない!(distributeとかdistributeとか)
章構成¶
Pythonで開発しよう¶
- Pythonをはじめよう
- Webアプリケーションを作る
- Pythonプロジェクトの構成とパッケージ作成
チーム開発のサイクル¶
- チーム開発のためのツール
- 課題管理とレビュー
- Mercurialによるソースコード管理
- ドキュメントの基盤を整える
- モジュール分割設計と単体テスト
- Pythonパッケージングと運用への活用
- Jenkinsで継続的インテグレーション
サービス公開¶
- 環境構築とデプロイの自動化
- アプリケーションのパフォーマンス改善
開発を加速させるテクニック¶
- テストを味方にする
- Djangoを便利に使う
- 便利なPythonモジュールを使おう
Appendix¶
- Appendix A: VirtualBoxのセットアップ
- Appendix B: OS(Ubuntu)のセットアップ
お礼¶
今回、知っている範囲で以下のメンバーにて制作しました。
- 11人の執筆者
- 12名の社外レビューアー
- 7名の社内レビューアー
- 編集さんと組版担当者さん
総勢32名!みなさん、ありがとうございました。お疲れ様でした!
システム¶
32名を支えたシステム構成について、機会があればどこかでまとめたいと思います。
- Slack: 会話や連絡は全てSlackでした。今回メールゼロ。書籍体裁のPDF渡しもSlackで。
- Redmine: Wikiと文面のDiffビューワーとして使いました
- Mercurial: Sphinxの原稿を管理しました
- Sphinx: 原稿はSphinxで書いて、拙作Shuwa builderで提出用に変換しました
- Sphinx term validator: 用語を登録しておくとビルド時に用語揺れを検出します
- Google Spreadsheet: レビュー指摘はspreadsheetでやりました
- Google App Script: レビュー追加されたときや、レビュー対処状況(12/99とか)をSlackに通知してました
- Jenkins: Sphinxの原稿をpushしたときにPDF,HTML,Shuwa出力を自動ビルド、いつでも最新を閲覧
- Dropbox: 書籍体裁になる前に、HTML出力をレビューしてもらうために使いました