15 min/d

ぼうずやのにっき

bouzuya/rally-rxjs の stamp-rally list をつくった

2016-02-21 につくった bouzuya/rally-rxjs の stamp-rally list のことを書く。

rally-rxjs は bouzuya/vdom-rxjs-ssr をより実践的な形にしようという取り組み。bouzuya/virtual-dom-ssrbouzuya/vdom-rxjs-ssrbouzuya/rally-rxjs と進めてきたものだ。rally-rxjs は RALLY の管理側機能 を部分的に実装している。今回は sign-in と stamp-rally list をつくった。

rally-rxjs の実装について改めて書いておく。Node.js / TypeScript / Babel / Browserify の上に構築している。Framework 相当の部分は virtual-dom / rxjs / express / path-to-regexp を使っている。App 相当の部分は、整理されていないせいで醜いが、 RxJS を知っていれば難しくない感じだ。

今回の気づきは Subject<Action>Action を投げる処理が頻発していることだ。現状の基本戦略は Observable<Action> を変換した Observable<VDOM> を Virtual DOM で流し込むというもの。ただ実際に書いてみると、ある Action を引き金に次の Action を誘発したいことがままある。その結果が Subject<Action>Observable<Action>merge しておき、そこに subject.next(action) で投げ込むというもの。副作用だ。醜い。

次回 rally-rxjs から発展させるときは Framework 側に Subject<Action> を用意するのが良いと思っている。また、そこに投げ込む方法を用意するのではなく、App 側は Action の変換を主にすると良い気がしている。type app = (action$: Observable<Action>) => Observable<Action>; な感じ。Framework 側で判断して再度 Subject<Action> に投げ込む形。ぐるぐるー。