CATEGORIES · 01 / 05
Engineering
コード、アーキテクチャ、言語と型。手を動かして得た感触を、docs のリズムで残す場所。(16 本)

個人開発の docker-compose.yml をテンプレ化する
半年に 1 度作る Rails + Next.js + MySQL + Redis 構成を、テンプレ化してコピーで動く形に。本番 / 開発の差分は override で。

CarrierWave + MiniMagick で OGP / サムネを自動派生する
アップロード 1 枚から OGP / カード / サムネを自動生成する Uploader 設計。WebP 出力、CLS を抑える dimensions、CDN キャッシュ。

MySQL FULLTEXT ngram で日本語 AND 検索を実装する
ngram_token_size / IN BOOLEAN MODE / +演算子。Elasticsearch を使わずに日本語 AND 検索を MySQL だけで完結させる。

ISR + Webhook で「公開した瞬間に反映」を作る
Rails 側の publish イベントから Next.js の /api/revalidate に Webhook を投げる。即時反映と CDN 効率を両立する設計。

Rails 6.1 → 8.1 のメジャー移行で踏んだ 7 つの罠
load_defaults / Spring / show_exceptions / unprocessable_content。AetherEchoes バックエンドを 6.1 から 8.1 に上げた実録。

Next.js 16 + Tailwind v4 を本番で動かして気付いた N 個のこと
Pages Router + @theme + next/font 7 種で個人雑誌を組んだ実装メモ。CSS 変数の名前空間、フォントの preload 戦略、ISR の落とし穴。

Rails 6.1 から 8.1 への移行メモ
Rails 6.1 の API-only 構成を 8.1 に引き上げる際に気をつけたポイントを、load_defaults や Spring 廃止など実例で整理します。

JSON-LD を Rails で型安全に組み立てる
schema.org の JSON-LD を埋めるとき、Hash を直書きすると型がない。dry-struct で構造を持たせる小さな工夫。

ActiveModelSerializers の代替を探した記録
AMS のメンテナンス停滞を受けて、Blueprinter / Alba / Panko を比較。AetherEchoes が最終的に AMS を残した理由。

RSpec の shared_examples を最小に保つ理由
shared_examples は便利。だから乱用される。「一度書いたら 5 箇所で使える」は、実は「5 箇所で読めなくなる」の言い換え。