よく使うPythonライブラリ 50選
Web・データ分析・画像処理・機械学習・自動化など用途別に厳選した50ライブラリ。インストールコマンドと基本的な使い方のコード例付きで解説します。
外部ライブラリは 仮想環境(venv) の中にインストールするのが推奨です。プロジェクトごとにバージョンを分離できます。venvの使い方はこちら →
Web・HTTP
PythonでHTTPリクエストを最も簡単に送れるライブラリ。GET・POST・PUT・DELETE、認証、セッション管理に対応。REST APIとの通信や、Webページの取得に必須です。「Python requests」は世界で最もダウンロードされているライブラリのひとつ。
import requests
# GETリクエスト
res = requests.get("https://api.example.com/users")
data = res.json() # JSON自動パース
print(res.status_code) # 200
# POSTリクエスト
res = requests.post(
"https://api.example.com/login",
json={"user": "alice", "password": "secret"},
timeout=10
)
print(res.json())
requestsの上位互換で、非同期(async/await)に対応したモダンなHTTPクライアント。HTTP/2・タイムアウト・リトライ設定が充実。FastAPIのテストにも標準採用されています。大量リクエストを並列処理したい中級者以上に最適です。
import httpx
import asyncio
# 同期(requestsと同じ感覚で使える)
with httpx.Client() as client:
res = client.get("https://httpbin.org/get")
print(res.json())
# 非同期(高速並列取得)
async def fetch_all(urls):
async with httpx.AsyncClient() as client:
tasks = [client.get(url) for url in urls]
return await asyncio.gather(*tasks)
results = asyncio.run(fetch_all(["https://httpbin.org/get"] * 5))
HTMLやXMLを解析してデータを抽出するスクレイピングライブラリ。CSSセレクターやタグ名で要素を検索でき、直感的に使えます。requestsと組み合わせてWebページの情報を自動収集するツール開発に使います。
import requests
from bs4 import BeautifulSoup
html = requests.get("https://example.com").text
soup = BeautifulSoup(html, "lxml")
# タイトル取得
print(soup.title.text)
# 全リンクを取得
for a in soup.find_all("a", href=True):
print(a["href"], a.get_text(strip=True))
# CSSセレクターで取得
items = soup.select("ul.menu > li > a")
シンプルで軽量なPython Webフレームワーク。数行のコードでWebアプリを作れる手軽さが魅力。REST API・プロトタイプ・小〜中規模のWebアプリ開発に最適。学習コストが低くDjangoへのステップアップにも使えます。
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/")
def index():
return "Hello, Flask!"
@app.route("/api/users", methods=["GET", "POST"])
def users():
if request.method == "POST":
data = request.json
return jsonify({"created": data}), 201
return jsonify({"users": ["Alice", "Bob"]})
if __name__ == "__main__":
app.run(debug=True) # http://localhost:5000
型ヒントを活用した高速なWeb APIフレームワーク。自動でAPIドキュメント(Swagger UI)が生成されるのが大きな特徴。Node.jsと同等レベルの高速処理と、Pythonの型安全性を両立。現代のAPI開発のデファクトスタンダードになりつつあります。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.get("/users/{user_id}")
async def get_user(user_id: int):
return {"id": user_id, "name": "Alice"}
@app.post("/users")
async def create_user(user: User):
return {"created": user.model_dump()}
# 起動: uvicorn main:app --reload
# ドキュメント: http://localhost:8000/docs
Python最大の本格的Webフレームワーク。管理画面・認証・ORM・テンプレートエンジンが標準搭載の「バッテリー同梱」設計。大規模なWebアプリ・ECサイト・SNSなど複雑なシステムの開発に向いており、Instagram・PinterestもDjangoで作られています。
from django.db import models
from django.http import HttpResponse
from django.views import View
# モデル定義(DBテーブルを自動生成)
class Article(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
# ビュー
class ArticleView(View):
def get(self, request, pk):
article = Article.objects.get(pk=pk)
return HttpResponse(article.title)
# 起動: python manage.py runserver
# 管理画面: admin.site.register(Article)
Microsoftが開発したモダンなブラウザ自動化ライブラリ。Chrome・Firefox・SafariをSeleniumより高速・安定に操作できます。非同期対応・自動待機・スクリーンショット・PDF出力に標準対応。E2Eテスト自動化やスクレイピングの現代的な選択肢です。
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://example.com")
# 要素操作(読み込みを自動で待つ)
page.fill("input[name='q']", "Python")
page.click("button[type='submit']")
# スクリーンショット保存
page.screenshot(path="result.png")
# テキスト取得
print(page.locator("h1").text_content())
browser.close()
データ分析
Pythonの数値計算の基盤となるライブラリ。多次元配列(ndarray)を高速に操作でき、行列演算・統計計算・線形代数などに対応。pandasやscikit-learnなど多くのライブラリの土台になっています。
import numpy as np
# 配列の作成と演算
a = np.array([1, 2, 3, 4, 5])
print(a * 2) # [2 4 6 8 10]
print(a.mean()) # 3.0
print(a.std()) # 1.414...
# 2次元配列(行列)
mat = np.zeros((3, 3))
eye = np.eye(3) # 単位行列
print(np.dot(mat, eye))
# ブロードキャスト
b = np.arange(12).reshape(3, 4)
print(b + 10) # 全要素に10加算
表形式データの操作・分析に特化したライブラリ。CSV・Excel・SQLからデータを読み込み、フィルタリング・集計・結合・欠損値処理などをSQLライクな直感的な操作で実行できます。データサイエンスの現場では必須ツールです。
import pandas as pd
# CSV読み込み
df = pd.read_csv("data.csv", encoding="utf-8")
# 基本情報
print(df.shape) # (行数, 列数)
print(df.describe()) # 統計サマリー
# フィルタリング・集計
adults = df[df["age"] >= 18]
by_city = df.groupby("city")["salary"].mean()
# Excel書き出し
df.to_excel("output.xlsx", index=False)
Pythonのグラフ描画ライブラリの定番。折れ線・棒・円・散布図・ヒストグラムなどあらゆる種類のグラフを描画できます。tkinterへの埋め込みも可能で、GUIアプリにグラフを組み込む際に活躍します。
import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語フォント対応
# 折れ線グラフ
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 6, 3]
plt.plot(x, y, marker="o", label="売上")
plt.title("月別売上推移")
plt.xlabel("月"); plt.ylabel("万円")
plt.legend(); plt.grid(True)
# 円グラフ
labels = ["食費", "家賃", "交通費", "娯楽"]
sizes = [35, 40, 10, 15]
plt.pie(sizes, labels=labels, autopct="%1.1f%%")
plt.show()
PythonのデファクトスタンダードなORM(オブジェクト関係マッピング)。SQLを書かずにPythonのクラスでDBを操作できるORMモードと、生SQLを柔軟に扱えるCoreモードの2種類があります。SQLite・MySQL・PostgreSQL・Oracle など主要なDBに対応。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import DeclarativeBase, Session
engine = create_engine("sqlite:///app.db")
class Base(DeclarativeBase): pass
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(100), unique=True)
Base.metadata.create_all(engine)
with Session(engine) as session:
session.add(User(name="Alice", email="alice@example.com"))
session.commit()
users = session.query(User).all()
.env ファイルから環境変数を読み込むライブラリ。APIキーやパスワードをコードに直接書かずに安全に管理できます。GitHubに .env をアップしないようにすることでシークレット情報の漏洩を防げます。
# .env ファイル(Gitに含めない!)
# API_KEY=your_secret_key
# DB_PASSWORD=password123
from dotenv import load_dotenv
import os
load_dotenv() # .envを読み込む
api_key = os.getenv("API_KEY")
db_pass = os.getenv("DB_PASSWORD", "default")
print(api_key) # your_secret_key
Matplotlibをベースにした統計データ可視化ライブラリ。少ないコードで美しい統計グラフ(ヒートマップ・バイオリンプロット・ペアプロット)を描画できます。pandasのDataFrameと直接連携し、データ分析の探索的可視化(EDA)に最適です。
import seaborn as sns
import matplotlib.pyplot as plt
# サンプルデータ読み込み
tips = sns.load_dataset("tips")
# 散布図 + 回帰直線
sns.regplot(data=tips, x="total_bill", y="tip")
# ヒートマップ(相関行列)
corr = tips.select_dtypes("number").corr()
sns.heatmap(corr, annot=True, cmap="coolwarm", fmt=".2f")
# ペアプロット(全変数の関係を一覧表示)
sns.pairplot(tips, hue="sex")
plt.show()
Rustで書かれた超高速なDataFrameライブラリ。pandasより数倍〜数十倍高速で大規模データ処理に強みがあります。遅延評価(Lazy API)による自動最適化と型安全なAPIが特徴。「pandasの代替」として近年急速に採用が広がっています。
import polars as pl
# CSV読み込み・フィルタリング・集計
df = pl.read_csv("data.csv")
result = (
df
.filter(pl.col("age") >= 18)
.group_by("city")
.agg(
pl.col("salary").mean().alias("avg_salary"),
pl.len().alias("count")
)
.sort("avg_salary", descending=True)
)
print(result)
# 遅延評価(大規模データ向け)
lazy = df.lazy().filter(pl.col("score") > 90).collect()
ブラウザ上でインタラクティブに操作できるグラフを生成するライブラリ。ズーム・パン・ホバー情報表示が標準で使え、3Dグラフ・地図・アニメーショングラフにも対応。DashというWebダッシュボードフレームワークと組み合わせると強力なデータアプリを作れます。
import plotly.express as px
import plotly.graph_objects as go
# 散布図(ホバーで詳細表示)
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", title="アイリスデータセット")
fig.show() # ブラウザで開く
# インタラクティブ棒グラフ
fig = go.Figure(go.Bar(
x=["1月", "2月", "3月"],
y=[120, 180, 150],
text=[120, 180, 150], textposition="auto"
))
fig.update_layout(title="月別売上")
fig.write_html("chart.html") # HTMLとして保存
画像・映像処理
Pythonで画像を開く・保存・変換・加工するための定番ライブラリ。リサイズ・切り抜き・回転・フィルター・テキスト描画・フォーマット変換(JPG・PNG・GIF・WEBP等)に対応。tkinterでの画像表示にも必須です。
from PIL import Image, ImageFilter, ImageDraw, ImageFont
img = Image.open("photo.jpg")
# リサイズ
img_resized = img.resize((800, 600))
# フィルター
img_blur = img.filter(ImageFilter.GaussianBlur(radius=3))
img_gray = img.convert("L") # グレースケール
# テキスト描画
draw = ImageDraw.Draw(img)
draw.text((10, 10), "Hello!", fill="white")
img.save("output.png")
コンピュータビジョン(画像認識)の世界標準ライブラリ。顔検出・物体検出・動画処理・カメラキャプチャ・輪郭抽出などに対応。リアルタイム処理が得意で、C++で書かれた高速なコアをPythonから呼び出せます。
import cv2
# 画像読み込みと変換
img = cv2.imread("photo.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# 顔検出
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow("Result", img); cv2.waitKey(0)
URLやテキストからQRコード画像を生成するライブラリ。数行のコードで即座にQRコードを作成でき、色・サイズ・エラー訂正レベルのカスタマイズも可能。名刺・ポスター・Webサイト用のQRコード生成ツール開発に使えます。
import qrcode
from PIL import Image
# シンプルなQRコード生成
qr = qrcode.make("https://pythonland.example.com")
qr.save("qr.png")
# カスタマイズ版
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
qr.add_data("https://pythonland.example.com")
qr.make(fit=True)
img = qr.make_image(fill_color="darkblue", back_color="white")
img.save("qr_custom.png")
Pythonで動画の切り出し・結合・テキスト追加・速度変更・GIF変換などを行うライブラリ。ffmpegをラップしており動画処理スクリプトを簡潔に書けます。字幕入れ・スライドショー生成・動画圧縮ツールなどの自動化に活用できます。
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# 動画を読み込んで一部を切り出し
clip = VideoFileClip("input.mp4")
trimmed = clip.subclip(10, 30) # 10秒〜30秒を切り出し
# テキストを重ねる
txt = TextClip("Hello, Python!", fontsize=50, color="white")
txt = txt.set_position("center").set_duration(5)
final = CompositeVideoClip([trimmed, txt])
# 保存
final.write_videofile("output.mp4", fps=24)
# GIF変換
clip.subclip(0, 3).write_gif("preview.gif", fps=10)
画像やPDFから文字を読み取るOCR(光学文字認識)ライブラリ。Google製Tesseract OCRエンジンのPythonラッパーです。名刺・領収書・スキャンした書類からテキストを抽出する自動化ツール開発に使えます。日本語を含む100以上の言語に対応。
import pytesseract
from PIL import Image
# 画像からテキスト抽出
img = Image.open("document.png")
text = pytesseract.image_to_string(img, lang="jpn")
print(text)
# 詳細情報付き(位置・信頼度)
data = pytesseract.image_to_data(
img, lang="jpn",
output_type=pytesseract.Output.DICT
)
for i, word in enumerate(data["text"]):
if word.strip():
print(f"{word} (信頼度: {data['conf'][i]}%)")
機械学習・AI
機械学習アルゴリズムを統一されたAPIで提供するライブラリ。決定木・ランダムフォレスト・SVM・k近傍法・線形回帰など多数のアルゴリズムと、前処理・モデル評価・パイプライン機能が揃っています。深層学習以外のMLはほぼこれで対応できます。
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# データ準備
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 学習・予測・評価
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(f"精度: {accuracy_score(y_test, pred):.2%}")
Facebookが開発した深層学習フレームワーク。動的計算グラフによる直感的なコーディングが特徴で、研究分野では世界シェアNo.1。CNNや Transformer などあらゆるニューラルネットワークを実装でき、GPU加速にも対応しています。
import torch
import torch.nn as nn
# シンプルなニューラルネットワーク
class Net(nn.Module):
def __init__(self):
super().__init__()
self.layers = nn.Sequential(
nn.Linear(784, 128),
nn.ReLU(),
nn.Linear(128, 10)
)
def forward(self, x):
return self.layers(x)
model = Net()
x = torch.randn(32, 784) # バッチサイズ32
out = model(x)
print(out.shape) # torch.Size([32, 10])
OpenAI APIの公式Pythonクライアント。ChatGPT(GPT-4o)・DALL-E・Whisper・Embeddings などOpenAIの各モデルをPythonから簡単に呼び出せます。チャットボット・文章要約・コード生成・画像生成ツールを素早く作れます。
from openai import OpenAI
client = OpenAI() # OPENAI_API_KEY環境変数を自動読み込み
# チャット
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "あなたはPythonの先生です"},
{"role": "user", "content": "forループを簡単に説明して"}
]
)
print(response.choices[0].message.content)
HuggingFaceが提供する大規模言語モデル(LLM)・画像認識・音声認識などのAIモデルを統一APIで使えるライブラリ。BERT・GPT・LLaMA・WhisperなどのSOTAモデルを数行のコードでダウンロードして実行できます。AI研究・開発の標準ライブラリです。
from transformers import pipeline
# 感情分析
classifier = pipeline("sentiment-analysis")
result = classifier("I love Python programming!")
print(result) # [{'label': 'POSITIVE', 'score': 0.9998}]
# 日本語テキスト生成
generator = pipeline("text-generation",
model="rinna/japanese-gpt2-medium")
output = generator("Pythonは", max_length=50)
print(output[0]["generated_text"])
# 翻訳(英→日)
translator = pipeline("translation_en_to_ja",
model="Helsinki-NLP/opus-mt-en-jap")
print(translator("Hello, World!"))
Anthropic社のAI「Claude」をPythonから呼び出す公式SDKです。Claude 3.5 Sonnet・Opus・Haikuなど最新モデルを使ったチャットボット・文章要約・コード生成・データ分析ツールを素早く開発できます。プロンプトキャッシングや長いコンテキスト処理が強みです。
import anthropic
client = anthropic.Anthropic() # ANTHROPIC_API_KEY環境変数を自動読み込み
# チャット
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Pythonのリスト内包表記を教えてください"}
]
)
print(message.content[0].text)
# ストリーミング(リアルタイム出力)
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=256,
messages=[{"role": "user", "content": "こんにちは!"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
自動化・ツール
ブラウザを自動操作するライブラリ。Webサイトへのログイン・フォーム入力・ボタンクリック・スクリーンショット取得などをコードで自動実行できます。JavaScriptで動的に生成されるコンテンツのスクレイピングにも有効。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install())
)
driver.get("https://www.google.com")
# 検索ボックスに入力
box = driver.find_element(By.NAME, "q")
box.send_keys("Python tkinter\n")
# 結果を取得
results = driver.find_elements(By.CSS_SELECTOR, "h3")
for r in results[:5]:
print(r.text)
driver.quit()
マウス操作・キーボード入力・スクリーンショットをコードで自動化するライブラリ。デスクトップアプリの自動テストや、繰り返し作業の自動化に使えます。Excelの操作自動化・定型業務の自動化など幅広い用途があります。
import pyautogui
import time
# マウス移動・クリック
pyautogui.moveTo(100, 200, duration=0.5)
pyautogui.click()
pyautogui.doubleClick(300, 400)
# キーボード入力
pyautogui.typewrite("Hello, Python!", interval=0.05)
pyautogui.hotkey("ctrl", "c") # コピー
# スクリーンショット
img = pyautogui.screenshot()
img.save("screen.png")
# 画像を画面上で検索
pos = pyautogui.locateCenterOnScreen("button.png")
if pos:
pyautogui.click(pos)
シンプルな記法でタスクを定期実行するスケジューラーライブラリ。「毎日9時に実行」「10分ごとに実行」などを人間に読みやすい書き方で設定できます。バックグラウンドで動かす定期処理・通知・データ収集に便利です。
import schedule
import time
def send_report():
print("日報を送信しました")
def backup_data():
print("バックアップ実行")
# スケジュール設定
schedule.every().day.at("09:00").do(send_report)
schedule.every(10).minutes.do(backup_data)
schedule.every().monday.at("08:30").do(send_report)
# 実行ループ
while True:
schedule.run_pending()
time.sleep(1)
ループ処理にプログレスバーを表示するライブラリ。既存の for ループを1行変更するだけで、処理の進捗・残り時間・速度をターミナルにリアルタイム表示できます。時間のかかるバッチ処理や機械学習の学習進捗表示に便利。
from tqdm import tqdm
import time
# リストに適用するだけ
for i in tqdm(range(100), desc="処理中"):
time.sleep(0.01)
# 処理中: 100%|████████| 100/100 [00:01<00:00, 99.5it/s]
# ネストも可能
for batch in tqdm(batches, desc="Epoch"):
for sample in tqdm(batch, leave=False):
train(sample)
# 手動更新
with tqdm(total=200) as pbar:
pbar.update(50)
pbar.set_description("フェーズ1完了")
Excelファイル(.xlsx)を読み書きするライブラリ。セルへの値書き込み・書式設定・グラフ作成・数式入力などExcelの多くの操作をPythonで自動化できます。業務自動化で最もよく使われるライブラリのひとつです。
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill, Alignment
# 新規作成
wb = Workbook()
ws = wb.active
ws.title = "売上データ"
# ヘッダー(太字・背景色)
ws["A1"] = "商品名"
ws["A1"].font = Font(bold=True, size=12)
ws["A1"].fill = PatternFill("solid", fgColor="4472C4")
# データ書き込み
for i, row in enumerate(data, 2):
ws.cell(row=i, column=1, value=row["name"])
ws.cell(row=i, column=2, value=row["sales"])
wb.save("report.xlsx")
型ヒントを使ってデータの検証・変換を行うライブラリ。Pythonのデータクラスを定義するだけで、自動的に型チェック・バリデーション・JSON変換が行われます。FastAPIの内部でも使用されており、APIの入出力データ管理に非常に有効です。
from pydantic import BaseModel, EmailStr, field_validator
class User(BaseModel):
name: str
age: int
email: str
@field_validator("age")
@classmethod
def age_must_be_positive(cls, v):
if v < 0:
raise ValueError("年齢は0以上でなければなりません")
return v
# 自動バリデーション
user = User(name="Alice", age=25, email="alice@example.com")
print(user.model_dump_json())
# 型不一致は自動変換
user2 = User(name="Bob", age="30", email="bob@example.com")
GmailをPythonから簡単に送信できるライブラリ。標準の smtplib より大幅に少ないコードで添付ファイル・HTML形式のメールを送信できます。定期レポートの自動送信・エラー通知メール・フォーム送信の自動化などに使えます。
import yagmail
# 初回のみパスワードをキーチェーンに保存
# yagmail.register("your@gmail.com", "パスワード")
yag = yagmail.SMTP("your@gmail.com")
# テキストメール
yag.send(
to="recipient@example.com",
subject="Pythonからの自動送信テスト",
contents="こんにちは!Pythonから送信しました。"
)
# 添付ファイル付き・HTML形式
yag.send(
to="recipient@example.com",
subject="月次レポート",
contents=["<h1>月次レポート</h1><p>添付をご確認ください。</p>",
"report.xlsx"] # ファイルパスをリストに追加
)
Word文書(.docx)をPythonで作成・編集するライブラリ。見出し・段落・表・画像・フォント設定などWordの主要機能を操作できます。議事録・契約書・報告書の自動生成や、テンプレートからの一括文書作成に活躍します。
from docx import Document
from docx.shared import Pt, RGBColor
doc = Document()
# 見出し
doc.add_heading("Pythonで自動生成した報告書", level=1)
# 段落(フォント設定付き)
para = doc.add_paragraph()
run = para.add_run("本日の作業内容を報告します。")
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0x1a, 0x1a, 0x2e)
# 表の作成
table = doc.add_table(rows=3, cols=3)
table.style = "Table Grid"
table.cell(0, 0).text = "項目"
table.cell(0, 1).text = "結果"
doc.save("report.docx")
PDFファイルをゼロから生成するライブラリ。テキスト・画像・図形・表を自由に配置でき、日本語フォントにも対応。請求書・領収書・証明書・レポートなどのPDF帳票を自動生成するシステムに利用されます。外部ソフト不要でPDFを作成できます。
from fpdf import FPDF
class PDF(FPDF):
def header(self):
self.set_font("Helvetica", "B", 14)
self.cell(0, 10, "Monthly Report", align="C", new_x="LMARGIN", new_y="NEXT")
def footer(self):
self.set_y(-15)
self.set_font("Helvetica", "I", 8)
self.cell(0, 10, f"Page {self.page_no()}", align="C")
pdf = PDF()
pdf.add_page()
pdf.set_font("Helvetica", size=12)
pdf.cell(0, 10, "Hello, PDF World!", new_x="LMARGIN", new_y="NEXT")
pdf.multi_cell(0, 8, "fpdf2 で日本語PDFを生成するには\nfont_familyに日本語フォントを追加します。")
pdf.output("output.pdf")
Pythonの標準 datetime より直感的に日時を操作できるライブラリ。タイムゾーン変換・相対的な日時表現(「3時間後」「先週の月曜」)・人間に読みやすい表示(「2時間前」)などが簡単に書けます。ログ解析・スケジュール管理ツールに便利です。
import arrow
# 現在時刻(タイムゾーン付き)
now = arrow.now("Asia/Tokyo")
print(now.format("YYYY-MM-DD HH:mm:ss")) # 2025-04-14 09:00:00
# 相対的な日時操作
tomorrow = now.shift(days=1)
next_monday = now.shift(weekday=0)
three_ago = now.shift(hours=-3)
# 人間に読みやすい表示
print(now.humanize(locale="ja")) # 数秒前
# 文字列→arrowオブジェクト
dt = arrow.get("2025-12-31", "YYYY-MM-DD")
print(dt.to("UTC")) # UTC変換
ファイルやディレクトリの変更をリアルタイムで監視するライブラリ。ファイルの作成・更新・削除・移動を検知してコールバック関数を自動実行できます。「CSVが更新されたら自動処理」「画像が追加されたらリサイズ」などの自動化に使えます。
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
class MyHandler(FileSystemEventHandler):
def on_created(self, event):
if not event.is_directory:
print(f"新規ファイル作成: {event.src_path}")
def on_modified(self, event):
if not event.is_directory:
print(f"ファイル変更: {event.src_path}")
observer = Observer()
observer.schedule(MyHandler(), path="./watch_dir", recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
開発・テスト・ユーティリティ
Pythonで最も広く使われているテストフレームワーク。シンプルな assert 文でテストを書け、フィクスチャ・パラメータ化テスト・カバレッジ計測などが充実。標準のunittestより直感的で、プロの現場では必須スキルです。
# test_calculator.py
import pytest
from calculator import add, divide
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
@pytest.mark.parametrize("a,b,expected", [
(1, 2, 3), (0, 0, 0), (-1, 1, 0),
])
def test_add_parametrized(a, b, expected):
assert add(a, b) == expected
# 実行: pytest test_calculator.py -v --cov=.
ターミナルに美しい出力を表示するライブラリ。色付きテキスト・テーブル・プログレスバー・シンタックスハイライト付きコード・マークダウンをターミナルで表示できます。CLIツール開発や、デバッグ時のprint出力を見やすくするのに使えます。
from rich import print
from rich.console import Console
from rich.table import Table
from rich.progress import track
console = Console()
# カラー・スタイル付き出力
console.print("[bold green]成功![/] ファイルを保存しました")
console.print("[red]エラー:[/] ファイルが見つかりません")
# テーブル表示
table = Table(title="ユーザー一覧")
table.add_column("名前"); table.add_column("年齢")
table.add_row("Alice", "25"); table.add_row("Bob", "30")
console.print(table)
# プログレスバー
for item in track(range(100), description="処理中..."):
Pythonでコマンドラインインターフェース(CLIツール)を作るためのフレームワーク。デコレーターを使ってコマンド・オプション・引数を定義でき、ヘルプテキストの自動生成・型変換・プロンプト入力にも対応。FlaskのCLIでも内部使用されています。
import click
@click.group()
def cli():
"""PythonLand CLI ツール"""
pass
@cli.command()
@click.option("--name", "-n", default="World", help="挨拶する名前")
@click.option("--count", "-c", default=1, type=int)
def greet(name, count):
"""挨拶するコマンド"""
for _ in range(count):
click.echo(f"Hello, {name}!")
@cli.command()
@click.argument("filepath", type=click.Path(exists=True))
def info(filepath):
"""ファイル情報を表示"""
click.echo(f"ファイル: {filepath}")
if __name__ == "__main__":
cli()
# 使用: python app.py greet --name Alice --count 3
標準の logging モジュールより圧倒的に簡単に使えるロギングライブラリ。from loguru import logger の1行でカラフルなログ出力・ファイルへの書き込み・ログローテーションが始まります。例外の自動キャッチ機能も便利。
from loguru import logger
# すぐ使えるシンプルなロギング
logger.debug("デバッグ情報")
logger.info("処理開始: {}", "main.py")
logger.warning("注意: ディスク残量が少ない")
logger.error("エラーが発生しました")
# ファイル出力(自動ローテーション付き)
logger.add(
"logs/app_{time}.log",
rotation="1 day", # 1日ごとにローテーション
retention="7 days", # 7日分保持
level="INFO"
)
# 例外の自動キャッチ
@logger.catch
def risky_function():
return 1 / 0
PythonスクリプトをWindows(.exe)・Mac・Linux の実行ファイルに変換するライブラリ。Pythonが入っていない環境でもアプリを動かせるようになります。tkinterで作ったGUIアプリを友人や職場の人に配布したいときに使います。
# コマンドラインで実行(Pythonコードではなく)
# シンプルな1ファイルexeを作成
# pyinstaller --onefile app.py
# ウィンドウアプリ(コンソールなし)
# pyinstaller --onefile --windowed --icon=icon.ico app.py
# distフォルダにexeが生成される
# dist/app.exe
# 注意:同じOS上でビルドすること
# (Windowsで.exeを作る、Macで.appを作る)
SSHプロトコルを使ってリモートサーバーに接続・コマンド実行・ファイル転送(SFTP)を行うライブラリ。サーバーの自動デプロイスクリプト・リモートバックアップ・サーバー監視ツールなどインフラ自動化に活躍します。
import paramiko
# SSHクライアント
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("192.168.1.100", username="user", password="pass")
# リモートコマンド実行
stdin, stdout, stderr = ssh.exec_command("ls -la /var/www")
print(stdout.read().decode())
# SFTPでファイル転送
sftp = ssh.open_sftp()
sftp.put("local_file.txt", "/remote/path/file.txt") # アップロード
sftp.get("/remote/log.txt", "downloaded_log.txt") # ダウンロード
sftp.close(); ssh.close()
型ヒントだけでCLIツールを作れるモダンなフレームワーク。Clickをベースに、関数の型アノテーションから自動でオプション・引数・ヘルプを生成します。Richとの統合で美しいエラー表示にも対応。FastAPIの作者が開発した次世代CLIライブラリです。
import typer
from typing import Optional
app = typer.Typer()
@app.command()
def greet(
name: str,
count: int = typer.Option(1, help="繰り返し回数"),
loud: bool = typer.Option(False, "--loud", "-l", help="大文字で出力"),
):
"""名前を挨拶するコマンド"""
for _ in range(count):
msg = f"Hello, {name}!"
typer.echo(msg.upper() if loud else msg)
@app.command()
def bye(name: str):
"""さよならを言うコマンド"""
typer.echo(f"Goodbye, {name}!")
if __name__ == "__main__":
app()
# 使用: python app.py greet Alice --count 3 --loud
Pythonコードの型アノテーションを静的に検査するツール。実行前に型の不一致・存在しない属性・None参照など多くのバグを検出できます。大規模開発での品質担保や、チーム開発でのコード可読性向上に必須。VS Code / JetBrains とも連携します。
# app.py
def add(x: int, y: int) -> int:
return x + y
def greet(name: str) -> str:
return f"Hello, {name}!"
# 型エラーの例(mypyが検出してくれる)
result = add("hello", 1) # エラー: str を int に渡している
nums: list[int] = [1, 2, "three"] # エラー: str が混入
# コマンドラインで実行
# mypy app.py
# app.py:8: error: Argument 1 to "add" has incompatible type "str"; expected "int"
「妥協しない」コードフォーマッターで、Pythonコードを一定のスタイルに自動整形します。インデント・クォート・行長・空行などを統一し、コードレビューでスタイルを議論する必要がなくなります。保存時に自動実行するようVS Codeと連携するのが定番の使い方です。
# 整形前(バラバラなスタイル)
x=1
y = 2
def foo( a,b,c ):
return a+b+c
my_list = [1,2, 3,4]
# black を実行: black app.py
# 整形後(Blackが統一)
x = 1
y = 2
def foo(a, b, c):
return a + b + c
my_list = [1, 2, 3, 4]
# VS Codeで保存時に自動整形するには settings.json に:
# "editor.formatOnSave": true,
# "python.formatting.provider": "black"
AWSの各種サービスをPythonから操作する公式SDK。S3へのファイルアップロード・DynamoDBの操作・Lambda関数の呼び出し・EC2インスタンスの制御など200以上のAWSサービスに対応。クラウドを使ったバックエンド・データ処理・自動化に必須です。
import boto3
# S3バケットにファイルをアップロード
s3 = boto3.client("s3",
aws_access_key_id="YOUR_KEY",
aws_secret_access_key="YOUR_SECRET",
region_name="ap-northeast-1"
)
# アップロード
s3.upload_file("local_file.txt", "my-bucket", "remote/path/file.txt")
# ダウンロード
s3.download_file("my-bucket", "remote/path/file.txt", "downloaded.txt")
# バケット内のファイル一覧
response = s3.list_objects_v2(Bucket="my-bucket")
for obj in response.get("Contents", []):
print(obj["Key"], obj["Size"])
クリップボードへのテキストコピー・取得をクロスプラットフォームで行うライブラリ。パスワード生成ツール・テキスト整形ツール・コード補助ツールなど、「ワンクリックでコピー」機能を簡単に実装できます。
import pyperclip
# クリップボードにコピー
pyperclip.copy("コピーしたいテキスト")
# クリップボードから取得
text = pyperclip.paste()
print(text)
# 実用例:パスワードをクリップボードにコピー
import random, string
password = "".join(
random.choices(string.ascii_letters + string.digits, k=16)
)
pyperclip.copy(password)
print("パスワードをクリップボードにコピーしました")
AES・RSA・Fernet などの暗号化アルゴリズムをPythonで扱えるライブラリ。パスワードの安全なハッシュ化(bcrypt)・データの暗号化・TLS証明書操作などセキュリティ関連機能が充実。パスワードマネージャーや機密データ管理ツールに必須。
from cryptography.fernet import Fernet
# 鍵の生成(安全な場所に保存すること)
key = Fernet.generate_key()
f = Fernet(key)
# 暗号化
message = b"秘密のメッセージ"
encrypted = f.encrypt(message)
print(encrypted) # 暗号化されたバイト列
# 復号
decrypted = f.decrypt(encrypted)
print(decrypted.decode()) # 秘密のメッセージ
テキストを音声に変換するTTS(Text-to-Speech)ライブラリ。インターネット接続不要でオフライン動作し、Windows・Mac・Linuxのシステム音声を使います。読み上げアプリ・アクセシビリティ機能・通知音声など幅広い用途があります。
import pyttsx3
engine = pyttsx3.init()
# 基本の読み上げ
engine.say("こんにちは、PythonLandへようこそ!")
engine.runAndWait()
# 音声設定
engine.setProperty("rate", 150) # 速度(デフォルト200)
engine.setProperty("volume", 0.9) # 音量(0.0〜1.0)
# 利用可能な音声一覧
for voice in engine.getProperty("voices"):
print(voice.id, voice.name)
engine.say("速度を変えました")
engine.runAndWait()
CPU・メモリ・ディスク・ネットワーク・プロセスのシステム情報を取得するライブラリ。タスクマネージャーのようなシステム監視ツール・リソース使用量の記録・自動化スクリプトでの負荷監視などに使います。
import psutil
# CPU情報
print(f"CPU使用率: {psutil.cpu_percent(interval=1)}%")
print(f"CPUコア数: {psutil.cpu_count()}")
# メモリ情報
mem = psutil.virtual_memory()
print(f"メモリ使用率: {mem.percent}%")
print(f"使用中: {mem.used / 1024**3:.1f} GB")
# ディスク情報
disk = psutil.disk_usage("/")
print(f"ディスク使用率: {disk.percent}%")
# プロセス一覧
for proc in psutil.process_iter(["pid", "name", "cpu_percent"]):
print(proc.info)
ライブラリ早見表
| ライブラリ | 主な用途 | 難易度 | pip コマンド |
|---|---|---|---|
| requests | HTTP通信・APIリクエスト | ★☆☆ | pip install requests |
| httpx | 非同期HTTP通信 | ★★☆ | pip install httpx |
| BeautifulSoup4 | HTML解析・スクレイピング | ★☆☆ | pip install beautifulsoup4 |
| Flask | 軽量Webフレームワーク | ★★☆ | pip install flask |
| FastAPI | 高速Web API開発 | ★★★ | pip install fastapi uvicorn |
| NumPy | 数値計算・行列演算 | ★★☆ | pip install numpy |
| pandas | データ分析・CSV/Excel操作 | ★★☆ | pip install pandas |
| Matplotlib | グラフ・データ可視化 | ★★☆ | pip install matplotlib |
| SQLAlchemy | DB操作(ORM) | ★★★ | pip install sqlalchemy |
| python-dotenv | 環境変数管理 | ★☆☆ | pip install python-dotenv |
| Pillow | 画像処理・変換 | ★☆☆ | pip install pillow |
| OpenCV | コンピュータビジョン | ★★★ | pip install opencv-python |
| qrcode | QRコード生成 | ★☆☆ | pip install qrcode |
| scikit-learn | 機械学習 | ★★★ | pip install scikit-learn |
| PyTorch | 深層学習 | ★★★ | pip install torch |
| openai | ChatGPT・OpenAI API | ★★☆ | pip install openai |
| Selenium | ブラウザ自動操作 | ★★☆ | pip install selenium |
| PyAutoGUI | GUI・マウス自動操作 | ★★☆ | pip install pyautogui |
| schedule | 定期タスク実行 | ★☆☆ | pip install schedule |
| tqdm | プログレスバー表示 | ★☆☆ | pip install tqdm |
| openpyxl | Excel操作・自動化 | ★☆☆ | pip install openpyxl |
| Pydantic | データ検証・型安全 | ★★☆ | pip install pydantic |
| pytest | テストフレームワーク | ★★☆ | pip install pytest |
| Rich | 美しいターミナル出力 | ★☆☆ | pip install rich |
| Click | CLIツール作成 | ★★☆ | pip install click |
| Loguru | ロギング | ★☆☆ | pip install loguru |
| PyInstaller | exe化・配布 | ★★☆ | pip install pyinstaller |
| Paramiko | SSH・SFTP通信 | ★★★ | pip install paramiko |
| pyperclip | クリップボード操作 | ★☆☆ | pip install pyperclip |
| cryptography | 暗号化・セキュリティ | ★★★ | pip install cryptography |
| pyttsx3 | 音声合成(TTS) | ★☆☆ | pip install pyttsx3 |
| psutil | システム情報取得 | ★☆☆ | pip install psutil |
| Django | フルスタックWebフレームワーク | ★★★ | pip install django |
| Playwright | モダンブラウザ自動化・E2Eテスト | ★★☆ | pip install playwright |
| Seaborn | 統計グラフ可視化 | ★☆☆ | pip install seaborn |
| Polars | 高速DataFrame(pandas代替) | ★★☆ | pip install polars |
| Plotly | インタラクティブグラフ | ★★☆ | pip install plotly |
| MoviePy | 動画編集・GIF生成 | ★★☆ | pip install moviepy |
| pytesseract | OCR(画像から文字認識) | ★★☆ | pip install pytesseract |
| transformers | LLM・自然言語処理(HuggingFace) | ★★★ | pip install transformers |
| anthropic | Claude AI API | ★★☆ | pip install anthropic |
| yagmail | Gmailメール送信 | ★☆☆ | pip install yagmail |
| python-docx | Word文書の作成・編集 | ★☆☆ | pip install python-docx |
| fpdf2 | PDF生成・帳票 | ★★☆ | pip install fpdf2 |
| Arrow | 日時操作・タイムゾーン | ★☆☆ | pip install arrow |
| watchdog | ファイル・ディレクトリ監視 | ★★☆ | pip install watchdog |
| Typer | 型ヒントでCLIツール作成 | ★★☆ | pip install typer |
| mypy | 静的型チェック | ★★☆ | pip install mypy |
| Black | コード自動フォーマット | ★☆☆ | pip install black |
| boto3 | AWS SDK(S3・Lambda等) | ★★★ | pip install boto3 |