すべての記事

PostgreSQL 基礎講座 #4 インデックス基礎 — いつ効いて、いつ効かないのか
読了 4分

PostgreSQL 基礎講座 #4 インデックス基礎 — いつ効いて、いつ効かないのか

読み取りを速くする基本手段であるインデックスを、PostgreSQL 基準で固めます。B-tree インデックスが検索を変える構造、作ったのに使われない代表的な原因(先頭カラムの不一致、カラムへの関数適用、型の不一致、低い選択度)、書き込み性能とストレージというコスト、そして「遅いクエリの WHERE・JOIN・ORDER BY を見て作る」という実務の順序まで扱います。

Rust 基礎講座 #4 参照と借用 — & と &mut、借用規則のコンパイルエラーを解決する
読了 5分

Rust 基礎講座 #4 参照と借用 — & と &mut、借用規則のコンパイルエラーを解決する

所有権を移さずに値を使う参照(&)と可変参照(&mut)を扱います。「不変参照はいくつでも、可変参照は 1 つだけ」という借用規則が何を防ぐのか(反復中の変更、データ競合)、cannot borrow as mutable エラーの読み方と直し方、解放済みメモリを指すダングリング参照がコンパイル段階で遮断される構造、そして &str とスライスまで扱います。

SQLAlchemy 2.0 #3 ORM モデル定義 — DeclarativeBase、Mapped、mapped_column
読了 4分

SQLAlchemy 2.0 #3 ORM モデル定義 — DeclarativeBase、Mapped、mapped_column

テーブルを Python クラスとして宣言する 2.0 スタイルの ORM モデル定義を整理します。DeclarativeBase を継承する構造、Mapped 型ヒントと mapped_column の役割分担、Python の型が DB の型にマッピングされるルール、Optional と nullable の連動、デフォルト値・ユニーク制約・インデックスの宣言、制約名を自動で付ける命名規約まで扱います。

PostgreSQL 基礎講座 #3 結合と集計 — 読み取りクエリの実務感覚
読了 4分

PostgreSQL 基礎講座 #3 結合と集計 — 読み取りクエリの実務感覚

読み取りクエリの実務の 8 割を占める結合と集計を固めます。INNER と LEFT 結合の選択基準と、LEFT 結合の結果を WHERE で絞って INNER にしてしまう古典的なミス、GROUP BY と HAVING の役割分担、集計と結合が混ざるときの重複集計の罠、サブクエリと結合の分かれ道、そしてグループごとの最新 1 件を取る PostgreSQL らしい方法(DISTINCT ON)まで扱います。

Rust 基礎講座 #3 所有権 — move が既定の言語、GC なしでメモリが解放される仕組み
読了 5分

Rust 基礎講座 #3 所有権 — move が既定の言語、GC なしでメモリが解放される仕組み

Rust の心臓である所有権を正面から扱います。すべての値に所有者が 1 つだけという 3 つの規則、代入と関数呼び出しで値が移動(move)した後に元の変数が使えなくなる理由、スタックに収まる固定サイズ型だけが持つ Copy、コストがコードに現れる clone、そしてスコープの終わりで自動的に解放される drop まで、use-after-free がコンパイルエラーに変わる構造を扱います。

SQLAlchemy 2.0 #2 エンジンとトランザクション — コネクションプールと commit の 2 パターン
読了 5分

SQLAlchemy 2.0 #2 エンジンとトランザクション — コネクションプールと commit の 2 パターン

SQLAlchemy の土台であるエンジンとトランザクションを整理します。コネクションプールがなぜ必要でどう動くのか、pool_size と max_overflow が実際に制限しているもの、connect() と begin() で分かれる commit-as-you-go と begin-once のパターン、トランザクションが自動コミットされない理由、MetaData と Table でテーブルを定義し Core の式で CRUD を実行するところまで扱います。

PostgreSQL 基礎講座 #2 データ型とテーブル設計 — 何として保存するか
読了 5分

PostgreSQL 基礎講座 #2 データ型とテーブル設計 — 何として保存するか

PostgreSQL 設計の半分はデータ型の選択です。文字列は text 1 つで足りる理由、お金の計算に numeric が必須の理由、時刻保存の標準である timestamptz と timestamp の罠、主キー戦略(bigint IDENTITY vs UUID、そして uuidv7)、NOT NULL・CHECK・外部キーでデータ整合性を DB 層で守る設計、enum と配列を使う場所まで扱います。

Rust 基礎講座 #2 変数と型 — let と mut、シャドーイング、式で終わる関数
読了 5分

Rust 基礎講座 #2 変数と型 — let と mut、シャドーイング、式で終わる関数

不変が既定の let と、明示的に付ける mut の意味から始めます。同じ名前を再宣言するシャドーイングがなぜ実務のイディオムなのか、整数・浮動小数点・bool・char のスカラー型とオーバーフローの挙動、タプルと配列、そしてセミコロン 1 つで文と式が分かれる Rust の関数の戻り値規則まで扱います。

SQLAlchemy 2.0 #1 全体像 — Core と ORM、そして 2.0 スタイル
読了 6分

SQLAlchemy 2.0 #1 全体像 — Core と ORM、そして 2.0 スタイル

Python の DB ライブラリの事実上の標準である SQLAlchemy を基礎から整理するシリーズの第 1 回です。Core と ORM という 2 層の構造、1.x 時代のコードと 2.0 スタイルが違う理由、select() を中心に統一されたクエリの書き方と型ヒント対応、インストールと最初の接続、text() で SQL を直接実行するところまで扱います。

PostgreSQL 基礎講座 #1 PostgreSQL とは — 既定の DB になった理由、インストールと psql の最初の一歩
読了 4分

PostgreSQL 基礎講座 #1 PostgreSQL とは — 既定の DB になった理由、インストールと psql の最初の一歩

PostgreSQL が新規プロジェクトの既定データベースになった背景から始めます。標準準拠と豊富なデータ型、拡張エコシステム(pgvector・PostGIS)、寛容なライセンスという選ばれる理由、Docker でローカルに立てる最速のインストール、psql への接続とメタコマンド(\l、\dt、\d)の基本、最初のテーブルを作って入れて読む 1 サイクル、そして講座全体の地図まで扱います。

Python パッケージング #7 チームの規約と道具の選択 — uv、poetry、pip
読了 5分

Python パッケージング #7 チームの規約と道具の選択 — uv、poetry、pip

シリーズ最終回として、道具の選択とチームの規約を整理します。uv、poetry、pip+venv を 1 つの表に載せて分ける基準、マイグレーションの実際のコスト、CI でキャッシュと frozen 検証を掛ける方法、Docker イメージで uv を使う標準パターン、新しいメンバーが来ても崩れないチーム規約のチェックリストまで扱い、シリーズ全体を振り返ります。

Rust 基礎講座 #1 Rust とは — 学ぶ理由、rustup のインストールと cargo の最初の一歩
読了 5分

Rust 基礎講座 #1 Rust とは — 学ぶ理由、rustup のインストールと cargo の最初の一歩

カーネルから CLI ツールまで Rust が急速に広がった理由である「GC なしのメモリ安全」が何を意味するのかから始めます。安全と性能がトレードオフだった既存言語との違い、rustup の 1 行インストール、cargo でプロジェクトを作って実行する基本サイクル、最初のコンパイルエラーメッセージの読み方、そして講座全体の地図まで扱います。