
今回のプロジェクトも要件定義で合意したはずなのに、開発に入ってから『これじゃ動かない』って仕様が変わってしまいました。ヒアリングは頑張ったつもりなのですが、何が足りなかったんでしょうか。



ヒアリングを頑張った分、思い通りに進まないと悔しいですよね。実は、言葉だけで合意したつもりになっても、人によって解釈が少しずつズレてしまうことがあるんですよ。



解釈のズレをなくすには、どうすればいいんでしょうか。



私がよく使っているのが、フロー図で物理的に整理する方法です。混沌とした状況をみんなで眺めて、共通認識を作るためのコツを一緒に見ていきましょう。


要件定義書を一生懸命書いた、打ち合わせも何度も重ねた。それなのに、開発に入ると隠れた仕様が次々と見つかって、チーム全員で頭を抱えてしまう。エンジニアであれば、そんな経験が一度はあるのではないでしょうか。
筆者自身もこれまで長い間、現場でこの上流工程の壁にぶつかっては、何度も失敗を繰り返してきました。丁寧に準備したはずなのに、なぜか起きてしまう手戻り。その大きな原因の一つは、要件が言葉としてはまとまっていても、具体的にどう動くかが全員の頭の中で一致していないことにあります。
本記事では、筆者がこれまでの現場で悩みながら見出してきた、現場を少しでも楽にするための業務フローの描き方をご紹介します。明日からの仕事で、あ、これなら自分でも試せそうと思っていただけるような具体的なヒントになれば幸いです。
炎上の背景:なぜ「わかったつもり」が生まれるのか
要件定義でのわかったつもりは、誰のせいでもなく、構造的に起きてしまうものです。顧客は業務のプロであり、開発側はシステムのプロです。使っている言葉が同じでも、背景にあるイメージが違うことは珍しくありません。
特に最近では、オフショア開発やAIを活用したスピード開発が増え、わずかな認識のズレが後々大きな工数ロスとして返ってくることが多くなっています。
言った・言わないの議論で疲弊するのではなく、関係者全員がこの図の通りに動くんだねと安心して指差し確認できるような、シンプルな設計図が現場の助けになります。
詳細解説:現場が混乱する「失敗パターン」の分析
せっかく時間をかけてフロー図を描いても、なぜか現場が混乱してしまうことがあります。筆者が過去の失敗から学んだ、よくあるパターンとその影響範囲を整理しました。
| 失敗の事象 | 発生の背景・条件 | 影響範囲 | 根本的な原因 |
|---|---|---|---|
| ⚠️ 異常系ルートの欠落 | 正常な動作(晴れの日)のみをヒアリングし、例外ケースを想定しなかった場合 | 実装時の仕様確認が激増し、開発がストップする。エラーハンドリングの不備によるバグ。 | 「No」の分岐を描く習慣がフロー図に欠けていた。 |
| 👥 主語(担当)の混在 | 「メール送信」など、システムがやるか人間がやるか曖昧な箱が置かれた場合 | リレーのバトンを落とすように、誰も実行しないタスクが発生する。リリース後の運用事故。 | スイムレーン(役割ごとの区切り)を使わず、一つの線上に全てを描いた。 |
| 🔍 データの「状態」が不明 | 処理の矢印に名前がなく、データが今どんなステータスか定義されていない場合 | 後続処理で「未決済のデータ」を誤って処理してしまうなどのデータ不整合が発生する。 | 矢印(遷移)を単なる接続線として捉え、データ変化を意識しなかった。 |
| 📌 起動トリガーの欠如 | 処理が「いつ」「何に反応して」動き出すかのスイッチが描かれていない場合 | バッチ実行なのかリアルタイム実行なのかの設計ミスが起き、パフォーマンス低下を招く。 | 「ユーザーのアクション」や「時間」といった開始条件を明文化しなかった。 |
| ⚠️ フロー情報の過密 | 1枚の図に全ての機能を詰め込み、A3サイズで印刷しても読めない巨大な図になった場合 | レビューアが矛盾点を見落とし、重大な設計欠陥がそのまま実装フェーズへ流出する。 | 「ワンスクリーン・一機能」の原則を無視し、全体の網羅性だけを優先した。 |
| ❓ リバースレビューの欠如 | 作成者のみが一方的に説明し、開発担当や顧客に再説明を求めなかった場合 | 開発後に「そんなつもりではなかった」という致命的な解釈のズレが発覚する。 | 「図があるから伝わっているはず」という過信による双方向コミュニケーション不足。 |
解決策・実践ノウハウ:手戻りを減らす6つの具体的ステップ
現場で手戻りを減らすために、筆者が大切にしている業務フローの描き方と実践的なアクションをまとめました。以下のステップを意識することで、共通認識の精度は劇的に向上します。
1.スイムレーン(境界線)で役割を物理的に分ける
作成時に「ユーザー」「画面(UI)」「サーバー/DB」の3つのレーンを必ず引いてください。線を描くことで、矢印が境界を越える瞬間に「ここで通信(API呼出)が発生する」という物理的な制約が可視化され、エンジニアにとって実装イメージが湧きやすい図になります。
2.全ての「ひし形(分岐)」から必ず「いいえ」を出す
分岐条件を描く際は、正常ルートと同じ熱量で「失敗ルート」を描き込んでください。「もしデータがなかったら?」「通信がタイムアウトしたら?」というNoの矢印を辿ることで、エラー画面の必要性やリカバリ手順が早い段階で明確になります。
3.矢印の上に「[データの状態]」をそっと書き添える
処理と処理を繋ぐ矢印に、[未決済] [決済中] [完了] といった状態名を付与します。名前をつけにくい場所は、仕様がまだ曖昧な証拠です。そこを重点的にヒアリングすることで、DB設計時のステータス定義ミスを防ぐことができます。
4.最初のボックスに「起動トリガー」を明記する
フローの開始点には、必ず「〇〇ボタンを押した時」「毎日深夜2時」といった具体的なトリガーを書きます。いつ動くのかを一つに決めるだけで、エンジニアはどのイベントハンドラにコードを書けばいいか迷わなくなり、手戻りが減ります。


5.A3用紙1枚に収まる単位で「図を分割」する
一つのフローが巨大になりそうな時は、サブプロセスとして別紙に切り出してください。人間が一度に理解できる情報量には限界があります。一画面で完結するサイズに保つことで、レビューの質が高まり、矛盾点に気づきやすくなります。
6.開発担当者に「この図の動き」を逆説明してもらう
フロー図が完成したら、開発担当者に「この図を見て、プログラムがどう動くか説明してもらえますか?」と依頼してください。作成者ではなく、受け取り側の言葉で説明してもらうことで、潜在的な解釈のズレを実装前に100%抽出できます。
まとめ
なぜ現場は炎上を繰り返してしまうのか。それはきっと、誰も悪くなくて、ただ言葉だけでは伝えきれない情報の隙間があるからだと思っています。
現場で試行錯誤して感じたのは、正しく描こうとするよりも、みんなで同じ景色を見ようと描くフローの方が、ずっと現場を助けてくれるということです。
まずは白い紙に、1本の線と1つのボックスを描くところから始めてみませんか。そこに見える小さな隙間をみんなで埋めていくことが、きっと炎上を防ぐ第一歩になります。
Skilligenceは、現場で成果を出すための研修・顧問・教材を提供する実務支援ブランドです。
・研修:要件定義・業務設計・LLM活用などを体系的に学べる実践講座
・顧問:プロジェクト進行や開発体制の課題を継続的にサポート
・教材:独学でも現場スキルを身につけられる学習コンテンツ
実務で使える知識と仕組みづくりを、学びから伴走まで一貫して支援しています。
▶ IT顧問サービスを見る
▶ 研修一覧を見る
▶ 教材一覧を見る(Starter・Advanced公開中)









