blog.bouzuya.net

2016-03-24 boajs/todomvc-boa をつくった

b-o-a

boajs/todomvc-boa をつくった。 Demo は http://boajs.github.io/todomvc-boa/ から確認できる。

boajs/todomvc-boabouzuya/b-o-aTodoMVC

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 関連の書籍を読む予定なのでそれから判断したいと思う。