何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

『Pythonプロフェッショナルプログラミング 第4版』の1章を書きました

5年振りの改訂

2024年2月16日に秀和システムから『Pythonプロフェッショナルプログラミング 第4版』が発売される。

www.shuwasystem.co.jp

今回、第1章「Pythonをはじめよう」を書いた。 書いた、と書いたものの、「Pythonをはじめよう」は初版から存在する章であり、書いたというより改訂したの方が適切である。 しかし、5年という月日の経過を感じる改訂になっている。 せっかくなので、初版から第4版までの第1章「Pythonをはじめよう」を比較してみる。

目次の変遷

初版の「Pythonをはじめよう」

www.shuwasystem.co.jp

Chapter 01 Pythonをはじめよう
01-01 Pythonのセットアップ
01-01-01 aptパッケージのインストール
01-01-02 easy_installとpip
01-01-03 virtualenvのインストール
01-01-04 複数バージョンのPythonの使用
01-02 Mercurialのセットアップ
01-02-01 Mercurialの概要
01-02-02 Mercurialのインストール
01-02-03 リポジトリの作成
01-02-04 ファイルの操作
01-03 エディタと開発に便利なツール
01-03-01 エディタ
01-03-02 Python開発Tips
01-04 まとめ

第2版の「Pythonをはじめよう」

www.shuwasystem.co.jp

Chapter 01 Pythonをはじめよう
01-01 Pythonのセットアップ
01-01-01 debパッケージのインストール
01-01-02 サードパーティ製パッケージのインストール
01-01-03 virtualenvの使い方
01-01-04 複数バージョンのPythonの使用
01-02 Mercurialのセットアップ
01-02-01 Mercurialの概要
01-02-02 Mercurialのインストール
01-02-03 リポジトリの作成
01-02-04 ファイルの操作
01-03 エディタと開発に便利なツール
01-03-01 エディタ
01-03-02 開発に便利なツール
01-04 まとめ

第3版の「Pythonをはじめよう」

www.shuwasystem.co.jp

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 まとめ

第4版の「Pythonをはじめよう」

www.shuwasystem.co.jp

 Chapter 01 Pythonをはじめよう
  01-01 Pythonのセットアップ
   01-01-01 Dockerイメージの選択
   01-01-02 Dockerコンテナの起動
   01-01-03 パッケージ管理ツール(pip)
  01-02 Gitのセットアップ
   01-02-01 Gitの概要
   01-02-02 Gitのインストール
   01-02-03 Gitの動作確認
   01-02-04 Gitの環境設定
   01-02-05 リポジトリの作成
   01-02-06 ファイルの操作
  01-03 エディターと開発ツールのセットアップ
   01-03-01 エディター
   01-03-02 開発に便利なツール
  01-04 まとめ

変遷その1:仮想マシンからDockerへ

過去の「Pythonをはじめよう」ではVirtualBox上の仮想マシンDebianまたはUbuntuを立てて、その内部でapt乃至debPythonを導入している。 今回の第4版ではDockerイメージをベースにPythonを導入する流れを取った。 ただ単にPythonを導入するだけならばやや大げさというか、Dockerというレイヤーを加える必然性はないのだが、 この本はプログラミング言語Pythonの本ではなく、Pythonを使ってチームで開発するための本である。 Dockerで統一した開発環境を揃えるのは非常に有効である。

変遷その2:パッケージインストーラおよび仮想環境の変遷

初版ではまだeasy_installが現役であった。 僕もPythonを始めたころには既にeasy_installはpipを入れるためのツールとなっていた。 第2版まではvirtualenvを使い、第3版では標準であるvenvで仮想環境を切る流れである。 今回の第4版はDocker環境なのでvenvは使わず、コンテナ単位で環境を切っている。

変遷その3:バージョン管理

以前、僕はバージョン管理がない地獄で働いたことがあり、自分だけでGitを使っていた。 勝手な想像だが、PythonコミュニティだとMercurialを使っていた人が多く、現在でもプロジェクトによってはMercurialを使っているケースもあると思う。 第3版以降、MercurialからGitになった。 第4版も引き続きGitである。 注意深く読まないと第3版との違いがわからないが、コマンド例は最新のコマンドを使うように更新されている。

変遷その4:ツール周り

第3版ではエディタについて細かく書かれていたが、第4版では個人で好きなエディタを使えばいいでしょう、という考えから記述を削った。 お金をかけずに手早く始めるならVSCodeが一番良い選択だと思われる。 僕はPyCharmの有料版を使っているが、どこまで使いこなしているかは謎である。 ツールもBlackとRuffという組み合わせは思い切った記述であると感じている。 個人的にはRuffは時期尚早ではないか、と考えていたがそうではなかったらしい。 mypyをはじめとする型ヒント系のツールも一般化しつつある。 ツール周りの個別記事は浅めであるが、これはポインタであると理解していただきたい。 こういう便利なツールがありますよ、ということを知ってもらう程度でまずは十分である。

そして変遷は続く

Dockerの初期設定周りは「Docker init」を使うと便利になるかもしれない。

www.publickey1.jp

パッケージ管理ツールもRust製のツールが増え、その内いずれかがデファクトになるのかもしれない。

github.com

astral.sh

我々に必要なのはCargoのような言語標準のパッケージツールなのだろう。

最後に

なるべくコンパクトになるように改訂したつもりである。 『Pythonプロフェッショナルプログラミング 第4版』はPythonを使ってチームで開発するために読む本であり、Python言語そのものにはそこまで触れていない。 つまり、Python言語そのものはある程度分かっている、またはキャッチアップできる前提で書いてあるため、以下のような本で補う必要がある。 なお、いずれも僕が翻訳・監訳した本である。

www.oreilly.co.jp

www.oreilly.co.jp

www.oreilly.co.jp

Pythonプロフェッショナルプログラミング 第4版』はこれらの先に位置する本である。 チームでソフトウェアを開発する方は是非とも手に取って読んで欲しい。 少なくとも、どのように開発を進めるのかの議論のベースとなるだろう。

www.shuwasystem.co.jp