出張精算の申請の途中でシステムが固まり、交通費だけ登録されて宿泊費が消えてしまった、という経験はないでしょうか。片方だけ処理が進み、もう片方が宙に浮いた状態は、後から見た人を必ず混乱させます。処理をやり直せばよいのか、残りだけ追加で入力すればよいのかすら、判断がつきません。このページでは、複数の手続きが絡む作業を「中途半端に終わらせない」ための「トランザクション」という考え方を見ていきます。
CS概念の直感
トランザクションとは、複数の処理をひとまとまりとして扱い、すべてが成功するか、すべてが失敗して元通りになるかのどちらかしか許さない、という仕組みです。銀行の振込を例に考えてみましょう。振込という処理は、実際には「送り主の口座から金額を引く」処理と、「受け取り主の口座に金額を足す」処理の二つに分かれています。もし引く処理だけが成功し、足す処理の途中でシステムが止まってしまったら、お金は送り主の口座から消えたのに、受け取り主には届いていない、という事態が起きます。これを防ぐために、二つの処理をひとまとまりの「トランザクション」として扱い、両方が成功して初めて確定させ、片方でも失敗したら両方とも無かったことにする、という設計にします。中途半端な状態を許さないことで、処理の途中で何が起きても、帳尻が合わなくなることを防いでいます。
このとき鍵になるのが「やり切るか、最初からやらなかったことにするか」という二択しかない、という点です。「半分だけ成功した状態」を残さないことが、トランザクションという発想の核心です。半分だけ成功した状態を許してしまうと、後から見た人には、何が起きて何が起きなかったのかを判断できなくなります。
もう一つ大事な性質があります。トランザクションは、途中の状態を他の人から見えなくする、という働きも持っています。振込の処理が進行している間、その途中経過を誰かが覗き見て、「引かれたけどまだ足されていない」中途半端な残高をもとに次の判断をしてしまうと、やはり混乱が生まれます。処理が完全に終わるまでは、外からは「まだ何も起きていない」ように見せ、終わった瞬間に一気に結果が反映される。この「全部終わるまで、途中経過を外に見せない」という性質も、トランザクションを支える重要な要素です。
仕事の言葉に翻訳すると
仕事における中途半端とは、複数の手続きが絡む作業の一部だけが終わり、残りが宙に浮いた状態のことです。出張精算であれば「交通費の申請」「宿泊費の申請」「上長の承認」という複数の手続きがひとまとまりで完了して初めて、精算という一件が成立します。どこか一つだけが欠けた状態のまま処理が止まると、経理は交通費だけを処理してよいのか、それとも宿泊費が揃うまで待つべきなのか判断に迷います。
翻訳すると、トランザクションの発想は「一連の手続きの単位を明確にする」ことです。どこからどこまでを一つのまとまりとして扱うのかを決め、まとまりの途中で止まった場合は、「そこまでの分を生かす」のか「最初からやり直す」のかを、あらかじめ決めておく。この取り決めがないまま複数の手続きを並行して進めると、途中で止まったときに誰も判断できず、放置される案件が生まれます。
さらに、途中経過を周囲に見せないという性質も、仕事に翻訳できます。複数の部署が関わる社内向けの発表や制度変更などでは、決定の途中経過を一部の関係者だけが知っている状態で外に漏れてしまうと、まだ確定していない内容が独り歩きし、混乱を招くことがあります。「関係者全員の合意が取れるまでは外部に出さず、確定した瞬間にまとめて発表する」という運用は、トランザクションの「途中経過を見せない」という性質そのものです。情報を小出しにしないという判断は、単なる慎重さではなく、中途半端な情報が誤解を生むリスクを避けるための、理にかなった設計だと捉えられます。
具体的な場面(1) 出張精算のひとまとまり
出張精算では、交通費・宿泊費・日当という複数の項目を、一件の精算としてまとめて申請することがよくあります。システムの不具合や入力ミスで一部の項目だけが登録され、残りが未入力のまま放置されると、経理はどう処理してよいか分からなくなります。「全項目が揃うまでは仮登録として扱い、正式な確定は全項目が揃ってから行う」というルールを決めておけば、半端な状態のまま処理が進んでしまう事故を防げます。仮登録の段階では経理側が処理を進めず、申請者にも「まだ確定していません」と一目で分かる表示をしておくことが、実務上は有効な補助線になります。
具体的な場面(2) 契約手続きの承認プロセス
契約書の作成、社内承認、先方への送付、押印といった一連の手続きを考えてみます。社内承認が下りる前に先方へ送付してしまうと、後から条件を変更しなければならなくなったとき、二重の手間が発生します。一連の手続きを「承認が完了して初めて次に進む」というひとまとまりとして扱い、途中で条件が変わった場合は、その時点まで戻ってやり直す、というルールにしておけば、後戻りの範囲が明確になります。どこまで進んだら後戻りできないのか、という境界を決めておくことが実務上の要点です。境界を越えた後の変更は、修正という形ではなく、改めて交渉を行う別件として扱う、と決めておくと運用がぶれません。境界の手前であれば柔軟に戻せる、境界の先は別枠で扱う、という二段構えは、多くの手続きに応用できる考え方です。
具体的な場面(3) 在庫の引き当てと出荷
注文を受けてから、在庫を引き当て、出荷指示を出し、請求書を発行する、という一連の流れも同じ構造を持っています。在庫を引き当てた後に出荷の準備で欠品が発覚した場合、引き当てだけが残って出荷も請求も進まない、という宙ぶらりんな状態が生まれることがあります。引き当てから請求発行までを一つのまとまりとして扱い、欠品が判明した時点で引き当てそのものを取り消す運用にしておけば、在庫の帳簿上の数字と実際の在庫がずれ続ける事態を防げます。
具体的な場面(4) 人事異動の発令
人事異動の内示から発令までの一連の流れも、トランザクション的に扱う価値があります。異動対象者への内示、関係部署への連絡、システム上の所属変更、社内名簿の更新といった複数の手続きが、発令日という一つのタイミングで一斉に反映されるべき情報です。一部の部署だけ先に情報が伝わり、システム上の所属はまだ古いまま、という状態が発令前に生まれると、問い合わせの窓口が分裂したり、権限設定が追いつかなかったりする混乱が起きます。「発令日までは各手続きを準備段階として進め、発令日に全てを一斉に切り替える」という運用にしておけば、準備の途中経過が外部に漏れて混乱を招くリスクも、一部だけ切り替わって残りが古いままという状態も、どちらも防げます。
落とし穴
トランザクションの発想を仕事に持ち込む際の落とし穴は、「まとまりを大きくしすぎる」ことです。あらゆる手続きを一つの巨大なまとまりにしてしまうと、どこか一箇所が滞っただけで全体が止まってしまい、かえって身動きが取れなくなります。出張精算の例で言えば、交通費の領収書が一枚届いていないだけで、宿泊費や日当まで含めた精算全体が止まってしまうのは、まとまりの単位が大きすぎる典型例です。逆に、まとまりを分割しすぎると、今度はどこまで進んだ状態が「完了」なのかが分かりにくくなり、本来の目的である「中途半端を防ぐ」という効果が薄れます。
適切なまとまりの大きさを見極めるには、「そのまとまりが半分だけ終わった状態を、誰かが見て困るかどうか」を基準にするとよいでしょう。困る単位であれば、そこを一つのまとまりとして扱うべきですし、困らない単位であれば、無理に一つにまとめる必要はありません。出張精算であれば、交通費と宿泊費は別々に確定しても実務上は困らないことが多いため、項目ごとに独立して扱い、全体の精算確定だけを別のまとまりとして管理する、という分け方が現実的です。
もう一つの落とし穴は、「取り消しの手順を決めていない」ことです。やり切れなかったときに「元に戻す」という手順が用意されていないと、中途半端な状態がそのまま放置されてしまいます。トランザクションという発想の半分は、「うまくいかなかったときに、きれいに元に戻せるようにしておく」ことにあります。進める手順だけでなく、戻す手順もセットで設計しておくことが欠かせません。
戻す手順を決めていない職場でよく起きるのは、「途中まで進んだのだから、このまま続けてしまおう」という判断です。これは一見合理的に見えますが、本来揃うはずだった条件が揃わないまま進めることになり、後から見返すと辻褄の合わない記録が残ってしまいます。戻す手順があらかじめ決まっていれば、「ここまで進んだが条件が崩れたので、いったん白紙に戻す」という判断を、迷わず選べるようになります。迷いなく戻せるという安心感があるからこそ、無理に押し切って進めるという選択を避けられる、という関係にも注目してください。
さらに、まとまりの境界をどこに引くかは、関係者の間であらかじめ合意しておく必要があります。ある担当者は「承認が取れた時点で確定」と考え、別の担当者は「先方の返答が来て初めて確定」と考えていると、同じ案件について、進んでいるのか止まっているのかの認識がずれてしまいます。まとまりの境界そのものが共通認識になっていなければ、トランザクションという発想を持ち込んでも効果は半減します。
持ち帰り
- トランザクションとは、複数の手続きをひとまとまりとして扱い、中途半端な状態を許さない考え方
- まとまりの単位は「半分だけ終わった状態で誰かが困るか」を基準に決める
- 進める手順だけでなく、うまくいかなかったときに戻す手順もセットで用意する
- まとまりの境界は、担当者だけでなく関係者全員の共通認識にしておく
- 境界を越えた変更は修正でなく別件として扱うと運用がぶれにくい
やってみる
自分が抱えている複数手続きの作業を一つ選び、「どこまで進んだら後戻りできないか」という境界を一度書き出してみてください。書き出した境界を、関係者と一度共有しておくだけでも、認識のずれによる混乱を防げます。