最終回。

http://www.ibm.com/developerworks/jp/web/library/j_wa-couchdb05/

仕事でやっているので中の話は書きませんが*1、なんとか 0.10.0 が出る前に書き上がりました。以下、私見


妙にWebにsyncしてきた感があるのですが、

次に大切だと思うのは、(図ではちゃんと表現できていないが)ModelとControllerの役割を少し見直すべき、という点である。PhotoShareは主にRailsで作られているので、ModelはActiveRecordが担当しているわけだが、Modelのレイヤーが非常に薄いために(O/Rマッピングをしているだけ)、データベースの整合性の責任がController側にある。そのため、ちょっとした機能変更のたびにAPIレベルでのテストを大量に走らせなければならないし、それでもどうしてもミスが生じてしまう。

http://satoshi.blogs.com/life/2009/10/html5_architecuture.html

最初の例で、Railsいらなかったじゃん、という形で (A)。

例えばある見積データがあるとして、これが申請中だとか承認待ちだとか承認済みだとかという風にどんどん状態が変わっていくとすると、大抵の場合はBuriを使います

http://blog.livedoor.jp/habuakihiro/archives/65219163.html

2番目の例。ビジネスワークフローになる、1つのドキュメントのフローがワンパスですまないことが多いのでステータスをタグ付けしたくなる、というのも想像に難くないですね。一方、システムワークフロー(いわゆるバッチ、JP1とかTivoilとかSystem Walkerとか)のほうは、1つのデータセットで1プロセス片付けるのがほとんどなので(つなぐのはパイプであってDBじゃない)、status: foo でよかったりするのです (B)。

個人的には(A)と(B)の文脈を両方語れるというのは、ものすごい魅力的に感じるんですがどうでしょうか。応用が利くというか何というか。CouchDBを触っていると、それだけでほとんどの技術的好奇心を満たしてくれるので、あとはどう応用しようか、と最近はいろいろ面白いです。

*1:仕事名はysasaki2, こっちはyssk22なのでスキルセットは共通ですが人格は別です、と再燃している?匿名、記名、本名問題に言及w