Python実践入門を執筆しました

Posted by rhoboro on 2020-01-24

2020年01月24日発売の「Python実践入門 ── 言語の力を引き出し、開発効率を高める」を執筆しました。

お話をいただいたのが2017年の終わり頃1で、そこから2年をかけてじっくりと書きあげました。 その間、レビュアーの方々には何度も何度もレビューをしていただき、自分でも納得のいく書籍となりました。 そこで、ここで著者として本書を紹介しておこうと思います。

cover

対象読者と本書の紹介

Python実践入門は、主な対象読者に次のような方々を想定して書いています。

  • Pythonの入門書をやりきった方

    • 入門書は一通りやったけどまだ自信を持てない
    • Pythonを業務利用するのはまだ不安
  • 他言語でのプログラミング経験者でこれからPythonを始める方

    • 業務利用の経験はないが転職先やこの先の案件でPythonが必要になる
    • 普段は別の言語を書いてるけどPythonを始めたい
  • すでにPythonを書いている方

    • データ分析や機械学習のライブラリを使うためだけに利用している
    • Jupyter Notebook上でしか書いたことがない
    • 業務コードを中心に独学で学び体系的には学んできていない
    • 複数の言語を使えるが得意と思える言語がない
    • もっとうまくPythonを使いこなしたい

ここから分かる通り、本書はプログラミングの入門書ではありません。 そのためプログラミング未経験者には少し難しい内容となっています。

その代わり、他の言語を経験してきた方にとっては最適なPython入門書だと思います。 本書の内容を理解していれば、Pythonを使った業務にも自信を持って取り組めるでしょう。
実際、日々の業務でPythonを使っている同僚たち2にも読んでもらい、新たな発見をしてもらうことも本書の大きな目標の一つとしています。

また、すでにPythonを使っている方であっても、もっと良い書き方があるかもしれないと思いながら書いている方や中級者・上級者を目指したい方がステップアップするための本でもあります。 エキスパートPythonプログラミング 改訂2版Fluent Pythonといった上級者向けの書籍にチャレンジする前や挫折したとき3に読むと、きっとより深い理解を得られるはずです。

本書は、次の章構成になっています。

  • 第1章 Pythonはどのような言語か
  • 第2章 Pythonのインストールと開発者向けの便利な機能
  • 第3章 制御フロー
  • 第4章 データ構造
  • 第5章 関数
  • 第6章 クラスとインスタンス
  • 第7章 モジュールとパッケージ
  • 第8章 組み込み関数と特殊メソッド
  • 第9章 Python特有のさまざまな機能
  • 第10章 並行処理
  • 第11章 開発環境とパッケージの管理
  • 第12章 ユニットテスト
  • 第13章 実践的なPythonアプリケーションの開発

より詳しい内容は書籍ページの目次をご覧ください。

第1章と第2章が本書の導入です。 第2章ではPython 3.84のインストール方法のほか、type()、dir()、help()を紹介しています。 type()とdir()は本書全体を通して利用していますし、help()も組み込み関数や標準ライブラリの引数確認などに使えるため、どれも覚えておくと便利です。

第3章から第7章までは、文法や組み込みのデータ型といったPythonを読み書きするために必要な項目の紹介です。 例外処理、内包表記、さまざまな引数、型ヒント、プロパティ、多重継承、インポート順、スコープといった他の言語の経験者が気になる話題にも多く触れています。

第8章以降は特定のテーマにフォーカスした内容となっています。
第9章ではジェネレータ、デコレータ、コンテキストマネージャ、デスクリプタを紹介しています。 どれも汎用性が高くとても便利な機能です。 そのため多くのPythonユーザーはこれらを使った経験があるはずですが5 、これらを提供するコードを書いている方はあまり多くはないようです。6 Pythonではこの辺りがライバルに差をつけられるところなのかもしれません。

第10章ではマルチスレッド処理とマルチプロセス処理のほか、非同期I/Oを使うasyncioモジュールの使い方も説明しています。 コンセプトから紹介しているため、asyncioモジュールをまだ使ったことのない方はこれを機会に触ってみてください。

第11章ではvenvとpipを使った仮想環境やパッケージ管理方法を解説しています。 これらの管理には、pipenvやpoetoryといった3rd-partyのライブラリを使う方法もあります。
しかし、長く使える汎用的なスキルを身に着けるという意味では、やはりvenvとpipを使う方法は外せません。 まずはスタンダードな方法を押さえ、そのうえで必要があればシーンや好みに応じてツールを使い分けるのがよいと考えています。

本書の実用性

本書はPythonを使う分野や流行に囚われない内容になっています。 web開発であれデータ分析であれ機械学習であれ業務効率化であれ、Pythonを使うすべてのシーンで役立つでしょう。

そして、本書は執筆している最中から個人的にも役に立つ書籍でした。
というのも、わたし自身がコードを書くとき執筆中の本書を読み返すことが数多くあり、同僚や友人たちから受けた質問への回答、コードレビューのなかで本書の内容を引用したくなったことも何度もあります。
本書の発売日以降であれば「P.xxに書いてあるから読んでみて📖」と一言伝えるだけでよくなるかもしれません笑

こちらはつい最近の同僚との会話の一部です。 この一文だけでも実際に業務中に出てきた多くの話題をカバーできていることが伝わると思います。

slack_01

さいごに

著者として、ひとつだけお願いしたいことがあります。
もしPython実践入門を読んでいただいた際は、ぜひブログやSNSでフラットな意見や感想、疑問をたくさん発信していただければと思います。7
本書の内容はわたしが自分の知識、経験、周りからいただいた助言などもとに書いたものですが、プログラミングの世界に唯一の正解はありません。 本書をきっかけに発信されたものからより良い方法、考え方が発見されたり生み出され、それがまたPythonコミュニティや業界全体に還元されると幸いです。

--- 2020/02/01 追記[ここから] ---

Python実践入門に関するサポートページを公開しました。 こちらもご確認ください。

--- 2020/02/01 追記[ここまで] ---


  1. ちょうどWEB+DB PRESS vol.104でPythonの特集記事を執筆していたときです。 

  2. わたしが所属しているSENSY Inc.では、エンジニアとリサーチャーはほぼ全員が毎日のようにPythonを書いています。 

  3. わたし自身も学生時代にエキスパートPythonプログラミングにチャレンジし、何度も挫折を味わいました。そういった経験も本書に活かされています。 

  4. Python 3.8を対象としていますが、f-stringで{=}を使っている以外はPython 3.7でも変わらず動作します。 

  5. 例えばwith open('...')と書いたことがあればコンテキストマネージャを使っていますし、Djangoで@login_requiredと書いたことがあればデコレータを使っています。 

  6. 以前90人くらいの勉強会で聞いてみたのですが、Pythonを書いたことがある人が会場の7-8割に対し、デコレータを書いたことがある人は2-3人でした。 

  7. 柴田芳樹さんの技術書の間違いに気付いたらもぜひお読みください。