Skip to content

クリーンアーキテクチャの勉強のためのクソコード

License

Notifications You must be signed in to change notification settings

grandcolline/clean-arch-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

clean-arch-demo

クリーンアーキテクチャもどき。お勉強。

Develop

# Install
$ git clone [email protected]:grandcolline/clean-arch-demo.git
$ cd clean-arch-demo

# Serve For Develop
$ docker-compose up -d

# Build
$ docker build -t grandcolline/clean-arch-demo .

API

# 登録
$ curl -X POST "http://localhost:8080/users" \
    -d "{\"name\":\"John\",\"email\":\"[email protected]\"}"

# 確認
$ curl -X GET "http://localhost:8080/users"
$ curl -X GET "http://localhost:8080/users/1"

# 変更
$ curl -X PUT "http://localhost:8080/users/1" \
    -d "{\"name\":\"Johhhn\",\"email\":\"[email protected]\"}"

# 削除
$ curl -X DELETE "http://localhost:8080/users/1"

Note

uncle-bob's CleanArchitecture image

Entities

ビジネスルールの為のデータ構造、もしくはメソッドを持ったオブジェクト。

entity
 └── user.go  // ユーザエンティティ

Use cases

アプリケーション固有のビジネスルール。エンティティとのデータの流れを組み立てる。

usecase
 ├── user.go  // ユーザエンティティに対するインストラクタの実装
 └── util.go  // 複数のインストラクタで共通のポートの定義

Interface Adapters

外部から、ユースケースとエンティティで使われる内部形式にデータを変換、
または内部から外部の機能にもっとも便利な形式に、データを変換するアダプタ。

コントローラはインプットポートとアウトプットポートを組み立てて、インプットポートを実行するだけ。

adapter
 ├── controller              // Controller: InputPortの実行。
 │   ├── form
 │   │   └── user_form.go
 │   └── user_controller.go
 ├── gateway                 // Gateway: RegistoryPortの実装。DBとの接続。
 │   ├── model
 │   │   └── user_model.go
 │   └── user_gateway.go
 ├── logger                  // Logger: LoggerPortの実装。ログの出力。
 │   └── logger.go
 └── presenter               // Presenter: OutputPortの実装。ユーザレスポンス。
     ├── cmn_presenter.go
     └── user_presenter.go

Frameworks & Drivers

フレームワークやツールから構成される。このレイヤーには、多くのコードは書かない。
ただし、ひとつ内側の円と通信するつなぎのコードは、ここに含まれる。

driver
 ├── config
 │   └── config.go
 ├── mysql
 │   └── connection.go
 └── router.go

About

クリーンアーキテクチャの勉強のためのクソコード

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published