ページ

2017年6月4日日曜日

Ports and Adapters (1)

Ports and Adaptersについて、自分なりの考え方を書いていこうと思います。

オリジナルのもとのは違う部分があるかもしれませんので、オリジナルのものが知りたい場合は、オリジナルのほうを参照してみてください。

Ports and Adaptersとはどういうものかというと、複数の問題領域(ドメイン)がある場合に、それらをどのように参照するのかを表したものになります。

例えば、GUIから内容を入力し、ビジネスロジックを実行し、データベースに内容を保存するようなアプリケーションを考えてみます。この場合、問題領域(ドメイン)として、以下のような3つを考えたとします。

Presentation DomainやPersistence Domainは、DDDではテクニカルドメインというように呼ばれたりしています。

これらのドメインを参照する方法としては、以下のようにしたり、

以下のようにしたりが考えられます。

上記のどちらも、ドメインを直接参照していますが、Ports and Adaptersでは、直接参照するのではなく、次のようにして参照します。

まず、それぞれのドメインについて、他のドメインに公開したり、他のドメインの参照が必要な部分をPortとして定義します。前者をPrimary port、後者をSecondary portと呼びます。

次に、各PortをAdapterが参照し、ドメイン同士を関連付けるようにします。Adapterでは、各ドメインのモデルの変換を行い、Port同士をつなぐ役割を果たします。

このようにすることによって、各ドメインが密に関連するのではなく、独立して存在することになりますので、拡張がしやすくなります。例えば、ビジネスドメインをWebAPI経由で呼び出すようにしたい場合、Adapterを付け替えるだけで対応することができます。また、各ドメインが独立しているため、ユニットテストを行う場合も他のドメインの影響を受けずに行うことができます。

次回は、もう少し具体的にPorts and Adaptersを適用してみたいと思います。

2017年5月28日日曜日

久しぶりの更新

体調を壊して以来、ほとんど更新をしていませんでしたが、また少しずつ更新していこうと思います。

一度体調を壊すと、完全に回復するのには時間がかかり、心身ともに健康であるということの大切さを改めて感じたような気がしました。

昨年より、ライブラリを公開し始めましたので、その紹介をしていきたいと思います。

まずは、今まで投稿していたJavaFXについての内容をライブラリとして以下に公開しました。

hestiafx

最近では、Javaについてはほとんど使用していませんので、メンテナンスもしておらず、公開する必要がなかったような気もしますが、以前のJavaFXについての記事に興味を持たれた場合は、チェックしてみてください。

Javaを使用しなくなった代わりに、.NETを使用するようになり、.NETに関するライブラリを公開しました。

まずは、WPFに関するライブラリになります。

WPF MVC

WPFを使用してアプリケーションを作成する場合は、MVVMパターンで作成される場合が多いのですが、MVCパターンを使用して作成する場合の考え方とそのためのライブラリを作成してみました。一般的なMVCパターンと少し役割が異なっているところが出てきますが、興味があればチェックしてみてください。NuGetからインストール可能です。

次に、UWPに関しても、上記と同様のライブラリを作成してみました。

UWP MVC

上記のWPF MVCのUWP版で、内容的には同じですが、興味があればチェックしてみてください。NuGetからインストール可能です。

最後に、テスティングフレームワークを作成してみました。

Carna

テスティングフレームワークについては、すでにいろいろと存在しますので、今更新たに作成する必要はないのかもしれませんが、すでに存在するものを使ってみて、コンテキストを細かく分けたり、各ステップを自然言語で記述してレポートに出力したり等、自分が利用しやすいものがほしいと思い作成してみました。興味があればチェックしてみてください。NuGetからインストール可能です。

それぞれのライブラリの詳細について、今後投稿していこうかと思っています。