退屈なことはPythonにやらせよう 第3版

―ノンプログラマーにもできる自動化処理プログラミング

[cover photo]
TOPICS
Python
発行年月日
PRINT LENGTH
800
ISBN
978-4-8144-0152-9
原書
Automate the Boring Stuff with Python, 3rd Edition
FORMAT
Print
Print
4,620円

自作RPA本の草分けとして日本でも圧倒的な支持を集めた世界的ベストセラー書の改訂第3版。本書は日々の面倒な繰り返し業務――Excelの処理、PDFやWord文書の一括操作、Webスクレイピング、膨大なファイル管理など――をPythonで自動化するための実践ガイドです。第3版では、SQLiteデータベースの操作、Playwrightを用いたブラウザ制御、OpenAIのWhisperによる音声の文字起こし、PyTesseractを活用した画像のOCR、ntfyを使った通知など、数多くのユースケースが新たに追加されています。コードが自動生成される時代でも、AIを有効活用するにはプログラミングの知識が不可欠です。AIの“幻覚”に惑わされないためにも、コードの仕組みを学び、コンピュータの真の力を引き出すスキルを本書で身につけましょう。

関連ファイル

目次

賞賛の声
序文
訳者まえがき
まえがき

第I部 Pythonプログラミングの基礎

1章 Pythonの基本
    1.1 式をインタラクティブシェルに入力する
    1.2 整数、浮動小数点数、文字列型
    1.3 文字列の連結と複製
    1.4 変数に値を格納する
        1.4.1 代入文
        1.4.2 変数名
    1.5 最初のプログラム
    1.6 プログラムを分析する
        1.6.1 コメント
        1.6.2 print()関数
        1.6.3 input()関数
        1.6.4 挨拶のメッセージ
        1.6.5 len()関数
        1.6.6 str()、int()、float()関数
        1.6.7 type()関数
        1.6.8 round()とabs()関数
    1.7 コンピュータが2進数を記録する方法
    1.8 まとめ
    1.9 演習問題

2章 if-elseとフロー制御
    2.1 ブール型
    2.2 比較演算子
    2.3 論理演算子
    2.4 論理演算子と比較演算子を組み合わせる
    2.5 フロー制御の構成要素
        2.5.1 条件式
        2.5.2 コードのブロック
        2.5.3 プログラム実行
    2.6 フロー制御文
        2.6.1 if文
        2.6.2 else文
        2.6.3 elif文
    2.7 短いプログラム:反対の日
    2.8 短いプログラム:偽装容量計算機
    2.9 まとめ
    2.10 演習問題

3章 繰り返し
    3.1 whileループ文
        3.1.1 やっかいなwhileループ
        3.1.2 break文
        3.1.3 continue文
    3.2 forループとrange()関数
        3.2.1 同等のwhileループ
        3.2.2 range()関数の引数
    3.3 モジュールをインポートする
    3.4 sys.exit()関数を用いてプログラムをすぐに終了する
    3.5 短いプログラム:数当てゲーム
    3.6 短いプログラム:じゃんけんゲーム
    3.7 まとめ
    3.8 演習問題

4章 関数
    4.1 関数を作る
    4.2 引数とパラメータ
    4.3 戻り値とreturn文
    4.4 None値
    4.5 名前付きパラメータ
    4.6 呼び出しスタック
    4.7 ローカルスコープとグローバルスコープ
        4.7.1 スコープのルール
        4.7.2 global文
        4.7.3 スコープの識別
    4.8 例外処理
    4.9 短いプログラム:ジグザグ
    4.10 短いプログラム:トゲトゲ
    4.11 まとめ
    4.12 演習問題
    4.13 演習プログラム
        4.13.1 コラッツ数列
        4.13.2 入力の妥当性検証

5章 デバッグ
    5.1 例外を起こす
    5.2 アサート
    5.3 ログ出力
        5.3.1 loggingモジュールを用いる
        5.3.2 ログファイル
        5.3.3 悪い習慣:print()によるデバッグ
        5.3.4 ログレベル
        5.3.5 ログ出力を無効化する
    5.4 Muのデバッガ
        5.4.1 足し算プログラムをデバッグする
        5.4.2 ブレークポイントを設定する
    5.5 まとめ
    5.6 演習問題
    5.7 演習プログラム
        5.7.1 コイン投げゲームのデバッグ

6章 リスト
    6.1 リスト型
        6.1.1 インデックス
        6.1.2 負のインデックス
        6.1.3 スライス
        6.1.4 len()関数
        6.1.5 値を更新する
        6.1.6 リストの連結と複製
        6.1.7 del文
    6.2 リストを使う
        6.2.1 forループとリスト
        6.2.2 inとnot in演算子
        6.2.3 複数代入法
        6.2.4 リストの要素を列挙する
        6.2.5 ランダムな選択と並べ替え
    6.3 累算代入演算子
    6.4 メソッド
        6.4.1 値を検索する
        6.4.2 値を追加する
        6.4.3 値を削除する
        6.4.4 値をソートする
        6.4.5 逆順にする
    6.5 論理演算子の短縮記法
    6.6 例題プログラム:リストを用いたマジック8ボール
    6.7 シーケンス型
        6.7.1 ミュータブル、イミュータブルなデータ型
        6.7.2 タプル型
        6.7.3 リストとタプルの型変換
    6.8 参照
        6.8.1 引数
        6.8.2 copyモジュールのcopy()関数とdeepcopy()関数
    6.9 短いプログラム:マトリックス風スクリーンセーバー
    6.10 まとめ
    6.11 演習問題
    6.12 演習プログラム
        6.12.1 カンマ付け
        6.12.2 コイン投げ連続解析

7章 辞書とデータ構造
    7.1 辞書型
        7.1.1 辞書とリストの比較
        7.1.2 キーと値を返す
        7.1.3 キーが存在するかどうか判定する
        7.1.4 デフォルト値の設定
    7.2 データ構造を用いて実世界の物体をモデル化する
        プロジェクト1 インタラクティブチェス盤シミュレータ
        ステップ1:プログラムの設定
        ステップ2:チェス盤のテンプレートを作る
        ステップ3:現在のチェス盤を表示する
        ステップ4:チェス盤を操作する
    7.3 辞書とリストの入れ子
    7.4 まとめ
    7.5 演習問題
    7.6 演習プログラム
        7.6.1 チェスの辞書の検証プログラム
        7.6.2 ファンタジーゲームの持ち物リスト
        7.6.3 リストから辞書に獲得アイテムを移す

8章 文字列とテキストの編集
    8.1 文字列を操作する
        8.1.1 文字列リテラル
        8.1.2 インデックスとスライス
        8.1.3 inとnot in演算子
    8.2 f文字列
    8.3 f文字列の代替手段:%sとformat()
    8.4 便利な文字列メソッド
        8.4.1 大文字と小文字を変更する
        8.4.2 文字列の種類を調べる
        8.4.3 文字列の先頭と末尾を調べる
        8.4.4 文字列の連結と分割
        8.4.5 テキストを揃える
        8.4.6 空白文字を除去する
    8.5 文字コードポイント
    8.6 文字列をコピー&ペーストする
        プロジェクト2 Wikiで箇条書きのマークアップ
        ステップ1:クリップボードからコピーする
        ステップ2:行を分割して「*」を追加する
        ステップ3:変更した行を結合する
    8.7 短いプログラム:ピッグ・ラテン
    8.8 まとめ
    8.9 演習問題
    8.10 演習プログラム

第II部 処理の自動化

9章正規表現を使ったパターンマッチ
    9.1 正規表現を用いないパターンマッチ
    9.2 正規表現を用いたパターンマッチ
    9.3 正規表現の文法
        9.3.1 丸カッコを用いたグルーピング
        9.3.2 エスケープ文字を用いる
        9.3.3 縦線を使って複数のグループとマッチする
        9.3.4 すべてのマッチを返す
    9.4 修飾子文法:どの文字とマッチするか
        9.4.1 文字集合と補集合
        9.4.2 文字集合の短縮形
        9.4.3 ドット文字を用いてすべての文字にマッチする
        9.4.4 マッチする対象について
    9.5 量指定子の文法:修飾子が何回マッチするか
        9.5.1 任意パターンとマッチする
        9.5.2 0個以上の修飾子とマッチする
        9.5.3 1個以上の修飾子とマッチする
        9.5.4 特定の数の修飾子とマッチする
    9.6 貪欲マッチと非貪欲マッチ
        9.6.1 あらゆる文字列とマッチする
        9.6.2 改行とマッチする
    9.7 文字列の先頭と末尾にマッチ
    9.8 大文字・小文字を無視したマッチ
    9.9 文字列の置換
    9.10 冗長モードを用いた複雑な正規表現の管理
    9.11 re.IGNORECASE、re.DOTALL、re.VERBOSEの組み合わせ
        プロジェクト3 長大な文書から連絡先情報を抽出する
        ステップ1:電話番号用の正規表現を作る
        ステップ2:電子メールアドレスの正規表現を作る
        ステップ3:クリップボードのテキストを検索する
        ステップ4:検索結果を1つの文字列にまとめる
        類似プログラムのアイデア
    9.12 Humre:人間が読みやすい正規表現のためのモジュール
    9.13 まとめ
    9.14 演習問題
    9.15 演習プログラム
        9.15.1 強いパスワードの検出
        9.15.2 正規表現を用いたstrip()メソッド

10章 ファイルの読み書き
    10.1 ファイルとファイルパス
        10.1.1 パスの区切り文字を標準化する
        10.1.2 パスを連結する
        10.1.3 カレントディレクトリにアクセスする
        10.1.4 ホームディレクトリにアクセスする
        10.1.5 絶対パスと相対パスを指定する
        10.1.6 新しいフォルダを作る
        10.1.7 絶対パスと相対パスを操作する
        10.1.8 ファイルパスの一部を取得する
        10.1.9 ファイルサイズとタイムスタンプを調べる
        10.1.10 globパターンでファイルを検索する
        10.1.11 パスを検査する
    10.2 ファイルの読み書き処理
        10.2.1 ファイルを開く
        10.2.2 ファイルの内容を読み込む
        10.2.3 ファイルを書き込む
        10.2.4 with文を使う
    10.3 shelveモジュールを用いて変数を保存する
        プロジェクト4 ランダムな問題集ファイルを作成する
        ステップ1:問題データを辞書に記述する
        ステップ2:問題集のファイルを作る
        ステップ3:問題と選択肢を作成する
        ステップ4:ファイルに内容を書き込む
    10.4 まとめ
    10.5 演習問題
    10.6 演習プログラム
        10.6.1 文章発生装置
        10.6.2 正規表現検索

11章 ファイル管理
    11.1 shutilモジュール
        11.1.1 ファイルやフォルダをコピーする
        11.1.2 ファイルやフォルダを移動したり名前を変更したりする
        11.1.3 ファイルやフォルダを完全に削除する
        11.1.4 ゴミ箱に移動する
    11.2 ディレクトリツリーを渡り歩く
    11.3 zipfileモジュールを用いてファイルを圧縮する
        11.3.1 ZIPファイルを作成しファイルを追加する
        11.3.2 ZIPファイルを読み込む
        11.3.3 ZIPファイルを展開する
        プロジェクト5 フォルダをZIPファイルにバックアップする
        ステップ1:ZIPファイル名を決める
        ステップ2:新しいZIPファイルを作る
        ステップ3:ディレクトリツリーを渡り歩く
        類似プログラムのアイデア
    11.4 まとめ
    11.5 演習問題
    11.6 演習プログラム
        11.6.1 選択コピー
        11.6.2 不要なファイルを削除する
        11.6.3 連番の飛びを埋める
        11.6.4 米国式日付を欧州式日付に変換する

12章 コマンドラインプログラムの設計とデプロイ
    12.1 プログラムの別名
    12.2 ターミナルを使う
        12.2.1 cd、pwd、dir、lsコマンド
        12.2.2 環境変数PATH
        12.2.3 PATHを編集する
        12.2.4 whichとwhereコマンド
    12.3 仮想環境
    12.4 pipを使ってPythonパッケージをインストールする
    12.5 自己知覚型Pythonプログラム
    12.6 テキストベースのプログラムデザイン
        12.6.1 短いコマンド名
        12.6.2 コマンドライン引数
        12.6.3 クリップボードの入出力
        12.6.4 Bextを使った色付きテキスト
        12.6.5 ターミナルを消す
        12.6.6 音やテキストによる通知
    12.7 短いプログラム:吹雪
    12.8 PyMsgBoxを使ったメッセージボックス
    12.9 Pythonプログラムをデプロイする
        12.9.1 Windows
        12.9.2 macOS
    12.10 短いプログラム:カレントワーキングディレクトリをコピーする
        12.10.1 Windows
        12.10.2 macOS
    12.11 短いプログラム:クリップボードレコーダー
        12.11.1 Windows
        12.11.2 macOS
    12.12 PyInstallerでPythonスクリプトをコンパイルする
    12.13 まとめ
    12.14 演習問題
    12.15 演習プログラム
        12.15.1 自作プログラムをデプロイする

13章 Webスクレイピング
    13.1 HTTPとHTTPS
        プロジェクト6 webbrowserモジュールでプログラムを実行
        ステップ1:URLを検討する
        ステップ2:コマンドライン引数を処理する
        ステップ3:クリップボードの内容を取得する
        類似プログラムのアイデア
    13.2 requestsモジュールを用いてWebサイトからファイルをダウンロードする
        13.2.1 Webページをダウンロードする
        13.2.2 エラーをチェックする
        13.2.3 ダウンロードしたファイルをハードドライブに保存する
    13.3 天気APIにアクセスする
        13.3.1 緯度と経度をリクエストする
        13.3.2 現在の天気を取得する
        13.3.3 天気予報を取得する
        13.3.4 APIを調べる
    13.4 HTMLを理解する
        13.4.1 形式を調べる
        13.4.2 Webページのソースを見る
        13.4.3 ブラウザの開発者ツールを開く
        13.4.4 HTML要素を検索する
    13.5 Beautiful Soupを用いてHTMLを解析する
        13.5.1 Beautiful Soupオブジェクトを生成する
        13.5.2 要素を見つける
        13.5.3 要素の属性からデータを取得する
        プロジェクト7 検索結果をすべて開く
        ステップ1:パッケージ一覧ページを取得する
        ステップ2:結果をすべて取得する
        ステップ3:検索結果をWebブラウザで開く
        類似プログラムのアイデア
        プロジェクト8 すべてのXKCDコミックをダウンロードする
        ステップ1:プログラムを設計する
        ステップ2:Webページをダウンロードする
        ステップ3:コミック画像を見つけてダウンロードする
        ステップ4:画像を保存し前のコミックを見つける
        類似プログラムのアイデア
    13.6 Seleniumを用いてブラウザを制御する
        13.6.1 Seleniumでブラウザを起動する
        13.6.2 ブラウザのボタンをクリックする
        13.6.3 ページ上の要素を探す
        13.6.4 ページ上の要素をクリックする
        13.6.5 フォームを記入して送信する
        13.6.6 特殊キーを送信する
    13.7 Playwrightを用いてブラウザを制御する
        13.7.1 Playwrightでブラウザを起動する
        13.7.2 ブラウザのボタンをクリックする
        13.7.3 ページ上の要素を探す
        13.7.4 ページ上の要素をクリックする
        13.7.5 フォームを記入して送信する
        13.7.6 特殊キーを送信する
    13.8 まとめ
    13.9 演習問題
    13.10 演習プログラム
        13.10.1 画像サイトのダウンローダー
        13.10.2 2048
        13.10.3 リンクの検査

14章 Excelスプレッドシートの操作
    14.1 Excelファイルを読み込む
        14.1.1 ワークブックを開く
        14.1.2 ワークブックからシートを取得する
        14.1.3 シートからセルを取得する
        14.1.4 列の文字と番号を相互変換する
        14.1.5 シートから複数の行と列を取得する
        プロジェクト9 スプレッドシートからデータを読み込む
        ステップ1:スプレッドシートのデータを読み込む
        ステップ2:データ構造を追加する
        ステップ3:結果をファイルに書き込む
        類似プログラムのアイデア
    14.2 Excel文書を書き込む
        14.2.1 Excel文書を作成して保存する
        14.2.2 シートを追加・削除する
        14.2.3 セルに値を書き込む
        プロジェクト10 スプレッドシートを更新する
        ステップ1:更新する情報のデータ構造を準備する
        ステップ2:すべての行を調べて価格を更新する
        類似プログラムのアイデア
    14.3 セルのフォントスタイルを設定する
    14.4 数式
    14.5 行と列を調整する
        14.5.1 行の高さと列の幅を設定する
        14.5.2 セルを結合・解除する
        14.5.3 ウィンドウ枠を固定する
    14.6 グラフ
    14.7 まとめ
    14.8 演習問題
    14.9 演習プログラム
        14.9.1 掛け算の表を作成する
        14.9.2 空行を挿入する

15章 Googleスプレッドシートの操作
    15.1 EZSheetsをインストールする
        15.1.1 新しいGoogle Cloudプロジェクトを作成する
        15.1.2 Google Sheets APIとGoogle Drive APIを有効にする
        15.1.3 OAuth同意画面を構成する
        15.1.4 認証情報を作成する
        15.1.5 認証ファイルを使ってログインする
        15.1.6 認証情報ファイルを無効化する
    15.2 Spreadsheetオブジェクト
        15.2.1 スプレッドシートの作成、アップロード、一覧
        15.2.2 スプレッドシートの属性にアクセスする
        15.2.3 スプレッドシートをダウンロードする
        15.2.4 スプレッドシートを削除する
    15.3 Sheetオブジェクト
        15.3.1 データを読み書きする
        15.3.2 シートを作成・削除・移動する
        15.3.3 シートをコピーする
    15.4 Googleフォーム
        プロジェクト11 偽のブロックチェーン暗号通貨詐欺
        ステップ1:偽のブロックチェーンを監査する
        ステップ2:トランザクションを作成する
    15.5 Googleスプレッドシートの使用制限を扱う
    15.6 まとめ
    15.7 演習問題
    15.8 演習プログラム
        15.8.1 Googleフォームのデータをダウンロードする
        15.8.2 スプレッドシートを他の形式に変換する
        15.8.3 スプレッドシートの間違いを見つける

16章 SQLiteデータベース
    16.1 スプレッドシートとデータベースの比較
    16.2 SQLiteと他のSQLデータベースの比較
    16.3 データベースとテーブルを作成
        16.3.1 データベースと接続する
        16.3.2 テーブルを作成する
        16.3.3 データ型を定義する
        16.3.4 テーブルと列を一覧する
    16.4 CRUDデータベース操作
        16.4.1 データベースにデータを挿入する
        16.4.2 データベースからデータを読み込む
        16.4.3 データベースのデータを更新する
        16.4.4 データベースからデータを削除する
    16.5 トランザクションのロールバック
    16.6 データベースのバックアップ
    16.7 テーブルの変更と削除
    16.8 メモリー内データベースとバックアップ
    16.9 データベースのコピー
    16.10 外部キーを使った複数テーブルの結合
    16.11 SQLiteアプリ
    16.12 まとめ
    16.13 演習問題
    16.14 演習プログラム
        16.14.1 猫の予防接種チェッカー
        16.14.2 料理材料データベース

17章 PDFとWord文書
    17.1 PDF文書
        17.1.1 PDFからテキストを抽出する
        17.1.2 AIを使った後処理
        17.1.3 画像を抽出する
        17.1.4 PDFを他のページから作成する
        プロジェクト12 多数のPDFから選択したページを結合する
        ステップ1:すべてのPDFファイルを探す
        ステップ2:各PDFを開く
        ステップ3:結果を保存する
        類似プログラムのアイデア
    17.2 Word文書
        17.2.1 Word文書を読み込む
        17.2.2 .docxファイルから全テキストを取得する
        17.2.3 ParagraphとRunオブジェクトにスタイルを設定する
        17.2.4 Runの属性を設定する
        17.2.5 Word文書を書き込む
        17.2.6 見出しを追加する
        17.2.7 改行と改ページを追加する
        17.2.8 図を追加する
    17.3 まとめ
    17.4 演習問題
    17.5 演習プログラム
        17.5.1 PDFをまとめて暗号化
        17.5.2 特製招待状
        17.5.3 総当たり方式のPDFパスワード解除

18章 CSV、JSON、XMLファイル
    18.1 CSV形式
        18.1.1 CSVファイルを読み込む
        18.1.2 ループでデータにアクセスする
        18.1.3 CSVファイルを書き込む
        18.1.4 カンマの代わりにタブを使う
        18.1.5 ヘッダー行を扱う
        プロジェクト13 CSVファイルからヘッダーを削除する
        ステップ1:各ファイルをループする
        ステップ2:CSVファイルを読み込む
        ステップ3:新しいCSVを書き込む
        類似プログラムのアイデア
    18.2 多用途のプレーンテキスト形式
        18.2.1 JSON
        18.2.2 XML
    18.3 まとめ
    18.4 演習問題
    18.5 演習プログラム
        18.5.1 ExcelからCSVへの変換

19章 時間管理、タスクのスケジューリング、プログラム起動
    19.1 timeモジュール
        19.1.1 エポック時刻を取得する
        19.1.2 プログラムを一時停止する
        プロジェクト14 スーパーストップウォッチ
        ステップ1:時間計測の準備をする
        ステップ2:ラップタイムを計測・表示する
        類似プログラムのアイデア
    19.2 datetimeモジュール
        19.2.1 時間差を表す
        19.2.2 特定の日付まで一時停止する
        19.2.3 datetimeオブジェクトを文字列に変換する
        19.2.4 文字列をdatetimeオブジェクトに変換する
    19.3 Pythonから他のプログラムを実行する
        19.3.1 Popenにコマンドライン引数を渡す
        19.3.2 起動したプログラムから出力テキストを受け取る
        19.3.3 タスクスケジューラやlaunchdを実行する
        19.3.4 既定のアプリでファイルを開く
        プロジェクト15 シンプルなカウントダウンプログラム
        ステップ1:カウントダウン
        ステップ2:音声ファイルを再生する
        類似プログラムのアイデア
    19.4 まとめ
    19.5 演習問題
    19.6 演習プログラム
        19.6.1 ストップウォッチの整形
        19.6.2 13日の金曜日検索

20章 電子メールの送信とプッシュ通知
    20.1 Gmail API
        20.1.1 Gmail APIを有効にする
        20.1.2 Gmailアカウントからメールを送信する
        20.1.3 メールを読む
        20.1.4 メールを検索する
        20.1.5 添付ファイルをダウンロードする
    20.2 プッシュ通知
        20.2.1 通知を送る
        20.2.2 メタデータを送信する
        20.2.3 通知を受信する
    20.3 まとめ
    20.4 演習問題
    20.5 演習プログラム
        20.5.1 傘のリマインダー
        20.5.2 自動退会機
        20.5.3 メールを使ってコンピュータを制御する

21章 グラフの作成と画像の操作
    21.1 コンピュータ画像の基礎
        21.1.1 色とRGBA値
        21.1.2 座標と矩形タプル
    21.2 Pillowで画像を操作する
        21.2.1 Imageデータ型を操作する
        21.2.2 画像を切り抜く
        21.2.3 画像のコピー&ペースト
        21.2.4 画像のサイズを変更する
        21.2.5 画像を回転・反転する
        21.2.6 ピクセルを変更する
        プロジェクト16 ロゴを追加する
        ステップ1:ロゴ画像を開く
        ステップ2:全ファイルをループして画像を開く
        ステップ3:画像のサイズを変更する
        ステップ4:ロゴを追加して変更を保存する
        類似プログラムのアイデア
    21.3 画像に描画する
        21.3.1 図形
        21.3.2 テキスト
    21.4 クリップボードに画像をコピー&ペーストする
    21.5 Matplotlibを使ってグラフを作成する
        21.5.1 折れ線グラフと散布図
        21.5.2 棒グラフと円グラフ
        21.5.3 追加コンポーネント
    21.6 まとめ
    21.7 演習問題
    21.8 演習プログラム
        21.8.1 タイルメーカー
        21.8.2 ハードドライブの写真ディレクトリを探す
        21.8.3 カスタム座席カード

22章 画像中の文字認識
    22.1 TesseractとPyTesseractをインストールする
        22.1.1 Windows
        22.1.2 macOS
        22.1.3 PyTesseract
    22.2 OCRの基礎
        22.2.1 画像の前処理
        22.2.2 大規模言語モデルを使って誤認識を修正する
    22.3 英語以外の言語のテキストを認識する
    22.4 NAPS2文字認識アプリケーション
        22.4.1 NAPS2をインストール・設定する
        22.4.2 PythonからNAPS2を実行する
        22.4.3 入力を指定する
    22.5 まとめ
    22.6 演習問題
    22.7 演習プログラム
        22.7.1 ブラウザテキストスクレイパー

23章 キーボードとマウスの制御
    23.1 macOSのアクセシビリティを設定する
    23.2 うまく進めるには
        23.2.1 一時停止とフェールセーフ
        23.2.2 ログアウト
    23.3 マウス移動を制御する
        23.3.1 マウスを移動する
        23.3.2 マウスの位置を取得する
    23.4 マウス操作を制御する
        23.4.1 クリックする
        23.4.2 ドラッグする
        23.4.3 スクロールする
    23.5 マウス移動を計画する
    23.6 スクリーンショットを撮る
    23.7 画像認識
    23.8 ウィンドウの情報を取得する
        23.8.1 アクティブウィンドウを取得する
        23.8.2 他のウィンドウの取得方法
        23.8.3 ウィンドウを操作する
    23.9 キーボードを制御する
        23.9.1 キー押下文字列を送信する
        23.9.2 キーの名前を指定する
        23.9.3 キーボードを押す・離す
        23.9.4 ホットキーの組み合わせ
    23.10 GUI自動化スクリプトの準備をする
    23.11 メッセージボックスを表示する
    23.12 まとめ
    23.13 演習問題
    23.14 演習プログラム
        23.14.1 忙しそうに見せる
        23.14.2 クリップボードを使ってテキスト入力欄を読み込む
        23.14.3 ゲームを操作するボット

24章 音声合成と音声認識
    24.1 音声合成
        24.1.1 音声を生成する
        24.1.2 音声をWAVファイルに保存する
    24.2 音声認識
    24.3 字幕ファイルを作成する
    24.4 Webサイトから動画をダウンロードする
    24.5 まとめ
    24.6 演習問題
    24.7 演習プログラム
        24.7.1 数当てゲームに音声を追加する
        24.7.2 『99 Bottles of Beer』を歌う
        24.7.3 YouTubeの文字起こし

付録A サードパーティーパッケージのインストール
    A.1 pipをインストールする
    A.2 pipを探す
    A.3 pipを仮想環境で実行する
    A.4 本書で使うパッケージをインストールする
    A.5 Muにパッケージを追加する

付録B 演習問題の解答
    B.1 1章 Pythonの基本
    B.2 2章 if-elseとフロー制御
    B.3 3章 繰り返し
    B.4 4章 関数
    B.5 5章 デバッグ
    B.6 6章 リスト
    B.7 7章 辞書とデータ構造
    B.8 8章 文字列とテキストの編集
    B.9 9章 正規表現を使ったパターンマッチ
    B.10 10章 ファイルの読み書き
    B.11 11章 ファイル管理
    B.12 12章 コマンドラインプログラムの設計とデプロイ
    B.13 13章 Webスクレイピング
    B.14 14章 Excelスプレッドシートの操作
    B.15 15章 Googleスプレッドシートの操作
    B.16 16章 SQLiteデータベース
    B.17 17章 PDFとWord文書
    B.18 18章 CSV、JSON、XMLファイル
    B.19 19章 時間管理、タスクのスケジューリング、プログラム起動
    B.20 20章 電子メールの送信とプッシュ通知
    B.21 21章 グラフの作成と画像の操作
    B.22 22章 画像中の文字認識
    B.23 23章 キーボードとマウスの制御
    B.24 24章 音声合成と音声認識

付録C プッシュ通知のリアルタイム受信
    C.1 ntfyのストリーム受信
        C.1.1 組み込みprint()の置き換え
        C.1.2 ntfy送信部
        C.1.3 サブスクリプションを追加
        C.1.4 コマンドライン処理部
        C.1.5 実行例
    C.2 日本語版サンプルプログラムについて

索引

コラム目次
    間違っても気にしない!
    コーディングスタイルの考え方とPEP 8
    プロンプト>と>>>の違い
    テキストと数字の等価性
    ==と=の違い
    無限ループに陥ったら?
    TrueやFalseとみなされる値
    なぜ指定した値が含まれないのか?
    モジュール名を上書きしないように
    ブラックボックスとしての関数
    Pythonのインデント(字下げ)ルールの例外
    正規表現に用いる記号のまとめ
    Anacondaではpipを使わない
    本書のパッケージをインストールする
    ファイルのダウンロードと保存のまとめ
    HTMLを解析するのに正規表現を使わない
    Pythonの時間関数のまとめ
    訳者補日本語フォントの指定
    CAPTCHAとコンピュータ倫理