Railsで付箋アプリ
付箋を使った考察や会議は、好きです。Rails-Ajaxを使って、これをWebで実現できないだろうか。ちょっとだけデモもあります。
システム設計やプレゼン資料を作るときなど、考えがまとまらない時は、付箋紙を使うのがクセです。
とりあえず、思いついた言葉や要素を付箋紙に書いて、グルーピングしたり、並べ替えたりしていると、なんとなく結論が出るのが早いので、気に入っている方法です。
少人数で会議するときは、ホワイトボードやプロジェクターなんかよりも、机に付箋をばらまいて、あーでもないこーでもないと並べ替えたりすると、結構いい感じに議論がまとまったりします。
で、決着がついたら、パシャっと写真をとるw

この方法の欠点は、結果や途中経過を保存しておけない、付箋を書くのがめんどう、大人数の会議には向かない、などなど。
だったら、みんなが参加できて、保存しておけて、ポイポイと付箋を増やしたり動かしたりできるしくみを、AjaxなWebアプリで作れないかなぁ・・・と、思いながら、RailsのAjaxライブラリをいじってみました。
とりあえず、ささっとできた範囲だけ、作り方を紹介して、あと、問題点など、書いてみたいと思います。
今後も、ちょっとずつ調べながら作ってみようと思います。Ajaxの勉強もありますが、この「付箋アプリ」は、自分がほしいツールなので。
※08/27追記:完成品は「付箋会議システム blog版」です。
仕様:ToDoを付箋に書いて、ToDoリストを作り、その付箋をDrag&Dropで振り分ける。
ToDoを入力:
ToDoリスト | 振り分け
|
prototype.jsのAjax.Updaterを使って、「ToDo入力」から「ToDoリスト」を表示します。ToDoリストはとりあえず、サーバサイドでHTTPセッションに保存しています。
付箋のDrap&Dropには、script.aculo.usのSortableを使います。
簡単ですが、以上です。説明しだすと長ーいので・・。
■イベントフックのタイミングが、いまいち
ToDoを「振り分け」たときに、サーバサイドに通知したい(セッションに保存したデータを消すため)と思ったのですが、うまくいきません。
dragdrop.jsをのぞいてみると、Sortableオブジェクトには、onChangeとonUpdateの2つのイベントフックがあります。
これを使って、
function delete_postit(id){
new Ajax.Updater(
'todo_list',
'/sandbox/delete_postit',
{method: 'post',
parameters: 'todo='+id,
evalScripts: true}
);
}
Sortable.create(
"furiwake_list",{
onChange:function(element){
delete_postit(element.id);
}
}
);
としてみると、大量リクエストが発生してしまい、失敗。ドラッグ&ドロップした付箋が動いている間は、何回もコールされてしまうようです。
■Sortableは不自由
Sortableは基本的に、HTMLリスト(<li>)にしか使えないので、不自由。
というわけで、この2つの問題を解消するには、DraggableとDroppable(dragdrop.jsを参照)を使って、独自にUIコンポーネントを作るしかなさそう。
となると、UIはFlashで作った方が早そうです。が、サーバサイドとのコミュニケーションがAjaxの方が簡単そうです。あと、ポータビリティなども、後者に利がありそうです。
うーん、どっちがいいんだろう。・・というところも考えながら。

