2016-03-24 boajs/todomvc-boa をつくった
boajs/todomvc-boa をつくった。 Demo は http://boajs.github.io/todomvc-boa/ から確認できる。
boajs/todomvc-boa は bouzuya/b-o-a の TodoMVC 。
boajs/todomvc-boa の目的は次の 2 つだ。
- b-o-a の例を示すこと
- b-o-a の実用性を検証すること
boajs/todomvc-boa の実装は TypeScript + b-o-a@0.6.2 。今回はあえて分割せず 1 file にまとめた。500 loc 以内なので許容範囲だと思う。分割したほうが分かりやすいとは思うが、またもうすこし規模の大きい例をつくる際にする。
実装の微妙な点は 2 つ。ひとつは TodoMVC が求めている onhashchange での routing 向けの handler 。もうひとつは localStorage での persistence を向けの handler 。強引に実装しているので挙動が怪しい。
実用性の検証の結果だが「意外と書ける」という印象。
rally-rxjs ほかでの経験が活きており、構成に迷うことはほとんどなかった。どこに何を書くべきかが明確なのは良いことだ。
また 500 loc 程度では Observable による event flow の整理の恩恵を感じられないように感じた。上述の通りもうすこし規模の大きい例で検証したい。
一方で Action の変換の部分では、既に破綻しつつあった。どこに書くべきかでは迷わないが、「その他」分類のような、無秩序な場所になっている。規模が大きくなれば間違いなく破綻すると思う。
Action の変換は Service としてまとめるなどの工夫が必要だと思う。このあたりは判断に迷っている。たとえば actions/views/xxx
から actions/props/xxx
への変換の責務はどこにあるのだろう。分かりやすい指針を示せないとまずい。DDD 関連の書籍を読む予定なのでそれから判断したいと思う。