クリーンアーキテクチャの実装例をISSUEサービスで紹介する

0

2022年03月21日 5:34

ニュースレター用の記事です。ISSUEで実装した例を元にクリーアーキテクチャの説明をしていこうと思います。一気に書き上げるには時間がかかるので徐々に内容を埋めていきます。ぜひ購読ボタンを押していただけると書き上げるモチベーションになるのでよろしくお願いします。

最終的なディレクトリ構造

ISSUEバックエンドでクリーンアーキテクチャを踏襲して実装したディレクトリ構造は以下のようになります。
img

Frameworks & Drivers

一番外側のレイヤーでフレームワークやDB接続など技術的な実装を置く場所になります。
DBで言うとMySQLやFrebase接続部分のhandlerとして実装する部分になります。clientを作成して、実際にDBへの永続化処理を行うためのDIするためなどに使われるケースが多い印象です。

DB
External Interfaces   
UI
Web
Devices

下記はfirestoreへの接続とそのhandlerを作成している実装例になります。
img

Interface Adapters


UsecaseとEntityに便利な形からデータベースやWebなど一番外側のFrameworks & Driversで利用しやすい形に変換します。このレイヤーではMVCモデルを内包した形になります。

Interface Adaptersに登場する概念

Controllersweb等でユーザーが入力した内容をUsecase用に変換して渡します
PresentersUsecaseの処理結果を出力します。
Gatewaysrepositoryなど永続化に関する処理が実装されます。

ControllersからUsecaseに変換したinputを渡す例
img

Gateway
repositoryでusecaseで利用するFirebaseへの永続化処理の例
img

Application Business Rules


Layered Architectureにおけるapplication層です。参考著書によると以下になります。

アプリケーション固有のビジネスルールが含まれており、システム全てのユースケースがカプセル化されて実装されています。
-- Robert C.Martin,角 征典,高木 正弘. Clean Architecture 達人に学ぶソフトウェアの構造と設計 (Japanese Edition) (Kindle の位置No.3161-3165). Kindle 版.

ここでは新たにたくさんの概念 が登場します。クリーンアーキテクチャ完全に理解したのテーブルの説明がわかりやすいので引用しました。

実際のinputとoutputを使った実装例
coming soon...

Enterprise Business Rules

Layered Architectureにおけるドメイン層になります。ここにはビジネスルールがカプセル化されたEntitiesという概念があります。このEntitiesも外部の実装が変更されても影響されないようなものがきます。

domain modelの実装例
img

簡単ではありますが、golangとfirebaseでのクリーンアーキテクチャ実装例をご紹介しました。ここがわからない、もっと詳しく書いて欲しいなどありましたらコメントお待ちしています!

# Firebase
# Go
# GCP
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る