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

概 要

Pythonの実践的ノウハウを知りたいが周囲に聞ける人がいない。チームで開発する方法も知りたい。そんなプログラマーの皆さま、ご安心ください。本書は、Pythonをメインに手がけるビープラウドが社内で蓄積したWeb開発の最新手法を惜しみなく公開します。作業環境の構築から、Webアプリケーションの作り方、課題管理、レビュー、テスト、デプロイの効率化、サーバーのチューニングなどPython開発のプロセスとノウハウが身につきます。

著者 株式会社ビープラウド
価格 本体2800円(税別)
ISBN 978-4-7980-4315-9
発売日 2015/2/27
判型 B5変
ページ数 472
CD/DVD
ダウンロード
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

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

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

サポート

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

サポート情報へのリンク

目次

Part1 Pythonで開発しよう

Chapter 01 Pythonをはじめよう

01-01 Pythonのセットアップ

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

01-01-02 サードパーティ製パッケージのインストール

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 開発に便利なツール

01-04 まとめ

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 まとめ

Chapter 03 Pythonプロジェクトの構成とパッケージ作成

03-01 Pythonプロジェクト

03-02 環境とツール

03-02-01 virtualenvで独立した環境を作る

03-02-02 pipでパッケージをインストールする

03-02-03 まとめ

03-03 ファイル構成とパッケージリリース

03-03-01 setup.pyを書く

03-03-02 ゲストブックのプロジェクト構成

03-03-03 setup.pyとMANIFEST.in: パッケージ情報と同梱するファイルの設定

03-03-04 setup.py: 実行コマンドの作成

03-03-05 python setup.py sdist: ソース配布パッケージを作る

03-03-06 リポジトリにコミットする

03-03-07 README.rst: 開発環境セットアップ手順

03-03-08 依存パッケージを変更する

03-03-09 requirements.txtで開発バージョンを固定する

03-03-10 python setup.py bdist_wheel:wheel配布パッケージを作る

03-03-11 PyPIにアップロードして公開する

03-03-12 まとめ

03-04 まとめ

Part2 チーム開発のサイクル

Chapter 04 チーム開発のためのツール

04-01 課題管理システム

04-01-01 Redmine

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

04-01-03 Redmineの設定

04-01-04 プラグイン

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

04-02-01 MercurialとRedmineの連携

04-02-02 リポジトリ作成プラグイン

04-03 チャットシステム

04-03-01 Slack

04-03-02 Slackの特徴

04-03-03 Slackではできないこと

04-03-04 Slackの登録

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

04-04-01 Dropbox

04-04-02 Google Drive

04-05 まとめ

Chapter 05 課題管理とレビュー

05-01 課題管理とチケットの使い分け

05-01-01 課題管理を始める前に

05-01-02 チケットを作成しよう

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

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

05-02 チケットテンプレート

05-02-01 プラグインのインストール

05-02-02 チケットテンプレートの使い方

05-02-03 グローバルチケットテンプレート

05-02-04 チケットテンプレートの例

05-03 チケット駆動開発

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

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

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

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

05-04 レビュー

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

05-04-02 レビュー依頼: コードレビュー編

05-04-03 レビュー依頼: 作業レビュー編

05-04-04 レビュー実施: コードレビュー編

05-04-05 レビュー実施: 作業レビュー編

05-05 まとめ

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

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

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

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

06-01-03 hgrcの設定

06-01-04 設定したリポジトリを使う

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

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

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

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

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

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

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

06-03 ブランチの操作

06-04 マージについて

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

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

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

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

06-05 GUIクライアント

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

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

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

06-06 現実的な運用を考える BeProud Mercurial Workflow

06-06-01 概要

06-06-02 背景

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

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

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

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

06-06-07 集約ブランチ

06-07 まとめ

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

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

07-01-01 ドキュメントを作成する上で、何をしたくないのか

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

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

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

07-02-02 reStructuredText入門

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

07-02-04 Sphinx拡張

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

07-03-01 プレーンテキストなので、ドキュメントを普段利用しているエディタで書ける

07-03-02 情報と表示を分離し、装飾などの見た目にとらわれずに文面に集中して書ける

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

07-03-04 構造化により、ドキュメントを複数のファイルに分割して書ける

07-03-05 Mercurialなどで簡単にバージョン管理できる

07-03-06 APIリファレンスとプログラムを一体管理する仕組み(docstring、doctest、autodoc)

07-03-07 Webブラウザを利用して共有する

07-03-08 Sphinxの導入に伴う課題

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

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

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

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

07-04-04 設計者向け

07-04-05 開発者向け

07-04-06 顧客向け

07-05 まとめ

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

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

08-01-01 機能設計

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

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

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

08-02 テスト

08-02-01 テストの種類

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

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

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

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

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

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

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

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

08-05 まとめ

Chapter 09 Pythonパッケージングと運用への活用

09-01 パッケージを使う

09-01-01 パッケージのバージョン指定

09-01-02 PyPI以外のサーバーからのインストール

09-01-03 パッケージの配布形式

09-01-04 wheelhouseの作り方

09-01-05 wheelhouseからインストール

09-02 パッケージを活用する

09-02-01 プライベートリリース

09-02-02 requirements.txtを活用する

09-02-03 requirements.txt の階層化

09-02-04 デプロイや CI + tox のためのrequirements

09-02-05 requirements.txt でライブラリのバージョンを指定する

09-03 まとめ

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

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

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

10-01-02 Jenkinsについて

10-02 Jenkinsのインストール

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

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

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

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

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

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

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

10-04-01 pytestをインストールする

10-04-02 pytestコマンドを呼ぶ

10-04-03 Jenkinsの設定をpytest用に変える

10-05 カバレッジレポートを表示する

10-05-01 pytest-covのインストール

10-05-02 pytestからカバレッジを取得する

10-05-03 カバレッジレポートを取り込む

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

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

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

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

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

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

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

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

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

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

10-07-04 成果物の参照

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

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

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

10-08-01 便利な機能

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

10-09 まとめ

Part3 サービス公開

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

11-01 環境構築内容の検討

11-01-01 ネットワーク構成

11-01-02 サーバー構築内容の構造化

11-01-03 ユーザーの設定

11-01-04 パッケージの選定

11-01-05 ミドルウェアの設定

11-01-06 デプロイ

11-02 Ansibleで作業を自動化する

11-02-01 Ansibleとは

11-02-02 ファイル構成

11-02-03 Ansibleの実行

11-02-04 最初に検討した構成との対応づけ

11-02-05 各手順をAnsible化する

11-02-06 Ansible実行環境の整備

11-03 まとめ

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

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

12-01-01 Webアプリケーションに大量のリクエストが集中するとどうなるか

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

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

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

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

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

12-03 gunicornについて

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

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

12-04 nginxについて

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

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

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

12-05-01 gunicornの設定

12-05-02 nginxの設定

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

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

12-06 まとめ

Part4 開発を加速させるテクニック

Chapter 13 テストを味方にする

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

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

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

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

13-02-03 テスト実施とテストフェーズの回し方(何をどこまでやるのか)

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

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-03 fixture replacement

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

14-03-02 デフォルトのフィクスチャで不便なケース

14-03-03 factory_boyの利用

14-03-04 「デフォルトのフィクスチャで不便なケース」の解消

14-04 Django Debug Toolbar

14-04-01 Django Debug Toolbarとは

14-05 まとめ

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 画像処理(Pillow)

15-03-01 Pillowのインストール

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

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

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

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

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

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

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

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

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

15-05-01 tweepyの導入

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

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

15-05-04 TwitterAPIの呼び出し

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

15-06 REST APIを使う(Requests)

15-06-01 RESTとは

15-06-02 Requestsの導入

15-06-03 テスト用サーバーの導入

15-06-04 GETリクエストの送信

15-06-05 POSTリクエストの送信

15-06-06 JSON形式でPOSTリクエストを送信する

15-06-07 GET/POST以外のHTTPメソッドの使用

15-07 まとめ

Appendix A VirtualBoxのセットアップ

A-01 VirtualBoxのインストール

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

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

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

B-01 Ubuntuのインストール

B-02 SSHの設定

B-03 日本語設定

B-04 ユーザーの追加

PR

秀和システム