標準ライブラリ
今の20個は「Pythonの標準ライブラリを広く紹介する」という意味ではよく選ばれています。ただ、実際に初心者がColabでPythonを学ぶという観点では、後半の argparse、logging、threading、multiprocessing あたりは、かなり先の内容です。特にColabでは argparse はコマンドライン引数を扱うものなので、今回の本の「ターミナルを使わずに学べる」という良さとも少し離れます。
| ライブラリ | 初心者向け評価 | 判断 | |
|---|---|---|---|
| 1 | math | ◎ | 残す |
| 2 | random | ◎ | 残す |
| 3 | datetime | ◎ | 残す |
| 4 | time | ◎ | 残す |
| 5 | os | ○ | 残す |
| 6 | pathlib | ◎ | 残す |
| 7 | csv | ◎ | 残す |
| 8 | json | ○ | 残す |
| 9 | pickle | △ | 交換候補 |
| 10 | sqlite3 | △ | 残してもよい |
| 11 | re | △ | 残す |
| 12 | string | ○ | 残す |
| 13 | sys | △ | 交換候補 |
| 14 | argparse | △~× | 交換 |
| 15 | logging | △ | 交換候補 |
| 16 | collections | ○ | 残す |
| 17 | itertools | △ | 残してもよい |
| 18 | functools | △ | 交換候補 |
| 19 | threading | × | 交換 |
| 20 | multiprocessing | × | 交換 |
交換するなら、初心者が「これは便利だ」と実感しやすいものを入れたいです。たとえば、**statistics(平均・中央値など)、calendar(カレンダー)、fractions(分数)、decimal(正確な小数計算)、secrets(乱数を使った安全なパスワード生成など)**です。
そうすると、最終的には、
math / random / datetime / time / os / pathlib / csv / json / sqlite3 / re / string / collections / itertools / statistics / calendar / decimal / fractions / secrets
あたりを中心にして、あと2つを選びます。
ただし、ここでもっと大事なのは、20個全部を同じ重要度で扱わないことだと思います。
Pythonには、最初から利用できる便利な標準ライブラリが数多く用意されています。ここでは、その中から初心者にも比較的使いやすい20個を紹介します。すべてを覚える必要はありません。「こんなこともできるのか」と、実際にプログラムを動かして体験してみましょう。
そして、sqlite3 と re は少し難しくても残したいです。初心者がすぐ日常的に使うとは限りませんが、「Pythonを覚えるとデータベースまで扱える」「文字列から特定のパターンを探せる」という世界の広がりを見せられるからです。
逆に今回のColab本なら、argparse・threading・multiprocessing は外してよいと思います。functools も初心者向け20選なら外して構わないでしょう。
つまり「難しいものを全部削る」のではなく、15個くらいは初心者が意味を理解しやすいもの、5個くらいは“Pythonではこんなことまでできる”という発展例にすると、第11章・第12章の構成としてバランスがよくなります。
外部ライブラリ
特に外部ライブラリは、コードそのものが多少難しくても、グラフが出る、Excelができる、画像が変わる、Webページから情報が取れるなど結果が目に見えるので、初心者にはむしろ標準ライブラリより面白いものが多いです。
| ライブラリ | 初心者向け | 理由 | |
|---|---|---|---|
| NumPy | ◎ | 残す | 配列・数値計算の基本 |
| pandas | ◎ | 残す | 表形式データで結果が分かりやすい |
| SciPy | ○ | 残す | 少し高度だが科学計算の代表 |
| Statsmodels | △ | 交換候補 | 統計知識が必要になりやすい |
| Matplotlib | ◎ | 残す | グラフが見えて楽しい |
| Seaborn | ◎ | 残す | 少ないコードできれいなグラフ |
| Plotly | ◎ | 残す | インタラクティブでColabとの相性もよい |
| scikit-learn | ◎ | 残す | AI・機械学習への入口になる |
| TensorFlow | △ | 残す | 難しいがAIの代表として価値あり |
| PyTorch | △ | 残す | 同じくAIの世界を見せられる |
| Flask | ○ | 残す | Webアプリを体験できる |
| Django | △ | 交換候補 | 初心者の短い例題には重い |
| FastAPI | △ | 交換候補 | APIの概念自体が初心者には難しい |
| Requests | ◎ | 残す | 短いコードでWebにアクセスできる |
| Beautiful Soup | ◎ | 残す | Webページ解析を体験できる |
| openpyxl | ◎ | 残す | Excel操作は実用性が非常に高い |
| XlsxWriter | ○ | 残す | Excelファイル作成が分かりやすい |
| Pillow | ◎ | 残す | 画像処理なので結果が一目で分かる |
| scikit-image | ○ | 残す | Pillowから一段進んだ画像処理 |
| PyYAML | △ | 交換候補 | YAML自体を知らない初心者には用途が伝わりにくい |
交換を考えるなら、私はまず Statsmodels、Django、FastAPI、PyYAML の4つを候補にします。TensorFlowとPyTorchも初心者が普段使うものではありませんが、この2つは事情が違います。読者からすると「Pythonを覚えればAIにも進める」という魅力を感じられるので、発展例として残す価値があります。
交換するなら何がよいか
ここは「初心者がColabで実行して、おおっ!と思えるもの」を選びたいですね。候補として面白いのは、SymPyです。たとえば、
import sympy as sp
x = sp.symbols("x")
print(sp.solve(x**2 - 5*x + 6, x))
[2, 3]
「Pythonが方程式まで解いてくれた」というのは非常に分かりやすい。微分・積分などにも発展できます。
もう一つは wordcloud。文章からワードクラウドを作れば、結果が画像になるので初心者にも面白いです。
また、foliumも今回の本にはかなり向いていると思います。以前ご自身でも使われましたが、緯度・経度を指定して地図を表示し、マーカーを置くだけでも「Pythonで地図が作れた」という達成感があります。しかもColabならブラウザ内に地図が表示されます。
さらに qrcode も教材としては面白いです。短いプログラムでQRコード画像ができるので、初心者に「何に使うの?」という説明をほとんど必要としません。
Statsmodels → SymPy
Django → folium
FastAPI → wordcloud
PyYAML → qrcode
現在の後半には「Webフレームワーク/API/設定ファイル」のような、仕事では重要だけれど初心者には用途を実感しにくいものがあります。それを「数式・地図・文字の画像化・QRコード」という、実行するとすぐ結果が見えるものに変えるわけです。
今回Colab本を実際に作られて分かった「初心者は環境設定より、まず動かして結果を見る方が楽しい」という考え方ともよく合います。
次回改訂では、標準ライブラリよりもこちらの外部ライブラリ編を楽しい章にします。20個全部を重要ライブラリとして教えるのではなく、「Pythonではこんなことまでできる」という20種類の体験にしてしまう。その方が、この本らしい。
組み込み関数
組み込み関数20個も、同じ基準で見直してみます。こちらは結論からいうと、標準ライブラリ20個よりずっと良い選択です。大幅な変更は必要ありません。
初心者が実際にプログラムを書いていくと自然に出会う関数が多く、「20個覚えるための20個」ではなく、普通に使っているうちに身につくものが中心だからです。
| 関数 | 初心者向け | 判断 | コメント |
|---|---|---|---|
print() |
◎ | 残す | 最重要 |
input() |
◎ | 残す | 対話型プログラムに便利 |
abs() |
◎ | 残す | 絶対値で分かりやすい |
round() |
◎ | 残す | 実用性が高い |
pow() |
○ | 残す | べき乗を理解できる |
len() |
◎ | 残す | 非常によく使う |
sum() |
◎ | 残す | 分かりやすく実用的 |
min() |
◎ | 残す | 同上 |
max() |
◎ | 残す | 同上 |
sorted() |
◎ | 残す | リスト学習と相性がよい |
int() |
◎ | 残す | input()と組み合わせる |
float() |
◎ | 残す | 型変換の基本 |
str() |
◎ | 残す | 型変換の基本 |
list() |
○ | 残す | リストの理解にも役立つ |
bool() |
○ | 残す | 条件分岐につながる |
range() |
◎ | 残す | for文で必須級 |
enumerate() |
○~◎ | 残す | 実用的で覚える価値あり |
zip() |
○ | 残す | 複数データの組合せに便利 |
type() |
◎ | 残す | 初心者に特に便利 |
isinstance() |
△~○ | 交換候補 | 少し先の内容 |
19個はそのままでもよいです
特に前半の、print → input → abs → round → pow → len → sum → min → max → sorted
は非常にいい。「入力する」「表示する」「計算する」「数える」「合計する」「最大・最小」「並べ替える」と、関数名を見ただけでも何をするものか想像できます。
int、float、str も初心者には重要です。たとえば、
age = int(input("年齢を入力してください:"))
input() と int() の必要性が理解できます。一つだけ考えるなら isinstance()
20個の中で私が交換を検討するのは、最後の isinstance() です。
isinstance(x, int)
type(x)
その代わりに入れるなら、私は any() か all() を候補にします。
例えば、
scores = [80, 65, 90]
print(all(score >= 60 for score in scores))
True
ただし、これも内包表記が入ると急に難しくなります。
そこで、もっと初心者向けにするなら chr() と ord() も面白いです。
print(ord("A"))
print(chr(66))
65
B
それでも、私は現在の20個を変えなくてもよいと思います
標準ライブラリのときとは、ここが違います。
標準ライブラリでは argparse、threading、multiprocessing などを初心者が見て、
これは何のために使うの?
となりやすい。
ところが isinstance() は多少後回しでも、
x = 100
print(type(x))
print(isinstance(x, int))
<class 'int'>
True
type()との違いまで一つの例題で説明できます。ですから、次回改訂を考えるなら私の優先順位は、
標準ライブラリ → かなり入れ替える
外部ライブラリ → 4個程度入れ替える
組み込み関数 → 基本的に現在の20個を維持
むしろ組み込み関数編は、選び直すより並び順を工夫するのが面白そう。
たとえば「表示・入力」「数値計算」「集計」「型変換」「繰り返し」「データ処理」「型の確認」というように、用途ごとにまとめます。初心者には「20個の関数を暗記する章」ではなく、**「困ったときに使える20個の道具」**として見せる方が分かりやすいでしょう。
今回3種類を改めて見比べると、次回改訂で一番手を入れる価値があるのは、やはり標準ライブラリ20選ですね。組み込み関数20選は、現在の選定でかなり完成度が高いと思います。

コメント