タラバガニー設計局stalins.clubNOTE/notes/vertical-slice

Vertical SliceはLayerではなくUse Caseの変更軸に沿ってコードをまとめる

Vertical Slice Architectureは、Controller / Service / Repositoryのような横断Layerより、1つのrequest/use caseを成立させるコードを近くへ置くことを優先する。Jimmy Bogardは2018年の説明で、各requestをdistinct use caseとして扱い、slice間のcouplingを減らしslice内のcouplingを高める方向を示した。

Application Operationを中心語彙にする設計とは相性がよい。例えば ArchiveProject sliceの中にinput validation、authorization coordination、domain invocation、必要なdata accessをまとめれば、変更箇所を局所化しやすい。

features/
  archive_project/
    operation
    input
    authorization
    persistence glue
    tests

この利点は、Clean Architecture的に「必ずController→UseCase→Repository interface→Repository impl」と横断させるより、単純なuse caseではファイル間Navigationを減らせることにある。2026年にはBogard自身もAI-assisted developmentとの組み合わせで、couplingとreview cycleを短くする観点を議論している。

ただしVertical Sliceは「全コードをfeature folderへコピーする」ことではない。Domain invariantや本当に共有されるmechanismまで複製すると一貫性を失う。またSliceはBounded ContextやModuleと同義でもない。個々のOperationより大きなownership boundaryは別に必要になりうる。

そのため中規模Applicationでは、Modular Monolith + Vertical SliceはOwnership境界と変更単位を別スケールで持つ のように Moduleを外側のownership boundary、Vertical SliceをModule内の変更単位 とする組み合わせが考えやすい。

出典

▸ ノート一覧に戻る