Pythonエンジニア育成推進協会監修 Python実践レシピ

[表紙]Pythonエンジニア育成推進協会監修 Python実践レシピ

紙版発売
電子版発売

B5変形判/512ページ

定価2,970円(本体2,700円+税10%)

ISBN 978-4-297-12576-9

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Pythonでプログラムを作成するときに役立つ機能とライブラリを網羅した,実践的なレシピ集です。本書を使いこなして,Pythonプログラマーとして大きなステップアップが図りましょう。
本書では,Pythonが提供する,環境構築,コーディング規約,言語仕様,オブジェクト指向をサポートするクラス,型をアノテーションとして付けられる型ヒントなどに関する実践で役立つ機能を幅広く網羅しています。さらに標準ライブラリとよく使われるサードパーティライブラリとして,テキスト処理,数値処理,日付・時刻処理,データ型,アルゴリズム,ファイルとディレクトリへのアクセス,データ圧縮・アーカイブ・永続化,特定データフォーマットやインターネット上データの扱い,HTMLの扱い,テスト,デバッグ,暗号,並行処理・並列処理までの活用法を紹介します。よくある使い方,よくあるエラーや周辺知識なども加えられており,プログラミングのヒントが満載です。

こんな方におすすめ

  • Pythonでプログラミングしている方
  • Pythonの基本的な文法を学習して,実際にプログラミングを行いたい方

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

Chapter1 Pythonの環境

  • 1.1 Pythonパッケージを管理する―pip
    • 1.1.1 導入方法
    • 1.1.2 基本的な使い方
    • 1.1.3 requirements.txtを作って,複数の環境でバージョンを統一する
    • 1.1.4 -cオプションで特定パッケージのインストール可能バージョンに制限をかける
    • 1.1.5 pip:よくある使い方
    • 1.1.6 pip:ちょっと役立つ周辺知識
  • 1.2 仮想環境を作成する―venv
    • 1.2.1 仮想環境とは何か
    • 1.2.2 基本的な使い方
    • 1.2.3 venv:よくある使い方
    • 1.2.4 venv:ちょっと役立つ周辺知識
    • 1.2.5 venv:よくあるエラーと対処法

Chapter2 コーディング規約

  • 2.1 Python標準のスタイルガイド―PEP 8
    • 2.1.1 PEP 8で定義されているルール
    • 2.1.2 コードのレイアウト
    • 2.1.3 コメント
    • 2.1.4 命名規約
    • 2.1.4 PEP 8:よくある使い方
  • 2.2 静的コード解析ツール―Flake8
    • 2.2.1 Flake8 のインストール
    • 2.2.2 静的コードチェック
    • 2.2.3 Flake8のオプションの利用
    • 2.2.4 プラグインを利用したより便利なFlake8の利用
    • 2.2.5 Flake8:よくある使い方
    • 2.2.6 Flake8:ちょっと役立つ周辺知識
    • 2.2.7 Flake8:よくあるエラーと対処法
  • 2.3 ソースコードの自動整形―Black
    • 2.3.1 Blackのインストール
    • 2.3.2 Blackの特徴
    • 2.3.3 Blackによるフォーマット
    • 2.3.4 Blackのオプション
    • 2.3.5 Black:よくある使い方
    • 2.3.6 Black:ちょっと役立つ周辺知識
    • 2.3.7 Black:よくあるエラーと対処法

Chapter3 Pythonの言語仕様

  • 3.1 例外処理
    • 3.1.1 例外を処理する
    • 3.1.2 基底クラスで例外を捕捉する
    • 3.1.3 独自の例外を定義して,例外を送出する
    • 3.1.4 例外処理:よくある使い方
    • 3.1.5 例外処理:ちょっと役立つ周辺知識
    • 3.1.6 例外処理:よくあるエラーと対処法
  • 3.2 with文
    • 3.2.1 with文
    • 3.2.2 コンテキストマネージャー(context manager)
    • 3.2.3 標準ライブラリのデコレーター―@contextlib.contextmaneger
    • 3.2.4 with文:よくある使い方
    • 3.2.5 with文:ちょっと役立つ周辺知識
  • 3.3 関数の引数
    • 3.3.1 位置引数
    • 3.3.2 キーワード引数
    • 3.3.3 位置引数とキーワード引数の混在
    • 3.3.4 デフォルト値付き引数
    • 3.3.5 可変長位置引数
    • 3.3.6 可変長キーワード引数
    • 3.3.7 キーワード専用引数
    • 3.3.8 位置専用引数
    • 3.3.9 関数の引数:よくある使い方
    • 3.3.10 関数の引数:よくあるエラーと対処法
  • 3.4 アンパック
    • 3.4.1 アンパック
    • 3.4.2 ネストしたタプル,リストのアンパック
    • 3.4.3 アスタリスクを使ったアンパック
    • 3.4.4 関数の引数のアンパック
    • 3.4.5 アンパック:よくある使い方
  • 3.5 内包表記,ジェネレーター式
    • 3.5.1 リスト内包表記
    • 3.5.2 その他の内包表記
    • 3.5.3 内包表記,ジェネレーター式:よくある使い方
  • 3.6 ジェネレーター―generator
    • 3.6.1 ジェネレーター
    • 3.6.2 list()関数を使用してリストに変換する
    • 3.6.3 大きいファイルの処理にジェネレーターを使用する
    • 3.6.4 ジェネレーター:よくある使い方
    • 3.6.5 ジェネレーター:ちょっと役立つ周辺知識
    • 3.6.6 ジェネレーター:よくあるエラーと対処法
  • 3.7 デコレーター
    • 3.7.1 デコレーターを使用する
    • 3.7.2 関数デコレーターを自作する
    • 3.7.3 functools.wrapsを使用する
    • 3.7.4 デコレーター:よくある使い方

Chapter4 Pythonのクラス

  • 4.1 class構文
    • 4.1.1 クラス定義
    • 4.1.2 インスタンス化
    • 4.1.3 selfとは
  • 4.2 属性とメソッド
    • 4.2.1 コンストラクター
    • 4.2.2 データ属性
    • 4.2.3 メソッド
    • 4.2.4 特殊メソッド
    • 4.2.5 プロパティ化
    • 4.2.6 クラスメソッドの具体的な使い方
  • 4.3 継承
    • 4.3.1 標準ライブラリの継承の例
    • 4.3.2 子クラスの定義
    • 4.3.3 多重継承
    • 4.3.4 継承:よくある使い方
    • 4.3.5 エラーと対処方法
  • 4.4 dataclass
    • 4.4.1 基本文法
    • 4.4.2 コンストラクターの任意引数
    • 4.4.3 データ変換
    • 4.4.4 dataclass:よくある使い方
    • 4.4.5 エラーと対処方法
  • 4.5 オブジェクト関連関数
    • 4.5.1 関数の種類
    • 4.5.2 オブジェクト関連関数の使い方
    • 4.5.3 周辺知識
    • 4.5.4 エラーと対処方法

Chapter5 型ヒント

  • 5.1 型ヒント
    • 5.1.1 型ヒントとは
    • 5.1.2 基本的な型ヒントの一覧と書き方
    • 5.1.3 typingモジュールを利用した型ヒント
    • 5.1.4 型ヒント:よくある使い方
  • 5.2 静的型チェックを行う―mypy
    • 5.2.1 静的型チェックツールで型ヒントをチェックする
    • 5.2.2 mypyのインストール
    • 5.2.3 mypyによる静的型チェック
    • 5.2.4 mypyのオプション
    • 5.2.5 mypy:よくある使い方
    • 5.2.6 mypy:ちょっと役立つ周辺知識
    • 5.2.7 mypy:よくあるエラーと対処法

Chapter6 テキストの処理

  • 6.1 一般的な文字列操作を行う―str,string
    • 6.1.1 文字列リテラルの書き方
    • 6.1.2 文字列以外のオブジェクトを文字列に変換する
    • 6.1.3 文字列のチェックメソッド
    • 6.1.4 文字列の変換を行う
    • 6.1.5 その他の文字列メソッド
    • 6.1.6 文字列定数を利用する
    • 6.1.7 str,string:ちょっと役立つ周辺知識
    • 6.1.8 str,string:よくあるエラーと対処法
  • 6.2 フォーマットと文字列リテラル―f-string
    • 6.2.1 f-stringの書き方
    • 6.2.2 =を付けた出力
    • 6.2.3 フォーマットの指定方法
    • 6.2.4 f-string導入前の文字列フォーマット方法
  • 6.3 正規表現を扱う―re
    • 6.3.1 基本的な関数―search,match
    • 6.3.2 reモジュールの定数(フラグ)
    • 6.3.3 正規表現オブジェクト
    • 6.3.4 マッチオブジェクト
    • 6.3.5 re:よくある使い方
    • 6.3.6 re:ちょっと役立つ周辺知識
    • 6.3.7 re:よくあるエラーと対処法
  • 6.4 Unicodeデータベースへアクセスする―unicodedata
    • 6.4.1 Unicode文字と文字の名前を変換する
    • 6.4.2 Unicode文字列の正規化
    • 6.4.3 unicodedata:よくある使い方
    • 6.4.4 unicodedata:ちょっと役立つ周辺知識

Chapter7 数値の処理

  • 7.1 基本的な数値計算を行う―組み込み関数,math
    • 7.1.1 数値の計算を行う(組み込み関数)
    • 7.1.2 数値の計算を行う―math モジュール
    • 7.1.3 数値を丸める,絶対値を求める
    • 7.1.4 数値計算に利用する定数を取得する
    • 7.1.5 組み込み関数,math:ちょっと役立つ周辺知識
    • 7.1.6 浮動小数の非数nanの値を確認する
  • 7.2 十進数で計算を行う―decimal
    • 7.2.1 精度を指定した計算を行う
    • 7.2.2 数値の丸めを行う
    • 7.2.3 decimal:よくある使い方
    • 7.2.4 decimal:よくあるエラーと対処法
  • 7.3 擬似乱数を扱う―random
    • 7.3.1 乱数を生成する
    • 7.3.2 特定の分布に従う乱数を生成する
    • 7.3.3 ランダムに選択する
  • 7.4 統計計算を行う―statistics
    • 7.4.1 平均値や中央値を求める
    • 7.4.2 標準偏差や分散を求める

Chapter8 日付と時刻の処理

  • 8.1 日付や時刻を扱う―datetime
    • 8.1.1 日付を扱う―date オブジェクト
    • 8.1.2 時刻を扱う―time オブジェクト
    • 8.1.3 日時を扱う―datetimeオブジェクト
    • 8.1.4 日時の差を扱う―timedelta オブジェクト
    • 8.1.5 strftime()で使える主な指定子
    • 8.1.6 datetime:よくある使い方
    • 8.1.7 datetime:ちょっと役立つ周辺知識
    • 8.1.8 datetime:よくあるエラーと対処法
  • 8.2 時刻を扱う―time
    • 8.2.1 時刻を取得する
    • 8.2.2 時刻オブジェクト―struct_time
    • 8.2.3 スレッドの一時停止―sleep()
    • 8.2.4 time:よくある使い方
    • 8.2.5 time:ちょっと役立つ周辺知識
  • 8.3 IANAタイムゾーンデータベースを扱う―zoneinfo
    • 8.3.1 IANAタイムゾーンを表すオブジェクト―ZoneInfo
    • 8.3.2 zoneinfo:よくある使い方
    • 8.3.3 zoneinfo:ちょっと役立つ周辺知識
    • 8.3.4 zoneinfo:よくあるエラーと対処法
  • 8.4 datetimeの強力な拡張モジュール―dateutil
    • 8.4.1 dateutilのインストール
    • 8.4.2 日付文字列の構文解析―parser
    • 8.4.3 日付の差の計算―relativedelta
    • 8.4.4 繰り返しルール―rrule
    • 8.4.5 dateutil:よくある使い方
    • 8.4.6 dateutil:ちょっと役立つ周辺知識
    • 8.4.7 dateutil:よくあるエラーと対処法

Chapter9 データ型とアルゴリズム

  • 9.1 ソート―sorted,sort,operator
    • 9.1.1 sorted()関数
    • 9.1.2 reversed()関数
    • 9.1.3 リストのsort(),reverse()メソッド
    • 9.1.4 key引数
    • 9.1.5 operatorモジュール
    • 9.1.6 ソート:ちょっと役立つ周辺知識
    • 9.1.7 sorted,sort,operator:よくあるエラーと対処法
  • 9.2 さまざまなコンテナー型を扱う―collections
    • 9.2.1 データの件数をカウントする―Counter
    • 9.2.2 デフォルト値を持った辞書―defaultdict
    • 9.2.3 データの挿入順を維持する辞書―OrderedDict
    • 9.2.4 名前付きフィールドを持つタプル―namedtuple
    • 9.2.5 collections:よくある使い方
  • 9.3 二分法アルゴリズムを利用する―bisect
    • 9.3.1 二分法アルゴリズムで挿入する位置を返す.
    • 9.3.2 ソート済みのリストに要素を挿入する
    • 9.3.3 bisect:よくあるエラーと対処法
  • 9.4 列挙型による定数の定義を行う―enum
    • 9.4.1 定数値を定義する
    • 9.4.2 定数を呼び出す
    • 9.4.3 定数同士を比較する
    • 9.4.4 enum:よくある使い方
    • 9.4.5 enum:ちょっと役立つ周辺知識
    • 9.4.6 enum:よくあるエラーと対処法
  • 9.5 データを読みやすい形式で出力する―pprint
    • 9.5.1 オブジェクトを整形して出力する―pprint()
    • 9.5.2 オブジェクトを整形した文字列を取得する―pformat
    • 9.5.3 pprint:よくある使い方
    • 9.5.4 pprint:ちょっと役立つ周辺知識
  • 9.6 イテレーターの組み合わせで処理を組み立てる―itertools
    • 9.6.1 イテラブルオブジェクトを連結する―chain()
    • 9.6.2 連続する値をまとめる―groupby()
    • 9.6.3 イテレーターから範囲を指定して値を取得する―islice()
    • 9.6.4 複数のイテラブルオブジェクトの要素からタプルを作成する―zip(),zip_longest()
    • 9.6.5 データを組み合わせたイテレーターを取得する
    • 9.6.6 itertools:よくある使い方
    • 9.6.7 itertools:ちょっと役立つ周辺知識
  • 9.7 ミュータブルなオブジェクトをコピーする―copy
    • 9.7.1 浅いコピーを行う―copy()関数
    • 9.7.2 深いコピーを行う―deepcopy()関数
    • 9.7.3 copy:よくある使い方
    • 9.7.4 copy:ちょっと役立つ周辺知識

Chapter10 汎用OS・ランタイムサービス

  • 10.1 OSの機能を利用する―os
    • 10.1.1 実行中のプロセス属性の操作
    • 10.1.2 ファイルとディレクトリの操作
    • 10.1.3 さまざまなシステム情報へのアクセス
    • 10.1.4 ランダムな文字列の生成
    • 10.1.5 os:よくある使い方
    • 10.1.6 os:ちょっと役立つ周辺知識
    • 10.1.7 os:よくあるエラーと対処法
  • 10.2 ストリームを扱う―io
    • 10.2.1 インメモリなテキストストリームを扱う―StringIO
    • 10.2.2 インメモリなバイナリストリームを扱う―BytesIO
    • 10.2.3 ioモジュールをユニットテストで活用する
    • 10.2.4 io:よくある使い方
    • 10.2.5 io:ちょっと役立つ周辺知識
    • 10.2.6 io:よくあるエラーと対処法
  • 10.3 インタープリターに関わる情報を取得,操作する―sys
    • 10.3.1 コマンドライン引数を取得する―argv
    • 10.3.2 ライブラリのインポートパスを操作する―path
    • 10.3.3 プログラムを終了する―exit()
    • 10.3.4 コンソールの入出力を扱う―stdin,stdout,stderr
    • 10.3.5 breakpoint()実行時のフック関数―breakpointhook()
    • 10.3.6 Pythonのバージョン番号を調べる―version_info
    • 10.3.7 sys:よくある使い方
    • 10.3.8 sys:ちょっと役立つ周辺知識
    • 10.3.9 sys:よくあるエラーと対処法
  • 10.4 コマンドラインオプション,引数を扱う―argparse
    • 10.4.1 コマンドラインオプションを扱う
    • 10.4.2 argparse:よくある使い方
    • 10.4.3 argparse:ちょっと役立つ周辺知識
    • 10.4.4 argparse:よくあるエラーと対処法

Chapter11 ファイルとディレクトリへのアクセス

  • 11.1 ファイルパス操作を直観的に行う―pathlib
    • 11.1.1 クラス構成
    • 11.1.2 純粋パスを扱う―PurePath
    • 11.1.3 具象パスを扱う―Path
    • 11.1.4 pathlib:よくある使い方
    • 11.1.5 pathlib:ちょっと役立つ周辺知識
    • 11.1.6 pathlib:よくあるエラーと対処法
  • 11.2 一時的なファイルやディレクトリを生成する―tempfile
    • 11.2.1 一時ファイルを作成する
    • 11.2.2 一時ディレクトリを作成する
    • 11.2.3 tempfile:よくある使い方
  • 11.3 高レベルなファイル操作を行う―shutil
    • 11.3.1 ファイルをコピーする
    • 11.3.2 再帰的にディレクトリやファイルを操作する
    • 11.3.3 shutil:よくある使い方
    • 11.3.4 shutil:ちょっと役立つ周辺知識
    • 11.3.5 shutil:よくあるエラーと対処法

Chapter12 データ圧縮,アーカイブと永続化

  • 12.1 gzip圧縮ファイルを扱う―gzip
    • 12.1.1 gzipファイルを圧縮,展開する
    • 12.1.2 gzip:よくある使い方
    • 12.1.3 gzip:ちょっと役立つ周辺知識
    • 12.1.4 gzip:よくあるエラーと対処法
  • 12.2 ZIPファイルを扱う―zipfile
    • 12.2.1 ZIPファイルを操作する
    • 12.2.2 日本語のファイル名を扱う
    • 12.2.3 zipfile:よくある使い方
    • 12.2.4 zipfile:ちょっと役立つ周辺知識
    • 12.2.5 zipfile:よくあるエラーと対処法
  • 12.3 tarファイルを扱う―tarfile
    • 12.3.1 tarファイルを操作する
    • 12.3.2 tarfile:よくある使い方
    • 12.3.3 tarfile:ちょっと役立つ周辺知識
    • 12.3.4 tarfile:よくあるエラーと対処法
  • 12.4 Pythonオブジェクトをシリアライズする―pickle
    • 12.4.1 Pythonオブジェクトのシリアライズとデシリアライズ
    • 12.4.2 pickleのプロトコルバージョン
    • 12.4.3 pickle:よくある使い方
    • 12.4.4 pickle:よくあるエラーと対処法

Chapter13 特定のデータフォーマットを扱う

  • 13.1 CSVファイルを扱う―csv
    • 13.1.1 CSVファイルの読み込みと書き込み
    • 13.1.2 辞書データを用いたCSVファイルの読み込みと書き込み
    • 13.1.3 csv:よくある使い方
    • 13.1.4 csv:ちょっと役立つ周辺知識
    • 13.1.5 csv:よくあるエラーと対処法
  • 13.2 JSONを扱う―json
    • 13.2.1 JSONのエンコードとデコード
    • 13.2.2 JSONのエンコードとデコード(ファイルオブジェクト)
    • 13.2.3 json:よくある使い方
    • 13.2.4 json:ちょっと役立つ周辺知識
    • 13.2.5 json:よくあるエラーと対処法
  • 13.3 INIファイルを扱う―configparser
    • 13.3.1 INIファイルを読み込む
    • 13.3.2 INIファイルの高度な利用
    • 13.3.3 configparser:よくあるエラーと対処法
  • 13.4 YAMLを扱う―PyYAML
    • 13.4.1 PyYAMLのインストール
    • 13.4.2 YAMLファイルの読み込み
    • 13.4.3 YAMLファイルの書き込み
    • 13.4.4 PyYAML:ちょっと役立つ周辺知識
  • 13.5 Excelを扱う―openpyxl
    • 13.5.1 openpyxlのインストール
    • 13.5.2 Excelの読み込み
    • 13.5.3 Excelの書き込み
    • 13.5.4 スタイルの適用
    • 13.5.5 チャートの挿入
    • 13.5.6 openpyxl:よくある使い方
    • 13.5.7 openpyxl:ちょっと役立つ周辺知識
    • 13.5.8 openpyxl:よくあるエラーと対処法
  • 13.6 画像を扱う―Pillow
    • 13.6.1 Pillowのインストール
    • 13.6.2 画像のサイズを変更する・回転する
    • 13.6.3 テキストの埋め込み
    • 13.6.4 Pillow:よくある使い方
    • 13.6.5 Pillow:よくあるエラーと対処法

Chapter14 インターネット上のデータを扱う

  • 14.1 URLをパースする―urllib.parse
    • 14.1.1 URLをパースする―urlparse()
    • 14.1.2 クエリ文字列をパースする―parse_qs()
    • 14.1.3 クエリ文字列を組み立てる―urlencode()
    • 14.1.4 URLとして使用できる文字列に変換する―quote(),quote_plus()
    • 14.1.5 URLを結合する―urljoin()
    • 14.1.6 urllib.parse:よくある使い方
    • 14.1.7 urllib.parse:よくあるエラーと対処法
  • 14.2 URLを開く―urllib.request
    • 14.2.1 指定のURLを開く―urlopen()
    • 14.2.2 GET,POST以外のHTTPメソッドを扱う
    • 14.2.3 レスポンスモジュール
    • 14.2.4 urllib.request:よくある使い方
    • 14.2.5 urllib.request:ちょっと役立つ周辺知識
    • 14.2.6 urllib.request:よくあるエラーと対処法
  • 14.3 ヒューマンフレンドリーなHTTPクライアント―Requests
    • 14.3.1 指定のURLを開く
    • 14.3.2 Requests:よくある使い方
    • 14.3.3 Requests:ちょっと役立つ周辺知識
    • 14.3.4 Requests:よくあるエラーと対処法
  • 14.4 Base16,Base64などへエンコードする―base64
    • 14.4.1 Base64にエンコードする
    • 14.4.2 Base64からデコードする
    • 14.4.3 base64:よくある使い方
    • 14.4.4 base64:ちょっと役立つ周辺知識
  • 14.5 電子メールのデータを処理する―email
    • 14.5.1 メッセージのデータを管理する―email.message
    • 14.5.2 メールを解析する―email.parser
    • 14.5.3 email:ちょっと役立つ周辺知識

Chapter15 HTML/XMLを扱う

  • 15.1 XMLをパースする―ElementTree
    • 15.1.1 XMLのパース
    • 15.1.2 要素の取得や検索
    • 15.1.3 ElementTree:よくある使い方
    • 15.1.4 ElementTree:ちょっと役立つ周辺知識
  • 15.2 XML/HTMLを高速かつ柔軟にパースする―lxml
    • 15.2.1 lxmlのインストール
    • 15.2.2 HTMLをパースする
    • 15.2.3 HTMLを書き換える
    • 15.2.4 整形式ではない(non well-formed)XMLをパースする
    • 15.2.5 lxml:よくある使い方
    • 15.2.6 lxml:ちょっと役立つ周辺知識
  • 15.3 使いやすいHTMLパーサーを利用する―Beautiful Soup 4
    • 15.3.1 Beautiful Soup 4のインストール
    • 15.3.2 html5libのインストール
    • 15.3.3 BeautifulSoupオブジェクトの作成
    • 15.3.4 HTML内の要素の情報を取得する
    • 15.3.5 HTML内の要素を検索する
    • 15.3.6 テキストの取得
    • 15.3.7 特定要素から親,兄弟,前後の要素の取得.
    • 15.3.8 Beautiful Soup 4:よくある使い方
    • 15.3.9 Beautiful Soup 4:ちょっと役立つ周辺知識
    • 15.3.10 Beautiful Soup 4:よくあるエラーと対処法

Chapter16 テスト

  • 16.1 対話的な実行例をテストする―doctest
    • 16.1.1 doctestを作成する
    • 16.1.2 テキストファイル中の実行例をテストする.
    • 16.1.3 doctest:よくある使い方
    • 16.1.4 doctest:ちょっと役立つ周辺知識
    • 16.1.5 doctest:よくあるエラーと対処法
  • 16.2 ユニットテストフレームワークを利用する―unittest
    • 16.2.1 テストを作成して実行する
    • 16.2.2 さまざまな条件や失敗を記述する
    • 16.2.3 1つのテストメソッドの中で複数のアサーションメソッドを呼ぶ―subTest()
    • 16.2.4 テストの事前準備を行う―setUp(),setUpClass()
    • 16.2.5 テストの事後処理を行う―tearDown(),tearDownClass()
    • 16.2.6 コマンドラインインターフェースを利用する
    • 16.2.7 unittest:よくある使い方
    • 16.2.8 unittest:ちょっと役立つ周辺知識
    • 16.2.9 unittest:よくあるエラーと対処法
  • 16.3 モックを利用してユニットテストを行う―unittest.mock
    • 16.3.1 モックオブジェクトを作成して戻り値や例外を設定する―Mock,MagicMock
    • 16.3.2 クラスやメソッドをモックで置き換える―patch()
    • 16.3.3 モックオブジェクトが呼び出されたかどうかを確認する
    • 16.3.4 unittest.mock:よくある使い方
    • 16.3.5 unittest.mock:ちょっと役立つ周辺知識
    • 16.3.6 unittest.mock:よくあるエラーと対処法
  • 16.4 高度なユニットテスト機能を利用する―pytest
    • 16.4.1 pytest のインストール
    • 16.4.2 テストを作成して実行する
    • 16.4.3 自動的にテストを探して実行する
    • 16.4.4 複数の入出力パターンについてテストする(パラメタライズドテスト)
    • 16.4.5 テスト実行の前後に処理を挿入するfixtureを書く
    • 16.4.6 pytest:よくある使い方
    • 16.4.7 pytest:ちょっと役立つ周辺知識
    • 16.4.8 pytest:よくあるエラーと対処法
  • 16.5 ドキュメント生成とオンラインヘルプシステム―pydoc
    • 16.5.1 モジュールのドキュメントを確認する
    • 16.5.2 モジュールのドキュメントを書く
    • 16.5.3 モジュールのドキュメントをHTML形式で生成する
    • 16.5.4 HTTPサーバーを起動してブラウザーからドキュメントを確認する
    • 16.5.5 pydoc:よくある使い方
    • 16.5.6 pydoc:ちょっと役立つ周辺知識
    • 16.5.7 pydoc:よくあるエラーと対処法

Chapter17 デバッグ

  • 17.1 対話的なデバッグを行う―pdb,breakpoint
    • 17.1.1 代表的なデバッガーコマンド
    • 17.1.2 pdbでブレークポイントを挿入する
    • 17.1.3 breakpoint()関数でブレークポイントを挿入する
    • 17.1.4 Pythonの対話モードからデバッグを行う
    • 17.1.5 異常終了するスクリプトをデバッグする―pdb.pm()
    • 17.1.6 pdb,breakpoint:よくある使い方
    • 17.1.7 pdb,breakpoint:ちょっと役立つ周辺知識
    • 17.1.8 pdb,breakpoint:よくあるエラーと対処法
  • 17.2 コードの実行時間を計測する―timeit
    • 17.2.1 コマンドラインインターフェースで計測する
    • 17.2.2 Pythonインターフェースで計測する
    • 17.2.3 timeit:よくある使い方
    • 17.2.4 timeit:ちょっと役立つ周辺知識
    • 17.2.5 timeit:よくあるエラーと対処法
  • 17.3 スタックトレースを扱う―traceback
    • 17.3.1 スタックトレースを出力する
    • 17.3.2 スタックトレースを文字列として扱う
    • 17.3.3 traceback:よくある使い方
    • 17.3.4 traceback:ちょっと役立つ周辺知識
    • 17.3.5 traceback:よくあるエラーと対処法
  • 17.4 ログを出力する―logging
    • 17.4.1 3つのロギング設定方法
    • 17.4.2 標準で定義されているログレベル
    • 17.4.3 loggingモジュールからログを扱う
    • 17.4.4 モジュール方式でロギングを設定する
    • 17.4.5 辞書やファイルからロギングを設定する
    • 17.4.6 logging:よくある使い方
    • 17.4.7 logging:ちょっと役立つ周辺知識
    • 17.4.8 logging:よくあるエラーと対処法

Chapter18 暗号関連

  • 18.1 安全な乱数を生成する―secrets
    • 18.1.1 パスワード(乱数)の生成
    • 18.1.2 トークンの生成
    • 18.1.3 secrets:よくある使い方
    • 18.1.4 secrets:ちょっと役立つ周辺知識
  • 18.2 ハッシュ値を生成する―hashlib
    • 18.2.1 さまざまなアルゴリズムを使用したハッシュ値算出
    • 18.2.2 hashlibによる鍵導出関数
    • 18.2.3 hashlib:よくある使い方.
    • 18.2.4 hashlib:ちょっと役立つ周辺知識
    • 18.2.5 hashlib:よくあるエラーと対処法
  • 18.3 暗号化ライブラリ―cryptography
    • 18.3.1 cryptographyのインストール
    • 18.3.2 共通鍵暗号による暗号化と復号
    • 18.3.3 公開鍵暗号による暗号化と復号
    • 18.3.4 cryptography:よくある使い方
    • 18.3.5 cryptography:ちょっと役立つ周辺知識

Chapter19 並行処理,並列処理

  • 19.1 イベントループでの非同期処理―asyncio
    • 19.1.1 非同期I/Oで並行処理を実現するasyncio
    • 19.1.2 並行処理と非同期I/O
    • 19.1.3 コルーチンの定義と実行
    • 19.1.4 タスクを利用した並行処理とイベントループの役割
    • 19.1.5 asyncioの基本的な機能
    • 19.1.6 実践的な使い方の例
    • 19.1.7 asyncio:よくある使い方
    • 19.1.8 asyncio:ちょっと役立つ周辺知識
    • 19.1.9 asyncio:よくあるエラーと対処法
  • 19.2 マルチプロセス,マルチスレッドをシンプルに行う―concurrent.futures
    • 19.2.1 機能の概要
    • 19.2.2 まとめて処理を実行し,まとめて結果を受け取るmap()メソッド
    • 19.2.3 concurrent.futures:よくある使い方
    • 19.2.4 concurrent.futures:ちょっと役立つ周辺知識
    • 19.2.5 concurrent.futures:よくあるエラーと対処法
  • 19.3 サブプロセスを管理する―subprocess
    • 19.3.1 子プロセスを実行する
    • 19.3.2 run()関数で設定可能な主な引数
    • 19.3.3 より高度にサブプロセスを実行する
    • 19.3.4 subprocess:よくある使い方
    • 19.3.5 subprocess:よくあるエラーと対処法

著者プロフィール

鈴木たかのり(すずきたかのり)

一般社団法人PyCon JP Association 副代表理事,株式会社ビープラウド役員。部内のサイトを作るためにZope/Plone と出会い,その後必要にかられてPythonを使い始める。PyCon JP では2011年1月のPyCon mini JP からスタッフとして活動し,2014年-2016年のPyCon JP 座長。ほかの主な活動は,Pythonボルダリング部(#kabepy)部長,Python mini Hack-a-thon(#pyhack)主催など。
共著書/ 訳書に『最短距離でゼロからしっかり学ぶPython入門(必修編・実践編)』(2020年,技術評論社),『いちばんやさしいPythonの教本 第2版』(2020年,インプレス),『いちばんやさしいPython機械学習の教本』(2019年,インプレス),『Pythonによるあたらしいデータ分析の教科書』(2018年,翔泳社)などがある。最近の楽しみはPython Boot Campの講師で訪れた土地で,現地のクラフトビールを飲むこと。2019年は世界各国のPyConでの発表に挑戦し,日本を含む9ヵ国で発表した。趣味は吹奏楽とボルダリングとレゴとペンシルパズル。
所属先:一般社団法人PyCon JP Association/株式会社ビープラウド
Twitter:@takanory 
GitHub:https://github.com/takanory
Facebook:https://www.facebook.com/takanory.net


筒井隆次(つついりゅうじ)

Pythonを使い始めたのは2011年ごろから。もともとはJavaプログラマだったが,何か別の言語を覚えたいと思い,複数の言語を試しているうちに,Pythonの書きやすさを気に入るようになった。2013年からDjangoを使ったWebサービス開発に従事している。趣味は映画鑑賞,格闘技観戦。
コミュニティ:Python Boot Camp/Shonan.py
Twitter:@ryu22e 
Blog:https://ryu22e.org 
GitHub:https://github.com/ryu22e


寺田学(てらだまなぶ)

Python Web関係の業務を中心にコンサルティングや構築を株式会社CMSコミュニケーションズ代表取締役として手がけている。PyCon JPの開催に尽力し,2013年3月からは一般社団法人PyCon JP Association代表理事を務める。その他のOSS関係コミュニティを主宰またはスタッフとして活動中。一般社団法人Pythonエンジニア育成推進協会顧問理事として,Pythonの教育に積極的に関連している。Python をはじめとした技術話題を扱うPodcast「terapyon channel」(https://podcast.terapyon.net/)を配信中。共著/監修に,『Pythonハッカーガイドブック』(2020年,マイナビ出版,監訳),『機械学習図鑑』(2019年,翔泳社,共著),『Pythonによるあたらしいデータ分析の教科書』(2018年,翔泳社,共著),『スラスラわかるPython』(2017年,翔泳社,監修)などがある。
所属先:一般社団法人PyCon JP Association/ 一般社団法人Python エンジニア育成推進協会/ 株式会社CMSコミュニケーションズ
コミュニティ:Python Software Foundation Fellow member 2019Q3/Plone Foundation Ambassador
Twitter:@terapyon 
GitHub:https://github.com/terapyon 
Facebook:https://www.facebook.com/terapyon


杉田雅子(すぎたまさこ)

株式会社SQUEEZEにて,Djangoを使ったWebシステムの開発業務に携わる。コミュニティ活動として,Raspberry Piもくもく会を主催,PyLadies Tokyoのスタッフとして活動中。
所属先:株式会社SQUEEZE
Twitter:@ane45


門脇諭(かどわきさとる)

バクフー株式会社CTO。Pythonを使用したバックエンドサービスやWeb関係の業務に携わっている。山形県を生活の拠点として開発業務を行いながら,Python Boot CampやPyCon JP への参加(過去2回登壇)するなどの活動を行っている。
所属先:バクフー株式会社(BakFoo)


福田隼也(ふくだじゅんや)

株式会社日本システム技研所属。Pythonを中心としたWebシステム開発にフルスタックエンジニアとして従事。PyCon JP,DjangoCongress JP などにて登壇。コミュニティ活動として,ギークラボ長野の運営に参加。ビールとキャンプが好き。
所属先:株式会社日本システム技研(JSL)
Twitter:@JunyaFff