💨
Trigger.dev v2からv3への移行手順 - 2025年1月31日の終了に備えて
背景
Trigger.devのv2が2025年1月31日でサービス終了となるため、v3への移行が必要になりました。この記事では実際の移行手順と注意点を解説します。
移行手順
1. パッケージのアップデート
まず、関連パッケージをv3にアップデートします:
bash
npm install @trigger.dev/sdk@^3.0.0 @trigger.dev/nextjs@^3.0.0 @trigger.dev/react@^3.0.0
2.Trigger.devのダッシュボードでの準備
- https://cloud.trigger.dev/ にアクセス
- 新規プロジェクトを作成
- 注意:既存のv2プロジェクトは使用せず、新規でv3対応のプロジェクトを作成
- プロジェクトrefとAPI keyを取得
3.プロジェクトの初期化
bash
npx trigger.dev@latest init -p [your_project_ref] --override-config
4.設定ファイルの作成と設定
bash
touch trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk/v3";
export default defineConfig({
project: "your_project_ref", // ダッシュボードで取得したプロジェクトref
runtime: "node",
logLevel: "log",
maxDuration: 3600,
retries: {
enabledInDev: true,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
randomize: true,
},
},
dirs: ["./src/trigger"], // タスクファイルの配置ディレクトリ
});
5.環境変数の設定
.env.localに以下を追加:
TRIGGER_API_KEY=tr_dev_xxxxxx
6. コードの移行
タスクコードの変更点
v2からv3への主な変更点をコード例で示します:
// v2の書き方
import { client } from "@/trigger";
import { eventTrigger } from "@trigger.dev/sdk";
client.defineJob({
id: "example-task",
name: "Example Task",
version: "0.0.1",
trigger: eventTrigger({
name: "example.event",
}),
run: async (payload, io, ctx) => {
const eventId = ctx.event.id;
await io.logger.info("処理開始");
const result = await io.runTask("task-name", async () => {
// 何らかの処理
return data;
});
},
});
// v3の書き方
import { logger, task } from "@trigger.dev/sdk/v3";
type TaskPayload = {
// ペイロードの型定義
data: string;
};
export const exampleTask = task({
id: "example-task",
retry: {
maxAttempts: 3,
},
run: async (payload: TaskPayload, { ctx }) => {
const eventId = ctx.run.context.eventId;
logger.info("処理開始");
// io.runTaskのラッパーが不要に
const result = await someFunction();
}
});
APIルートの変更点
// v2でのイベント発火
await client.sendEvent({
name: "example.event",
payload: { data: "example" },
});
// v3でのイベント発火
await exampleTask.trigger({
data: "example"
});
主な変更点
- client.defineJob → taskへの変更
- io.logger → loggerへの変更
- io.runTaskラッパーの削除
- イベントトリガー方式の簡素化
注意点
移行期限は2025年1月31日
v2とv3は並行稼働可能なので、段階的な移行が可能
v3では多くの制限が緩和され、より直感的なコーディングが可能に
既存の機能は基本的に維持されているため、ロジック自体の変更は最小限で済む
まとめ
v3への移行は比較的シンプルで、手順に従えば問題なく進められます。ただし、本番環境で稼働中のシステムの場合は、十分なテストと段階的な移行を検討してください。
Discussion