一覧へ

Pythonモジュールと標準ライブラリ

Pythonでモジュールをインポートし、標準ライブラリを活用し、pipで外部パッケージを管理する方法を学びます。

中級
|
10
|
検証済み (2026-07)
モジュールimport標準ライブラリpipパッケージ管理
進捗0/18 (0%)

Python モジュールと標準ライブラリ

このトピックを終えると

import の動作原理を理解し、Python 標準ライブラリの主要なモジュールを活用でき、pip を使って外部パッケージをインストールおよび管理できるようになります。


モジュールとは

モジュールは、Python コードが格納された .py ファイル 1 つです。関数、クラス、変数をまとめて、別のファイルから import して使用できます。

python
# math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
PI = 3.14159
python
# main.py
import math_utils
print(math_utils.add(3, 5)) # 8
print(math_utils.multiply(4, 7)) # 28
print(math_utils.PI) # 3.14159

import math_utils を実行すると、Python は同じディレクトリから math_utils.py を見つけて実行し、その中の関数/変数を math_utils.名前 の形式で使えるようにします。


import のさまざまな方法

python
# 1. モジュール全体をインポート
import os
os.getcwd() # 現在のディレクトリ
# 2. 特定の関数だけをインポート
from os.path import join, exists
join("/home", "user") # '/home/user' — os.path.join の代わりに join として使用可能
# 3. エイリアス (別名) を付ける
import numpy as np
np.array([1, 2, 3]) # numpy.array の代わりに np.array
# 4. すべてをインポート (非推奨)
from os import * # 名前の衝突のリスク — どこから来たのか追跡不可

from X import * は便利ですが、名前がどこから来たのか分からなくなるため、大規模なプロジェクトでは使用しません。明示的なインポートが常に優れています。


標準ライブラリ — インストールなしで使えるツール

Python をインストールすると、数百のモジュール が一緒にインストールされます。これが標準ライブラリ (Standard Library) です。「バッテリーが内蔵されている」という Python の哲学を反映しています。

os — オペレーティングシステムとの対話

python
import os
# 現在のディレクトリ
print(os.getcwd()) # /home/user/project
# ファイルリスト
files = os.listdir(".")
print(files) # ['main.py', 'data', 'output']
# ディレクトリの作成
os.makedirs("output/reports", exist_ok=True)
# 環境変数
db_host = os.environ.get("DB_HOST", "localhost")

os.path — パスの処理

python
import os.path
path = "/home/user/data/report.csv"
os.path.basename(path) # 'report.csv'
os.path.dirname(path) # '/home/user/data'
os.path.splitext(path) # ('/home/user/data/report', '.csv')
os.path.exists(path) # True or False
os.path.join("data", "output", "file.txt") # 'data/output/file.txt'

json — JSON データの処理

python
import json
# Python オブジェクト → JSON 文字列
data = {"name": "Hoon", "scores": [90, 85, 95]}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
# JSON 文字列 → Python オブジェクト
parsed = json.loads(json_str)
print(parsed["name"]) # Hoon
# ファイルに保存/読み込み
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)

ensure_ascii=False を指定しないと、韓国語が \ud55c\uae00 のようにエスケープされて保存されます。

datetime — 日付と時間

python
from datetime import datetime, timedelta
# 現在の時刻
now = datetime.now()
print(now) # 2026-07-03 14:30:00.123456
# フォーマット変換
print(now.strftime("%Y-%m-%d")) # 2026-07-03
print(now.strftime("%Y/%m/%d %H:%M")) # 2026/07/03 14:30
# 文字列 → datetime
date = datetime.strptime("2026-07-03", "%Y-%m-%d")
# 日付の計算
tomorrow = now + timedelta(days=1)
week_ago = now - timedelta(weeks=1)
diff = datetime(2026, 12, 31) - now
print(f"D-{diff.days}") # D-181

collections — 高度なデータ構造

python
from collections import Counter, defaultdict
# Counter — 頻度をカウント
words = ["apple", "banana", "apple", "cherry", "banana", "apple"]
count = Counter(words)
print(count) # Counter({'apple': 3, 'banana': 2, 'cherry': 1})
print(count.most_common(2)) # [('apple', 3), ('banana', 2)]
# defaultdict — デフォルト値を持つ辞書
scores = defaultdict(list)
scores["math"].append(90)
scores["math"].append(85)
scores["english"].append(92)
print(dict(scores)) # {'math': [90, 85], 'english': [92]}

random — 乱数生成

python
import random
random.randint(1, 100) # 1〜100 の間の整数
random.choice(["A", "B", "C"]) # リストから 1 つ選択
random.shuffle([1, 2, 3, 4]) # リストをその場でシャッフル
random.sample(range(100), 5) # 0〜99 から 5 つを重複なしで選択

pip — 外部パッケージのインストール

標準ライブラリにない機能は、外部パッケージとしてインストールします。

bash
# インストール
pip install requests
pip install pandas numpy matplotlib
# バージョンを指定してインストール
pip install requests==2.31.0
# アップグレード
pip install --upgrade requests
# 削除
pip uninstall requests
# インストールされたパッケージのリスト
pip list
# requirements.txt で依存関係を管理
pip freeze > requirements.txt # 現在インストールされているパッケージを記録
pip install -r requirements.txt # 記録されたパッケージを一括インストール

requirements.txt は、プロジェクトで使用する外部パッケージを記録するファイルです。他の人 (またはサーバー) が同じ環境を再現できます。


__name__ == "__main__" — 実行とインポートの区別

python
# greet.py
def hello(name):
print(f"Hello, {name}!")
if __name__ == "__main__":
# このファイルを直接実行した場合のみ実行
hello("World")
bash
$ python greet.py # "Hello, World!" を出力
python
# other.py
import greet # hello("World") は実行されない
greet.hello("Python") # "Hello, Python!" を出力

python greet.py で直接実行すると、__name__"__main__" になります。別のファイルから import greet でインポートすると、__name__"greet" になります。このパターンで、「直接実行時のテストコード」と「モジュールとして使用される時の機能」を分離します。


主要なまとめ

概念まとめ
モジュール.py ファイル 1 つ = モジュール 1 つ
import別のファイルのコードをインポート
標準ライブラリインストールなしで使えるモジュールの集合 (os, json, datetime など)
pip外部パッケージのインストール/管理ツール
requirements.txtプロジェクトの依存関係を記録
__name__直接実行 vs インポートの区別

Python の強みの 1 つは、豊富な標準ライブラリと巨大なサードパーティの生態系 (PyPI には 50 万以上のパッケージ) です。「車輪を再び発明するな」という原則 — 実装する前に、まず標準ライブラリと PyPI を検索する習慣が生産性を高めます。


実践的なパターン — 複数のモジュールを組み合わせる

実際には、1 つのモジュールだけを使用することはあまりありません。複数の標準ライブラリを組み合わせることが一般的です。

python
import os
import json
from datetime import datetime
def process_data_files(directory):
results = []
for filename in os.listdir(directory):
if not filename.endswith(".json"):
continue
filepath = os.path.join(directory, filename)
with open(filepath, "r", encoding="utf-8") as f:
data = json.load(f)
results.append({
"file": filename,
"records": len(data),
"processed_at": datetime.now().strftime("%Y-%m-%d %H:%M")
})
return results
# 出力:
# [
# {"file": "users.json", "records": 150, "processed_at": "2026-07-03 14:30"},
# {"file": "orders.json", "records": 423, "processed_at": "2026-07-03 14:30"}
# ]

os でファイルを探索し、json で読み込み、datetime で時間を記録 — 3 つのモジュールが自然に組み合わされます。このようなパターンがスクリプト作成の基本です。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...