Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベースとアプリケーションの最適な役割分担

 データベースとアプリケーションの最適な役割分担

「持続可能なROI(投資対効果)」とは、単に安く作ることではなく、変更にかかるコストを長期にわたって低く抑え続ける能力である。

本スライドでは、ソフトウェア開発の現場でしばしば議論となる「データベース(DB)」と「アプリケーション(App)」の責務の境界線について、会計と企業経営の比喩を用いて定義し直します。

多くのレガシーシステムが直面する「硬直化」の正体は、DBという「帳簿」の中に、経営判断である「ビジネスロジック」が埋め込まれてしまったことにあります。本資料では、これらを分離し、それぞれの特性を最大限に活かすアーキテクチャ方針をADR(アーキテクチャ意思決定記録)形式でまとめています。

💡 本スライドの主なトピック
DBは「守りの会計」:物理的整合性の維持と、計算の局所性を活かした足切り

Appは「攻めの経営判断」:仕様パターンを用いた柔軟なルール適用と戦略の記述

不変条件(内部統制)の二段構え:データの資産価値を死守する「物理」と「論理」のガードレール

持続可能なROIの3要素:資産の健全性(Resilience)、経営の機動力(Agility)、資本効率の最適化(Efficiency)

🎯 対象読者
技術的負債の抑制と、ビジネスへの即応性を両立させたいテックリード・アーキテクト

開発現場の意思決定を、ビジネス・会計的な視点から言語化したいエンジニア

「なぜSQLやストアドにロジックを書きすぎてはいけないのか」を論理的に説明したい方

「DBは正確な帳簿として、Appは経営者の頭脳として」。 10年先も利益を生み続ける「構造」への投資について、一つの解法を提示します。

Avatar for HideyukiKitao

HideyukiKitao PRO

February 08, 2026
Tweet

More Decks by HideyukiKitao

Other Decks in Programming

Transcript

  1. 1. はじめに:持続可能なROIとは ソフトウェアにおける 持続可能なROI(投資対効果) とは、「安く作る」ことではありません。 「変更にかかるコストを長期にわたって低く抑え続ける能力」 です。 つまり、持続可能なROI とは コスパ

    「長期的なコストパフォーマンス」 の追求です。 当時の合理性と現状の課題: かつてデータ転送を抑制するためにDB側にロジックを配置したのは合理的でしたが、 現代の複雑な要件下では、これがシステムの「硬直化」を招く要因となります。 解決策: DBを「正確な帳簿」として、アプリケーション(Java,C# etc...)を 「柔軟な経営判断」として切り分けることで、時代の変化に適応し続ける資産価値を維持します。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 2
  2. 2. 概念的枠組み:会計と経営の分離 本方針では、システムを「企業経営」に例えて整理します。 ▪ データベース(SQL / ストアドプロシージャ) 役割:守りの会計(事務処理・コンプライアンス) 正確な記録を維持し、データの整合性という「法律」を守る基盤です。 ▪

    アプリケーション(コード) 以下App 役割:攻めの経営判断(戦略立案・意思決定) 集まった数字を分析し、利益を最大化するための「判断」を下す頭脳です。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 3
  3. 3. データベースの責務:正確な帳簿管理 DBは、データの 「物理的整合性の維持」 と 「効率的な整理」 に専念します。 1. 一意性のチェック(領収書の二重計上防止) ユニークキー制約等を用い、データの重複を物理層で遮断します。

    これはビジネスルール以前の「不正防止」として、DBが厳格に担当すべき領域です。 2. 物理的フィルタリング(伝票の足切り・事前整理) 数百万件のデータから、判断に必要な分だけを抽出します。 経営者(App)が全ての伝票を確認するのは非効率なため、 計算リソースに長けたDB側で「対象範囲の限定」を行います。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 4
  4. 4. App(コード)の責務:戦略的な意思決定 Appは、抽出されたデータに対し、 「動的なビジネスルールの適用」 を行います。 1. 仕様パターンの活用(独自の経営指標) 「どのような状態が有効か」という判定ロジックは、市場環境に応じて変化します。 これをApp側で定義することで、DB構造を壊さずに戦略だけを更新できます。 2.

    詳細なルール適用(投資判断とリソース配分) 在庫の引き当て順序など、複雑な分岐を伴う判断。 可読性とテスト容易性が高いApp側で記述することで、 ルールの透明性を確保し、改修時のリスクを最小化します。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 5
  5. 5. データの資産価値を守る「不変条件(内部統制)」 持続可能なROIを支える基盤は、データの整合性が常に保たれていることです。 決して破られてはならないルール(不変条件)を、二段構えで死守します。 ▪ DB:物理的不変条件(会計基準・法令遵守) 役割: 「記帳そのものが成立するか」というルール。 例: -

    伝票番号は重複してはならない(一意性制約) 存在しない顧客の売上は立てられない(参照整合性) 価値: 不正なデータ混入を入り口で防ぎ、 「データの清浄度」 を維持します。 ▪ App:論理的不変条件(社内規定・経営方針) 役割: 「ビジネスとして成立するか」という高度な判断ルール。 例: - 在庫がマイナスになる出荷制限 - 承認済みの伝票は、権限なしに修正不可 価値: 複雑な判定をコード側に集約し 「経営判断の正当性」 をプログラムで担保します。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 6
  6. 6. なぜこの分離がROIを高めるのか この役割分担は、将来的な 「技術的負債の利息」 を減らします。 保守性の向上: ビジネスルールがApp(コード)に集約されているため、 仕様変更の影響範囲を特定しやすく、自動テストによる品質担保が可能です。 進化可能性の確保: ロジックが特定のDB製品の機能(ストアドの独自構文等)に依存しないため、

    将来的なプラットフォーム移行やクラウド化への障壁が下がります。 認知負荷の低減: 「帳簿はDB、ルールはコード」という明確な線引きにより、 開発者が迷う時間を削減し、生産性を維持します。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 7
  7. ① 資産の健全性(Resilience) 不変条件(内部統制)の死守により、データの汚染という「倒産リスク」を排除します。 信頼性の高いデータは、将来のあらゆるビジネス展開を支える 「自己資本」 となります。 ② 経営の機動力(Agility) 帳簿(DB)と判断(App)を分離し、ロジックの 「流動性」

    を高めます。 戦略変更に伴う修正コストを最小化し、市場の変化という外圧に対する「適応力」を維持します。 ③ 資本効率の最適化(Efficiency) 「DBで絞り、Appで判定する」という計算配置により、ハードウェア資源を効率的に運用します。 技術的負債の利息(改修工数) を削減し、本質的な価値創造にリソースを集中させます。 アーキテクチャ意思決定記録:計算責務の分離による持続的なROIの実現 © 2026 北尾英之 (@kitaohx) 9