Pythonプロフェッショナルプログラミング

概 要

Pythonを使ったアプリケーション開発のリアルな手法を学ぶプログラミングガイドブックです。個人の開発環境を改善したい人、チームの開発を改善したい人、仕事でつかえるPython環境系のためにノウハウを学びたい人を対象に、Pythonの共有環境の構築と管理、チケット駆動開発、ソースコード管理(Mercurial)、PyPlパッケージング、Jenkinsで継続的インテグレーション、パフォーマンス向上(nginxとgunicorn)、GAE開発、Djangoフレームワークなど実践的なノウハウを解説。Pythonで数多くの開発を行ってきたプロフェッショナル集団が、Python公式マニュアルの域を超えて、現場の開発者の手法を学びたい人に向けて解説したリアルな技術集です。

著者 株式会社ビープラウド
価格 本体2800円(税別)
ISBN 978-4-7980-3294-8
発売日 2012/3/27
判型 B5変
色数 1色
ページ数 464
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

Part 1 Pythonで開発しよう

Chapter 01 Pythonをはじめよう

01-01 Pythonのセットアップ

01-01-01 aptパッケージのインストール

01-01-02 easy_installとpip

01-01-03 virtualenvのインストール

01-01-04 複数バージョンのPythonの使用

01-02 Mercurialのセットアップ

01-02-01 Mercurialの概要

01-02-02 Mercurialのインストール

01-02-03 リポジトリの作成

01-02-04 ファイルの操作

01-03 エディタと開発に便利なツール

01-03-01 エディタ

01-03-02 Python開発Tips

01-04 まとめ

Part 1 Pythonで開発しよう

Chapter 02 Webアプリケーションを作る

02-01 Webアプリケーションを知る

02-01-01 Webアプリケーションとはどういうものか

02-01-02 Webアプリケーションとデスクトップアプリケーションの違い

02-01-03 Webアプリケーションの仕組み

02-02 事前準備

02-02-01 Flaskについて

02-02-02 Flaskのインストール

02-03 Webアプリケーション開発の流れ

02-04 作るものを明らかにしよう

02-04-01 ゲストブックアプリケーションの要件

02-04-02 必要な機能を明らかにする

02-04-03 必要な画面を明らかにする

02-05 画面を作る

02-05-01 作成する画面をイメージする

02-05-02 HTMLとCSSを作成する

02-06 機能を作成する

02-06-01 コメントデータを保存する

02-06-02 保存しておいたコメントの一覧を取得する

02-06-03 テンプレートエンジンを使って画面表示を行う

02-06-04 投稿先のURLを用意する

02-06-05 テンプレートの出力を調整する

02-07 動作確認

02-08 まとめ

Part 2 チーム開発のサイクル

Chapter 03 チームの開発環境を整える

03-01 共有サーバーにおけるユーザー作成・権限設定

03-01-01 ユーザーとグループの作成

03-01-02 sudoers

03-01-03 virtualenv

03-02 課題管理システム

03-02-01 Trac

03-02-02 Tracのインストール

03-03 バージョン管理システム

03-03-01 MercurialとTracの連携

03-04 チーム開発に有用なツール

03-04-01 Skype

03-04-02 DropBox

03-04-03 Google Docs

03-05 まとめ

Part 2 チーム開発のサイクル

Chapter 04 ドキュメントの基盤を整える

04-01 プロジェクトのドキュメントを書こう

04-01-01 ドキュメントを書く上で、何をしたくないのか

04-01-02 どのような状態ならドキュメントを書きたいのか

04-02 Sphinxの基本とインストール

04-02-01 Sphinxのインストール

04-02-02 reStructuredText入門

04-02-03 Sphinxによる構造化ドキュメント作成の流れ

04-02-04 Sphinx拡張

04-03 Sphinxの導入で解決する課題と新しい課題

04-03-01 プレーンテキストなので、ドキュメントを普段利用している

エディタで書ける

04-03-02 情報と表示を分離し、装飾などの見た目にとらわれずに文面に

集中して書ける

04-03-03 提出用PDF出力など、一つのソースから複数のフォーマットに

出力できる

04-03-04 構造化により、

ドキュメントを複数のファイルに分割して書ける

04-03-05 Mercurial等で簡単にバージョン管理できる

04-03-06 APIリファレンスとプログラムを一体管理する仕組み

(docstring、doctest、autodoc)

04-03-07 普段の参照にはWebブラウザを利用して共有できる

04-03-08 Sphinxの導入で発生する課題

04-04 ドキュメントポートフォリオの作成と利用

04-04-01 ドキュメントポートフォリオとは?

04-04-02 プロジェクトで必要となるドキュメントの一覧

04-04-03 リーダー・マネージャー向け

04-04-04 設計者向け

04-04-05 開発者向け

04-04-06 顧客向け

04-05 まとめ

Part 2 チーム開発のサイクル

Chapter 05 課題管理とレビュー

05-01 課題管理とチケット駆動開発

05-01-01 コーディング開始……でもその前にチケットを起票しよう!

05-01-02 チケットの番号と同じ名前のブランチを作ろう

05-01-03 リリースとブランチを対応させよう

05-01-04 ブランチのマージ

05-01-05 チケットを整理しよう

05-01-06 チケットを分割しよう

05-02 レビュー

05-02-01 なぜレビューをするのか

05-02-02 レビューしてもらおう: コードレビュー編

05-02-03 レビューしてもらおう: 作業レビュー編

05-02-04 レビューしよう: コードレビュー編

05-02-05 レビューしよう: 作業レビュー編

05-03 まとめ

Part 2 チーム開発のサイクル

Chapter 06 モジュール分割設計と単体テスト

06-01 モジュール分割設計

06-01-01 機能設計

06-01-02 Webアプリケーションを構成するコンポーネント

06-01-03 コンポーネント設計

06-01-04 モジュールとパッケージ

06-02 テスト

06-02-01 テストの種類

06-02-02 ユニットテストを書く

06-02-03 ユニットテストから環境依存を排除する

06-02-04 WebTestを使った機能テスト

06-03 テストから設計を改善する

06-03-01 テストしやすい設計

06-04 テスト実行の自動化に向けて

06-04-01 テスト実行環境を自動作成する

06-04-02 繰り返し可能なテスト環境

06-05 まとめ

Part 2 チーム開発のサイクル

Chapter 07 パッケージングと環境セットアップの自動化

07-01 ソースコードのパッケージングと配布の自動化

07-01-01 パッケージング

07-01-02 パッケージ配布の自動化

07-01-03 PyPIへのパッケージ登録

07-01-04 PyPIへのアップロード

07-01-05 パッケージの説明を書く

07-02 インストールと環境構築関連ライブラリの紹介

07-02-01 Distribute

07-02-02 pip

07-02-03 virtualenv

07-03 アプリケーション環境セットアップの自動化に必要な機能とツール

07-03-01 独立したPython環境の用意

07-03-02 Pythonライブラリのパッケージ化とインストール

07-03-03 環境全体のパッケージバージョンの固定化

07-03-04 環境全体のオフラインインストール

07-03-05 環境再構築時のキャッシュ利用

07-03-06 バイナリビルド済みパッケージの利用

07-03-07 PyPI停止時または高負荷時の代替サーバー

07-04 アプリケーション環境セットアップの自動化

07-04-01 はじめに

07-04-02 はじめの環境作成

07-04-03 開発ソースコードを含む環境

07-04-04 デプロイ環境へのオフラインインストール

07-04-05 デプロイ環境へのバイナリビルド済みパッケージの

インストール

07-05 社内ライブラリを共有する

07-05-01 複数プロジェクトでのコード共有方法

07-05-02 非公開パッケージを環境セットアップの自動化に組み込む

07-06 まとめ

Part 2 チーム開発のサイクル

Chapter 08 Mercurialによるソースコード管理

08-01 Mercurialリポジトリの管理と設定

08-01-01 サーバー上のUNIXユーザーのグループ設定

08-01-02 umaskの設定

08-01-03 リポジトリの作成

08-01-04 hgrcの設定

08-01-05 設定したリポジトリを使う

08-01-06 hgwebを使った簡易中央リポジトリ

08-02 フックを活用しよう

08-02-01 フックの指定方法

08-02-02 フックスクリプトを使ってみる

08-02-03 フックイベント

08-02-04 フックの実行タイミング

08-02-05 フックスクリプトを作る

08-03 ブランチの操作

08-04 マージについて

08-04-01 コンフリクトが発生しない場合のマージ

08-04-02 マージの際のコンフリクト発生とテキストエディタでの

解消方法

08-04-03 マージのパターンとコンフリクト

08-04-04 GUIのマージツールでのマージ方法

08-05 GUIクライアント

08-05-01 GUIクライアントの紹介

08-05-02 GUIクライアントの利点

08-05-03 GUIクライアントの欠点

08-05-04 hgwebcommit

08-06 現実的な運用を考える BP Mercurial W/F

08-06-01 概要

08-06-02 背景

08-06-03 リポジトリの構成

08-06-04 ソースコードをコミットする

08-06-05 デザインをコミットする

08-06-06 ブランチのマージ

08-06-07 集約ブランチ

08-07 まとめ

Part 2 チーム開発のサイクル

Chapter 09 Jenkinsで継続的インテグレーション

09-01 継続的インテグレーション(CI)とは

09-01-01 継続的インテグレーション(CI)について

09-01-02 Jenkinsについて

09-02 Jenkinsのインストール

09-02-01 Javaをインストールする

09-02-02 Jenkins本体のインストール

09-02-03 本章で利用するJenkinsプラグイン

09-03 テストコードを実行する

09-03-01 簡単なテストコードを使った例

09-03-02 ジョブを登録する

09-03-03 ジョブの成功・失敗

09-04 テストの結果をレポートに出力する

09-04-01 noseをインストールする

09-04-02 nosetestsコマンドを呼ぶ

09-04-03 Jenkinsの設定をnose用に変える

09-05 カバレッジレポートも表示してみよう

09-05-01 coverageのインストール

09-05-02 coverageコマンドの概要 : 「集計」と「出力」の2ステップに

分かれる

09-05-03 noseからcoverageを実行する

09-05-04 カバレッジレポートを取り込む

09-06 Djangoのテストを実行する

09-06-01 Pythonモジュールのインストール

09-06-02 Djangoのセットアップ

09-06-03 サンプルコード

09-06-04 Jenkinsのセットアップ

09-06-05 「ビルド後の処理」セクションの設定

09-07 ドキュメントのビルドをJenkinsから実行する

09-07-01 Sphinxのインストール

09-07-02 Jenkinsジョブの登録内容

09-07-03 Sphinxのビルドで警告が出たらジョブを失敗させる

09-07-04 成果物の参照

09-07-05 Task Scanner PluginでTODO管理

09-07-06 Task Scanner Pluginの設定例

09-08 Jenkinsをさらに活用する

09-08-01 便利な機能

09-08-02 さらに改善する

09-09 まとめ

Part 3 サービス公開

Chapter 10 環境構築とデプロイの自動化

10-01 依存するパッケージのインストールと設定

10-01-01 作業ユーザーの作成

10-01-02 必要なパッケージを列挙する

10-01-03 閉じた環境でのインストール

10-01-04 アプリケーションの設定

10-01-05 動作を検証する

10-02 デプロイ手順の整備

10-02-01 リポジトリへのアクセスを可能にする

10-02-02 リポジトリをcloneする

10-02-03 デプロイ方法のまとめ

10-03 Fabricを使って作業を自動化する

10-03-01 Fabricとは

10-03-02 インストールと環境整備

10-03-03 簡単なスクリプトを書いてみる

10-03-04 手順書を元に自動化する

10-03-05 動作を検証する

10-03-06 コメントをつけよう

10-04 まとめ

Part 3 サービス公開

Chapter 11 アプリケーションのパフォーマンス改善

11-01 Webアプリケーションのパフォーマンス

11-01-01 Webアプリケーションに大量のリクエストが

集中するとどうなるか

11-01-02 高負荷への対策

11-02 ゲストブックアプリのパフォーマンスを測定する

11-02-01 アプリケーションのパフォーマンスとは

11-02-02 ApacheBenchのインストール

11-02-03 ApacheBenchを使ったパフォーマンス測定

11-03 gunicornについて

11-03-01 gunicornのインストール

11-03-02 gunicornでアプリケーションを動作させる

11-04 nginxについて

11-04-01 nginxのインストール

11-04-02 nginxのパフォーマンスを調べる

11-05 nginxとgunicornでアプリケーションを動作させる

11-05-01 gunicornの設定

11-05-02 nginxの設定

11-05-03 nginx+gunicornのパフォーマンスを測定する

11-05-04 パフォーマンスを比較する

11-06 まとめ

Part 3 サービス公開

Chapter 12 Google App Engine

12-01 App Engineについて

12-01-01 App Engineとは

12-01-02 App Engineの利点

12-01-03 App Engineプラットフォームにおける制限

12-01-04 利用実績

12-02 App Engineの主要な機能

12-02-01 データストア

12-02-02 自動スケーリングと負荷分散

12-02-03 App EngineにおけるPythonの実行環境

12-03 App Engineでの開発準備と動作確認

12-03-01 アカウントの取得とアプリケーションの作成

12-03-02 SDKのセットアップ

12-03-03 簡単なアプリケーションの作成

12-03-04 デプロイ

12-04 App Engine で Flaskアプリ開発

12-04-01 既存のアプリケーションを動作させる

12-04-02 デプロイして動作させる

12-04-03 管理コンソール

12-05 チューニング:パフォーマンスを改善する

12-05-01 Appstatsによる性能測定

12-05-02 マルチスレッドに対応させる

12-06 チューニング:課金額を抑える

12-06-01 課金に関する設定

12-06-02 課金テーブル

12-06-03 インスタンスを節約する

12-06-04 データストアの操作を減らす

12-07 テスト

12-07-01 テストコード内でのAPIの利用

12-07-02 テストの実行

12-07-03 本番サーバー上でのテスト

12-08 まとめ

Part 4 開発を加速するテクニック

Chapter 13 テストを味方にする

13-01 現状認識:テストを取り巻く環境

13-02 開発の各プロセスへのテスト導入

13-02-01 ドキュメントのテスト(レビュー)

13-02-02 テスト設計の作り方(インプットとアウトプット)

13-02-03 テスト実施とテストフェーズの回し方

(何をどこまでやるのか)

13-03 まとめ:テストは怖くない

Part 4 開発を加速するテクニック

Chapter 14 Djangoを便利に使う

14-01 Djangoとは

14-01-01 Djangoのインストール

14-01-02 Djangoのアーキテクチャ

14-01-03 Djangoのドキュメント

14-02 データベースのマイグレーションをもっと便利に

14-02-01 データベースのマイグレーションとは

14-02-02 デフォルトDjangoでは何ができるか

14-02-03 はい、それ。Southならできます

14-03 fixture replacementでテストをもっと便利に

14-03-01 テストのフィクスチャとは

14-03-02 デフォルトのフィクスチャだとここが不便

14-03-03 factory_boyの利用

14-04 デバッグをもっと便利に

14-04-01 Django Debug Toolbar

14-05 まとめ

Part 4 開発を加速するテクニック

Chapter 15 便利なPythonモジュールを使おう

15-01 日時の計算を簡単に(dateutil)

15-01-01 日時計算の複雑さ

15-01-02 dateutilの導入

15-02 モデルのマッピングを簡単に(bpmappers)

15-02-01 モデルのマッピングが必要である理由

15-02-02 マッピングルールの構造化と再利用

15-02-03 bpmappersの導入

15-02-04 Djangoとの連携

15-02-05 JSON APIを作ってみよう

15-03 文字コード判別(chardet)

15-03-01 chardetの導入

15-04 RSSフィードのパース(feedparser)

15-04-01 feedparserの導入

15-04-02 feedparserでRSSフィードをパースする

15-05 画像処理(PIL)

15-05-01 PILのインストール

15-05-02 画像フォーマットを変換する

15-05-03 画像をリサイズする

15-05-04 画像の一部を切り抜く

15-05-05 画像にフィルタ処理を行う

15-06 データを暗号化する(PyCrypto)

15-06-01 PyCryptoのインストール

15-06-02 共通鍵方式(AES)による暗号化と復号

15-06-03 公開鍵方式(RSA)による暗号化と復号

15-07 TwitterのAPIを使う(tweepy)

15-07-01 tweepyの導入

15-07-02 アプリケーションの登録とコンシューマキーの取得

15-07-03 アクセストークンの取得

15-07-04 TwitterAPIの呼び出し

15-07-05 Twitterで認証を行うシステムを作る

15-08 まとめ

Appendix

Appendix A VirtualBoxのセットアップ

A-01 VirtualBoxのインストール

A-02 新規仮想マシンの作成

A-03 仮想マシンのバックアップ

Appendix

Appendix B OS(Ubuntu)のセットアップ

B-01 Ubuntuのインストール

B-02 SSHの設定

B-03 日本語設定

PR

秀和システム