🗺️集計と検索が中心のアプリでデータ層を Firestore から Postgres(Neon)へ移行した記録
地図上に文学作品を紐づけるアーカイブアプリのデータ層を、Firestore から Postgres(Neon)+ Drizzle へ移行した経緯を整理しました。読み取り課金で詰まった原因と、集計・ファセット・全文検索というワークロードの形から見た向き不向きについて書いています。
目的に合わせて各セクションからお探しください。
地図上に文学作品を紐づけるアーカイブアプリのデータ層を、Firestore から Postgres(Neon)+ Drizzle へ移行した経緯を整理しました。読み取り課金で詰まった原因と、集計・ファセット・全文検索というワークロードの形から見た向き不向きについて書いています。
Next.js (output: 'export') を Vercel から GitHub Pages にデプロイ先を移し、Vercel 側は vercel.json の redirects で全 URL を新ドメインに 308 転送して SEO 集約を狙った際、framework 自動検出と trailing slash 周りで複数回ハマった経緯と、最終的に動作した設定をまとめます
Next.js 16 + next-intl 構成の Web アプリで、本番ビルドのみ useRouter().push() が無音で no-op になり、検索ページの対話操作が一通り機能しなくなる事象を観測した記録。history.pushState + popstate による回避策と切り分けの過程をまとめます

S3互換ストレージ DDN EXAScaler Access S3 で、特定バケットへのアップロード専用の最小権限アクセスキーをバケットポリシーで用意した記録です。AWS とのポリシー書式の違いと、署名・権限まわりの切り分け手順をまとめました。
DH週間トピックス — 2026年5月24日週
くずし字・古文書の文字検出(YOLOv11)と NDL古典籍OCR-Lite(RTMDet+PARSeq)を Python なしで JS/Next.js(onnxruntime-node)に移植した記録。ONNX 変換、SAHI、行検出、int8 量子化の精度比較、Vercel で動かない理由、コアのライブラリ化までをまとめます。