プログラムからシステム提供者のロールを追い出す

2013/08/09 |実績 |comments(0)

複数のロールが絡むシステムのプログラムは煩雑なものですが、少なくとも「システム提供者」のロールをプログラムから追い出して、1人分の複雑さは減らせる。という話と実績紹介。

売り手と買い手を仲介するシステムを作る、などというとき、同じデータでも2者への見せ方は違ってくるわけですが、それをプログラムするとき、

 order.IamSeller.currentStatus.nextAction
 order.IamBuyer.currentStatus.nextAction

などと、主語的なものをつけてやると、すごく思考がすっきりしてプログラムが短く、モデルの型もすっきりする。

これを次のような方向性にしてしまうと、ifは増えるし、コピペは増えるし、モデルが肥大化する。そしてなによりも頭がこんがらがる。

 order.currentStatus.nextActionToSeller
 order.currentStatus.nextActionToBuyer

この違いは何かと考えてみると、後者では暗に「システム提供者」が「売り手」「買い手」に対してアクションしているのに対して、
前者では、「売り手」「買い手」の立場になりきって自分が見たい情報をプログラミングしている。プログラムの中から「システム提供者」というロールがいなくなるため、3者間のやりとりではなく、2者間のやりとりになって、簡単になる。

システムがユーザーに見せたい情報をプログラミングする、のではなく、ユーザーになりきって、自分が見たい情報をプログラミングする。

ということだと思います。当たり前と言われればそうなのですが、自分は20年かかってやっと気がつきました ;x;

※ちなみにActAsSellerなどの命名がかっこいいのでしょうが、プログラミング中「自分は誰なの?」という問いかけを何度もするので、IamSellerが気に入って、本当に使いました。

そんなことを考えながら制作したシステムがこちら。既存システムのリプレイスでしたが、複雑さが増したところで、上記のようなメス入れをして、大正解でした。

ガッチャ.jp


scala 2.10.x / lift 2.5.x で制作。
WebデザインとHTMLマークアップは、山形が誇るトップクリエーター、マンクリエイト石川さんが担当しました。


コメント

コメントしてください

closed.