ブログでもいろいろ解説しています。
http://little-hands.hatenablog.com/entry/top
ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。
---
公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています)
bounded context
A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.
境界付けられたコンテキスト
特定のモデルを定義・適用する境界を明示的に示したもの。
代表的な境界の例は、サブシステムやチームなど。
まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界付けられたコンテキストは、2つの観点から解説が必要でしょう。
・概念としての境界付けられたコンテキスト
・境界付けられたコンテキストをどう実装に落としこむか
今回のスライドでは、概念の方の説明をしたいと思います。
ブログでもいろいろ解説しています。
http://little-hands.hatenablog.com/entry/top
ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。
---
公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています)
bounded context
A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.
境界付けられたコンテキスト
特定のモデルを定義・適用する境界を明示的に示したもの。
代表的な境界の例は、サブシステムやチームなど。
まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界付けられたコンテキストは、2つの観点から解説が必要でしょう。
・概念としての境界付けられたコンテキスト
・境界付けられたコンテキストをどう実装に落としこむか
今回のスライドでは、概念の方の説明をしたいと思います。
This slide describes an internal community on software engineering at Hitachi corporate group. Originally revealed at XP祭り2019 - conference on eXtreme Programming in Japan.
12. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
fun getHello():String{
return "Hello"
}
13. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Test
fun getHello_Helloを返す() {
val result = getHello()
assertEquals("Hello", result)
}
23. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
失敗するテストを書く
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
24. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
テストを通すコードを書く
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
25. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
リファクタリングする
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
87. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
class HogeViewModel(
fooRepository: FooRepository,
baaService: BaaService
) : ViewModel() {
}
HogeViewModel.kt
88. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
val subject = HogeMenuViewModel(
fooRepositoryMock,
baaServiceMock)
HogeViewModelTest.kt
89. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
View以外が
Androidに依存しすぎてないか
Android TDD
90. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1.ロジックとUIの分離
2.依存を注入する
3.Androidへの依存
Android TDD
91. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
Q.
LiveDataが絡んできたら?
Android TDD
92. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@get:Rule
var taskExecutorRule = InstantTaskExecutorRule()
93. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Mock
lateinit var helloObserverMock: Observer<String>
94. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Test
fun getHello_helloを通知する() {
// arrange
subjectViewModel.hogeLiveData.observeForever(helloObservableMock)
// act
subjectViewModel.getHello()
// assert
verify(hogeObservableMock).onChanged("hello")
}
95. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
Q.
RxJavaが絡んできたら?
Android TDD
96. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Before
fun setUp() {
RxAndroidPlugins.setMainThreadSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
}
97. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@After
fun tearDown() {
RxAndroidPlugins.reset()
RxJavaPlugins.reset()
}