Gitrend
🤩

Inngest爆誕!次世代ワークフローはこれで決まりだ!🚀

Go 2026/2/12
Summary
皆さん、突然ですが複雑な非同期処理、どうしてますか? Inngestがあれば、驚くほどシンプルに、そして堅牢にワークフローを構築できちゃうんですよ! 僕、これにはマジで未来を感じちゃいました。

概要:なにこれ凄い?

うおおお!GitHubトレンドを漁っていたら、とんでもないお宝を見つけちゃいましたよ!「inngest/inngest」! Go言語で書かれたこのプロジェクト、一言で言えば「超進化版ワークフローオーケストレーションプラットフォーム」です。 従来のジョブキューやメッセージブローカーじゃ難しかった、“ステートフル”なステップ関数を、サーバーレス、サーバー、エッジどこでも動かせるって…マジかよ! 複雑なビジネスロジックや、時間のかかるAIワークフローを、まるで同期コードを書くかのようにシンプルに定義できるって知った時、僕の脳みそは爆発しましたね! Goの堅牢性とInngestの賢さが組み合わさって、これはもう革命ですよ!

ここが推し!

サクッと試そう(使用例)

僕が「まずこうやって動かしてみて!」と教えるコードスニペットはこちら! GoでInngestのワークフローを定義する超基本だよ。

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/inngest/inngest-go"
	"github.com/inngest/inngest-go/middleware"
)

// 1. まずはイベントを定義するよ!
var userSignedUp = inngest.Event{
	Name: "app/user.signed.up",
}

func main() {
	// 2. Inngestクライアントの初期化 (AppIDはユニークなものにしてね)
	client := inngest.NewClient(
		inngest.WithAppID("akira-blog-app"),
		inngest.WithEventKey("YOUR_INNGEST_EVENT_KEY"), // 環境変数とかで設定してね
	)

	// 3. ワークフロー関数を定義!これがInngestのキモ!
	//    ここでは「ユーザー登録されたら、ウェルカムメールを送る」という流れを想定
	myWorkflow := inngest.Function{
		ID:       "send-welcome-email",
		Name:     "Welcome Email Workflow for New Users",
		Triggers: []inngest.Trigger{inngest.TriggerOn(userSignedUp.Name)}, // このイベントで発火!
		Steps: func(ctx context.Context, input inngest.FunctionInput) (*inngest.Result, error) {
			// イベントデータからユーザー名を取得!
			userName := "Guest User"
			if name, ok := input.Event.Data["name"].(string); ok {
				userName = name
			}

			// Step 1: 3秒待機してみる (Inngestが状態を管理してくれるから、アプリが落ちても続きから再開!)
			err := input.Steps.Sleep("wait-for-cool-down", 3*time.Second)
			if err != nil {
				return nil, err
			}

			// Step 2: 実際にメールを送信する処理 (Runで囲めば、Inngestが実行を保証してくれる!)
			emailStatus := ""
			err = input.Steps.Run("send-email-action", func() error {
				fmt.Printf("\n🚀 Step: Sending welcome email to %s...\n", userName)
				// ここで外部のメール送信APIを叩いたり、DBに書き込んだりする!
				// 例: externalMailService.Send(userName, "Welcome to Akira's Tech Log!")
				emailStatus = fmt.Sprintf("Welcome email sent to %s successfully!", userName)
				return nil
			})
			if err != nil {
				return nil, err
			}

			return inngest.ResultFromJSON(map[string]string{
				"status":    "workflow completed",
				"message": emailStatus,
			})
		},
	}

	// 4. Inngestサーバーを起動して、ワークフローをホスト!
	//    実際の運用ではInngestクラウドサービスと連携させることが多いよ!
	srv := inngest.NewServer(
		client,
		[]inngest.Function{myWorkflow},
		inngest.WithSigningKey("YOUR_INNGEST_SIGNING_KEY"), // 本番環境では必須!
		inngest.WithLogger(middleware.NewConsoleLogger()),
	)

	fmt.Println("\n🎉 Inngest server starting on :8080! Send 'app/user.signed.up' event to trigger.\n")
	fmt.Println("Try: curl -X POST http://localhost:8080/api/inngest -H \"Content-Type: application/json\" -d '{\"name\": \"app/user.signed.up\", \"data\": {\"name\": \"Akira\"}}' -H \"x-inngest-signature\": \"...\" (本番では署名必須!)")

	err := srv.Start(":8080")
	if err != nil {
		fmt.Printf("Error starting server: %v\n", err)
	}
}

このコードを実行して、指定されたcurlコマンドを叩いてみてほしい!3秒待ってからメール送信メッセージが出力されるのがわかるはず。途中でCtrl+Cで止めても、Inngestはイベントを失わないから安心してね!

ぶっちゃけ誰向け?

まとめ

いやー、今回も興奮が止まりません!inngest/inngest、これは間違いなく次の時代のスタンダードになるツールですよ。 Go言語でこれだけ柔軟かつ堅牢なワークフローを記述できるなんて、正直言って想像以上でした。 複雑な非同期処理やAIワークフローで頭を抱えていたエンジニアの皆さんは、ぜひ一度触ってみてほしい! きっと僕と同じように「うおおお!」ってなるはずです。 これからの開発がもっともっと楽しく、そしてパワフルになること間違いなしだね! Akira’s Tech Logは、これからも最先端の技術を追いかけ続けますよ!それじゃまたね!