Cosoado Lab Blog
個人開発
-
子どもに
AIを 使わせる 前に、 家庭で 決める 6つのこと — 小学生・ 中学生向け 「子供に
AI、 使わせていいの?」に 正解は ありませんが、 先に 決めておくとラクな 項目は あります。 何歳から、 宿題は どこまで、 会話は どこまで 見るか。 小学生・ 中学生向けの 6つを 5 分で。 子ども 向けAI チャットアプリ Novus AI を 作った 立場から 書きました。 -
謎かけの
作り方 完全 ガイド — AIと「整いました!」を 1 分で 作る 練習法 「○○とかけまして〜と
解きます。 その 心は…」の 作り方を、 3 要素分解 + うまい 謎かけの 3 条件 + 5 つの 例題 + 自分で 作る 5 ステップで 解説。 最後に 謎かけメーカー(AI なぞかけアプリ)と 毎日 1 分で 語彙力を 磨く 実践 フローまで。 -
Tokyo Omakase Guide for First-Timers: Etiquette, Cost, Reservations & What to Expect
A first-timer's walk-through of omakase sushi in Tokyo — how much it costs (¥3,000 – ¥30,000+), how to book 1–4 weeks ahead, the 7 counter etiquette rules that matter, the 10 most common neta names, five Japanese phrases, and five rookie mistakes to skip. Companion guide to the Omakase Master app.
-
「LP に
書いた 機能、 実装してありますか?」 — ピアコネクト LP を 全面 リライトした 話 未実装機能を
訴求していた LP を 撤去し、 利用規約・ プライバシー ポリシーとの 食い違いも 整え、 医療系の sensitivity に 合わせて「お便りのような 和風」 デザインへ 作り直した 記録。 景表法・ 薬機法の 優良誤認の ラインの 引き方と、 和紙 トーン + 落款 SVG で 実装した 経緯を 6 分で 振り返ります。 -
Supabase CLI の db push で
マイグレーションを 本番に 安全に 流す運用 パターン Supabase CLI の
db pushでマイグレーションを 安全に 本番適用する 運用 フロー。 db pullで既存 スキーマ 取り込み、 migration newで差分管理、 --dry-runで事前確認、 --include-allの落とし穴回避まで、 supabase_migrations.schema_migrationsを中心に 置く 設計を 実装と 一緒に まとめる。 同時掲載: Qiita
-
Supabase pooler URL を migration/runtime で
正しく 使い分ける 方法 migration には
DIRECT_URL(port 5432)、runtime には DATABASE_URL(port 6543 Transaction mode) を使い分ける。 Drizzle は prepare: false必須。2025 年 2 月以降 Session mode は 廃止。 Prisma v6 / v7 / Drizzle 各 ORM の 設定実例。 同時掲載: Zenn
-
Supabase RLS の UPDATE ポリシーで USING を
省くと他人 データを 乗っ取れる UPDATE ポリシーで
WITH CHECKだけ書いて USINGを省くと、 攻撃者が 任意の 行を 自分の 所有に 転換できてしまう。 USING(触れる行) と WITH CHECK(書ける行) の 違いを 整理し、 コマンド 別正解 パターンと pg_policiesでの棚卸し SQL までを 示す。 同時掲載: Zenn
-
Next.js App Router: fetch に no-store を
設定しないと静かに 古いデータが 出る 理由 Next.js 14 以前の App Router で
fetchをcache指定なしで使うと、 ビルド 時の キャッシュが 永続して 新しい データが 返らない。 no-store/no-cache/force-cacheの違いと、 データ 性質別の 正解、 Next.js 15 での デフォルト 変更までを 実装と 一緒に まとめる。 同時掲載: Qiita
-
Supabase RLS で auth.uid() を
毎行呼び出さないための 1 行の 書き換え Supabase の Row Level Security は、
書き方を 間違えると 行数に 比例して 遅くなる。 (select auth.uid())で包むだけで 公式 ベンチで 179ms → 9ms (94.97% 改善)。 to authenticatedとpg_policiesでの棚卸しまでの 1 行修正 レシピ。 同時掲載: Zenn
-
Vercel で 1 リポジトリを 4 プロジェクトに
紐付け、 env var だけで 別 アプリ 化する 実例 Next.js 1 リポジトリから 4 つの
アプリ (格闘技・ お笑い・ ボドゲ + staging) を Vercel で 並列稼働。 NEXT_PUBLIC_GENRE1 つで分岐する 具体的な 構成と、 Hobby プランの concurrent build / build cache 非共有 / preview deploy 連鎖など 4 つの 落とし穴を 実例で 解説。 同時掲載: Qiita
-
4 本目の
マッチング アプリ — 釣り仲間 マッチング「TsuriMate」 ロンチで 学んだ 5 つの 地雷 3 本目を
作ったときは「これで テンプレ 化は 完成」と 思っていた。 4 本目の 釣り仲間 マッチング TsuriMate を 立ち上げて、 まだ見えていない 穴が 5 つあったことに 気づいた 話。 船割りマッチングという釣り固有の ウェッジと、 genre-split スキーマや CHECK サブクエリ 禁止などの 地雷を 開示する。 -
3 つの
マッチング アプリを 1 つの コードから 作った 話 — 格闘技・ お笑い・ ボドゲを 同時運用してわかったこと Next.js + Supabase の
単一 コードベースから SparMate・ NetaPair・ BoardLink の 3 アプリを 並列 デプロイ。 同時運用で 初めて 見えた "距離の 意味の 違い" や "年齢 フィルターの 誤解" など、 5 つの 現場知を 率直に 記録。 同時掲載: Zenn / Qiita