本書「退屈なことはPythonにやらせよう」を読み始めてすぐに「この内容を日本のビジネスパーソンが身に付ければ働き方は変わる」と強く思いました。
原書の「AUTOMATE THE BORING STAFF WITH PYTHON」は米国で2015年に出版されたベストセラーのPython本です。現在(2019年8月)でも、Amazon.comのPythonカテゴリーで1位です。
米国でも日々の退屈な作業から解放されたいと誰もが願っていたことが分かります。そこにPythonがピッタリとはまったのです。
日本語版が出版されてから2年が経ちますが、ネットを見ればわかるように、日本でも本書を契機にPythonなら様々な作業を自動化できそうだとたくさんの人が思うようになりました。
もうプログラミングはプログラマの特権ではありません。今まで無縁だった普通の人たちがプログラミングを始めると、社会はもっと合理的になり風通しがよくなります。
今回はこの素晴らしい書籍のおすすめの3つのポイントについてまとめてみました。既に購入済みの方も参考になる内容だと思いますので、ぜひご一読ください。
本記事の目次
2023年3月に第2版がでました!
第2版では、入力検証、Googleスプレッドシート、Gmail API、の3つが追加されました。本記事は初版について執筆していますが、おすすめしている3つのポイントは第2版でも変わりません。
ポイント1:自動化を幅広く網羅
本書の特徴の一つが、Pythonで出来る自動化を幅広く網羅していることです。
ファイル管理、エクセルファイルの操作、メールやSMSの送信、画像処理などから、最後には何とGUIオートメーションについてまで説明しています。
このような様々な自動化プログラミングを可能にしてくれるのが、Pythonのライブラリ群です。本書では以下の表に示すように、多様なライブラリを使用しています。
自動化の内容と使用ライブラリの一覧
章 | 自動化の内容 | 使用ライブラリ |
---|---|---|
7 | 正規表現 | re、pyperclip* |
8 | ファイル読み書き | os、os.path、shelve、pprint |
9 | ファイルの管理 | shutil、Send2Trash*、zipfile |
11 | Webスクレイピング | webbrowser、Requests*、BeautifulSoup4*、Selenium* |
12 | Excelスプレッドシートの操作 | OpenPyXL* |
13 | PDFの操作 | PyPDF2* |
Word文書の操作 | python-docx* | |
14 | CSVファイルの操作 | csv |
JSONデータの操作 | json | |
16 | 電子メールの送信 | smtplib |
電子メールの受信 | IMAPClient*、pyzmail* | |
SMSの送信 | twilio* | |
17 | 画像の操作 | pillow* |
18 | GUIオートメーション | PyAutoGUI* |
※ アスタリスク*が付いているのは、PyPI からインストールできる外部ライブラリです。
ポイント2:オブジェクト指向には触れていない
本書は誰もがPythonで作業を自動化できるようになることを第一に考えた書籍です。その証の一つが、オブジェクト指向プログラミングに一切触れていないことです。
つまり、本書ではクラスを定義していません。クラスという言葉もほとんど登場しません(スクレイピングで使用する「HTMLタグのクラス属性」を除いて)。
入門書であっても本職のプログラマを目指す書籍では、当たり前のようにオブジェクト指向プログラミングを行います。しかし、Pythonはそれを強要しません。本書のように1つのファイルで完結するプログラムでは、必要になることはありません。使わなくても十分プログラミングできます。
Pythonにおけるオブジェクト指向プログラミングとの付き合い方について、他の書籍で参考になる部分を以下に引用しておきます。
初めてのPython
RubyやJavaと異なり、Pythonではオブジェクト指向プログラミングはオプションである。ユーザーはオブジェクト指向を強制されない。元々それに向かないプロジェクトで無理にオブジェクト指向プログラミングを行う必要もない。
入門Python3
Pythonの作者Guido van Rossum氏も、データ構造に関して以下のように言っています。
Guidoのアドバイス
データ構造を作り込みすぎないようにしよう。オブジェクトよりもタプルの方がいい(名前付きタプルも試してみよう)。ゲッター/セッター関数よりも単純なフィールドを選ぶようにしよう。組み込みデータ型はプログラマーの友達だ。数値、文字列、タプル、リスト、集合、辞書をもっと使おう。そして、コレクションライブラリ、特にデックをチェックしよう。-Guido van Rossum (http://bit.ly/guido-vr)
どうしても、Javaなどの言語からPythonに来ると、クラス在りきでコードを書いてしまいますが、Pythonはもっと自由に書いた方が良いです。本書のような自動化のプログラムであれば、大抵はリストと辞書で事足ります。関数をまとめたいだけなら、クラスではなくモジュールにしましょう。
ポイント3:日本語版が充実している
日本語版の作成にあっては、本当に丁寧に仕事をされているのが分かります。
日本語訳がとても読みやすいばかりでなく、原書のキャメルケースを全てPython標準の小文字+アンダースコアに直してあります。
さらに、以前このサイトでも紹介しましたが、訳者の相川愛三氏による付録Dがとても面白いです。巻末なので見逃してしまいそうですがオススメです。
また、日本語版独自のサポートページがGitHubで公開されていますが、原書にはない演習プロジェクトの解答まで掲載してくれています(至れり尽くせり!)。上記の付録Dのコードもあります。
『退屈なことはPythonにやらせよう』のリポジトリ(GitHub)
英語の原書の日本語版として、ここまで充実している書籍も珍しいと思います。
PDF版はオライリージャパンさんで購入できます
オライリーさんの本の魅力の一つが、紙面のままのレイアウトのPDF版が購入できることです。何と言っても検索できるのが便利すぎます!詳しくは以下のページをご覧ください(Ebook Storeで電子版を購入するとPDF版を入手できます)。
退屈なことはPythonにやらせよう(オライリージャパン)
退屈なことはPythonにやらせよう 第2版(オライリージャパン)
最後に
他人が作ったソフトだけを使っているうちは、コンピュータの本当の威力を享受できません。プログラミングができるようになって、はじめてコンピュータの恩恵を十分を得ることができます。ぜひ本書でPythonを始めてみましょう!