俯瞰思考とは、物事を分解するときに考える軸が2つ以上あるなら、軸を掛け合わせた表を作って全パターンを洗い出す方法です。会議で話している1つのケースだけでなく、表の空いているマスが「まだ考えていない組み合わせ」として目に見えるようになります。この記事では、軸の選び方と表の埋め方を、業務設計とシステム設計の例で説明します。

なぜ抜け漏れが起きるのか

要件定義のあとで「この場合はどうなるんですか」と聞かれて詰まる経験は、上流工程に入ったばかりのエンジニアなら一度はあるはずです。原因の多くは、知識不足よりも、いま議論している1つのケースしか見えていないことにあります。

たとえば問い合わせ窓口の改善を話し合っていて、議題が「個人のお客様からの電話対応」だったとします。議論は電話の話で盛り上がり、そのまま方針が決まります。しかし実際には、問い合わせの相手は個人のほかに法人もあり、チャネルは電話のほかにメールやWebフォームもあります。

電話 メール Webフォーム
個人 ← 今話している ? ?
法人 ? ? ?

表にすると、議論したのは6マスのうち1マスだけだとわかります。問題は、議論を始める前に「これは何と何の組み合わせの話か」を決めていないことです。

俯瞰思考を使う条件

いつでも表を作ればよいわけではありません。次の3つが揃ったときに使います。

  1. 達成したい目的がある(設計する、決める、整理する)
  2. その目的のために対象を分解しようとしている
  3. 分解の視点、つまり軸が2つ以上見つかった

軸が1つなら、イシューツリーのような階層での分解で足ります。イシューツリーは問いを1つの切り口で枝分かれさせる道具で、俯瞰思考は切り口が2つ以上になったときに表で網羅する道具です。イシューツリーで分けた枝の1つを、さらに2軸で整理する使い方もできます。

会話の中で次のような言葉が出たら、軸が隠れている合図です。

聞こえた言葉 隠れている軸
「〇〇の場合は」 別の値が抜けていないか
「誰が担当するのか」 役割(ロール)の軸
「どのデータについて」 データの種類の軸
「この状態のときは」 ステータスの軸
「それはどのお客様の話か」 顧客の種類や規模の軸

3つのステップ

ステップ1:軸を特定する

いまの議論で変わりうる条件は何かを考えます。軸は次のどれかから選ぶと外れにくくなります。

  • 対象が増えたり減ったりする軸(顧客の種類、ロール、拠点)
  • 条件で分岐する軸(操作の種類、問い合わせの種類)
  • 時間とともに変わる軸(業務のステップ、ステータス)

ステップ2:全パターンの表を作る

各軸がとりうる値を書き出し、掛け合わせて表にします。この時点ではマスは空のままで構いません。空のマスが見えることに意味があります。

ステップ3:マスを埋める

目的に応じて、マスに入れる内容を決めます。

目的 マスに入れるもの
業務設計 担当者、手順、必要書類、対応期限
課題整理 論点、調べること、打ち手
システム設計 操作権限、遷移先のステータス
意思決定 判断基準、承認者、エスカレーション先

最初から全部のマスを正確に埋めようとすると手が止まります。まずは「○(ある)/×(ない)/不明」の3段階で粗く埋めます。「不明」のマスが、次のヒアリングで確認すべき論点の一覧になります。

実務でよく使う3つの型

型1:業務マトリクス

縦に顧客や問い合わせの種類、横に担当やチャネルを取り、マスに対応方法を入れます。先ほどの問い合わせ窓口の例を埋めると、次のようになります。

電話 メール Webフォーム
個人 一次窓口で即答、難しければ折り返し 2営業日以内に返信 自動返信のあと担当が返信
法人 担当営業に転送 担当営業に転送 担当営業に自動で通知

表にすると、法人はチャネルによらず担当営業に回すルールで揃えられそうだ、と気づけます。個人のWebフォームだけは自動返信の文面を決める必要がある、という作業も見えてきます。

型2:CRUD表

縦にデータの種類、横にロールを取り、マスに作成(C)・参照(R)・更新(U)・削除(D)の権限を入れます。ある会社の備品貸出システムを例にすると、次のとおりです。

データ 一般社員 総務担当 管理者 外部の保守業者
貸出申請 CRU(自分の分) RU CRUD ー
備品マスタ R RU CRUD R(担当機器のみ)
貸出履歴 R(自分の分) R R ー

表を作ると、外部の業者にはデータの範囲を絞る必要があること、削除を管理者だけに限定していることが一目でわかります。誰も更新できないマスや、必要以上の権限を持っているロールがあれば、それは設計の見直し候補です。

型3:ステータス×ロール表

縦にステータス、横にロールを取り、マスにできる操作と次のステータスを入れます。この型では、ロールの列に必ず「システム自動」を加えてください。通知やデータ連携のような、人が操作しないけれど実装が必要な処理を拾うためです。

ステータス 申請者 承認者 総務担当 システム自動
下書き 作成・編集・申請 ー 参照 ー
承認待ち 参照・取り下げ 承認・差し戻し 参照 承認者へ通知
承認済み 参照 参照 貸出処理 申請者へ通知
貸出中 参照 参照 返却処理 返却期限の前日に通知
差し戻し 編集・再申請 参照 参照 申請者へ理由を通知
返却済み 参照 参照 参照 ー

「システム自動」の列を埋めると、通知が4か所必要だとわかります。この列がない状態で仕様を書くと、通知の実装が抜けやすくなります。また、申請者が編集できるのは下書きと差し戻しのときだけ、というルールもこの表で確認できます。ステータスの設計そのものはステータス設計とテーブル分割の記事で詳しく扱っています。

表を作ったあとの確認

表ができたら、次の4点を見ます。

  1. 空のマスの意味を区別する。「その組み合わせは存在しない」のか「まだ考えていない」のかを分けます。後者はヒアリングの論点です
  2. 同じ内容が並ぶ列や行を探す。ルールを1つにまとめられる可能性があります
  3. システム自動にできるマスを探す。人がやっている処理のうち、ルールが決まっているものは自動化の候補です
  4. 全部のマスに担当がいるか確かめる。誰の責任でもないマスは、運用が始まってから問題になります

よくある失敗

  • 軸を決めずに議論を始める。話しやすいケースから話し始めると、その1マスで結論が出てしまいます。議題を出す前に「今日は何と何の組み合わせを話すか」を書き出します
  • 軸を増やしすぎる。3軸、4軸と増やすと表が読めなくなります。まず2軸で作り、どうしても必要なら軸の値ごとに表を分けます
  • 全マスを完璧に埋めようとする。粗く埋めて「不明」を残すほうが、次に何を聞けばよいかがはっきりします
  • 「システム自動」列を入れない。ステータス遷移の表でこの列を省くと、通知やデータ連携の実装が漏れます
  • 空のマスを「なし」と決めつける。考えていないだけのマスを「該当なし」として扱うと、リリース後に問い合わせが来ます

この記事のまとめ

  • 俯瞰思考は、分解の軸が2つ以上あるときに、軸を掛け合わせた表で全パターンを洗い出す方法
  • 抜け漏れの原因は、議論している1マスしか見えていないこと
  • 手順は「軸を特定する→表を作る→マスを埋める」の3ステップ。最初は○×不明で粗く埋める
  • 実務で使う型は業務マトリクス、CRUD表、ステータス×ロール表の3つ
  • ステータス×ロール表には「システム自動」列を必ず入れる

俯瞰思考はロードマップのステップ3「課題を構造化する」で学ぶ技術で、仮説思考と並んで、要件定義の抜け漏れを減らす土台になります。軸の選び方と例題の全体はFDEガイドの「俯瞰思考」で読めます。スライド、ワークシート、演習問題、テストは lecture.iplot.jp で取り組めます。