🦧

Clean ArchitectureにおけるRepositoryとGateway

2022/01/09に公開約1,100字

主旨

Clean Architectureに登場するユースケースと外界とのアダプターとなるRepositoryとDatewayという概念について、実際に使う場面になった時に、どちらをレイヤ名として使用するのが正しいのか?が気になったので、備忘録としてまとめておこうと思いました。
(個人的解釈なので、誤りがあればご指摘いただけると嬉しいです!)

結論

結局のところ、「ユースケースと外界とのアダプターとなる責務を果たしている」なら、どちらでも良さそうという結論に至りました(雑ですみません)

そもそも気になった経緯

Clean Architectureといえば以下の図が有名かと思います。

緑色の部分にあるInterface AdapterにはGatewayと書かれていますが、実際に開発する時やWebでサンプルコードを見たりすると、Repositoryという命名で主にDBとの接続を責務とするレイヤが設けられている印象がありました。
しかしながら、なぜGatewayではなくRepositoryという命名にしているのか?
Interface Adapterには「外界とのアダプター」という責務があるので、対象がDBだけとは限らないのに「Repository = DBとの接続を責務とするレイヤ」というデファクトスタンダードみたいになってるのはなぜだろう?という気になりがきっかけでした。

少し古い記事ですが、「Database GatewayをRepositoryって呼ぶのがポピュラーだから」のような意見も書かれていたりました。(何でRepositoryって呼ぶようになったのかはわからないけど…)

https://discourse.world/h/2017/08/11/Misconceptions-Clean-Architecture

参考情報

https://discourse.world/h/2017/08/11/Misconceptions-Clean-Architecture
https://learning-notes.mistermicheels.com/architecture-design/reference-architectures/clean-architecture/
https://github.com/madetech/clean-architecture/blob/master/gateway.md

Discussion

ログインするとコメントできます