前回の記事では、DXやAI導入がうまくいかない背景として、システムを導入する前に
多くの企業では、課題が見つかると
実際の現場では、
では、こうした業務を構造として整理する視点は、どこから生まれるのでしょうか。業務部門の担当者は、日々の仕事を
実は、ここにエンジニアの思考が活きる余地があります。業務設計の主役はあくまで業務側ですが、エンジニアが日常的に行っている
1. エンジニアの「構造化能力」は最強の武器
「点」で見る業務側と「線と面」で見るエンジニア側
業務側では、業務を
このような状態では、業務改善を行おうとしても、どうしても局所的な話になりがちです。特定の作業を効率化したり、システムで置き換えたりしても、その前後の工程との関係が整理されていないため、全体としてはかえって分かりにくくなることもあります。
一方、エンジニアはシステムを設計する際、必ずデータの流れという
業務を点でしか見ていない状態では、改善を積み重ねても全体は良くなりません。むしろ、部分的な改善が別の場所の負荷を増やし、かえって複雑さが増すこともあります。一方、線と面で捉え直すことで、ムダや矛盾、重複、抜け漏れが自然と浮かび上がってきます。この視座の違いこそが、エンジニアの思考が業務設計に活かせる大きな理由です。
※ ここで述べていることは優劣の話ではなく、業務を見る際の
「モジュール化」と「責任分界点」の思考
業務がスパゲッティ化する大きな原因の1つは、誰が何に責任を持つのかが曖昧なまま運用されていることです。特定の人に業務が集中し、
こうした状況は、担当者の頑張りによって一時的に支えられていることが多く、問題が見えにくくなりがちです。しかし、その人が異動したり退職したりした途端、業務が回らなくなる。このリスクは、どの組織にも潜んでいます。
エンジニアはこうした状況を避けるために、
業務を機能ごとに切り分け、どこまでが誰の責任なのかを明確にする。必要以上に密結合になっている部分をほぐし、疎結合な状態を作る。この整理が進むだけで、属人化や引き継ぎの問題は大きく改善されます。業務が
2. 実は同じ方向を向いているドメイン駆動設計と業務設計
前章で述べた構造化の思考と強く共鳴するフレームワークが、ドメイン駆動設計
DDDが重視するのは、技術的に正しい設計よりも、業務の実態を正しくとらえることです。業務を理解しないまま作られたシステムは、使いにくく、例外処理が増え、やがて複雑化していきます。これは、エンジニアであれば誰もが一度は経験していることでしょう。
共通言語を作る 〜 ユビキタス言語の威力 〜
業務の現場では、同じ言葉が部署ごとに微妙に違う意味で使われていることが少なくありません。たとえば
こうした状態のままシステムを作れば、どこかで必ず不整合が生まれます。仕様書の行間を埋めるために、エンジニアが暗黙の判断を積み重ねることになり、結果としてバグや手戻り、想定外の運用が増えていきます。トラブルが起きたときに
DDDにおけるユビキタス言語とは、業務上の言葉の意味を定義し、関係者全員が同じ前提で会話できるようにするための考え方です。これはシステム設計を円滑にするためだけでなく、業務そのものを整理し、共通理解を作るうえでも欠かせない取り組みです。業務側とエンジニアが同じ言葉で話せるようになることで、議論の質そのものが変わっていきます。
組織の壁を越える 〜 境界づけられたコンテキスト 〜
前回触れたコンウェイの法則が示す通り、組織の構造は業務やシステムにそのまま反映されます。部門ごとに最適化された業務は、それぞれの内部ではうまく回っているように見えても、全体として見ると分断され、複雑さを増していきます。部門間の調整が増え、
この複雑さを整理するための考え方が、境界づけられたコンテキストです。どこまでが販売の文脈で、どこからが請求の文脈なのか。どの範囲で用語やルールを共有し、どこから先は別の前提で動くのか。境界線を引くことで、複雑性を閉じ込め、変更の影響範囲を限定できます。
ここまで見てきたように、DDDで語られるユビキタス言語やコンテキストの考え方は、単なる設計技法ではありません。業務をどう分け、どこに線を引き、どの単位で責任を持つのかという、業務設計そのものに深く関わる視点です。
DDDの知見を業務設計の場でどう活かすか
では、こうしたDDDの考え方を踏まえたとき、エンジニアは業務設計の場で何を意識すればよいのでしょうか。ここからは、視点を一段引き上げて考えてみましょう。ここで重要なのは、エンジニアが業務設計の主役になることではありません。あくまで主役は業務側であり、エンジニアはその議論を前に進めるための触媒として関わることが求められます。
たとえば、業務の議論が個別の作業や例外対応の話に終始しているときに、
エンジニアが業務設計に関わる価値は、答えを出すことではなく、構造を浮かび上がらせることにあります。業務側が日々の経験として持っている知識を言葉と構造に変換し、全員が共有できる形に整える。そのプロセスにエンジニアが参加することで、業務要件が構造化され、明確になっていきます。
このように考えると、DDDは
3.「実装者」から「アーキテクト」へ
コードを書く前の「上流工程」にこそ価値がある
AIによるコーディング支援が急速に進化する中で、エンジニアの価値は
現場によって状況はさまざまですが、エンジニアが仕様書や要件定義書を起点に開発を進めるケースは少なくありません。その中には、業務の背景や本来解決したい課題まで十分に共有されないまま実装に入らざるを得ない場面もあります。その結果、
ここで重要になるのが、コードを書く前の段階、つまり業務そのものを見直す視点です。これは本記事で最も伝えたいポイントの1つでもあります。言われた通りの仕様を実装するのではなく、その仕様が生まれた業務プロセスを分解し、整理し、再設計できないかを考える。これは、実装前に行う業務のリファクタリングとも言えます。業務が整理されていなければ、どれだけきれいなコードを書いても、成果にはつながりません。
業務設計を実践するためには、会議や調整も多くなり、必ずしもスマートには進みません。利害関係が絡み、抽象的な議論が続くこともあります。しかし、構造を描き、境界を引き、複雑さを制御するという点では、やっていることはアーキテクチャ設計と本質的に同じです。対象がコードか業務かの違いでしかありません。エンジニアが培ってきた思考は、ここでも十分に活かすことができます。
『業務設計の教科書』を共通言語にする
ただ、多くの場合、業務側にいきなり
拙著
本書を通して業務部門と情報システム部門、あるいはエンジニアと非エンジニアが、
まとめ
業務設計は、エンジニアにとって未知の領域ではありません。本記事で見てきたように、これまで培ってきた構造化思考や抽象化のスキルの延長線上にあります。業務に踏み込むことは、専門外に手を出すことではなく、自分の得意領域を広げることでもあります。
DXやAI導入に注目が集まる中で、テクノロジーやシステムが重要であることは言うまでもありません。そのうえで、それらを最終的な成果につなげるためには、土台となる業務の構造が整理されていることが欠かせません。だからこそ今、
『業務設計の教科書』