13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「複雑な業務ロジック」が読みづらいのは「記述が分散」しているから

Last updated at Posted at 2025-09-19

背景

基幹システム移行でいわゆる「複雑な業務ロジック」を移行する場面です。
最近「ドメイン駆動設計をはじめよう」を読んだため、その手法を意識して移行を行います。

言葉のイメージ

「複雑な業務ロジック」という言葉がありますが
これは「業務ロジックが複雑」なイメージを持っていました
しかし今回移行したシステムで、実際に複雑なのはその「前処理」でした。

「入力に対する結果が予測しづらい」システム

今回の移行対象は、業務ロジックとしては教科書通りのシンプルなものでした。
しかし全体として見通しが悪く運用で苦労していました。
いわゆる「入力に対する結果が予測しづらい」システムです

また、レガシーシステムとの連携があり、そこでも「値の加工」「区分値の変換」が記述されていました。
つまり複数の層に処理が分散している状態です。

これが見通しの悪さにつながっていました。

どのように対処したか

一連の処理を整理して再構成するのは苦労しましたが1
最終的に、前述の「教科書的な部分」と「前処理」の構成に落ち着きました。

教科書的な部分」=業務ロジックまたはドメインロジック
前処理」=モデル変換装置または腐敗防止層2

ですね。

(※最近「ドメイン駆動設計をはじめよう」を読んだため、そちらの言葉をつかっています)

読みづらさの源泉

整理するのは苦労しましたが、そのコストに見合う成果はありました。

業務ロジックで使う「」に関連する処理は「モデル変換装置だけ見ればよい」状況ができたのです。
以前は「」に関連する処理を読み解くため、システム全体を渡り歩いて把握する必要がありました。
しかし今後は、モデル変換装置まで読めばよいのです。

このように以前のシステムが「読みづらい」のは「関連処理の記述が分散していた」ことに根本的な原因がありました。

心理的抵抗

しかし、その変更の過程は簡単でなかった点を補足します。

記述の分散を避けるため「モデル変換装置」以外ではデータを加工しないよう徹底する必要があります。

しかし、この作業は「心理的抵抗」が大きく苦労しました。

DBやSQLの扱いに慣れているので「データの近くで空白除去や文字列の加工すると効率が良い」という感覚です。

慣れたやり方への誘惑が強いですね。

コード量の観点から

出来上がったシステムは、全体のコード量も驚くほど削減されました。

しかし「業務ロジック」のコード量よりも「モデル変換装置」コード量の方が多いという結果だったのは特徴的でした。

このコード量の差が「データを整える部分に複雑がある」と語っているように感じました。

話には聞くパターンですが、実際に目にすると違和感がすごいです。
一番重要な「業務ロジック」のほうが簡潔に記述されているのですから。

例えるなら「料理を作るのは時間がかかかるのに、食べるのは一瞬」といった感覚でしょうか。

追記:「チャーハン作りで、プライパンで仕上げるのは一瞬で、仕込みのほうが時間がかかる様子」の例のほうが適切かも

  1. 詳細は省略しますが「関心の分離」「単一責務の原則」といった手法に沿って整理していきました。

  2. モデル変換装置(Anti-Corruption Layer)外部システムとの整合性を保つための変換処理を集約する層です

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?