GitHubAlminの0.10.0をリリースしました。almin/alminAlminはいわゆるFluxライブラリ的なものですが、ドメイン駆動設計(DDD)を行うにあたって既存のReduxやFluxでは上手くレイヤリングがしにくい問題があったため作成しました。この辺の経緯については以前スライドやドキュメントにまとめてあるので、以下を参照してください。0.10.0ではコードベースがTypeScript化されました。殆どの作業を@saneyukiさんがやってくれました。以下のPRを見ると既存のJavaScriptプロジェクトを徐々にTypeScript化する流れが見れるので面白いと思います。almin/alminこれにより、d.tsがnpmパッケージに同梱されるようになったので、TypeScriptからも扱いやすくなりました。filesの扱いが改善されました。almin/alminサンプルプロジェクトにFlowで書いたTodoMVCがあるので、Flowと一緒に使いたい人は参照してみてください。Changeとして、AlminのUseCase(Actionみたいなものです)やStoreの変更などのイベントハンドラの形式が統一的なものへと変更されました。ハンドラにmetaオブジェクトが追加され、そのイベントがどこ(useCase)でいつ(timestamp)起きたのかというメタ情報を取れるようになりました。almin/alminこの辺は普通の人にはあんまり関係なくてロガーのようなものを作っている場合に関係してきます。Alminではalmin-loggerというコンソールにUseCaseの実行結果やStoreの変化をログとして吐くライブラリが用意されています。GIPHYmetaオブジェクトの導入によってこの辺のログ周りがより正確に出るように改善されました。AlminではParentUseCaseの中でChildUseCaseを実行するといったネストしたUseCaseを扱えるような仕組みも持っています。Almin.jsmetaオブジェクトの導入で親子関係のあるUseCaseも、その関係がログとして出せるようになっています。自分としては開発中のログは結構重視しているのでこの辺は充実させていきたいです。(実際のデバッグでかなり便利になるため)最近はredux-devtools-extensionでAlminのログを出す連携を実験してみたりしています。Redux以外でも動かせるんだ。Extensionに流すやつとりあえず動いてきた。2017どんなことに向いてるのかAlminの設計思想としては普通に読めるようなコードで、中規模以上にスケールできようにするというものです。あるFluxのサンプルでのカウントアプリのチュートリアルを見るとfacebook/fluxと殆ど変わらないことが分かるかもしれません。Almin.jsただ複雑なJavaScriptアプリケーションを考えながら作る話でも書いてますが、ドメインロジックをどこに書くのかという問題がfacebook/fluxやReduxだと曖昧になりやすいです。Alminは、その辺や非同期処理やStateの持ち方もある程度方針を持って扱えるようにするパターンやドキュメントなどを提供しています。Almin.js今は、いくつかのプロダクションで数万行以上コードでもある程度安定して動いている感じです。今後は報告してもらった問題に泥臭いチェックを入れたり、もう少し簡単にセットアップできるような方法を見ています。タグ:JavaScriptFluxDDDお知らせ欄JavaScriptに関する最新情報は週一でJSer.infoを更新しています。efcl/efcl.github.ioからご意見下さい関連記事コメントを。