← 概念辨析に戻る

Concept Contrast Fable

ワークフローとワークフローエンジン

先に結論:ワークフローは一連の業務ステップの定義だ。まず承認し、次に支払い、次に出荷する。ワークフローエンジンはこの定義を実行するソフトウェアだ。ステップ間の依存を理解し、状態遷移を管理し、タイムアウトと例外を処理する。ホワイトボードに完璧なワークフローを描くことはできるが、それを動かすエンジンがなければ、紙に描いた矢印は自分では動かない。多くの人はワークフローを描き終えるとシステムがすでに稼働していると考えるが、実際には描き終えることと動かすことの間には完全なエンジニアリング実装が隔たっている。

ワークフローは一連の業務ステップの定義だ。まず承認し、次に支払い、次に出荷する。ワークフローエンジンはこの定義を実行するソフトウェアだ。ステップ間の依存を理解し、状態遷移を管理し、タイムアウトと例外を処理する。ホワイトボードに完璧なワークフローを描くことはできるが、それを動かすエンジンがなければ、紙に描いた矢印は自分では動かない。多くの人はワークフローを描き終えるとシステムがすでに稼働していると考えるが、実際には描き終えることと動かすことの間には完全なエンジニアリング実装が隔たっている。

寓話

楽譜と自動演奏ピアノ

音楽学院の作曲科教授老金は半年をかけてピアノ組曲を書き、譜面は精美で、和声編曲は複雑、速度標記は各小節に至るまで正確だった。学科はこの譜面を教材として印刷し、全国二十の音楽学院のピアノ専攻学生に配り、各自に一度弾いて録画を返送させた。

三ヶ月後、二十本の録画が戻ってきた。老金は一本ずつ見終え、譜面と完全に一致するものは一つもないと気づいた。ある人は速度変換の所で半拍遅れ、ある人は繰り返し段落で強弱変化を忘れ、ある人はペダルを間違った場所で踏んでいた。同じ譜面を、二十人が二十通りの効果で弾いた。

老金は工学院の教授老温に愚痴った。譜面はこんなにはっきり書いてあるのに、なぜ弾いた結果がこんなに違うのか。老温は言った。あなたの譜面は一連の指令であって、機械ではない。指令は人が何をすべきかを伝えるが、必ずできる、正しくできる、同じにできることは保証しない。あなたにはオルゴールが必要だ。

老温は老金を自分の実験室に案内した:自動演奏ピアノである。老金は楽譜をデジタル形式に変換して入力すると、ピアノは自ら弾き、毎回まったく同じだった。速度の切り替えは正確で、強弱の変化は一致し、ペダルのタイミングは寸分違わない。老金は自分の作品の自動演奏版を聴き終え、長いこと黙っていた——自分の楽譜が寸分違わず実行されるとどんな効果になるのか、初めて耳にしたのだ。

老金は老温に尋ねた。この機械は普通のピアノと何が違うのか。老温は言った。普通のピアノは発音を提供するだけで、どう発音するかは人による。自動演奏ピアノには三つ多い。第一に、指令解析器——譜面の記号を実行動作に変換する。第二に、状態管理器——今何小節目を弾いていて、次の拍は何かを知っている。第三に、例外処理器——機械の指が引っかかったら、スキップするか再試行するかを知っている。この三つが合わさって、実行エンジンと呼ばれる。

老金は帰ってから教材の前書きに一文を加えた。楽譜は音楽がどうあるべきかを定義し、演奏エンジンは音楽が実際にその通りに鳴ることを保証する。楽譜を学ぶとプロセスの設計方法が教わり、エンジンを学ぶとプロセスを確実な結果に変える方法が教わる。二つの科目は以前は同じ科目として教えられていたが、今期から二つに分かれた。

ある学生が老金に尋ねた。自分がピアノを弾けるなら、自動演奏は必要ですか。老金は言った。一人で弾くなら毎回違う演奏ができる。これを人的実行という。二十人が同じ時間、別の場所で、同じ基準で実行するなら、これをシステム実行という。図譜は複製できるが、実行能力は複製できない。

老温は後に、自動演奏ピアノの技術原理を論文にまとめた。論文のタイトルは『定義の精確さから実行の確実性へ』。要旨にはこう書いた。多くのシステムの失敗は、『設計が正しい』ことと『実行が正しい』ことを同じことと見なすことに根がある。設計の正しさは人材に依存し、実行の正しさはエンジンに依存する。

ワークフロー

一連の業務ステップとその順序、条件、依存関係を抽象的に定義したもの。これは「何を、どの順序で行うか」の記述であり、実行は担いません。

ワークフローエンジン

ワークフロー定義を解析し、状態遷移を管理し、タスク実行をスケジュールし、例外とタイムアウトを処理するソフトウェアシステム。これは「定義どおりに走らせるにはどうするか、走り間違えたらどう処理するか」の実行層である。

物語の対応

  • 老金の組曲の譜面:ワークフロー——ステップと順序の正確な定義。
  • 自動演奏ピアノ:ワークフローエンジン——定義が正確に実行されることを保証するソフトウェアシステム。
  • 同じ楽譜に二十通りの効果:エンジンが欠けると、ワークフロー定義は実行の一貫性を保証できない。
  • 命令解析、状態管理、例外処理:ワークフローエンジンの三つの中核能力。
  • 二つの科目に分ける:設計と実行は二つの独立したエンジニアリング問題であり、分けて扱う必要がある。

プロジェクトに落とし込む

ワークフローを描くときは、どのエンジンで実行するかを同時に考える。エンジン選定がなければ、描いたフローはただの紙切れである。エンジン選定では主に三つを見る:状態永続化能力——ステップ間でコンテキストを確実に保存できるか、例外処理メカニズム——タイムアウト、リトライ、補償、人手介入がカバーされているか、そして可観測性——各ステップの実行状態、所要時間、失敗原因を追跡できるか。エンジンを間違えると、どんなに精妙なワークフロー設計でも確実性は出せない。

京ICP备2026014272号