すべての記事
PostgreSQL 実践講座 #2 コネクションプール — max_connections の誤解と PgBouncer
トラフィックが増えると必ずぶつかるコネクション問題を扱います。PostgreSQL のコネクションがプロセス 1 つで高くつく理由、max_connections を上げるのが答えではない理由(多すぎるコネクションはむしろスループットを下げます)、アプリケーションのプールと PgBouncer のような外部プーラーの役割分担、PgBouncer transaction モードの効果と制約(セッション状態の機能が使えない)、そして適正なプールサイズの感覚まで扱います。
Python 3.14 の新機能整理 — t-string、遅延アノテーション、フリースレッディング公式サポート
2025 年 10 月にリリースされた Python 3.14 の実務目線での変化を整理します。f-string に似ているがテンプレートオブジェクトを作る t-string、デフォルト動作になったアノテーションの遅延評価、実験扱いを卒業したフリースレッディング(GIL 除去)ビルドの意味、標準ライブラリに入ったマルチインタープリターと Zstandard 圧縮、括弧なしの except 構文、リモートデバッグインターフェースまで、アップグレード前に知っておくべきことを扱います。
Rust 実践講座 #2 エラー設計 — anyhow と thiserror、死に方を設計する
CLI ツールにおいてエラーメッセージはユーザーインターフェースの一部です。アプリケーション層の既定値である anyhow(main が anyhow::Result を返し、context で文脈を積む)と、呼び出し側が種類で分岐できる具体的なエラー型を作るライブラリ層の thiserror の役割分担、2 つのクレートを選ぶ判断基準、そして終了コードまで、loglens のエラー経路を設計します。
Terraform 基礎 #3 変数・出力・ローカル値 — ハードコーディングを取り除く 3 つの道具
variable ブロックで値をコードの外に切り出す方法と、tfvars ファイル、-var フラグ、環境変数という 4 つの入力パスの優先順位を整理します。validation で誤った値を入り口で止め、output で結果を取り出し、locals で内部の計算に名前を付けるところまで、同じコードで複数の環境を作る土台を固めます。
PostgreSQL 実践講座 #1 スキーマ・マイグレーション — サービスを止めずにテーブルを変える
実践編の始まりは、稼働中のテーブルを変える技術です。マイグレーションをコードで管理すべき理由(順序・再現性)、DDL もトランザクションになる PostgreSQL の強み、ロックを長く握る危険な変更と安全な変更の区別、NOT NULL の追加を段階に分ける方法、CREATE INDEX CONCURRENTLY、そしてカラム名の変更・型変更を拡張-移行-縮小(expand-contract)で解く戦略まで扱います。
Python Web アプリの本番デプロイ — gunicorn、uvicorn、systemd、Docker
開発サーバーをそのまま本番に使ってはいけない理由から、本番デプロイの標準構成を整理します。WSGI と ASGI の区別、gunicorn と uvicorn ワーカーの組み合わせ、ワーカー数を決める基準、systemd サービスでプロセスを管理する方法、nginx リバースプロキシが担う仕事、Docker イメージでデプロイするときの基本形、ログとヘルスチェック、graceful shutdown までチェックリストとして扱います。
Rust 実践講座 #1 プロジェクト設計と clap — サブコマンド CLI の骨組みを立てる
基礎講座で学んだ文法で実際のツールを作る実践 8 回を始めます。作るのはアクセスログ分析 CLI の loglens です。なぜ CLI ツールが Rust の代表的な舞台なのか(単一バイナリ、起動速度)、clap の derive 方式でサブコマンド(stats・top・errors)を列挙型 1 つで宣言する方法、自動生成される --help、そして全 8 回の設計地図まで扱います。
Terraform 基礎 #2 HCL の基本文法 — ブロック、引数、リソースアドレスと変更の 3 つの形
HCL の骨格であるブロックと引数の構造、aws_s3_bucket.hello のようなリソースアドレスの意味と、リソース同士を参照する文法を整理します。plan 出力の記号を読みながら create、update、replace という変更の 3 つの形を区別し、fmt と validate でコードを整える習慣まで扱います。
Celery で Python の非同期タスク処理 — キュー、ワーカー、運用チェックリスト
Web リクエストの中で処理してはいけない重い仕事を Celery に切り出す方法を整理します。ブローカー・ワーカー・結果バックエンドからなるタスクキューの構造、タスク定義と delay 呼び出し、リトライと指数バックオフの設定、最低 1 回実行という前提から導かれる冪等性の原則、acks_late やタイムリミットといった運用設定、Flower での監視、そして FastAPI BackgroundTasks や RQ で足りるケースの見極めまで扱います。
PostgreSQL 基礎講座 #9 ロール・権限・バックアップ基礎 — 運用の最小規律
基礎講座の締めくくりとして運用の最小規律を固めます。ロール(role)1 つでユーザーとグループを統一した PostgreSQL の権限モデル、アプリケーションに superuser を渡さず最小権限アカウントを作る実務の手順(GRANT とデフォルト権限)、public スキーマの注意点、pg_dump・pg_restore による論理バックアップと復元リハーサルの重要性、そして基礎 9 回の振り返りと実践編の予告まで扱います。
Rust 基礎講座 #9 ライフタイムとモジュール — 注釈が必要になる瞬間、クレートで仕上げる
基礎講座の最終回です。第 4 回のダングリング参照の遮断がどう働いていたのかをライフタイム(lifetime)で説明します。missing lifetime specifier エラーが出る瞬間、ライフタイム注釈の本当の意味(寿命を延ばすのではなく関係を宣言する)、ほとんどの場合に表記が省略される理由。続いて mod と pub でコードを分けるモジュールシステム、crates.io の外部クレートの使い方、そして講座後の学習経路まで整理します。
Terraform 基礎 #1 IaC と Terraform — コンソールクリック運用の限界、インストールと初めての apply
コンソールのクリックで作ったインフラが、再現不能、履歴の不在、レビューの不在によって崩れていく過程を整理し、あるべき状態をコードで宣言する IaC がこの問題をどう解決するのかを説明します。CloudFormation、CDK、Pulumi の中で Terraform が占める位置を比較し、インストールから S3 バケットを init、plan、apply で作成して destroy で削除する最初のサイクルまで扱います。