swallowkit 1.0.0-beta.34 → 1.0.0-beta.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +84 -284
- package/README.md +85 -338
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +136 -32
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +4 -1
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/project/manifest.js +1 -1
- package/dist/core/project/manifest.js.map +1 -1
- package/dist/core/scaffold/functions-generator.js +1 -1
- package/dist/core/scaffold/functions-generator.js.map +1 -1
- package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -1
- package/dist/core/scaffold/native-schema-generator.js +22 -3
- package/dist/core/scaffold/native-schema-generator.js.map +1 -1
- package/dist/machine/index.js +1 -1
- package/dist/machine/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +3 -3
- package/src/__tests__/functions-generator.test.ts +1 -1
- package/src/__tests__/init.test.ts +21 -0
- package/src/__tests__/machine.test.ts +105 -0
- package/src/__tests__/scaffold.test.ts +94 -0
- package/src/cli/commands/init.ts +150 -39
- package/src/cli/commands/scaffold.ts +5 -1
- package/src/cli/index.ts +1 -1
- package/src/core/project/manifest.ts +1 -1
- package/src/core/scaffold/functions-generator.ts +1 -1
- package/src/core/scaffold/native-schema-generator.ts +27 -3
- package/src/machine/index.ts +1 -1
package/README.ja.md
CHANGED
|
@@ -7,110 +7,106 @@
|
|
|
7
7
|
|
|
8
8
|
[English](./README.md) | 日本語
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Next.js と Azure のための、スキーマ駆動アプリケーション開発ツールキットです。
|
|
11
11
|
|
|
12
|
-
SwallowKit
|
|
12
|
+
SwallowKit は、共有された Zod スキーマを中心にして、保守しやすいフルスタックアプリケーションを Azure 上に構築するための scaffolding ツールです。1 つのスキーマ定義から、フロントエンドフォーム、BFF ルート、Azure Functions バックエンド、OpenAPI、インフラ定義、AI エージェント向けのプロジェクトメタデータなどを生成できます。
|
|
13
13
|
|
|
14
|
-
Next.js
|
|
14
|
+
フロントエンド、バックエンド、データベース、バリデーション、API 契約、デプロイ構成がばらばらになりがちな Next.js + Azure アプリケーション開発を、明示的な構成で整理することを目的としています。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
## 🎯 なぜ SwallowKit か
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
AI はアプリケーションコードをすばやく生成できます。フレームワークは複雑さをうまく隠してくれます。しかし、本番で運用するアプリケーションには、依然として明示的なアーキテクチャが必要です。
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
一般的なフルスタックアプリケーションでは、同じドメインモデルが多くの場所に重複して現れます。
|
|
21
21
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- **🤖 AI フレンドリー** - 自動生成される指示ファイル(`AGENTS.md`、`CLAUDE.md`、`.github/copilot-instructions.md`)とレイヤー別ルールにより、GitHub Copilot・Claude Code・OpenAI Codex がプロジェクト規約に従ってコードを生成
|
|
31
|
-
- **🧠 MCP + Machine Interface** - `swallowkit machine ...` で inspection / validation / generation を決定的な JSON として公開し、`swallowkit-mcp` で同じ機能を MCP stdio として提供
|
|
32
|
-
- **🔌 外部データコネクタ** - MySQL・PostgreSQL・REST API などの外部データソースを Cosmos DB と並行して統合。同じ Zod 駆動の scaffold ワークフローで完全な型安全性を維持
|
|
33
|
-
- **🔐 認証・認可** - カスタム JWT 認証(外部 RDB ユーザーストア)とモデル単位のロールベースアクセス制御を組み込みサポート。将来の Static Web Apps 認証統合も計画中
|
|
34
|
-
- **🧪 再利用可能な Dev Seed** - Cosmos DB Emulator の実データをそのまま seed 化し、デモ・再現確認・オンボーディング・ローカル検証に再利用可能
|
|
35
|
-
- **🧩 [VS Code 拡張機能](https://marketplace.visualstudio.com/items?itemName=himanago.swallowkit-vscode)** - init/scaffold/dev の GUI ウィザード、モデルファイル右クリックでスキャフォールド、開発サーバーステータスバー、TypeScript スニペット
|
|
22
|
+
- フロントエンドのフォーム型
|
|
23
|
+
- クライアント側バリデーション
|
|
24
|
+
- BFF のリクエスト・レスポンス型
|
|
25
|
+
- バックエンド DTO
|
|
26
|
+
- API 契約
|
|
27
|
+
- データベースエンティティ
|
|
28
|
+
- シードデータ
|
|
29
|
+
- インフラ・デプロイ構成
|
|
36
30
|
|
|
31
|
+
アプリケーションが大きくなるほど、これらの定義は少しずつずれていきます。SwallowKit は、スキーマを明示的な中心に置き、その周辺に必要なアプリケーション構造を生成することで、このずれを減らします。
|
|
37
32
|
|
|
38
|
-
|
|
33
|
+
**SwallowKit は、すべてを隠蔽するフルスタックフレームワークではありません。生成されたコードを読み、編集し、必要なら置き換えられることを重視した scaffolding ツールです。**
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
## ✨ 主な機能
|
|
41
36
|
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
- **
|
|
37
|
+
- **Zod スキーマを中心にした型定義** とバリデーション共有
|
|
38
|
+
- **Next.js、BFF ルート、Azure Functions、UI コンポーネントの CRUD scaffolding**
|
|
39
|
+
- **Bicep による Azure 向けインフラ定義**
|
|
40
|
+
- **複数言語の Azure Functions バックエンド対応**(TypeScript、C#、Python)
|
|
41
|
+
- **ローカル開発支援** とシードデータ
|
|
42
|
+
- **AI / MCP 向けのプロジェクトメタデータ** とコマンド
|
|
43
|
+
- **VS Code 拡張機能**
|
|
48
44
|
|
|
49
|
-
##
|
|
45
|
+
## 🏗️ 想定アーキテクチャ
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
SwallowKit は、次のような構成のアプリケーションを主な対象にしています。
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
- Next.js
|
|
50
|
+
- Azure Static Web Apps
|
|
51
|
+
- Azure Functions
|
|
52
|
+
- Azure Cosmos DB
|
|
53
|
+
- Azure Bicep
|
|
54
|
+
- GitHub Actions または Azure Pipelines
|
|
59
55
|
|
|
60
|
-
|
|
56
|
+
標準構成では、BFF パターンを採用します。
|
|
61
57
|
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
```
|
|
59
|
+
ブラウザー
|
|
60
|
+
|
|
|
61
|
+
Next.js フロントエンド
|
|
62
|
+
|
|
|
63
|
+
Next.js BFF ルート
|
|
64
|
+
|
|
|
65
|
+
Azure Functions API
|
|
66
|
+
|
|
|
67
|
+
Azure Cosmos DB
|
|
65
68
|
```
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|------|-----|------|
|
|
69
|
-
| `--cicd <provider>` | `github`, `azure`, `skip` | CI/CD プロバイダー |
|
|
70
|
-
| `--backend-language <language>` | `typescript`, `csharp`, `python` | Azure Functions のバックエンド言語 |
|
|
71
|
-
| `--cosmos-db-mode <mode>` | `freetier`, `serverless` | Cosmos DB 課金モード |
|
|
72
|
-
| `--vnet <option>` | `outbound`, `none` | ネットワークセキュリティ |
|
|
73
|
-
|
|
74
|
-
フラグを省略すると、その項目は対話プロンプトで質問されます。
|
|
70
|
+
BFF レイヤーを置くことで、フロントエンドをシンプルに保ちながら、バックエンドサービス、認証・認可、クラウドリソースとの接続を整理しやすくします。
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
> **注意**: このプロジェクトは活発に開発中です。将来のバージョンでAPIが変更される可能性があります。
|
|
77
73
|
|
|
78
|
-
|
|
74
|
+
## 📚 ドキュメント
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
npx swallowkit create-model category todo
|
|
82
|
-
# or
|
|
83
|
-
pnpm dlx swallowkit create-model category todo
|
|
84
|
-
```
|
|
76
|
+
詳しい使い方はドキュメントサイトを参照してください([English](https://himanago.github.io/swallowkit/en/) もあります)。
|
|
85
77
|
|
|
86
|
-
|
|
78
|
+
- **[はじめる](https://himanago.github.io/swallowkit/ja/getting-started)** - 最初のプロジェクトセットアップ
|
|
79
|
+
- **[基本概念](https://himanago.github.io/swallowkit/ja/concepts)** - スキーマ中心のアーキテクチャ
|
|
80
|
+
- **[Scaffold ガイド](https://himanago.github.io/swallowkit/ja/scaffold-guide)** - CRUD コード生成
|
|
81
|
+
- **[ローカル開発](https://himanago.github.io/swallowkit/ja/dev-guide)** - Dev サーバー、seeds、モックコネクタ
|
|
82
|
+
- **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** - Azure へのデプロイ
|
|
83
|
+
- **[AI / MCP ガイド](https://himanago.github.io/swallowkit/ja/ai-mcp-guide)** - AI エージェント統合
|
|
84
|
+
- **[認証](https://himanago.github.io/swallowkit/ja/auth-guide)** - 認証と認可
|
|
85
|
+
- **[コネクタ](https://himanago.github.io/swallowkit/ja/connector-guide)** - 外部データソース統合
|
|
87
86
|
|
|
88
|
-
|
|
89
|
-
// shared/models/category.ts
|
|
90
|
-
import { z } from 'zod';
|
|
87
|
+
## 🚀 クイックスタート
|
|
91
88
|
|
|
92
|
-
|
|
93
|
-
id: z.string(),
|
|
94
|
-
name: z.string().min(1).max(50),
|
|
95
|
-
createdAt: z.string().optional(),
|
|
96
|
-
updatedAt: z.string().optional(),
|
|
97
|
-
});
|
|
89
|
+
新しいプロジェクトを作成します。
|
|
98
90
|
|
|
99
|
-
|
|
91
|
+
```bash
|
|
92
|
+
npx swallowkit init my-app
|
|
93
|
+
cd my-app
|
|
100
94
|
```
|
|
101
95
|
|
|
102
|
-
|
|
96
|
+
モデルを作成し、スキーマを編集します。
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx swallowkit create-model todo
|
|
100
|
+
```
|
|
103
101
|
|
|
104
102
|
```typescript
|
|
105
103
|
// shared/models/todo.ts
|
|
106
104
|
import { z } from 'zod';
|
|
107
|
-
import { category } from './category';
|
|
108
105
|
|
|
109
106
|
export const todo = z.object({
|
|
110
107
|
id: z.string(),
|
|
111
108
|
text: z.string().min(1).max(200),
|
|
112
109
|
completed: z.boolean().default(false),
|
|
113
|
-
category: category.optional(), // ネストオブジェクト(categoryId ではない)
|
|
114
110
|
createdAt: z.string().optional(),
|
|
115
111
|
updatedAt: z.string().optional(),
|
|
116
112
|
});
|
|
@@ -118,236 +114,40 @@ export const todo = z.object({
|
|
|
118
114
|
export type Todo = z.infer<typeof todo>;
|
|
119
115
|
```
|
|
120
116
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### 3. CRUD コード生成
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
npx swallowkit scaffold shared/models/todo.ts
|
|
127
|
-
# or
|
|
128
|
-
pnpm dlx swallowkit scaffold shared/models/todo.ts
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
これで以下が自動生成されます:
|
|
132
|
-
- ✅ Azure Functions (CRUD エンドポイント + Cosmos DB バインディング)
|
|
133
|
-
- ✅ Next.js BFF API Routes (自動検証・リソース名推論)
|
|
134
|
-
- ✅ React コンポーネント (型安全なフォーム)
|
|
135
|
-
|
|
136
|
-
`init` で `csharp` または `python` を選んだ場合、`swallowkit scaffold` はあわせて `functions/openapi/` に OpenAPI ドキュメントを出力し、`functions/generated/` にネイティブ生成された各言語向けスキーマ資産を生成します。
|
|
137
|
-
|
|
138
|
-
### 4. 開発サーバー起動
|
|
117
|
+
CRUD コードを生成し、開発サーバーを起動します。
|
|
139
118
|
|
|
140
119
|
```bash
|
|
120
|
+
npx swallowkit scaffold todo
|
|
141
121
|
npx swallowkit dev
|
|
142
|
-
# or
|
|
143
|
-
pnpm dlx swallowkit dev
|
|
144
122
|
```
|
|
145
123
|
|
|
146
|
-
|
|
147
|
-
- Azure Functions: http://localhost:7071
|
|
124
|
+
Azure Functions、Next.js BFF ルート、React UI コンポーネントが、共有スキーマから型付きで生成されます。
|
|
148
125
|
|
|
149
|
-
|
|
126
|
+
## 🤖 AI エージェントとの協調
|
|
150
127
|
|
|
151
|
-
|
|
152
|
-
- **C# バックエンド**: Azure Functions isolated worker はコールドスタート時にワーカービルドが入るため、応答開始まで少し時間がかかることがあります。`swallowkit dev` は Functions ホストが HTTP 応答できる状態になるまで待ってから、バックエンド URL を ready として表示します。
|
|
128
|
+
SwallowKit は、AI コーディングエージェントがプロジェクト構造を理解し、公式の生成コマンドを通じて変更を行い、生成物を検証できるように、機械可読なプロジェクトメタデータとコマンドインターフェースを提供します。
|
|
153
129
|
|
|
154
|
-
|
|
130
|
+
目的は、AI に自由にファイルを書き換えさせることではなく、明示的なアーキテクチャ境界の中で安全に開発を支援させることです。
|
|
155
131
|
|
|
156
|
-
|
|
157
|
-
npx swallowkit create-dev-seeds local
|
|
158
|
-
# dev-seeds/local/*.json を手で編集して利用
|
|
159
|
-
npx swallowkit dev --seed-env local
|
|
132
|
+
## 📦 生成されるプロジェクト構成
|
|
160
133
|
|
|
161
|
-
# または、現在 Emulator に入っているデータをそのまま seed 化
|
|
162
|
-
npx swallowkit create-dev-seeds local --from-emulator --force
|
|
163
|
-
npx swallowkit dev --seed-env local
|
|
164
134
|
```
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
書き出された JSON では `_etag` などの Cosmos システムプロパティは自動除去され、再投入しやすい形になります。
|
|
174
|
-
|
|
175
|
-
### 5. フロントエンドから使用
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
import { api } from '@/lib/api/backend';
|
|
179
|
-
import type { Todo } from '@/shared/models/todo';
|
|
180
|
-
|
|
181
|
-
// 全件取得 - BFFエンドポイントを呼び出し
|
|
182
|
-
const todos = await api.get<Todo[]>('/api/todos');
|
|
183
|
-
|
|
184
|
-
// 作成 - バックエンドで検証
|
|
185
|
-
const created = await api.post<Todo>('/api/todos', {
|
|
186
|
-
text: '牛乳を買う',
|
|
187
|
-
completed: false
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
// 更新 - バックエンドで検証
|
|
191
|
-
const updated = await api.put<Todo>('/api/todos/123', { completed: true });
|
|
192
|
-
|
|
193
|
-
// 削除
|
|
194
|
-
await api.delete('/api/todos/123');
|
|
135
|
+
.
|
|
136
|
+
├── app/ # Next.js ページと BFF API ルート
|
|
137
|
+
├── shared/
|
|
138
|
+
│ └── models/ # 共有 Zod スキーマ(単一のソース)
|
|
139
|
+
├── functions/ # Azure Functions バックエンド
|
|
140
|
+
├── infra/ # Bicep テンプレート
|
|
141
|
+
├── lib/ # BFF ヘルパーと scaffold 設定
|
|
142
|
+
└── .swallowkit/ # SwallowKit プロジェクトメタデータ
|
|
195
143
|
```
|
|
196
144
|
|
|
197
|
-
|
|
145
|
+
## 🔗 ステータス
|
|
198
146
|
|
|
199
|
-
SwallowKit
|
|
147
|
+
SwallowKit は現在開発中です。API、プロジェクト構成、生成されるコードは変更される可能性があります。
|
|
200
148
|
|
|
201
|
-
|
|
202
|
-
# コネクタを登録
|
|
203
|
-
npx swallowkit add-connector mysql --type rdb --provider mysql --connection-env MYSQL_CONNECTION_STRING
|
|
204
|
-
|
|
205
|
-
# コネクタ対応モデルを作成
|
|
206
|
-
npx swallowkit create-model user --connector mysql
|
|
207
|
-
# shared/models/user.ts を編集(スキーマ + connectorConfig をカスタマイズ)
|
|
208
|
-
|
|
209
|
-
# scaffold がコネクタ固有の Functions コードを生成
|
|
210
|
-
npx swallowkit scaffold shared/models/user.ts
|
|
211
|
-
|
|
212
|
-
# 実際の MySQL がなくてもモックデータでローカル開発
|
|
213
|
-
npx swallowkit dev --mock-connectors
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
フロントエンドと BFF レイヤーはデータソースの違いを意識しません — `callFunction()` は Cosmos DB モデルでもコネクタモデルでも同一です。詳しくは **[Connector ガイド](https://himanago.github.io/swallowkit/ja/connector-guide)** を参照してください。
|
|
217
|
-
|
|
218
|
-
## 🤖 AI / MCP 統合
|
|
219
|
-
|
|
220
|
-
SwallowKit は、コーディングエージェントや MCP adapter 向けに machine-readable な CLI を提供します。AI が filesystem を推測して直接変更するのではなく、SwallowKit の正式な generator / inspector / validator を経由して操作できるようにするためです。
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
# framework が理解している project metadata を取得
|
|
224
|
-
npx swallowkit machine inspect project
|
|
225
|
-
|
|
226
|
-
# SwallowKit 規約と生成物の整合性を検証
|
|
227
|
-
npx swallowkit machine validate project
|
|
228
|
-
|
|
229
|
-
# 正式な machine interface 経由で生成
|
|
230
|
-
npx swallowkit machine generate model todo --overwrite never
|
|
231
|
-
npx swallowkit machine generate scaffold todo --api-only
|
|
232
|
-
```
|
|
149
|
+
フィードバック、Issue、小さなサンプルユースケースの共有を歓迎します。
|
|
233
150
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
- 非対話
|
|
237
|
-
- deterministic
|
|
238
|
-
- stdout は JSON のみ
|
|
239
|
-
- 成功 / 失敗ともに構造化出力
|
|
240
|
-
|
|
241
|
-
MCP client からは、同梱の stdio server を利用できます:
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
npx swallowkit-mcp
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
`swallowkit init` で生成されるプロジェクトには、ローカルに install された SwallowKit MCP entrypoint を起動する project-scoped な `.mcp.json` bootstrap が含まれます。repository の MCP 自動検出に対応した agent runtime では、依存関係の install 後に project root から同じ `swallowkit_*` Tool をそのまま使えます。
|
|
248
|
-
|
|
249
|
-
project MCP 設定を自動読込しない runtime でも、生成される instruction files が `swallowkit machine ...` の利用に誘導し、必要なら同じ launcher を手動登録できます。
|
|
250
|
-
|
|
251
|
-
MCP server は explicit な Tool だけを公開する薄い adapter で、実処理は machine CLI に委譲します。
|
|
252
|
-
|
|
253
|
-
## 🏗️ アーキテクチャ
|
|
254
|
-
|
|
255
|
-
```
|
|
256
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
257
|
-
│ Frontend (React) │
|
|
258
|
-
│ - Client Components │
|
|
259
|
-
│ - Server Components (SSR) │
|
|
260
|
-
└──────────────────────────┬───────────────────────────────────┘
|
|
261
|
-
│ api.post('/api/todos', data)
|
|
262
|
-
▼
|
|
263
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
264
|
-
│ BFF Layer (Next.js API Routes) │
|
|
265
|
-
│ - Auto Schema Validation (Zod) │
|
|
266
|
-
│ - Error Handling │
|
|
267
|
-
└──────────────────────────┬───────────────────────────────────┘
|
|
268
|
-
│ HTTP Request
|
|
269
|
-
▼
|
|
270
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
271
|
-
│ Azure Functions (Backend) │
|
|
272
|
-
│ - HTTP Triggers (CRUD) │
|
|
273
|
-
│ - Zod Validation (Re-check) │
|
|
274
|
-
│ - Business Logic │
|
|
275
|
-
│ - Data Source Bindings │
|
|
276
|
-
└──────────┬───────────────┼───────────────┬──────────────────┘
|
|
277
|
-
│ │ │
|
|
278
|
-
▼ ▼ ▼
|
|
279
|
-
┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
|
|
280
|
-
│ Azure Cosmos │ │ 外部 RDB │ │ 外部 SaaS API │
|
|
281
|
-
│ DB (既定) │ │ (MySQL, │ │ (REST) │
|
|
282
|
-
│ │ │ PostgreSQL) │ │ │
|
|
283
|
-
└────────────────┘ └──────────────┘ └──────────────────┘
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
**重要なパターン:**
|
|
287
|
-
- **BFF (Backend For Frontend)**: Next.js API Routes が Azure Functions へのプロキシ
|
|
288
|
-
- **共有スキーマ**: `shared/models/` の Zod スキーマを唯一のソースとして扱う
|
|
289
|
-
- **C#/Python 向け OpenAPI 出力**: TypeScript 以外の Functions は `functions/generated/` のネイティブ生成資産を利用
|
|
290
|
-
- **外部コネクタ**: MySQL・PostgreSQL・REST API — scaffold 生成の Functions で同じ BFF パターンを維持
|
|
291
|
-
- **契約安全性**: 共有 Zod または生成モデルで BFF とバックエンドの整合を保つ
|
|
292
|
-
- **マネージド ID**: サービス間の安全な接続(接続文字列不要)
|
|
293
|
-
|
|
294
|
-
## 📦 前提条件
|
|
295
|
-
|
|
296
|
-
- Node.js 22.x
|
|
297
|
-
- **pnpm**(推奨): `corepack enable` を実行するか、`npm install -g pnpm` でインストール
|
|
298
|
-
- npm でも動作します — SwallowKit はパッケージマネージャーを自動検出します(pnpm がインストール済みなら常に pnpm を優先)
|
|
299
|
-
- Azure CLI (`az`) - Azure へのプロビジョニングやデプロイを行う場合に必要
|
|
300
|
-
- Azure Functions Core Tools 4.x - ローカルの Azure Functions 起動に必要
|
|
301
|
-
- Azure Cosmos DB Emulator (ローカル開発用)
|
|
302
|
-
- [公式ドキュメント (vNext 推奨)](https://learn.microsoft.com/ja-jp/azure/cosmos-db/emulator-linux)
|
|
303
|
-
- Windows: [ダウンロード](https://aka.ms/cosmosdb-emulator)
|
|
304
|
-
- Docker: `docker run -p 8081:8081 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator`
|
|
305
|
-
|
|
306
|
-
### バックエンド別要件
|
|
307
|
-
|
|
308
|
-
- TypeScript/Node.js: 追加要件なし
|
|
309
|
-
- Python: uv を使用します
|
|
310
|
-
- C#: .NET 10 SDK と Azure Functions Core Tools 4.6.0 以上が必要です
|
|
311
|
-
|
|
312
|
-
> **補足**: Azure Functions をローカルで起動するため、Azure Functions Core Tools 4.x は共通で必要です。C# バックエンドでは .NET 10 SDK と Core Tools 4.6.0 以上を推奨します。
|
|
313
|
-
|
|
314
|
-
## 🚀 Azure へのデプロイ
|
|
315
|
-
|
|
316
|
-
Next.js アプリを standalone モードで Azure Static Web Apps にデプロイし、バックエンド操作のために独立した Azure Functions に接続します。
|
|
317
|
-
|
|
318
|
-
**1. リソースをプロビジョニング (Bicep IaC)**
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
npx swallowkit provision --resource-group my-app-rg
|
|
322
|
-
# or
|
|
323
|
-
pnpm dlx swallowkit provision --resource-group my-app-rg
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
このコマンドでは、プライマリリージョンと Static Web App リージョンを対話式に選択します。プロビジョニング完了後は、CI/CD 設定に必要な値がターミナルに表示されます。コピーしておいてください。
|
|
327
|
-
|
|
328
|
-
**2. コードをプッシュ**
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
git push origin main
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
**3. 自動実行された CI/CD をキャンセル** — シークレット未登録のため失敗します。
|
|
335
|
-
|
|
336
|
-
**4. 表示された secrets / variables を登録** — GitHub (Settings → Secrets) または Azure DevOps (Pipelines → Library) に登録します。
|
|
337
|
-
|
|
338
|
-
**5. CI/CD ワークフローを手動で再実行します。**
|
|
339
|
-
|
|
340
|
-
詳細は **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** を参照してください。
|
|
341
|
-
|
|
342
|
-
## ライセンス
|
|
151
|
+
## 📄 ライセンス
|
|
343
152
|
|
|
344
153
|
MIT
|
|
345
|
-
|
|
346
|
-
## 🔗 関連リンク
|
|
347
|
-
|
|
348
|
-
- [SwallowKit VS Code 拡張機能](https://marketplace.visualstudio.com/items?itemName=himanago.swallowkit-vscode)
|
|
349
|
-
- [Azure Static Web Apps](https://learn.microsoft.com/ja-jp/azure/static-web-apps/)
|
|
350
|
-
- [Azure Functions](https://learn.microsoft.com/ja-jp/azure/azure-functions/)
|
|
351
|
-
- [Azure Cosmos DB](https://learn.microsoft.com/ja-jp/azure/cosmos-db/)
|
|
352
|
-
- [Next.js](https://nextjs.org/)
|
|
353
|
-
- [Zod](https://zod.dev/)
|