Python
読みやすさを重視した汎用プログラミング言語で、データサイエンス、AI、Web 開発で広く使われる
Python とは
Python は、Guido van Rossum が設計した汎用プログラミング言語で、読みやすさとシンプルさを重視した設計が特徴だ。公式ドキュメントの沿革では 1990 年代初頭にオランダの CWI で ABC という言語の後継として作られたとされ、作者自身が公開した年表では 1989 年 12 月に実装が始まり、1991 年 2 月 20 日に 0.9.0 が公開されたと記録されている。データサイエンス、機械学習、Web 開発、自動化スクリプトで広く使われている。
バージョンの刻み方には規則がある。3.10 以降は毎年 10 月に機能リリースが出て、各系列はリリースから 5 年でサポートが終わる (最初の 2 年がバグ修正、残りはセキュリティ修正のみ)。2026 年 8 月時点の安定版は 3.14 系 (3.14.7) で、3.14 の初回リリースは 2025 年 10 月 7 日、サポート終了は 2030 年 10 月が予定されている。「Python 3」と一括りにせず、どの系列を前提にするかを先に決めておくと、使える構文とライブラリの対応範囲が確定する。
特徴
Python は波括弧ではなくインデントでブロックを定義するインデントベースの構文を持ち、コードの見た目が統一される。動的型付けで変数に型宣言が不要だが、Python 3.5 以降は型ヒントを任意で付与できる。「バッテリー同梱」の思想で標準ライブラリが豊富な一方、既定のビルドでは GIL (Global Interpreter Lock) が CPU を使う処理のスレッド並列を妨げる。
GIL と並列処理
GIL は、1 つのインタプリタの中で Python のバイトコードを実行できるスレッドを常に 1 つへ限るロックだ。このため計算主体の処理はスレッドを増やしても速くならず、複数コアを使い切るには multiprocessing でプロセスを分けるか、計算を GIL を手放す C 拡張 (NumPy の行列演算など) に任せる形になる。逆にネットワークやファイルの待ち時間は GIL が解放されるため、待ち中心の処理ではスレッドや asyncio が素直に効く。ここを取り違えると、スレッドを足したのに速くならない、プロセスを分けたのにメモリだけ増えるという結果になる。
この制約自体は動いている。GIL を無効化できる free-threaded ビルドが 3.13 で PEP 703 の実験的機能として入り、3.14 では PEP 779 により公式サポートへ格上げされた。ただし 2026 年 8 月時点で通常配布されるビルドは GIL 有効のままで、free-threaded は別のビルドを選んで使う。手元の 3.13 で sysconfig.get_config_var('Py_GIL_DISABLED') は 0、sys._is_gil_enabled() は True を返し、既定ビルドが GIL 側であることを確認できる。実行環境側の対応も途上で、Lambda の管理ランタイムでは単一スレッド性能への影響を理由に free-threading が無効化されている。当面は「既定は GIL あり」を前提に設計し、free-threaded は測ってから採用する順序が安全だ。
TypeScript / Go との比較
3 つの言語は得意分野が違う。選定で効くのは表の実行速度そのものより、必要なライブラリがどちらの生態系にあるか、そして型の強制をどこまで求めるかだ。
| 観点 | Python | TypeScript | Go |
|---|---|---|---|
| 型システム | 動的 (型ヒント任意) | 静的 | 静的 |
| 実行速度 | 遅い (バイトコードへ変換しインタプリタが実行) | 中程度 (V8 JIT) | 速い (ネイティブ) |
| 並行処理 | asyncio, multiprocessing | async/await | goroutine |
| パッケージ管理 | pip, uv, Poetry | npm | Go Modules |
| 用途 | データサイエンス、AI | Web アプリ | サーバー、CLI |
型ヒント
型ヒントは 3.5 で PEP 484 として導入され、その後も書き方が増えている。次の例では、引数と戻り値の注釈は 3.5 以降で動くが、type から始まる型エイリアスの宣言は 3.12 で追加された構文 (PEP 695) だ。
def greet(name: str, age: int) -> str:
return f"Hello, {name}! You are {age} years old."
# ジェネリクス
type Point[T] = tuple[T, T]
# TypedDict
from typing import TypedDict
class User(TypedDict):
id: str
name: str
email: str
mypy で型チェックを実行する。TypeScript と異なり、実行時に型ヒントは検査されない。外部から受け取った値が宣言どおりかは保証されないため、API の入力検証には pydantic のような実行時に検証する仕組みを別に用意する。型ヒントは人と静的解析器に向けた宣言であり、実行時の防壁ではない。
データサイエンスのエコシステム
数値計算の土台を NumPy が一手に担い、その上に分析・機械学習・可視化が積み上がっているのが Python の強みだ。どれか 1 つを選ぶ話ではなく、下の層 (配列とその演算) を共有しているために組み合わせが効く。
| ライブラリ | 用途 |
|---|---|
| NumPy | 数値計算、行列演算 |
| pandas | データ分析、DataFrame |
| scikit-learn | 機械学習 |
| PyTorch / TensorFlow | ディープラーニング |
| matplotlib / seaborn | データ可視化 |
| Jupyter Notebook | 対話的な分析環境 |
Lambda の管理ランタイムには boto3 (AWS SDK for Python) が同梱されるが、その版はランタイムのバージョンとリージョンによって変わると公式ドキュメントに明記されている。追加されたばかりの API を呼ぶ場合は、デプロイパッケージか Layer に自分で boto3 を含めて版を固定する。
採否の判断
Python を選ぶ理由がはっきりしているのは、数値計算・機械学習・データ処理のライブラリを使いたい場合と、書き捨ての自動化を短く書きたい場合だ。逆に、1 プロセスで多数のコアを使い切る計算や、起動の速さと省メモリが要求される場面では不利になりやすい。型の緩さが不安に見えるときも、型ヒントと mypy を最初から必須にすれば静的検査は得られる。埋まらないのは実行時に型が検査されない点だけで、そこは入力検証の設計で補う。
この記事は役に立ちましたか?
関連用語
TypeScript
JavaScript に静的型付けを追加した言語で、大規模開発の安全性と生産性を向上させる
Java
エンタープライズ開発で広く使われるオブジェクト指向言語で、JVM 上で動作しプラットフォーム非依存を実現する
Go
Google が開発したシンプルで高速なコンパイル言語で、goroutine による軽量な並行処理が特徴
Node.js
Chrome V8 エンジン上で動作するサーバーサイド JavaScript ランタイム
goroutine
Go の軽量スレッドで、数十万規模の並行処理を低コストで実現する
スレッドプール
事前に生成したスレッドを再利用し、スレッド生成のオーバーヘッドを削減する並行処理パターン
関連する記事
Python 本の選び方 - 独学の最初の 1 冊から実務品質まで
Python 本の選び方を「動機」から逆算して整理。プログラミング未経験の最初の 1 冊、業務自動化に直結する本、型ヒントとコード品質で実務水準へ進む本まで、2026 年 8 月時点の定番を独学ルートに沿って解説します。
本の選び方に正解はない
どの本を選べばいいか迷って決められない。同じテーマの入門書は扱う基礎が大きく重なるため、どれからでも学べます。確認すべき 1 点と、迷いを終わらせる決め方を解説します。
本に書いてあることが古くても学べることはある
プログラミングの世界は変化が速く、本の内容がすぐ古くなると言われます。でも、古い本からでも学べることはたくさんあります。何が古くなり、何が古くならないのかを解説します。