Python
Python 3.14 の新機能整理 — t-string、遅延アノテーション、フリースレッディング公式サポート
2025 年 10 月にリリースされた Python 3.14 の実務目線での変化を整理します。f-string に似ているがテンプレートオブジェクトを作る t-string、デフォルト動作になったアノテーションの遅延評価、実験扱いを卒業したフリースレッディング(GIL 除去)ビルドの意味、標準ライブラリに入ったマルチインタープリターと Zstandard 圧縮、括弧なしの except 構文、リモートデバッグインターフェースまで、アップグレード前に知っておくべきことを扱います。
Python Web アプリの本番デプロイ — gunicorn、uvicorn、systemd、Docker
開発サーバーをそのまま本番に使ってはいけない理由から、本番デプロイの標準構成を整理します。WSGI と ASGI の区別、gunicorn と uvicorn ワーカーの組み合わせ、ワーカー数を決める基準、systemd サービスでプロセスを管理する方法、nginx リバースプロキシが担う仕事、Docker イメージでデプロイするときの基本形、ログとヘルスチェック、graceful shutdown までチェックリストとして扱います。
Celery で Python の非同期タスク処理 — キュー、ワーカー、運用チェックリスト
Web リクエストの中で処理してはいけない重い仕事を Celery に切り出す方法を整理します。ブローカー・ワーカー・結果バックエンドからなるタスクキューの構造、タスク定義と delay 呼び出し、リトライと指数バックオフの設定、最低 1 回実行という前提から導かれる冪等性の原則、acks_late やタイムリミットといった運用設定、Flower での監視、そして FastAPI BackgroundTasks や RQ で足りるケースの見極めまで扱います。
SQLAlchemy 2.0 #7 Alembic と実戦構成 — マイグレーション、非同期、チーム規約
シリーズ最終回として運用フェーズのテーマを整理します。create_all がスキーマ変更を解決できない理由と Alembic の導入、autogenerate が検知できるものと見落とすもの、マイグレーションファイルのレビュー原則、create_async_engine と AsyncSession に移行する非同期構成と遅延ロードの制約、モデル・セッション・設定を配置するプロジェクト構造、チームで守る規約まで扱います。
SQLAlchemy 2.0 #6 クエリ応用 — 結合、集計、サブクエリ、大量処理
select() ひとつで実戦的なクエリを組み立てる方法を整理します。scalars と execute の戻り値の形の違い、複数条件と or_、結合と明示的な ON 句、group_by と集計関数にラベルを付けて読む方法、サブクエリと EXISTS、LIMIT・OFFSET ページネーションとその限界、ORM の単位作業を迂回する大量 INSERT・UPDATE まで、2.0 スタイルのクエリの実務レパートリーを扱います。
SQLAlchemy 2.0 #5 リレーション — 1:N、N:M、そして N+1 問題
ORM の花形であり罠でもある relationship を整理します。外部キーと relationship の役割分担、back_populates で双方向をつなぐ 1:N の宣言、secondary テーブルを使う N:M、親削除時の子の扱いを決める cascade と delete-orphan、遅延ロードが生む N+1 問題を echo ログで確認する方法、selectinload と joinedload で解決する基準まで扱います。
SQLAlchemy 2.0 #4 セッション — 変更追跡、flush と commit、オブジェクトの 4 つの状態
ORM の心臓部である Session を整理します。セッションが単位作業(Unit of Work)として変更をため込み、まとめて SQL として送り出す仕組み、flush と commit の違い、transient・pending・persistent・detached というオブジェクトの 4 状態、同じ行には同じオブジェクトを返す identity map、commit 後の属性アクセスが再クエリを発行する理由、Web アプリケーションではリクエストごとにセッション 1 つというスコープ原則まで扱います。
SQLAlchemy 2.0 #3 ORM モデル定義 — DeclarativeBase、Mapped、mapped_column
テーブルを Python クラスとして宣言する 2.0 スタイルの ORM モデル定義を整理します。DeclarativeBase を継承する構造、Mapped 型ヒントと mapped_column の役割分担、Python の型が DB の型にマッピングされるルール、Optional と nullable の連動、デフォルト値・ユニーク制約・インデックスの宣言、制約名を自動で付ける命名規約まで扱います。
SQLAlchemy 2.0 #2 エンジンとトランザクション — コネクションプールと commit の 2 パターン
SQLAlchemy の土台であるエンジンとトランザクションを整理します。コネクションプールがなぜ必要でどう動くのか、pool_size と max_overflow が実際に制限しているもの、connect() と begin() で分かれる commit-as-you-go と begin-once のパターン、トランザクションが自動コミットされない理由、MetaData と Table でテーブルを定義し Core の式で CRUD を実行するところまで扱います。
SQLAlchemy 2.0 #1 全体像 — Core と ORM、そして 2.0 スタイル
Python の DB ライブラリの事実上の標準である SQLAlchemy を基礎から整理するシリーズの第 1 回です。Core と ORM という 2 層の構造、1.x 時代のコードと 2.0 スタイルが違う理由、select() を中心に統一されたクエリの書き方と型ヒント対応、インストールと最初の接続、text() で SQL を直接実行するところまで扱います。
Python パッケージング #7 チームの規約と道具の選択 — uv、poetry、pip
シリーズ最終回として、道具の選択とチームの規約を整理します。uv、poetry、pip+venv を 1 つの表に載せて分ける基準、マイグレーションの実際のコスト、CI でキャッシュと frozen 検証を掛ける方法、Docker イメージで uv を使う標準パターン、新しいメンバーが来ても崩れないチーム規約のチェックリストまで扱い、シリーズ全体を振り返ります。
Python パッケージング #6 公開 — wheel のビルドと PyPI へのアップロード
受け取る側から作る側へ方向を変え、自分のコードをインストール可能なパッケージにして公開するワークフローを整理します。src レイアウトとビルドバックエンドの役割、sdist と wheel の違い、uv build でビルドして TestPyPI でリハーサルしてから PyPI に上げる手順、GitHub Actions の Trusted Publishing でトークンなしにデプロイする現代の標準、社内専用の配布の選択肢まで扱います。