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を直接使用せず。

技術バージョン
LanguageTypeScript5.x〜6.x
FrameworkNext.js (App Router)15.3〜16.2
ReactReact 1919.1〜19.2
StylingTailwind CSS v4 + PostCSS全PJ統一
UIRadix UI全PJ共通
DS@seehub/ds-foundationtokens.yaml SSoT

PJ別固有仕様

各サービスで異なる技術選定。共通基盤以外の差分を表示。

PJBuildHostingDBAuthAI状態管理
mirrorStatic exportCloudflare Pages-(静的エクスポート、データはYAML→ビルド時生成)---
seehubStatic exportCloudflare Workers----
miruSSRCloudflare WorkersTBD(現在sessionStorage)ClerkClaude API (Sonnet 4)-
ibukiSSRVercelTurso (@libsql/client)Clerk 7.0.6Claude API (Opus 4.6)-
ippukuSSRVercelPrisma 6.19 + Turso (libSQL)Clerk 6.37.3--
renjiSSRCloudflare Workers-Clerk 7.0.4--
legacySSRCloudflare WorkersSupabase (PostgreSQL, Tokyo ap-northeast-1)-Transparency AI (Phase 1必須), Voice Archive / Legacy Guardian / Impact Optimizer (Phase 2+オプション)React hooks
chigaiStatic exportCloudflare Workers----
gunSSRVercel----
iconiqSSRVercel----
mirror-ragPython ServerChromaDB (ベクトルDB, ローカル永続)-sentence-transformers (intfloat/multilingual-e5-base), Claude API, ChromaDB-

固有技術・ライブラリ

各PJが独自に導入している技術。

PJ固有技術
mirrorRadix UI / Zod ^4.1.13 / Vitest / Playwright
seehubResend (メール) / Jest / Playwright / OpenNext + Cloudflare Workers
ibuki@anthropic-ai/sdk ^0.80.0
ippukuYAML Data (520 questions) / @prisma/adapter-libsql / @libsql/client / Stripe (Sustain決済)
renjiopentype.js 1.3.4 (フォント解析) / html-to-image 1.11.13 / jszip 3.10.1 / Stripe 20.4.1 / OpenNext + Cloudflare Workers
legacyStripe (決済 + Webhook) / Resend (メール送信) / legacy-standard v0.2(三重構造OS — TypeScript純粋関数) / AES-256-GCM (アプリ層暗号化) / CANDOR前提検証基盤 (P1-P4)
chigaid3-force (グラフ可視化) / d3-selection / AxisRelation型 (156件×why) / DFV構造統合
gunml-kmeans (K-means++) / papaparse (CSV解析) / plotly.js (可視化)
iconiqDesign System Checks
mirror-ragPython 3.9+ / Docker (multi-stage build) / Docker Compose / Pydantic v2 / pytest

サービス別インフラ構成

各サービスが「どこで動いているか」「コード更新時に何が検査されるか」「どう公開されるか」の一覧です。

mirror

Cloudflare Pages

経営判断の IDE。戦略・品質・プロジェクト管理の統合ダッシュボード

URLmirror.seehub.org
公開方法npm run build → npx wrangler pages deploy out
自動検査秘密検出 → コード品質(lint + 型チェック + フォーマット)→ テスト → ビルド → 品質ゲート(13種)
認証方式middleware.ts(環境変数)
品質ゲート
  • Typography Weight
  • Monotone
  • Spacing Scale
  • Border Radius
  • Font Family
  • Font Size Scale
  • Shadow Tokens
  • Z-Index Stack
  • Voice Compliance

seehub

Cloudflare Workers

批評と認知主権のメディア。診断・記事・サービス統合

URLseehub.org
公開方法手動CLI: npm run deploy(push≠デプロイ)
自動検査型チェック → lint → テスト → ビルド → Cloudflare Workers デプロイ
認証方式middleware.ts(ハードコード)+ Clerk認証

miru

Cloudflare Workers

外部言説の前提を構造的に可視化する批評サービス

URLmiru.seehub.org
公開方法
自動検査
認証方式

ibuki

Vercel

対話を通じた内省支援サービス

URLibuki.seehub.org
公開方法手動デプロイ(vercel --prod)
自動検査型チェック → ビルド
認証方式middleware.ts(環境変数)+ Clerk認証

ippuku

Vercel

螺旋的自己対話サービス。問いを通じて内省を深める

URLippuku.seehub.org
公開方法1日1回(GitHub Actions → Vercel Deploy Hook)
自動検査型チェック → lint → テスト(258件)→ ビルド
認証方式middleware.ts(環境変数)+ Clerk認証

renji

Cloudflare Workers

AI駆動パラメトリック・ロゴタイプ設計サービス

URLrenji.seehub.org
公開方法手動CLI: npm run deploy(push≠デプロイ)
自動検査型チェック → lint → ビルド → Cloudflare Workers デプロイ
認証方式middleware.ts(ハードコード)+ Clerk認証

chigai

Cloudflare Workers

判断力を鍛える60軸フレームワーク

URLchigai.seehub.org
公開方法コード push → Cloudflare 自動ビルド
自動検査型チェック → lint → 品質ゲート(11種)→ ビルド
認証方式functions/_middleware.ts(ハードコード)
品質ゲート
  • Font Family
  • Font Size Scale
  • Typography Weight
  • Monotone
  • Spacing Scale

ngc

Vercel(yoko90アカウント)

コンサルティング事業の外部サイト

URLngc-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認証(社内限定)
品質ゲート
  • Font Size Scale
  • Spacing Scale
  • Line Height
  • Motion Duration
  • Border Radius

skills

ローカル(~/.claude/skills/)

Claude Code Skills環境。docx/pptx/xlsx品質基準 + 自作スキル

URLgithub.com/seediv/claude-code-skills
公開方法git push(GitHub保存)
自動検査なし(ローカル専用)
認証方式なし

コード更新から公開までの流れ

開発者がコードを更新してから、サイトに反映されるまでの手順です。

1

コードを書く

開発者がパソコンでコードを書き、変更を保存する

2

GitHub に送る

git push でコードをクラウド(GitHub)に送る

3

自動検査が始まる

GitHub Actions が自動で型チェック・lint・テスト・ビルドを実行

4

全検査を通過?

1つでも失敗 → デプロイされない(本番は壊れない)。全通過 → 次のステップへ

5

本番に公開

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([email protected]

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不可のため)
サービス認証層備考
mirrorBASIC認証CF Pages Free
ippukuBASIC + Clerk SSOVercel Pro。Clerk: 公開ページも含む全ページでSSO
ibukiBASIC + Clerk SSOVercel。SessionClaimer(匿名→認証移行)
miruBASIC + Clerk SSOCF Workers
seehubBASIC + Clerk Frontend APICF Pages。静的エクスポートのためClerk SDKではなくFrontend APIで認証検出
renjiBASIC + Clerk SSOCF Workers
chigaiBASIC認証CF Pages
legacyBASIC + Clerk SSOCF Workers
gunBASIC + Clerk SSOVercel
ngc-externalBASIC認証yoko90アカウント。Deployment Protection不可(Hobby)
ngc-internalGoogle 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 FreeMAU 10,000$0ippuku / ibuki / miru / seehub / legacy / renji / gun の7サービスでSSO共有

最終更新: 2026-04-07 — 技術仕様マトリクス+Clerk SSO全7PJ統一+BASIC認証実態反映