HIME-X LabDeveloper Portal

新しいサービスを作る

テンプレートとバインディングを選ぶだけで、サービスのひな形一式を生成します。

生成されるのは service.json + wrangler.jsonc + package.json + D1 マイグレーション雛形 + ヘルスチェック route@hime/service-core 前提なので、差分のみ書けばよい状態でスタートできます。

1. テンプレート

2. 基本情報

3. バインディング

4. 認証

5. 依存サービス

📁 生成されるファイル (10)

  • hime-.../service.json
  • hime-.../wrangler.jsonc
  • hime-.../package.json
  • hime-.../tsconfig.json
  • hime-.../next.config.ts
  • hime-.../open-next.config.ts
  • hime-.../src/app/layout.tsx
  • hime-.../src/app/page.tsx
  • hime-.../src/app/api/health/route.ts
  • hime-.../d1/migrations/0001_init.sql

service.json

{
  "name": "hime-...",
  "display_name": "hime-...",
  "description": "(説明を書いてください)",
  "domain": "(subdomain).himesystems.com",
  "category": "utility",
  "status": "development",
  "az_slot": null,
  "pillar": 5,
  "owner": "さくら",
  "bindings": {
    "d1": [
      {
        "binding": "DB",
        "database_name": "hime-...-db",
        "migrations_dir": "d1/migrations"
      }
    ],
    "r2": [
      {
        "binding": "NEXT_INC_CACHE_R2_BUCKET",
        "bucket_name": "hime-...-cache"
      }
    ],
    "assets": true
  },
  "auth": {
    "pattern": "session-cookie",
    "provider_url": "https://account.himesystems.com"
  },
  "dependencies": [
    {
      "service": "hime-account",
      "apis": [
        "GET /api/auth/session"
      ],
      "importance": "critical"
    }
  ],
  "packages": [
    "@hime/service-core"
  ]
}

wrangler.jsonc

{
  "name": "hime-...",
  "main": ".open-next/worker.js",
  "compatibility_date": "2025-04-01",
  "compatibility_flags": ["nodejs_compat"],
  "assets": { "directory": ".open-next/assets", "binding": "ASSETS" },
  "d1_databases": [{ "binding": "DB", "database_name": "hime-...-db", "database_id": "CREATE_WITH_WRANGLER", "migrations_dir": "d1/migrations" }],
  "r2_buckets": [{ "binding": "NEXT_INC_CACHE_R2_BUCKET", "bucket_name": "hime-...-cache" }],
  "routes": [{ "pattern": "(subdomain).himesystems.com", "custom_domain": true }]
}

d1/migrations/0001_init.sql

-- hime-... — 初期スキーマ
-- Generated by HIME-X Lab

CREATE TABLE IF NOT EXISTS hime_..._items (
  id TEXT PRIMARY KEY,
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

src/app/api/health/route.ts

import { NextResponse } from "next/server";

export async function GET() {
  return NextResponse.json({ status: "ok", service: "hime-...", timestamp: new Date().toISOString() });
}

package.json

{
  "name": "hime-...",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "build:cf": "npx @opennextjs/cloudflare build",
    "deploy:cf": "npx wrangler deploy"
  },
  "dependencies": {
    "next": "^16.2.1",
    "react": "^19.2.4",
    "react-dom": "^19.2.4"
  },
  "devDependencies": {
    "@opennextjs/cloudflare": "^1.18.0",
    "@types/react": "^19",
    "typescript": "^5",
    "wrangler": "^4.72.0"
  }
}

次の手順

  1. 上記 5ファイルを hime-.../ に作成
  2. cd hime-... && npm install
  3. npx wrangler d1 create hime-...-db で DB 作成
  4. npm run dev で動作確認
  5. DNS 設定後 npm run deploy:cf