<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Server Engineer に関連するフィード</title>
        <link>http://izanami.dev/occupations/Server Engineer</link>
        <description>Server Engineer に関連する記事のRSSフィードです</description>
        <lastBuildDate>Tue, 14 Apr 2026 22:31:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>izanami RSS Feed</generator>
        <language>ja</language>
        <image>
            <title>Server Engineer に関連するフィード</title>
            <url>http://izanami.dev/favicon.ico</url>
            <link>http://izanami.dev/occupations/Server Engineer</link>
        </image>
        <copyright>All rights reserved 2026</copyright>
        <item>
            <title><![CDATA[オンラインビンゴ]]></title>
            <link>http://izanami.dev/post/660c543e-8050-4703-9961-bfdd24606e5f</link>
            <guid>http://izanami.dev/post/660c543e-8050-4703-9961-bfdd24606e5f</guid><dc:creator>CodeWithJoy</dc:creator>
            <pubDate>Sun, 11 Jan 2026 22:15:06 GMT</pubDate>
            <description><![CDATA[オンラインビンゴ とは

オンラインビンゴは、会社の忘年会や家族の集まりなど、みんなが集まる場で気軽にビンゴゲームを楽しめるWebアプリです。

- Web: [https://online-bing]]></description>
            <content:encoded><![CDATA[オンラインビンゴ とは

オンラインビンゴは、会社の忘年会や家族の集まりなど、みんなが集まる場で気軽にビンゴゲームを楽しめるWebアプリです。

- Web: [https://online-bingo.party](https://online-bingo.party)

主な特徴

- アカウント登録不要 - QRコードを読み取るだけで即参加
- スマートフォン最適化 - 参加者全員のスマホがビンゴカードに
- リアルタイム同期 - 番号抽選が全員の画面に即座に反映
- 自動ビンゴ判定 - ビンゴ達成を自動検出してランキング表示

こんな方におすすめ

- 忘年会・新年会でビンゴをやりたいけど、カードを用意するのが面倒
- 大人数でも簡単に参加できるビンゴがしたい
- ビンゴカードの配布や回収の手間を省きたい
- リモート参加者も一緒にビンゴを楽しみたい

主要機能

QRコードで簡単参加

ホストがゲームを作成すると、QRコードが生成されます。参加者はQRコードをスマホで読み取るだけで、すぐにゲームに参加できます。面倒なアカウント登録は一切不要です。

リアルタイム番号抽選

ホストが番号を抽選すると、参加者全員の画面にリアルタイムで反映されます。抽選された番号は自動的にビンゴカード上でマークされるので、見逃す心配がありません。

自動ビンゴ判定 & ランキング

ビンゴが成立すると自動で検出され、達成順にランキングが表示されます。1位、2位、3位...と順位が記録されるので、景品の配布もスムーズです。

リーチ通知

あと1つでビンゴになる「リーチ」状態も検出。画面上で通知されるので、盛り上がりポイントを逃しません。

使い方

ホスト（主催者）の操作

1. トップページで「ゲームを主催」をタップ
2. 表示されたQRコードを参加者に共有
3. 参加者が揃ったら「ゲーム開始」をタップ
4. 「番号を抽選」ボタンで番号を引く
5. ビンゴ達成者が出たらリザルト画面で確認

ゲスト（参加者）の操作

1. ホストが表示したQRコードをスマホで読み取る
2. 名前を入力して参加
3. ゲーム開始を待つ
4. 抽選された番号が自動でマークされる
5. ビンゴ達成で順位が確定！

技術スタック

| カテゴリ | 技術 |
|---------|------|
| フレームワーク | Next.js |
| 言語 | TypeScript |
| データベース | MongoDB Atlas |
| リアルタイム通信 | Pusher |
| デプロイ | Vercel |

よくある質問

Q: 何人まで参加できますか？

A: 1つのゲームに最大99人まで参加できます。

Q: ゲームの制限時間はありますか？

A: ゲームは作成から2時間で自動的に終了します。通常のビンゴゲームには十分な時間です。

Q: スマホ以外でも参加できますか？

A: はい、PC・タブレットからもブラウザでアクセスすれば参加できます。ただし、スマートフォンでの利用を想定してUIを設計しています。

Q: 途中でアプリを閉じても大丈夫ですか？

A: はい、大丈夫です。他のアプリを見ていても、ゲームが始まると自動でゲーム画面に移動します。参加者リストからも消えません。

Q: オフラインでも使えますか？

A: いいえ、リアルタイム通信を使用しているため、インターネット接続が必要です。

開発の背景

このアプリは、実際の会社の忘年会で「ビンゴカードを準備するのが面倒」「参加者全員にカードを配るのが大変」という課題を解決するために開発しました。

約30人規模のイベントで実際に使用し、スムーズに運営できることを確認しています。

今後の予定

- UI/UXの改善
- 景品登録機能の追加
- カスタムビンゴカード（数字以外）対応

最後に

ビンゴは老若男女問わず楽しめるシンプルなゲームですが、準備が意外と面倒です。

オンラインBINGOを使えば、QRコードを共有するだけで全員がすぐに参加でき、番号の読み上げや確認の手間も省けます。

次のイベントで、ぜひ使ってみてください！]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cloudflare Workers + Supabase 環境でのDB関連技術選定の変遷]]></title>
            <link>http://izanami.dev/post/e9696519-560a-45ad-8b03-b6109b0c8ae6</link>
            <guid>http://izanami.dev/post/e9696519-560a-45ad-8b03-b6109b0c8ae6</guid><dc:creator>aaa bbb</dc:creator>
            <pubDate>Thu, 24 Jul 2025 09:38:34 GMT</pubDate>
            <description><![CDATA[この記事の目的

Cloudflare WorkersとSupabaseを採用する際に、特にデータベース関連の技術選定（ORM、マイグレーション、スキーマ管理など）で迷った経験はありませんか？本記事で]]></description>
            <content:encoded><![CDATA[この記事の目的

Cloudflare WorkersとSupabaseを採用する際に、特にデータベース関連の技術選定（ORM、マイグレーション、スキーマ管理など）で迷った経験はありませんか？本記事では、筆者が実際に直面した課題と試行錯誤の過程を赤裸々に綴ります。
この記事が、同じような構成で開発を進める方々にとって、未来の自分からの「欲しかった情報」となることを目指します。
2025/08/11 phase7追記

-----

目次

1.  [この記事の目的](この記事の目的)
2.  [技術選定の要素と構造](技術選定の要素と構造)
3.  [固定条件](固定条件)
4.  [技術選定の変遷](技術選定の変遷)
    - [Phase 1: Supabase オールイン戦略](phase-1-supabase-オールイン戦略)
    - [Phase 2: 宣言的スキーマ管理の必要性](phase-2-宣言的スキーマ管理の必要性)
    - [Phase 3: 権限管理とマイグレーションの複雑化](phase-3-権限管理とマイグレーションの複雑化)
    - [Phase 4: トランザクション制御の限界](phase-4-トランザクション制御の限界)
    - [Phase 5: Driver とORMの選択](phase-5-driver-とormの選択)
    - [Phase 6: ツール乱立による複雑化と、理想への葛藤](phase-6-ツール乱立による複雑化と理想への葛藤)
    - [Phase 7: 開発環境のリセットフロー簡略化（現在）](phase-7-開発環境のリセットフロー簡略化現在)
5.  [今後の構想](今後の構想)
6.  [もし今から始めるなら：Neon DBで構築する理想構成](もし今から始めるならneon-dbで構築する理想構成)
7.  [まとめ: 技術選定の教訓](まとめ-技術選定の教訓)

-----

技術選定の要素と構造

技術選定の主要要素

現代のWebアプリケーション開発では、以下の要素が相互に影響し合いながら技術スタックを形成します：



本プロジェクトで検討した要素

  - Driver: データベース接続方式（TCP vs HTTP, プロトコル選択）
  - ORM: オブジェクト関係マッピング（型安全性、開発体験）
  - Migration: スキーマ変更管理（バージョニング、チーム協調）
  - Schema管理: スキーマ定義の真実の源泉（Code-first vs DB-first）
  - Seed: 初期データ・テストデータ管理
  - Transaction: トランザクション制御方式（App Layer vs DB Layer）

-----

固定条件

Cloudflare Workers

  - 理由: 第一線で活躍するエンジニアからの推薦による。エッジコンピューティングが実現するパフォーマンスと、極めて快適な開発体験に魅力を感じたため。

Supabase (PostgreSQL)

  - 理由: 当時の技術トレンドであったことに加え、MySQLからPostgreSQLへ移行したいという個人的な関心があったため。

-----

技術選定の変遷

Phase 1: Supabase オールイン戦略

初期構想: Supabase ですべてを解決



| 要素        | 選択                    | 理由                    |
| ----------- | ----------------------- | ----------------------- |
| Driver      |  | プラットフォーム統合    |
| ORM         | なし（生API）           | Supabase API で十分     |
| Migration   | Supabase CLI            | Supabaseオール・イン    |
| Schema管理  | Supabase CLI            | Supabaseオール・イン    |
| Seed        | なし                    | 初期段階では不要        |
| Transaction | なし                    | 特別な技術が必要だとは想定していなかった |

📝 振り返り・学び

単純に技術選定のための知識、特にトランザクションに関する理解が不足していた。

-----

Phase 2: 宣言的スキーマ管理の必要性

💭 当時の状況・思考

この時点では、宣言的にスキーマを管理するという手法を知らなかった。
また、ベンダーロックインを懸念し、DBを切り離して汎用的に管理したいという意図があった。

> ※ 宣言的スキーマ管理とは  
> 宣言的: コードでスキーマの「あるべき姿」を定義し、ツールが現状との差分を自動計算・適用  
> Migration管理: 変更を順次SQLファイルで記録し、履歴順に適用  
> 例: Prisma  → 自動でALTER文生成 vs 手動で  作成

> ※ ベンダーロックインとは  
> 特定のクラウドサービスに依存しすぎて、他のサービスへの移行が困難になること  
> 例: Supabaseダッシュボードでスキーマ管理 → 移行時にSupabase固有設定の再構築が必要

❌ 問題発生

ベンダーロックインとスキーマ管理

✅ 解決策・決断

Prisma でスキーマ管理



| 要素       | 変更前        | 変更後             | 理由               |
| ---------- | ------------- | ------------------ | ------------------ |
| Schema管理 | Supabase CLI | Prisma Schema | 宣言的管理、VC対応 |
| ORM        | 生API         | 検討中 | 型安全性向上       |

📝 振り返り・学び

宣言的管理という概念は以前から漠然と認識していたが、この時初めて深く調査し、その後の開発に大きな影響を与えた。この宣言的な考え方から発想して、Seedデータも決定論的に管理するアプローチを採用した。

> ※ 決定論的Seedデータ管理  
> UUIDを決定論的に生成 → 何度実行しても同一データ  
> 例:  → 常に同じUUIDが生成され、全環境で一致

-----

Phase 3: 権限管理とマイグレーションの複雑化

❌ 問題発生

Prisma では DB 権限やfunctionを宣言的に管理できない

Prismaでpushしたスキーマに対し、APIからアクセスを試みたところ、権限不足でテーブルにアクセスできない問題が発生した。Prismaのスキーマ定義はテーブル構造のみに特化しており、データベース権限（GRANT/REVOKE）やPostgreSQL関数を宣言的に管理することができない※。やむを得ず、Supabase CLIによるマイグレーションを導入するに至った。

> ※SupabaseのAPI経由でアクセスする場合、public schemaへのGRANT権限が必要だった

✅ 解決策・決断

Supabase CLI でマイグレーション導入

この時点でコマンドはかなり複雑化した。この状況を改善したいと考えつつも、当時は開発の進行を優先した。



| 要素       | Phase2         | Phase3           | 理由         |
| ---------- | -------------- | ---------------- | ------------ |
| Migration  | Prisma Migrate | Supabase CLI | 権限管理対応 |
| Schema管理 | Prisma Schema  | Prisma + SQL | ハイブリッド管理 |

📝 振り返り・学び

プロトタイプの開発を優先するあまり、この時点での技術選定を深く検討せず、力技で開発を進めてしまった。最終的にこの構成は変更することになったが、時には実装を優先すべき局面もあり、まさにここがそのタイミングだったと今では考えている。

-----

Phase 4: トランザクション制御の限界

💭 当時の状況・思考

購入関連機能の実装を進める中で、Supabaseのクライアントライブラリでは、複数のDB操作を一つのトランザクションとしてまとめられないという制約に直面しました。

SupabaseのクライアントはHTTPベースで動作するため、以下のように記述したコードはそれぞれが独立したリクエストとして実行されます。そのため、途中の処理でエラーが発生しても、それ以前の操作をロールバック（取り消し）できません。

❌ 問題発生

HTTP ベースでアプリケーション層トランザクション不可



❌ Supabase公式の推奨策とその課題

Supabaseでは、このような一連の処理を\\DB Function（ストアドプロシージャ）としてデータベース層に定義し、それをクライアントから呼び出す方法を推奨しています。この方法であれば、一連の処理の原子性（アトミック性）\\が保証されます。

> ※ アトミック性 
関連する一連の処理が「すべて成功」するか「すべて失敗（実行前の状態に戻る）」するかのどちらかであることが保証される性質。

しかし、このアプローチを試みた結果、新たな課題が浮上しました。

   複雑化するロジック管理

       複雑なビジネスロジックをSQLで記述する必要があり、可読性やメンテナンス性が低下する。
       デバッグが困難になる。

   開発プロセスの非効率化

       機能が増えるたびにDB Functionが増加し、マイグレーションファイルでのバージョン管理が非常に煩雑になる。


🔍 試行錯誤・調査

当初はSupabaseの思想に沿って開発を進めていましたが、DB Functionの管理コストが現実的ではないと判断し、他の方法を探し始めました。宣言的に管理できるツールとして「Atlas」も候補に挙がりましたが、npmパッケージではなかったため採用には至りませんでした。

振り返りと学び

今回の経験から、SupabaseのDB Functionによるトランザクション管理は、以下のようなケースでは有効な選択肢だと考えられます。

   小規模なアプリケーションで、トランザクション処理が少ない場合
   処理ロジックが単純で、変更頻度が低い場合

一方で、複雑なビジネスロジックや頻繁な仕様変更が求められるプロジェクトでは、DB Functionに依存しすぎると管理コストが膨らむ可能性があります。プロジェクトの特性に応じて、アーキテクチャを慎重に選択することの重要性を学びました。

-----

Phase 5: Driver とORMの選択

💭 当時の状況・思考

この段階に至り、初めてDriverとORMの選定に本格的に着手した。

🔍 試行錯誤・調査

検討した選択肢:

1.  Prisma Client: 学習コストがなく理想的だが、Cloudflare Workersに非対応。クエリも独特。
2.  Drizzle ORM: Workersに対応しており、型安全性も高い。クエリがSQLに近く、馴染みやすかった。

❌ Prisma Client の制約



✅ Drizzle ORM の採用



| 要素        | Phase3          | Phase4          | 理由                     |
| ----------- | --------------- | --------------- | ------------------------ |
| Driver      | Supabase Client | postgres.js | TCP直接接続、Workers対応 |
| ORM         | なし            | Drizzle | 型安全性、Workers対応    |
| Transaction | HTTP制限        | App Layer | 柔軟な制御               |

-----

Phase 6: ツール乱立による複雑化と、理想への葛藤

ツール乱立による複雑化:

  - Prisma: スキーマ定義・開発時DB管理、Seedデータ挿入
  - Supabase CLI: マイグレーション・権限管理
  - Drizzle: 本番ORM・型生成
  - postgres.js: 接続クライアント

現在の開発フロー例:（コマンドで統一済）



理想: Drizzle 統一



❌ 現実的な制約: Prisma の開発体験が良すぎる

Prismaによるスキーマ管理の体験は極めて優れている。はコード量が少なく直感的であり、AI（LLM）にコンテキストとして与える際のトークン量削減にも寄与する。開発期間中はこの利点を最大限に活用したいという思いがあった。



現在の妥協案（Phase 6時点）

| 要素       | 開発時            | 本番時          | 移行予定           |
| ---------- | ----------------- | --------------- | ------------------ |
| Schema管理 | Prisma Schema | Drizzle型生成   | Drizzle Schema |
| Migration  | Prisma Migrate    | Drizzle Kit     | Drizzle Kit |
| ORM        | -                 | Drizzle | Drizzle |
| Driver     | -                 | postgres.js | postgres.js |
| Seed       | Prisma Script | -               | Drizzle Script |

-----

Phase 7: 開発環境のリセットフロー簡略化（現在）
2025/08/11 追記

💭 当時の状況・思考

Phase 6まで到達した時点で、開発時のDBリセットコマンドが非常に複雑になっていた。特に問題だったのは、dev環境でSupabaseのauthスキーマに対する権限エラーが頻発し、回避するためにという複雑な手順を踏む必要があった点だ。

❌ 問題発生

Supabase resetによるauth権限エラー



✅ 解決策・決断

authスキーマには触らない戦略

問題の本質を分析した結果、以下のことが判明した：
- 構造変更（DDL）: Supabaseが管理するauthスキーマのテーブル構造変更は権限エラー
- データ操作（DML）: serviceroleでauth.usersのレコード操作は問題なし

この理解に基づき、を完全に削除し、Prismaとdrizzleで必要な処理のみを行うように変更した。



🔍 Drizzleの疑似マイグレーション活用

さらに重要な発見があった。当初、Drizzleへの完全移行は本番運用開始まで不可能だと考えていた。なぜなら：
- Prismaでスキーマ管理している限り、Drizzle migrationは使えない
- が存在しないため、正式なマイグレーション生成ができない

しかし、Drizzleを疑似マイグレーションツールとして活用できることに気づいた：



この方法により、実質的にDrizzleでほぼ全ての処理を管理できるようになった：
- 関数・トリガー定義: など
- 権限設定: 
- auth.usersクリア: （環境変数制御）

| 要素 | Phase6 | Phase7 | 理由 |
|------|--------|--------|------|
| リセット処理 | supabase reset + 複雑な手順 | prisma push + drizzle apply | authスキーマ回避 |
| auth.users管理 | 不明確 | 環境変数制御 | 本番安全性確保 |
| Migration役割 | Supabase CLI | Drizzle（疑似） | 実質的な統一 |
| SQL管理 | 分散（Supabase/Prisma） | Drizzle functions/に集約 | 管理の一元化 |

📝 振り返り・学び

この改善により、開発時のDBリセットが大幅に簡略化された。重要な学びは：
- 権限エラーの本質を理解することで、適切な回避策を見つけられた
- 不要な処理を削除（supabase reset）することで、処理時間も短縮
- 環境変数による制御で、開発と本番の挙動を安全に分離
- 疑似マイグレーションという発想で、完全移行前でもDrizzleに実質統一

開発中はデータを入れ直すことを前提とした割り切りと、ツールの柔軟な活用により、Phase 6で悩んでいた「ツール乱立」問題が大幅に改善された。本番運用時の正式なDrizzle migration移行への道筋も明確になった。

-----

今後の構想

本番運用に向けた移行計画

1.  Phase 8: Prisma Schema → Drizzle Schema 変換
2.  Phase 9: Drizzle Kit での完全なマイグレーション管理


-----

もし今から始めるなら：Neon DBで構築する理想構成

※これはあくまで仮定の話で実際にneonを使用していないものの想像です
理想的な技術選定プロセス

なぜNeon DBか:

Neon DBを選択する最大の理由は、現状のプロジェクトでSupabaseの多機能性を活かしきれていない点にある。Storage、Supabase CLI、Edge Functionは使用していないし、Authは利用しているものの、他のツールで十二分に代替可能であるように思う。一方、Neonが提供する無料のDBブランチ機能やサーバーレス環境での自動スケーリングは、本プロジェクトにとって非常に魅力的に見える。

段階的な理想構成:

開発期間中（本番運用まで）:



注意: 開発期間中は前提のため、Prisma push後の他ツールマイグレーション実行は問題なし。履歴管理不要で任意のツール組み合わせが可能。

本番運用開始時:



| 要素      | 開発期間中                          | 本番運用時                      | 理由                               |
| --------- | ----------------------------------- | ------------------------------- | ---------------------------------- |
| DB        | Neon DB | Neon DB | Serverless最適化、ブランチング     |
| Driver    | @neondatabase/serverless | @neondatabase/serverless | HTTP、Workers完全対応              |
| ORM       | Drizzle | Drizzle | 軽量、型安全、Workers対応          |
| Migration | Prisma Migrate | Drizzle Kit | 開発効率 → 一貫性                  |
| Schema    | Prisma Schema → introspect      | Drizzle Schema | AI開発用 → 実行用                  |
| Seed      | Prisma Script | Drizzle Script | 開発効率 → 環境一貫性              |

移行戦略の利点:

  - 開発期間: Prismaの優れた開発体験を活用
  - 本番運用: Drizzleの統一性とパフォーマンスを享受
  - 段階的移行: リスクを最小化しながら最適化

Schema管理のハイブリッド戦略:



AI適正の観点:

  - Drizzle Schema: 型安全な実行・マイグレーション用
  - Prisma Schema: 1ファイルで全体構造把握、AI開発時の参照用
  - 最高の開発体験: 実行効率 + AI可読性の両立

避けるべき選択

1.  段階的移行: 最初から最終形を目指す
2.  複数ツール混在: 開発・本番環境の分離を避ける
3.  過度な最適化: 早すぎる最適化より一貫性重視

-----

まとめ: 技術選定の教訓

重要な原則

1. 基盤システムから設計する: トランザクション制御のような基盤技術は、後から変更すると全体のアーキテクチャに大きな影響を与える。UI開発に入る前に、データ操作の基本パターンを明確にし、それに適したツール選定を行う。

2. 最低限の移行余地を残す: DB層の分離（例：Drizzle接続の抽象化）など、過度ではない最小限の設計で将来の変更に対応する。

3. 複数ツールの試行錯誤を恐れない: 様々なツールを試すことで各ツールの特性や制約を深く理解でき、最終的により適切な選択と効率的な実装につながる。

4. フェーズに応じた最適化: 開発期間中は開発効率を、本番運用時はパフォーマンスと一貫性を重視するなど、プロジェクトのフェーズに応じて優先度を調整する。

避けるべき落とし穴

- 最初から完璧を求める: 要件が変化する前提で柔軟な設計を心がける
- 単一ツール至上主義: ツールの制約に振り回されるより、要件に最適な組み合わせを選ぶ
- ツール統一の強制: 開発フェーズを無視した一貫性の追求は非効率

この変遷の記録が、Cloudflare WorkersとサーバーレスDBという同様の環境で開発を進める方々の参考となれば幸いです。]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[.jpドメインをCloudflare DNSで使用する手順]]></title>
            <link>http://izanami.dev/post/2aa15b13-7a82-42e0-b856-c8afea0cfb5a</link>
            <guid>http://izanami.dev/post/2aa15b13-7a82-42e0-b856-c8afea0cfb5a</guid><dc:creator>aaa bbb</dc:creator>
            <pubDate>Mon, 21 Jul 2025 18:42:08 GMT</pubDate>
            <description><![CDATA[対象読者

 独自ドメインを利用したい方
  ドメインを利用したい方
 お名前.comから脱出したい方

---


前提知識

手順を理解するために、まずは基本的な用語を確認しましょう。

ドメイン]]></description>
            <content:encoded><![CDATA[対象読者

 独自ドメインを利用したい方
  ドメインを利用したい方
 お名前.comから脱出したい方

---


前提知識

手順を理解するために、まずは基本的な用語を確認しましょう。

ドメインレジストラ

ドメイン自体の管理（ドメイン名と所有者の紐付け）を行うサービスです。

サービス例:
 （お名前.com）
 Cloudflare Registrar
 Xserverドメイン
 スタードメイン

DNS (Domain Name System) と DNSサービス

ドメイン名（例: ）と、サーバーの住所にあたるIPアドレス（例: ）の対応表を管理する仕組み、およびそれを提供するサービスです。

DNSサービス例:
 Cloudflare DNS
 Amazon Route 53

NS (ネームサーバー)

ドメインがどのDNSサーバーを利用しているかを示す情報です。「このドメインに関する情報は、あのDNSサーバーに聞いてください」という問い合わせ先を教えてくれます。DNSサービスに付属しています。

全体の情報の流れは以下のようになります。

 →  →  → 

---

実際の手順

ここでは例として、ドメインレジストラに「Xserverドメイン」、DNSサービスに「Cloudflare DNS」を使用した場合の手順を説明します。どのサービスを利用する場合でも基本的な流れは同じですので、ご自身の環境に合わせて設定ページを探してみてください。

1.  レジストラサービスでドメインを取得する
    まず、お好きなレジストラでドメインを取得します。
    
　　![Xserverのドメイン検索の画面](https://api.izanami.dev/storage/v1/object/public/pictures/eyecatch/8869a4d6-df4e-419b-bca4-890cfca5e06f/a7a9e872-5cec-498a-9ba9-9afdb6cff0be.png)
  
Xserverでizanamiと検索したときの画面


3.  DNSサービスでドメインを登録する
    次に、利用したいDNSサービス（今回はCloudflare DNS）に取得したドメインを追加します。cloudflareは親切なのでチュートリアル（cloudflareのDNSタブ画像内のゾーンのセットアップ～のところ）があります。
    順にやっていけば使用できるようになります。

　　![画像の説明を入れてください](https://api.izanami.dev/storage/v1/object/public/pictures/eyecatch/8869a4d6-df4e-419b-bca4-890cfca5e06f/30c7481e-0155-4456-85d3-d7df4710b28c.PNG)

cloudflareのアカウントホーム



5.  DNSサービスでネームサーバーの情報を取得する
    Cloudflare側で、そのドメインに割り当てられたネームサーバー（NS）のホスト名（例: , ）を確認します。

　　![画像の説明を入れてください](https://api.izanami.dev/storage/v1/object/public/pictures/eyecatch/8869a4d6-df4e-419b-bca4-890cfca5e06f/f83bd4c0-843f-4977-a500-dc56eff86d0a.png)

cloudflareのDNSタブ

    

7.  レジストラサービスでネームサーバーの設定をする
    最後に、ドメインを取得したレジストラ（今回はXserverドメイン）の管理画面で、対象ドメインのネームサーバー設定を、手順3で取得したものに変更します。

![画像の説明を入れてください](https://api.izanami.dev/storage/v1/object/public/pictures/eyecatch/8869a4d6-df4e-419b-bca4-890cfca5e06f/65fb4cfa-cdf2-4b8f-bb70-518b2a29c55b.png)
    
Xserverネームサーバー設定

8. 疎通確認


以下のように設定したNSが返ってこれば成功です。





この設定により、以下のような役割分担が確立されます。

 ドメイン → NS (ネームサーバー) の紐付け: レジストラサービスが管理
 NS (ネームサーバー) → DNS の紐付け: DNSサービスが管理
 DNS → IPアドレス の紐付け: DNSサービスが管理

---

補足

 ドメインは仕様上、Cloudflare Registrarで直接取得・管理することができません（2025年7月現在）。そのため、今回のようにレジストラとDNSサービスを分ける必要があります。

もし  や  など、Cloudflare Registrarが対応しているドメインを利用する場合は、レジストラもCloudflareに統一することで、複数のサービスを管理する手間を省くことができ、よりシンプルになります。

]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Prisma+Supabaseを使ってAI開発体験向上]]></title>
            <link>http://izanami.dev/post/2e6229e4-9889-4875-a530-3e639ce7ca9c</link>
            <guid>http://izanami.dev/post/2e6229e4-9889-4875-a530-3e639ce7ca9c</guid><dc:creator>aaa bbb</dc:creator>
            <pubDate>Tue, 08 Jul 2025 19:56:26 GMT</pubDate>
            <description><![CDATA[対象読者

   supabaseで小さいサービス作ろうとしている人
   dbや関連ツールの技術選定中の人
   とりあえずdbスキーマをある程度真面目に作ろうとしている人
   db全部消して～～]]></description>
            <content:encoded><![CDATA[対象読者

   supabaseで小さいサービス作ろうとしている人
   dbや関連ツールの技術選定中の人
   とりあえずdbスキーマをある程度真面目に作ろうとしている人
   db全部消して～～ってなってる人

自分でWebサービスを個人開発していて、ある程度開発者フレンドリー・AIフレンドリーだなと思った方法と、そこにいたるまでの失敗を共有します。
アプリケーション側のコードとは一切関係ありません。


これは何か

一言でいうと、DBを簡潔にスクラップ＆ビルドするための方法論です。

もう少し具体性をもたせると、「supabaseデータベースに対してPrismaでスキーマ管理をしよう。シードデータは決定論的にUUIDで投入しよう。それらをまとめてリセットするコマンドを作ろう」というものです。

自分が使用しているのでSupabaseで説明しますが、DBは何でも応用可能だと思います。

実際のディレクトリ構造としてはこんな感じになります。
モノレポ想定で自分はCloudflare Workersを使っているのでが生やしています。



上のにリセットコマンドを登録しておき、DBスキーマを変更するたびに叩きます。
次のコマンドを順番に叩くリセットコマンドを作成しておきます。（local想定）



もしスキーマにあてたいマイグレーションがない場合は、3と4は消して大丈夫です。

私の場合、APIサーバーからSupabaseに接続する都合上にpublic schemaにアクセスする権限を与えています。
これはスキーマが作成されてから実行しないといけないため、コマンドが多くなってしまいました。



この手法のメリット

別にこの手法が特別というわけじゃないことも多いですが、総合して書きます。

１. 1ファイルでスキーマを管理できる

これが一番大きいです。「ただのPrismaのええところやんけw」というツッコミは置いといてください。
AIにDBスキーマを渡すときに、1ファイルぽんと渡せばそれで済みます。

2\. コード量の削減

AIで生成するときにじわじわ効いてきます。すでに億万長者で無限にコンテキストをAIにぶち込んで開発できる方はおいときます。いうて限界はあると思いますが。

自分が作っているサービスの例だと、Drizzleで60,000文字のものがPrismaだと20,000文字ほどで管理できます。（もちろんその分、SQLのほうが詳細に色々設定可能ですが）

3\. 開発の再現性を100%にする

シードデータに決定論的なUUID（何度生成しても同じになるID）を採用することで、開発のあらゆる場面で再現性と安定性が劇的に向上します。

   バグ再現の高速化: 「ユーザーAの作品Bでバグが出た」という報告を受ければ、チームの誰もが手元の環境で100%同じデータ状態を再現できます。これにより、原因の特定から修正までの時間が大幅に短縮されます。

   テストの安定化: E2EテストやCIは、毎回まったく同じデータで実行されます。これにより、「原因不明のテスト失敗」といった不安定要素がなくなり、テストの信頼性が格段に向上します。

従来のようにテストコードにIDを直接書き込んでも、スキーマ変更のたびにIDを修正する必要がなくなる、といった副次的なメリットもあります。

4\. 維持管理コストがほぼかからない

上のディレクトリ構造を見れば分かる通り、関連ファイルがすごく少ないです。（シードデータは別）
つまり、仕様変更を全部AIに丸投げできます。

自分がやったこととしては、環境切り替えの実装やシードデータ入稿スクリプトとかです。

-----

まとめ

この手法の本質：

   スクラップビルドで高速に開発
   決定論的ID生成により、同じ入力から同じ結果を保証
   コンテキスト少でAIフレンドリー

注意点：

   本番運用では間違ってもこのコマンドを叩いてはいけない。自分はdrizzleでのmigrationを追加する予定 ※1
   学習コストはそれなりにある（Supabase, Prisma前提）

※1 なぜこの技術スタックにしたのかは記事の主題とずれるので、別でまとめる予定です。

同じような困りごとで悩んでいる人の参考になれば嬉しいです。質問があればいつでもどうぞ。
]]></content:encoded>
        </item>
    </channel>
</rss>