【Python】そのコード、なんて読む? 〜scikit-learn・linalg・ord から strftime まで〜

こんにちは。ゆうせいです。

はじめに

Pythonのコードを声に出して読もうとすると、途端に詰まる瞬間があります。

  • ord()オードオーアールディー
  • np.linalg の linalg って何て読むんだ……
  • scikit-learnサイキットスキット

Pythonの識別子は、その多くが 英単語の省略形です。つまり「読めない」の正体は、たいてい「元の英単語が分かっていない」だけ。逆に言えば、元の綴りさえ分かれば読み方も意味も同時に手に入ります。

この記事では、初見で読み方に迷いやすいPythonの関数名・モジュール名・ライブラリ名を、読み方+元の英単語(何の略か)とセットで一覧化しました。

読み方が現場で割れているものは複数併記しています。「どちらでも通じる」くらいの気持ちで読んでください。


1. 組み込み関数・キーワード

コード読み方元の綴り・ひとこと解説
ord()オードordinal(序数)。文字をUnicodeコードポイント(整数)に変換する。「オーアールディー」ではありません。
chr()チャー/シーエイチアールcharacter。ord() の逆。整数から文字を作る。
repr()レプル/リプルrepresentation。オブジェクトの「公式な文字列表現」を返す。
len()レンlength。
abs()アブスabsolute。絶対値。
pow()パウpower。べき乗。
divmod()ディブモッドdivision + modulo。商と余りを同時に返す。
eval()イーバルevaluate。文字列を式として評価。
exec()エグゼックexecute。
iter() / next()イター / ネクストiterator。
enumerate()イニューマレート/エニュメレート「列挙する」。インデックスと要素を同時に取り出す。綴りミスも多発する要注意単語。
isinstance()イズインスタンスis + instance。
getattr() / setattr() / hasattr()ゲットアター / セットアター / ハズアターattr = attribute(属性)。
bin() / oct() / hex()ビン / オクト / ヘックス2進・8進・16進表記へ変換。
dictディクトdictionary。
tupleタプル/トゥープル日本では「タプル」が優勢。
str / int / floatエスティーアール/ストラ / イント / フロートそれぞれ string / integer / floating point。str は「ストリング」と読み下す人も多い。
elifエルイフ/エリフelse if。
lambdaラムダ無名関数。
yieldイールド「産出する」。ジェネレータで値を返す。
assertアサート「表明する」。条件が偽なら例外。
nonlocalノンローカル外側の関数のローカル変数を書き換える宣言。
Noneノン/ナン「無い」ことを表す唯一のオブジェクト。
NaNナンNot a Number。None とは別物なので混同注意。

2. 記号・特殊な書き方

Pythonは記号にも固有の呼び名があります。会話で使えると一気に楽になります。

コード読み方ひとこと解説
__init__ダンダーイニットdunder = double underscore(アンダースコア2つ)。__name__ なら「ダンダーネーム」。
__name__ == "__main__"ダンダーネーム イコール ダンダーメインPython入門の最初の関門。
_アンダースコア/アンスコ使わない変数の受け皿としても使う。
*args / **kwargsアスタリスク アーグス / ダブルアスタリスク クワーグスargs = arguments、kwargs = keyword arguments
:=セイウチ演算子(ウォルラス演算子)walrus operator。:= がセイウチの目と牙に見えることから。Python 3.8で追加。
->アロー関数の戻り値の型ヒント。
@デコレータ/アットマーク@staticmethod は「アットマーク スタティックメソッド」。
f"..."エフストリングf-string(フォーマット済み文字列リテラル)。
//フロアディビジョン/切り捨て除算整数除算。
...エリプシスEllipsis という正式なオブジェクト。NumPyのスライスでも使う。
#!/usr/bin/env pythonシェバン/ハッシュバンshebang。スクリプト先頭のインタプリタ指定行。
[::-1]スライス、コロンコロン逆順にする定番イディオム。

3. 標準ライブラリのモジュール名

省略形の宝庫です。ここが読めるようになると、公式ドキュメントの読解速度が変わります。

コード読み方元の綴り・ひとこと解説
reアールイー/レregular expression(正規表現)。
osオーエスoperating system。
sysシスsystem。
shutilシューティル/エスエイチユーティルshell utilities。ファイルのコピーや削除。難読の代表格。
globグロブワイルドカードによるファイル名展開(globbing)。
itertoolsイターツールズiterator + tools。
functoolsファンクツールズfunction + tools。lru_cache などが入っている。
dequeデック/デキューdouble-ended queue(両端キュー)。英語では「デック」。
heapqヒープキューheap queue。優先度付きキュー。
bisectバイセクト「二等分する」。ソート済みリストへの二分探索挿入。
defaultdictデフォルトディクト存在しないキーに初期値を自動生成する辞書。
namedtupleネームドタプル名前でアクセスできるタプル。
argparseアーグパースargument parser。コマンドライン引数の解析。
pathlibパスリブpath + library。
pickleピクル「漬物にする」。オブジェクトをバイト列に保存すること(シリアライズ)。
venvベンブ/ブイエンブvirtual environment(仮想環境)。
enumイーナム/エナムenumeration(列挙型)。
abcエービーシーAbstract Base Classes(抽象基底クラス)。
asyncioアシンクアイオー/エイシンクアイオーasynchronous I/O(非同期入出力)。
uuidユーユーアイディーUniversally Unique IDentifier。
disディスdisassembler。バイトコードを覗ける。
pdbピーディービーPython Debugger。
gcジーシーgarbage collector。

日時まわりの難読トップ2

コード読み方元の綴り
strftime()エスティーアールエフタイム/ストラフタイムstring format time。日時 → 文字列。
strptime()エスティーアールピータイム/ストラップタイムstring parse time。文字列 → 日時。

f が format(出力)、p が parse(入力)。ここさえ押さえれば、もう取り違えません。

OS・ファイル操作の難読

コード読み方元の綴り
os.getcwd()ゲットシーダブリューディーget current working directory。
os.environエンバイロンenvironment(環境変数)。
os.path.splitext()スプリットイーエックスティー/スプリットエクステンションsplit extension。拡張子を分離。
os.path.abspath()アブスパスabsolute path
sys.argvアーグブイargument vector。コマンドライン引数のリスト。
stdin / stdout / stderrスタンダードイン/アウト/エラーstandard input / output / error。
errnoエラーノーerror number。
mkdirメイクディレクトリ/ムクディアmake directory。

4. よく見かける省略変数名

自分では書かなくても、他人のコードやサンプルには必ず出てきます。

変数名読み方元の綴り
idxインデックス/アイディーエックスindex
implインプルimplementation(実装)
miscミスクmiscellaneous(その他)
cfgコンフィグconfig / configuration
attrアトリビュート/アターattribute
funcファンクfunction
paramパラム/パラメータparameter
src / dstソース / デスティネーション/ディーエスティーsource / destination
tmpテンプtemporary
bufバフbuffer
regexリージェックス/レゲックスregular expression
elemエレム/エレメントelement
prev / currプレブ / カーprevious / current
epsイプシロン/イーピーエスepsilon。ゼロ除算を避けるための微小値。
clfシーエルエフclassifier(分類器)。scikit-learnの慣習。
dfディーエフDataFrame。pandasの慣習。

5. NumPy

コード読み方元の綴り・ひとこと解説
numpyナンパイ/ナムパイNumerical Python。
ndarrayエヌディーアレイn-dimensional array。NumPyの中核となる多次元配列。
dtypeディータイプdata type
np.arange()エーレンジ/アレンジarray range。「アレンジ(arrange)」と綴りが違うので注意。
np.linspace()リンスペースlinearly spaced。区間を等分割。
np.linalgリンアルグ/リニアアルジェブラlinear algebra(線形代数)。難読ランキング上位の常連。
np.linalg.inv()インブinverse(逆行列)。
np.linalg.det()デットdeterminant(行列式)。
np.linalg.eig()アイグ/エーアイジーeigenvalue(固有値)。
np.linalg.svd()エスブイディーsingular value decomposition(特異値分解)。
np.linalg.norm(x, ord=2)オードここでも ord が登場。ノルムの「次数(order)」の意味。
np.argmax() / np.argmin()アーグマックス / アーグミンargument of the maximum。最大値そのものではなく「最大値の位置」を返す。
np.argsort()アーグソートソート後の並び順に対応するインデックスを返す。
np.einsum()アインサムEinstein summation(アインシュタインの縮約記法)。
np.ravel()ラベル/ラヴェル「ほどく」。多次元配列を1次元に平坦化。
np.squeeze()スクイーズサイズ1の次元を絞り出して削除。
np.eye()アイ単位行列。記号 I の音に引っかけた命名。
np.matmul()マットマルmatrix multiplication(行列積)。
np.cumsum()キュムサムcumulative sum(累積和)。
np.randn()ランドエヌrandom normal(標準正規分布の乱数)。rand は一様分布なので別物。
np.meshgrid()メッシュグリッド格子点の座標配列を作る。等高線プロットで多用。
axis=0アクシス軸。0が行方向、1が列方向。
np.nanナンNot a Number。
np.infインフinfinity(無限大)。

6. pandas

コード読み方元の綴り・ひとこと解説
pandasパンダスpanel data が由来。動物のパンダではありません。
df.loc[]ロックlocation。ラベル(名前)で指定。
df.iloc[]アイロックinteger location。位置(整数)で指定。
df.astype()アズタイプas + type。型変換。
dropna() / fillna()ドロップエヌエー / フィルエヌエーdrop / fill + NA(Not Available、欠損値)。
df.agg()アグaggregate(集約)。
groupby()グループバイSQLのGROUP BYと同じ発想。
pd.concat()コンカットconcatenate(連結)。
df.melt()メルト横持ちデータを縦持ちに「溶かす」。
nunique()エヌユニークnumber of unique(ユニーク値の個数)。
pd.get_dummies()ゲットダミーズダミー変数化(One-Hotエンコーディング)。
applymap()アプライマップ要素ごとに関数を適用。
SettingWithCopyWarningセッティングウィズコピーワーニングpandas初心者が必ず一度は遭遇する警告。

7. scikit-learn

コード読み方元の綴り・ひとこと解説
scikit-learnサイキットラーンSciPy Kit に由来。元々は scikits.learn という名前でした。
sklearnエスケーラーン/サイキットラーンimport するときの名前。パッケージ名と違うので要注意。
fit() / transform() / predict()フィット / トランスフォーム / プレディクトscikit-learnの統一API。この3つを覚えれば大半のモデルが使える。
train_test_split()トレインテストスプリットデータを学習用と検証用に分割。
StandardScalerスタンダードスケーラー標準化(平均0・分散1)。
StratifiedKFoldストラティファイド ケーフォールドstratified = 「層化した」。クラス比率を保ったまま分割する交差検証。
GridSearchCVグリッドサーチ シーブイCV = cross-validation(交差検証)。
DBSCANディービースキャンDensity-Based Spatial Clustering of Applications with Noise。密度ベースのクラスタリング。
silhouette_scoreシルエットスコアクラスタリングの良さを測る指標。綴りが難しい。
KNeighborsClassifierケーネイバーズ クラシファイアk近傍法。
coef_ / intercept_コエフ / インターセプトcoefficient(係数)/ 切片。末尾のアンダースコアは「学習後に確定する属性」の印。
verbose=1バーボス/ヴァーボース「饒舌な」。学習の進捗をどれだけ出力するか。
n_jobs=-1エヌジョブズ並列実行に使うCPUコア数。-1で全コア。
random_stateランダムステート乱数シード。再現性の確保に必須。

8. その他のライブラリ

ライブラリ読み方由来・ひとこと解説
SciPyサイパイScientific Python。
matplotlibマットプロットリブMATLAB風の描画ライブラリ。
seabornシーボーン略記の sns は、海外ドラマの登場人物 Samuel Norman Seaborn が由来と言われています。
Bokehボケ写真用語の「ボケ味」がそのまま名前に。
Plotlyプロットリーインタラクティブな可視化。
Pillow / PILピロー / ピルPython Imaging Library。Pillowはその後継。
cv2シーブイツーOpenCVのPythonバインディング。
DjangoジャンゴジャズギタリストのDjango Reinhardtが由来。Dは発音しません
Flaskフラスク軽量Webフレームワーク。
Jinja2ジンジャFlaskのテンプレートエンジン。日本語の「神社(temple)」が名前の由来。
Werkzeugヴェルクツォイクドイツ語で「道具」。Flaskの内部で動くWSGIライブラリ。
Pydanticパイダンティックpedantic(融通の利かない)+ py。型を厳格にチェックする。
SQLAlchemyエスキューエル アルケミーalchemy = 錬金術。
Gunicornジーユニコーン/ガニコーンGreen Unicorn
Celeryセロリ非同期タスクキュー。
CythonサイソンC + Python。CPython(シーパイソン)とは別物なので混同注意。
NumbaナンバJITコンパイラ。
requestsリクエスツHTTPライブラリの定番。

9. 開発環境・ツール

用語読み方元の綴り・ひとこと解説
pipピップPip Installs Packages(再帰的な略語)。
PyPIパイピーアイPython Package Index。パッケージの公式倉庫。
PyPyパイパイ高速なPython実装。PyPI とは全くの別物。混同注意。
condaコンダAnaconda(アナコンダ)のパッケージ管理ツール。
GILギルGlobal Interpreter Lock。Pythonが真の並列実行をしにくい理由。
REPLレプルRead-Eval-Print Loop。対話モードのこと。
PEP 8ペップ エイトPython Enhancement Proposal。8番がコーディング規約。
WSGIウィズギーWeb Server Gateway Interface。仕様書では「ウィズギー」と読むと明記されています。
ASGIアズギー非同期版のWSGI。
flake8フレークエイト静的解析ツール。
mypyマイパイ型チェッカー。
ruffラフRust製の高速リンター。近年の定番。
isortアイソートimportの並び替え。
EAFPイーエーエフピーEasier to Ask Forgiveness than Permission。「まずやってみて例外で対処する」Pythonらしい流儀。
MROエムアールオーMethod Resolution Order。多重継承時のメソッド探索順序。
YAMLヤムル/ヤメルYAML Ain't Markup Language。
TOMLトムルTom's Obvious Minimal Language。pyproject.toml で使う。
.whlホイールwheel。ビルド済みパッケージの配布形式。
__pycache__パイキャッシュバイトコードのキャッシュ置き場。

10. 「pip install名」と「import名」が違うやつ

読み方以前に、そもそも名前が変わる。初学者が最も混乱するポイントです。

pip install する名前import する名前
scikit-learnsklearn
scikit-imageskimage
opencv-pythoncv2
PillowPIL
beautifulsoup4bs4
PyYAMLyaml
python-dateutildateutil
attrsattr
Fakerfaker
Djangodjango

よくある誤読ワースト5

  1. ord() → ◯オード / ×オーアールディー
  2. linalg → ◯リンアルグ(linear algebra)/ ×リナルグ・ラインアルグ
  3. Django → ◯ジャンゴ / ×ディージャンゴ
  4. deque → ◯デック(double-ended queue)/ ×デクエ
  5. PyPIPyPy → ◯パイピーアイ と パイパイ / この2つは別物

おわりに

Pythonの識別子が読みにくいのは、限られた文字数に英単語を詰め込んでいるからです。裏を返せば、読み方が分かった瞬間に「なぜこの名前なのか」まで一緒に理解できる、という設計でもあります。

strftime は string format time。arange は array range。argmax は argument of the maximum。 一度そう覚えてしまえば、二度と忘れませんし、タイプミスも減ります。

新人研修などで教える立場の方は、コードを読み上げるときに元の英単語を一言添えるだけで、受講者の定着が目に見えて変わります。「オーアールディー」と読んでいた人が「オード、ordinalね」と言えるようになる。その小さな差が、コードへの心理的な距離を確実に縮めてくれます。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。