encore-service について
Encore アプリケーションのサービス構成を設計するスキルです。単一サービスから複数サービス、システム単位の構成まで扱い、Encore クライアント経由のサービス呼び出しも説明します。
主な機能
- 01encore.service.ts によるサービス定義
- 02単一・複数サービスアプリの構成
- 03関連サービスのシステム別編成
- 04~encore/clients 経由のサービス呼び出し
- 05サービスごとのデータベース設定
活用シーン
- 01Encore サービスの新規作成
- 02拡大するアプリの構成選択
- 03コマースサービスのシステム別編成
- 04サービス間の型付き呼び出し
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ encoredev/ skills --skill encore-serviceインストール後、Claude Code で/encore-serviceを入力して読み込まれたか確認します。
詳細
Encore サービスの構造
手順
サービスの作成
すべての Encore サービスには encore.service.ts ファイルが必要です:
// encore.service.ts
import { Service } from "encore.dev/service";
export default new Service("my-service");
最小構成のサービス構造
my-service/
├── encore.service.ts # Service definition (required)
├── api.ts # API endpoints
└── db.ts # Database (if needed)
アプリケーションのパターン
単一サービス
サービスはアプリケーションのルートに定義できます:
my-app/
├── package.json
├── encore.app
├── encore.service.ts
├── api.ts
├── db.ts
└── migrations/
└── 001_initial.up.sql
マルチサービス
各サービスはそれぞれ独自のディレクトリに配置します:
my-app/
├── encore.app
├── package.json
├── user/
│ ├── encore.service.ts
│ ├── api.ts
│ └── db.ts
├── order/
│ ├── encore.service.ts
│ ├── api.ts
│ └── db.ts
└── notification/
├── encore.service.ts
└── api.ts
大規模アプリケーション(システムベース)
関連するサービスをシステムにグループ化します:
my-app/
├── encore.app
├── commerce/
│ ├── order/
│ │ └── encore.service.ts
│ ├── cart/
│ │ └── encore.service.ts
│ └── payment/
│ └── encore.service.ts
├── identity/
│ ├── user/
│ │ └── encore.service.ts
│ └── auth/
│ └── encore.service.ts
└── comms/
├── email/
│ └── encore.service.ts
└── push/
└── encore.service.ts
サービス間呼び出し
~encore/clients から他のサービスをインポートします:
import { user } from "~encore/clients";
export const getOrderWithUser = api(
{ method: "GET", path: "/orders/:id", expose: true },
async ({ id }): Promise<OrderWithUser> => {
const order = await getOrder(id);
const orderUser = await user.get({ id: order.userId });
return { ...order, user: orderUser };
}
);
ガイドライン
- サービスを他のサービスの中に入れ子にすることはできません
- サービス間の呼び出しには
~encore/clientsを使用してください(直接インポートはしないでください) - 各サービスは独自のデータベースを持てます
- サービス名は小文字で、内容が分かる名前にしてください
- コードを整理するためだけにサービスを作らないでください - 代わりにフォルダーを使用してください
- サービスの境界が決まっていない場合は
encore-architectureを使用してください
コメント
Markdown 対応