新しいサービスを作る
テンプレートとバインディングを選ぶだけで、サービスのひな形一式を生成します。
生成されるのは 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"
}
}次の手順
- 上記 5ファイルを
hime-.../に作成 cd hime-... && npm installnpx wrangler d1 create hime-...-dbで DB 作成npm run devで動作確認- DNS 設定後
npm run deploy:cf