この記事の要点
- ワークフローのオーケストレーション基盤として広く使われている Temporal の Swift 実装、Temporal Swift SDK がオープンソースとして公開されました。これにより、本番のクラウドサービスを構築する Swift 開発者が Temporal を利用できるようになりました。
- Temporal の中心にあるのは durable execution(永続的な実行) です。インフラに障害が起きてもコードは最後まで実行され、ワーカーがクラッシュ・再起動しても、状態を失うことなく中断した箇所からワークフローが自動的に再開されます。複雑なリトライロジックや状態管理を自前で書く必要がありません。
- この SDK は async/await と structured concurrency といった Swift らしいパターンに沿って設計されており、Swift の強い型システムで実行時ではなくビルド時にエラーを検出でき、マクロによってワークフロー記述のボイラープレートを削減します。データパイプライン、業務自動化、決済処理、運用タスクなど、障害を乗り越えて完了させる必要がある多段階の処理に特に有効です。
何が発表されたのか
信頼性の高い分散システムを構築するには、障害をうまく扱い、複数のサービスをまたぐ複雑な処理を協調させ、長時間実行されるプロセスを確実に完了させる必要があります。こうしたレジリエンシーの仕組みをアプリケーションやサービスごとに作り込む代わりに採れる選択肢が、ワークフロー(workflow) の利用です。ワークフローはコードを包み込み、永続的に実行しつつ、よくある障害シナリオを肩代わりします。
Temporal は、信頼性の高い分散アプリケーションを構築するためのオープンソースプラットフォームで、多くの言語でワークフローのオーケストレーションに広く使われています。今回 Temporal Swift SDK が公開されたことで、Swift もその対象言語に加わりました。
Temporal のアーキテクチャは、ワークフローのオーケストレーションと実際の処理の実行を分離している点が特徴です。
- Workflow(ワークフロー): 全体のビジネスロジックと協調を定義します。処理のステップの順序、判断の分岐、エラーハンドリングを記述します。ワークフローは決定的(deterministic)でなければならず、同じ入力と履歴が与えられたら常に同じ判断を下す必要があります。
- Activity(アクティビティ): 外部 API の呼び出し、データの処理、データベースとのやり取りなど、実際の処理を担います。アクティビティは冪等(idempotent)であることが望ましく、意図しない副作用を起こさずに安全にリトライできる必要があります。
この分離によって durable execution が実現されます。ワーカーがクラッシュしたり再起動したりしても、Temporal がワークフローを中断箇所から自動的に再開するため、複雑なリトライロジックや状態管理のコードを書く必要がありません。状態管理・リトライ・リカバリは Temporal が引き受け、開発者はアプリケーションのロジックに集中できます。
何に使えるのか
Temporal のワークフローは、障害を乗り越えて完了させる必要がある多段階の協調処理で特に価値を発揮します。たとえば次のような用途が挙げられています。
- データパイプライン
- 業務自動化
- 決済処理
- 運用タスク
モダンな分散システムでは、複数サービスの協調、部分的な障害の処理、操作間の一貫性の確保、長時間実行プロセスの管理といった課題が共通して現れます。従来はリトライロジック・ステートマシン・協調の仕組みを個別に作り込む必要がありましたが、Temporal はこれらの関心事をプラットフォーム側で扱うため、開発者はビジネスロジックに専念できます。
Swift 開発者にとっての利点として、SDK は次の点を重視して設計されています。
- 馴染みのある async/await と structured concurrency を使い、保守しやすいワークフローコードを記述できる
- Swift の強い型システムを活かし、実行時ではなくビルド時にエラーを検出できる
- マクロによって、ワークフローを記述する際のボイラープレートを削減できる
導入・今後の位置づけ
始めるにあたっては、ワークフローとアクティビティの実装手順を解説した SDK のドキュメントが用意されています。リポジトリには、単純なタスクのオーケストレーションから複雑な多段階の業務プロセスまで、さまざまなユースケースで SDK の機能を示すサンプルプロジェクト集も含まれています。
Temporal のコアコンセプトやアーキテクチャパターンをより深く理解するには、Temporal の一般ドキュメントが参考になります。プロジェクトが発表された Server-Side Swift 2025 での講演動画も公開されています。Temporal 社のブログにも、開発者向けの発表記事があります。
Temporal Swift SDK はオープンソースプロジェクトとして活発に開発されており、貢献・バグ報告・機能リクエストが歓迎されています。マイクロサービスの構築、長時間実行プロセスの協調、あるいは durable execution への関心など、幅広い立場からのフィードバックが求められています。