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

概 要

Pythonのシステム開発技法はどんどん進化しています。また、テキストで学んだことと開発現場では違ったノウハウも求められます。そのため、新人はまず実践知識を学ばなくてはなりません。本書は、Pythonでの開発経験豊富なシステム開発会社員が、今まで培ってきた技術や知識、ノウハウをもとに、新人がスムーズに開発に参加するために必要なPython開発の知識を解説します。GitおよびGitHubによるソースコード管理もわかります。

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

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

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

サポート

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

サポート情報へのリンク

目次

PART1 Pythonで開発しよう

Chapter 01 Pythonをはじめよう

01-01 Pythonのセットアップ

01-01-01 debパッケージの更新

01-01-02 Python 3.6のインストール

01-01-03 パッケージ管理ツール(pip)

01-01-04 Python仮想環境の作成(venv)

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

01-02 Gitのセットアップ

01-02-01 Gitの概要

01-02-02 Gitの確認

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-02 事前準備

02-02-01 フレームワークを決める

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-07 テンプレートの出力を調整する

02-08 動作確認

02-09 まとめ

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

03-01 Pythonプロジェクト

03-02 環境とツール

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

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 プラグイン

04-02 チャットシステム

04-02-01 Slack

04-02-02 Slackの特徴

04-02-03 Slackの登録

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

04-03-01 Dropbox

04-03-02 Googleドライブ

04-04 まとめ

Chapter 05 課題管理とレビュー

05-01 チケットを使った課題管理

05-01-01 課題、チケットとはなにか

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

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

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

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

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-04 レビュー

05-04-01 レビューの留意点

05-04-02 レビューのテクニック

05-05 まとめ

Chapter 06 Git/GitHubによるソースコード管理

06-01 GitとGitHubの違い

06-02 Gitリポジトリーの管理と設定

06-02-01 GitHubの設定

06-02-02 Gitリポジトリーの管理と設定

06-02-03 ブランチとマージ

06-02-04 リモートリポジトリーの変更を取り込む

06-03 マージとリベースについて

06-03-01 マージについて

06-03-02 リベースについて

06-03-03 マージかリベースか

06-04 GUIクライアント

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

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

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

06-05 GitHub Flow: Git/GitHubを使った開発のワークフロー

06-05-01 開発を行う

06-05-02 プルリクエスト(Pull Request)を作成する

06-05-03 デプロイする

06-05-04 GitHub Flowまとめ

06-06 チームでGitHubを活用するためのTips

06-06-01 タスクリストの活用

06-06-02 GitHub Issues

06-06-03 テンプレートを活用する

06-06-04 masterブランチのforce-pushを禁止する

06-06-05 Organizationを活用する

06-06-06 GitHub Flowを支える技術

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-02-05 SphinxのドキュメントをMarkdownで書く

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

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

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

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

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

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

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 manylinux wheelを作成する

09-02-01 manylinuxとは

09-02-02 manylinux wheelを作成する

09-02-03 wheelhouseをmanylinux化する

09-02-04 manylinux wheelを作成、利用する際の注意点

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

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

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

09-03-03 デプロイや CI + tox のためのrequirements.txt

09-03-04 requirements.txt の内容と実際のインストール状態を一致させる

09-04 まとめ

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

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

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

10-02 CIを実現する環境について

10-02-01 CI実行環境の準備

10-02-02 CircleCIの特徴

10-03 CircleCIを設定する

10-03-01 GitHubでのリポジトリーを作成

10-03-02 CircleCIアカウント作成

10-03-03 プロジェクトの追加

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

10-04-01 unittestでのテストコード実行例

10-04-02 pytestでのテストコード実行例

10-05 Djangoのテストコードを実行する

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

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

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

10-06 Slackへ通知する

10-06-01 Slackの設定

10-06-02 CircleCIの設定

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

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

10-07-02 CircleCIの設定の登録内容

10-07-03 成果物の参照

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

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 Webアプリケーションのパフォーマンス改善

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

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

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

12-02 乗りログのパフォーマンスを測定する

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

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-02-04 テスト実施とテストフェーズの回し方(何をどこまでやるのか)

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

Chapter 14 Djangoで実務のWebアプリ開発

14-01 Djangoは実務でWebアプリを作るのにオススメ

14-01-01 Djangoを実務で使う理由

14-01-02 Djangoのインストール方法

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

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

14-02 Djangoアプリ開発で迷子にならない流れ

14-02-01 対象になる方

14-02-02 なぜ作りたいものが作れないのか

14-02-03 まずは作りたいものを考えよう

14-02-04 メイン機能から作る

14-02-05 モデルがすべて

14-02-06 表示するだけの画面から始めよう

14-02-07 これからの流れ

14-02-08 まとめ

14-03 データベースのマイグレーション

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

14-03-02 Djangoのマイグレーション機能

14-03-03 コマンドの簡単な紹介

14-03-04 データマイグレーション

14-03-05 まとめ

14-04 Djangoで使えるライブラリ

14-04-01 factory_boyの利用

14-04-02 Django Debug Toolbar

14-04-03 他の便利なDjangoライブラリ

14-05 まとめ

Chapter 15 プログラマーのための機械学習

15-01 機械学習とは

15-01-01 「機械学習」とはどのような技術か

15-01-02 機械学習を使うために必要な2つのステップ

15-01-03 機械学習の目標

15-02 機械学習プロジェクトの概要

15-02-01 機械学習プロジェクトとはどのようなプロジェクトか

15-02-02 システム開発プロジェクトとの違い

15-02-03 PDCAサイクルでの仮説検証

15-02-04 PDCAサイクルはいつ終わるのか

15-02-05 機械学習プロジェクトの全体像

15-03 事前検証フェーズ

15-03-01 事前検証フェーズの目的

15-03-02 事前検証フェーズの作業前に確認すること

15-03-03 事前検証フェーズでプログラマーに必要となる心がけ

15-03-04 プログラム開発から実行までの手順

15-03-05 結果を分析する

15-03-06 この節のまとめ

15-04 機械学習の開発環境を準備する

15-04-01 機械学習で使うライブラリのインストール

15-04-02 Jupyter Notebookの起動と実行

15-04-03 Jupyter Notebookの基本操作

15-04-04 NumPyを使用する

15-04-05 pandasを使用する

15-04-06 Matplotlibを使用する

15-04-07 scikit-learnを使用する

15-04-08 参考サイト

15-05 まとめ

15-05-01 学習に役立つ書籍

Appendix A 開発環境のセットアップ

A-01 VirtualBoxのインストール

A-02 Vagrantのインストール

A-03 ゲストOSのセットアップ

A-04 日本語設定

A-05 プライベートネットワークの設定

A-06 ホストOSとの同期

A-07 ゲストOSのバックアップ

PR

秀和システム