すべての記事

Box・Rc・Arc の違い — Rust のスマートポインタ、いつ何を使うか
読了 5分

Box・Rc・Arc の違い — Rust のスマートポインタ、いつ何を使うか

基礎講座が The Book に預けていた空白を回収します。値をヒープに置く Box が必要な 3 つの状況(再帰型、dyn トレイト、大きな値の移動)、所有者を複数にする Rc と参照カウント、スレッドをまたぐ Arc、実行時の借用検査で内部可変性を開く RefCell、そして実務のイディオムである Rc<RefCell<T>> と Arc<Mutex<T>> まで、選択基準を決定手順として整理します。

Entra ID 自動化 #2 ユーザーライフサイクル — 作成、無効化、ライフサイクルワークフロー
読了 6分

Entra ID 自動化 #2 ユーザーライフサイクル — 作成、無効化、ライフサイクルワークフロー

入社・異動・退職をコードで処理する方法を扱います。Graph API でユーザーを作るとき属性を標準化すべき理由、初期資格情報を一時アクセスパスで渡す方法、退職処理では削除より無効化が先である理由と 30 日のソフトデリート、ライセンスは個別割り当てよりグループベースが基本である理由、そしてこの流れ全体を製品機能として提供する Entra ライフサイクルワークフローと HR 連携プロビジョニングまで扱います。

pgvector 実践 — PostgreSQL でベクトル検索を運用するときに知っておくこと
読了 5分

pgvector 実践 — PostgreSQL でベクトル検索を運用するときに知っておくこと

埋め込み検索を別のベクトル DB を使わずに PostgreSQL で運用する実践ガイドです。vector 型と距離演算子、HNSW インデックスが既定値である理由と IVFFlat との比較、フィルタ条件と一緒に使うときの取りこぼし問題と反復インデックススキャン(0.8.0)、halfvec でサイズを半分にする方法と 4000 次元への対応、そして「専用ベクトル DB が必要になるのはいつか」の判断基準まで扱います。

Terraform 実践 #3 EC2 とセキュリティグループ — SG チェイニング設計と user_data による起動
読了 5分

Terraform 実践 #3 EC2 とセキュリティグループ — SG チェイニング設計と user_data による起動

セキュリティグループを CIDR ではなくセキュリティグループ参照でつなぐチェイニング設計を ALB、EC2 の 2 層で構成し、最新の AL2023 AMI をデータソースで照会して、user_data で Web サーバーまで起動する EC2 インスタンスをプライベートサブネットに配置します。SSH ポートを開けない理由と、Session Manager での接続計画まで整理します。

Entra ID 自動化 #1 全体像 — テナント、ディレクトリオブジェクト、JML ライフサイクル
読了 6分

Entra ID 自動化 #1 全体像 — テナント、ディレクトリオブジェクト、JML ライフサイクル

Microsoft Entra ID の管理業務をコードで自動化するシリーズの第 1 回です。Azure AD から改名された Entra ID の位置づけ、テナントとユーザー・グループ・アプリ・デバイスというディレクトリオブジェクトの構造、アカウント管理自動化の骨格になる入社・異動・退職(JML)モデル、Graph API・PowerShell・IaC というツールの地形、Free・P1・P2・Governance で分かれるライセンスと機能の関係まで扱います。

PostgreSQL vs MySQL — 2026 年に新規プロジェクトならどちらか
読了 5分

PostgreSQL vs MySQL — 2026 年に新規プロジェクトならどちらか

2 つのオープンソース RDBMS の選択基準を整理します。結論は「新規プロジェクトは特別な理由がなければ PostgreSQL、すでに MySQL エコシステムの上に立っているなら MySQL を維持」です。MySQL 8.0 サポート終了(2026-04)と 8.4 LTS への移行時期、機能の幅(JSONB・ウィンドウ関数・拡張)と MVCC 実装の違い、レプリケーションのエコシステムの成熟度の差、そしてどちらを選んでもいい場合まで、判断基準を扱います。

Rust vs Go — サーバー、CLI、システムプログラミングで何を選ぶかの基準
読了 4分

Rust vs Go — サーバー、CLI、システムプログラミングで何を選ぶかの基準

どちらも静的型付けで単一バイナリを作るコンパイル言語ですが、設計哲学は正反対に近いです。メモリ管理(GC vs 所有権)、並行処理(組み込みのゴルーチン vs async エコシステム)、学習曲線とチームのオンボーディング、レイテンシ特性、そして Web API、CLI ツール、インフラソフトウェア、組み込みまで、用途別にどちらが有利かの判断基準を整理します。

Terraform 実践 #2 VPC ネットワークのコード化 — 2 AZ のサブネット、ルーティング、NAT ゲートウェイ
読了 5分

Terraform 実践 #2 VPC ネットワークのコード化 — 2 AZ のサブネット、ルーティング、NAT ゲートウェイ

myapp インフラの土台である VPC をコードで構築します。パブリック・プライベートサブネットを 2 つの AZ に for_each で作り、インターネットゲートウェイとルーティングテーブルでトラフィックのルートを定義し、プライベートサブネットのアウトバウンドを担う NAT ゲートウェイを費用の割り切りとともに配置します。ネットワークの output まで整理して、次回のコンピューティング層を受け入れる準備を済ませます。

PostgreSQL 実践講座 #9 バックアップ・PITR・アップグレード — 障害直前に戻る技術
読了 4分

PostgreSQL 実践講座 #9 バックアップ・PITR・アップグレード — 障害直前に戻る技術

実践編の締めくくりとしてデータを守る最後の層を扱います。pg_dump の論理バックアップの限界を超える物理バックアップ(pg_basebackup)と WAL アーカイブの組み合わせ、望む時刻へ巻き戻す PITR(Point-In-Time Recovery)の原理と復旧目標の設定、「削除事故はフェイルオーバーでは戻せない」というレプリケーションとバックアップの役割の区別、メジャーバージョンアップグレードの 3 つの道(pg_dump・pg_upgrade・論理レプリケーション)、そしてトラック全体の振り返りまで扱います。

Rust 借用エラー総まとめ — value moved、cannot borrow、does not live long enough
読了 5分

Rust 借用エラー総まとめ — value moved、cannot borrow、does not live long enough

Rust 入門者が最もよく出会う借用チェッカーのエラーをコード別に整理します。E0382(移動後の使用)、E0502(不変・可変借用の衝突)、E0499(可変借用の重複)、E0506(借用中の値への代入)、E0597(ライフタイム不足)、E0596(クロージャのキャプチャ)まで、各エラーの原因と代表的な対処を、診断→原因→解決の順で扱います。

Terraform 実践 #1 プロジェクト設計とブートストラップ — 全体像、バックエンド、共通タグ
読了 5分

Terraform 実践 #1 プロジェクト設計とブートストラップ — 全体像、バックエンド、共通タグ

コードで構築する Web サービスインフラの全体アーキテクチャをまず 10 本分の完成形として描き、実習で費用が発生するポイントと管理の原則を整理します。state バケットと S3 バックエンドのブートストラップ、provider のバージョン固定、default_tags によるすべてのリソースへの共通タグ付けまで済ませ、実践シリーズの出発点を整えます。

PostgreSQL 実践講座 #8 レプリケーションと高可用性 — ストリーミングレプリケーション、読み取り分散、フェイルオーバー
読了 4分

PostgreSQL 実践講座 #8 レプリケーションと高可用性 — ストリーミングレプリケーション、読み取り分散、フェイルオーバー

DB サーバー 1 台の限界を超える標準手段、レプリケーションを扱います。WAL をそのまま流すストリーミング(物理)レプリケーションの原理、非同期レプリケーションのレプリケーション遅延と read-your-writes 問題、同期レプリケーションのトレードオフ、読み取り負荷をスタンバイに分散するときの注意点、自動フェイルオーバーに必要なもの(Patroni など)とスプリットブレイン、テーブル単位で選んで送る論理レプリケーションの用途、そしてマネージドサービスとの対応関係まで扱います。