Python
概要
中身を告げられずに箱を手渡されたと想像してください。開けてみるまで何が入っているかわかりません。Pythonはデータをそのように扱います。変数に何を入れるかを前もって宣言させず、プログラムが動いている最中にどんな種類の値かを判断します。これが「動的型付け」という言葉の意味です。Pythonは高水準で動的型付けの言語で、読みやすさと膨大なエコシステムが高く評価されています。どこでも動き、ほとんど擬似コードのように読め、データサイエンス、機械学習、スクリプティング、バックエンドサービスのデファクトの共通語となっています。
強み
- 緩やかな学習曲線と、有名なほど読みやすい構文。
- 巨大なライブラリエコシステム(PyPI。Pythonのパッケージ置き場)— numpy、pandas、requests、FastAPI、そしてほぼすべてのAI/MLフレームワーク。
- つなぎ込みコード、自動化、プロトタイピング、データ処理に最適。
- インタラクティブな探索のための、強力なREPL(入力するとその場で結果が返る対話型プロンプト)とノートブックの文化。
トレードオフ
- 純粋なCPUバウンドの処理は遅く、GIL(一度に一つのスレッドしか許さないロック)が真のマルチスレッドを制限する。
- 誰もチェックしない用紙の書き間違いを思い浮かべてください。用紙を実際に提出するまで、誰も気づきません。Pythonも同じです。型エラー(たとえば数値を文字として扱うなど)に気づくのは、たいていそのコード行が実際に動くときで、それ以前ではありません。つまりこうしたエラーを実行時に捕捉します。ただし、型ヒントとmypyやpyrightのようなチェッカーを追加すれば話は別です。
- 依存関係と環境の管理(pip、venv、poetry、uv)が、繰り返し摩擦の原因になる。
- スタンドアロンのバイナリをパッケージ化して配布するのがやっかい。
使いどころ
素早く動きたいときにPythonを選びましょう。データパイプライン、MLモデルの学習と推論、自動化スクリプト、社内ツール、そして純粋な実行速度よりも開発速度が勝るWeb (アプリケーション・プログラミング・インターフェース)などです。AIやデータに関連するあらゆるものにとって、最も無難なデフォルトです。
バイブコーディングとの相性
AIアシスタントはPythonで群を抜いて強力です。学習データで最も多く表現されている言語なので、生成されるコードは通常、慣用的でそのまま動きます。AIをうまく導くには、使いたいライブラリとバージョンを正確に指定し(例:「FastAPIとPydantic v2を使って」)、自分とモデルの双方が地に足をつけられるよう型ヒントを求め、バージョンのずれを避けるために最初にrequirements.txtやpyproject.tomlを要求しましょう。各ステップを次に進む前に検証できるよう、小さなテストや実行可能なif __name__ == "__main__"ブロックを追加するようアシスタントに指示しましょう。
from collections import Counter
def top_words(text: str, n: int = 3) -> list[tuple[str, int]]:
words = (w.lower() for w in text.split())
return Counter(words).most_common(n)
print(top_words("the cat the dog the bird")) # [('the', 3), ('cat', 1), ('dog', 1)]