Infrastructure
全サービスのインフラ構成・品質管理の仕組み
このページでは、私たちが運営する全サービスがどのように構築・検査・公開されているかを説明します。 技術的な知識がなくても「何が守られているか」が分かるように書いています。
5つの設計原則
全サービスに共通する、インフラの設計方針です。
壊れたコードは本番に出ない
全サービスに CI(自動検査)を設定。型チェック・lint・テスト・ビルドのどれか1つでも失敗すると、デプロイ(本番公開)が止まる。
ローカル環境に依存しない
以前は開発者のパソコンでビルドして手動でデプロイしていた。パソコンの設定ミスがそのまま本番に出る危険があった。今はクラウド上でビルドするため、誰のパソコンでも同じ結果になる。
秘密情報はコードに書かない
APIキーやパスワードはコードに直接書かず、GitHub Secrets や Cloudflare Secrets に保管。コードが公開されても秘密情報は漏れない。
push ≠ デプロイ
git push はコードの保全のみ。本番反映は意図的なアクション(手動CLI or GitHub Actions dispatch)で行う。日次自動デプロイは使わない。
各サービスが独立して動く
以前は ippuku のデプロイが mirror に依存していた。今は各サービスが独自のデプロイ設定を持ち、他のサービスの影響を受けない。
技術仕様マトリクス
全サービスの技術スタックを一覧化。データは projects.yaml(SSoT)から自動生成。
共通基盤(全PJ統一)
全サービスで統一されている技術レイヤー。例外: mirror-rag(Python/FastAPI)、一部PJはRadix UIを直接使用せず。
| 層 | 技術 | バージョン |
|---|---|---|
| Language | TypeScript | 5.x〜6.x |
| Framework | Next.js (App Router) | 15.3〜16.2 |
| React | React 19 | 19.1〜19.2 |
| Styling | Tailwind CSS v4 + PostCSS | 全PJ統一 |
| UI | Radix UI | 全PJ共通 |
| DS | @seehub/ds-foundation | tokens.yaml SSoT |
PJ別固有仕様
各サービスで異なる技術選定。共通基盤以外の差分を表示。
| PJ | Build | Hosting | DB | Auth | AI | 状態管理 |
|---|---|---|---|---|---|---|
| mirror | Static export | Cloudflare Pages | -(静的エクスポート、データはYAML→ビルド時生成) | - | - | - |
| seehub | Static export | Cloudflare Workers | - | - | - | - |
| miru | SSR | Cloudflare Workers | TBD(現在sessionStorage) | Clerk | Claude API (Sonnet 4) | - |
| ibuki | SSR | Vercel | Turso (@libsql/client) | Clerk 7.0.6 | Claude API (Opus 4.6) | - |
| ippuku | SSR | Vercel | Prisma 6.19 + Turso (libSQL) | Clerk 6.37.3 | - | - |
| renji | SSR | Cloudflare Workers | - | Clerk 7.0.4 | - | - |
| legacy | SSR | Cloudflare Workers | Supabase (PostgreSQL, Tokyo ap-northeast-1) | - | Transparency AI (Phase 1必須), Voice Archive / Legacy Guardian / Impact Optimizer (Phase 2+オプション) | React hooks |
| chigai | Static export | Cloudflare Workers | - | - | - | - |
| gun | SSR | Vercel | - | - | - | - |
| iconiq | SSR | Vercel | - | - | - | - |
| mirror-rag | Python Server | — | ChromaDB (ベクトルDB, ローカル永続) | - | sentence-transformers (intfloat/multilingual-e5-base), Claude API, ChromaDB | - |
固有技術・ライブラリ
各PJが独自に導入している技術。
| PJ | 固有技術 |
|---|---|
| mirror | Radix UI / Zod ^4.1.13 / Vitest / Playwright |
| seehub | Resend (メール) / Jest / Playwright / OpenNext + Cloudflare Workers |
| ibuki | @anthropic-ai/sdk ^0.80.0 |
| ippuku | YAML Data (520 questions) / @prisma/adapter-libsql / @libsql/client / Stripe (Sustain決済) |
| renji | opentype.js 1.3.4 (フォント解析) / html-to-image 1.11.13 / jszip 3.10.1 / Stripe 20.4.1 / OpenNext + Cloudflare Workers |
| legacy | Stripe (決済 + Webhook) / Resend (メール送信) / legacy-standard v0.2(三重構造OS — TypeScript純粋関数) / AES-256-GCM (アプリ層暗号化) / CANDOR前提検証基盤 (P1-P4) |
| chigai | d3-force (グラフ可視化) / d3-selection / AxisRelation型 (156件×why) / DFV構造統合 |
| gun | ml-kmeans (K-means++) / papaparse (CSV解析) / plotly.js (可視化) |
| iconiq | Design System Checks |
| mirror-rag | Python 3.9+ / Docker (multi-stage build) / Docker Compose / Pydantic v2 / pytest |
サービス別インフラ構成
各サービスが「どこで動いているか」「コード更新時に何が検査されるか」「どう公開されるか」の一覧です。
mirror
Cloudflare Pages経営判断の IDE。戦略・品質・プロジェクト管理の統合ダッシュボード
| URL | mirror.seehub.org |
| 公開方法 | npm run build → npx wrangler pages deploy out |
| 自動検査 | 秘密検出 → コード品質(lint + 型チェック + フォーマット)→ テスト → ビルド → 品質ゲート(13種) |
| 認証方式 | middleware.ts(環境変数) |
| 品質ゲート |
|
seehub
Cloudflare Workers批評と認知主権のメディア。診断・記事・サービス統合
| URL | seehub.org |
| 公開方法 | 手動CLI: npm run deploy(push≠デプロイ) |
| 自動検査 | 型チェック → lint → テスト → ビルド → Cloudflare Workers デプロイ |
| 認証方式 | middleware.ts(ハードコード)+ Clerk認証 |
miru
Cloudflare Workers外部言説の前提を構造的に可視化する批評サービス
| URL | miru.seehub.org |
| 公開方法 | |
| 自動検査 | |
| 認証方式 |
ibuki
Vercel対話を通じた内省支援サービス
| URL | ibuki.seehub.org |
| 公開方法 | 手動デプロイ(vercel --prod) |
| 自動検査 | 型チェック → ビルド |
| 認証方式 | middleware.ts(環境変数)+ Clerk認証 |
ippuku
Vercel螺旋的自己対話サービス。問いを通じて内省を深める
| URL | ippuku.seehub.org |
| 公開方法 | 1日1回(GitHub Actions → Vercel Deploy Hook) |
| 自動検査 | 型チェック → lint → テスト(258件)→ ビルド |
| 認証方式 | middleware.ts(環境変数)+ Clerk認証 |
renji
Cloudflare WorkersAI駆動パラメトリック・ロゴタイプ設計サービス
| URL | renji.seehub.org |
| 公開方法 | 手動CLI: npm run deploy(push≠デプロイ) |
| 自動検査 | 型チェック → lint → ビルド → Cloudflare Workers デプロイ |
| 認証方式 | middleware.ts(ハードコード)+ Clerk認証 |
chigai
Cloudflare Workers判断力を鍛える60軸フレームワーク
| URL | chigai.seehub.org |
| 公開方法 | コード push → Cloudflare 自動ビルド |
| 自動検査 | 型チェック → lint → 品質ゲート(11種)→ ビルド |
| 認証方式 | functions/_middleware.ts(ハードコード) |
| 品質ゲート |
|
ngc
Vercel(yoko90アカウント)コンサルティング事業の外部サイト
| URL | ngc-external.vercel.app |
| 公開方法 | コード push → Vercel 自動ビルド |
| 自動検査 | 型チェック → lint → ビルド(pnpm / Turborepo) |
| 認証方式 | middleware.ts(Vercel env駆動) |
ngc-internal
Google Apps Script組織の学習・知識基盤。36ページの社内ポータル
| URL | |
| 公開方法 | clasp push → clasp deploy |
| 自動検査 | check-ds.sh(13ゲート)→ deploy.sh(10ステップ自動検証) |
| 認証方式 | Google Workspace認証(社内限定) |
| 品質ゲート |
|
skills
ローカル(~/.claude/skills/)Claude Code Skills環境。docx/pptx/xlsx品質基準 + 自作スキル
| URL | github.com/seediv/claude-code-skills |
| 公開方法 | git push(GitHub保存) |
| 自動検査 | なし(ローカル専用) |
| 認証方式 | なし |
コード更新から公開までの流れ
開発者がコードを更新してから、サイトに反映されるまでの手順です。
コードを書く
開発者がパソコンでコードを書き、変更を保存する
GitHub に送る
git push でコードをクラウド(GitHub)に送る
自動検査が始まる
GitHub Actions が自動で型チェック・lint・テスト・ビルドを実行
全検査を通過?
1つでも失敗 → デプロイされない(本番は壊れない)。全通過 → 次のステップへ
本番に公開
Vercel または Cloudflare にデプロイされ、数秒でサイトに反映
認証・アクセス管理
全サービスの認証体系。BASIC認証(開発保護)+ Clerk SSO(ユーザー認証)の2層構造。
Clerk SSO(統一ID基盤)
seehub.org配下の7サービスでアカウントを共有。1回ログインすれば全サービスに自動ログイン。
| 認証ドメイン | clerk.seehub.org(Clerk Production custom domain) |
| アカウント管理 | accounts.seehub.org(ユーザー自身でプロフィール・パスワード管理) |
| ログイン方法 | Google OAuth / メール認証コード |
| SSO対象 | ippuku / ibuki / miru / seehub / legacy / renji / gun(全7サービス。除外: mirror・chigai) |
| 仕組み | Clerk Allowed Subdomains。Cookie を .seehub.org で共有しクロスドメインセッション実現 |
| プラン | Free(MAU 10,000まで無料) |
| 管理画面 | dashboard.clerk.com(admin@seehub.org) |
BASIC認証(開発保護)
全サービスにBASIC認証を適用。認証なしではHTML・robots.txt・favicon等いかなるリソースも取得不可。
全PJ統一: DSヘルパーパターン
全9サービスで同一の認証ロジックを使用。env変数(BASIC_AUTH_USER / BASIC_AUTH_PASSWORD)+タイミングセーフXOR比較。SSoT: ds-foundation/templates/basic-auth.ts。
- Next.js middleware(7PJ): lib/ds/basic-auth.ts を import
- CF Pages Functions(seehub・chigai): 同一コードをinline(relative import不可のため)
| サービス | 認証層 | 備考 |
|---|---|---|
| mirror | BASIC認証 | CF Pages Free |
| ippuku | BASIC + Clerk SSO | Vercel Pro。Clerk: 公開ページも含む全ページでSSO |
| ibuki | BASIC + Clerk SSO | Vercel。SessionClaimer(匿名→認証移行) |
| miru | BASIC + Clerk SSO | CF Workers |
| seehub | BASIC + Clerk Frontend API | CF Pages。静的エクスポートのためClerk SDKではなくFrontend APIで認証検出 |
| renji | BASIC + Clerk SSO | CF Workers |
| chigai | BASIC認証 | CF Pages |
| legacy | BASIC + Clerk SSO | CF Workers |
| gun | BASIC + Clerk SSO | Vercel |
| ngc-external | BASIC認証 | yoko90アカウント。Deployment Protection不可(Hobby) |
| ngc-internal | Google Workspace認証 | GAS配信。Googleアカウントで自動保護 |
認証の設計原則
- 全BASIC認証はタイミングセーフ比較(XOR byte-level)で実装。タイミング攻撃を防止
- Clerk SSO対象の7サービスは、1つでログインすれば他にも自動ログイン(Cookie共有)
- seehub.orgは静的エクスポートのためClerk SDKを使わず、Clerk Frontend APIで直接セッション検出
- ブログ記事はRegistrationGate(登録壁)で一部コンテンツをゲーティング。30日キャッシュ + 5分鮮度チェック
- BASIC認証のID/パスワードは全サービス共通(DSヘルパー、env変数管理)
運用コスト
インフラの月額コストです。無料枠を最大限活用し、最小コストで運用しています。
| サービス | 無料枠 | 月額上限 | 備考 |
|---|---|---|---|
| Vercel Pro | — | $20/月 | ippuku / ibuki / gun の3サービス。手動デプロイ(GitHub Actions dispatch) |
| Cloudflare Workers Paid | — | $5/月 | mirror / seehub / miru / renji / legacy / chigai の6サービス。手動デプロイ(npm run deploy) |
| GitHub Free | 月2,000分 | $0(上限$10設定) | Actions 2,000分/月の無料枠内で運用 |
| Clerk Free | MAU 10,000 | $0 | ippuku / ibuki / miru / seehub / legacy / renji / gun の7サービスでSSO共有 |
最終更新: 2026-04-07 — 技術仕様マトリクス+Clerk SSO全7PJ統一+BASIC認証実態反映