前提
-
アプリ
- フレームワーク: Laravel
- アーキテクチャ: DDD
-
BIツール
- SQL ※SQLは同内容のものをリポジトリで管理
テーブルへのアクセスは、基本的にインフラ層のEloquentで行っている。
Eloquentは、EloquentRepositoryから呼び出される。
Repositoryでは、Schema::connectionなどを使ってクエリを発行している可能性がある
調査方針
- テーブルへのアクセス箇所を特定
- 1を使用している処理を特定
- 2を使用している機能を特定
調査方法
1はテーブル名を全文検索して特定する。
クラス名でもある程度特定できる
2は、1に対して全参照先検索(※)をして特定する。
※Windows版のVSCodeなら、拡張機能: PHP Intelephense をインストールしておけば、クラス名や関数名にカーソルオン→右クリックから「Find All Reference」を選択 or ショートカット「Shift+Alt+F12」によって実行できる
調査結果のまとめ方案
色々なまとめ方が考えられるが、
こんな感じにシーケンス図としてまとめるのが個人的に見やすいと思う
例)planテーブルから、利用プラン登録機能を辿った結果をまとめる場合
※調査結果に基づいて下記の分類子名を変更することでほぼ流用できる。処理の呼び出しフローが違う場合は適宜調整する
plantuml
title 利用プラン登録
participant 利用プラン登録機能 as feature #99FF99
box "Application" #LightBlue
participant api [
=利用プラン登録API
---
""{post} /plan""
]
participant controller << (C,#ADD1B2) Controller >>[
=PlanContrtoller
---
""create""
]
participant case << (U,#ADD1B2) UseCase >>[
=CreatePlan
---
__invoke
]
end box
box "Domain" #LightBlue
participant rule << (B,#ADD1B2) BusinessRule >>[
=CreatePlanRule
---
__invoke
]
end box
box "Infrastructure" #LightBlue
participant repository << (R,#ADD1B2) Repository >>[
=PlanPatternRepository
---
search
]
participant erepository << (R,#ADD1B2) Repository >>[
=EloquentPlanRepository
---
create
]
participant EloquentPlan as eloquent << (E,#ADD1B2) Eloquent >>
end box
database master.plans as tbl #99FF99
feature -> api
api -> controller
controller -> case
case -> rule
rule -> repository
repository -> tbl
rule -> erepository
erepository -> eloquent
eloquent -> tbl
note across:レスポンスのシーケンスは省略