「処理しています・・・」
先のプログラムで、処理の実行ボタンを押してから結果が表示されるまでそこそこ時間がかかる。処理そのものの手順を見直して速度改善をはかるということもあるだろうけれど、とりあえずということで作業中であるというインジケータの表示ができないか、と考える。
おそらく実用とした際に想定できる分量の処理をするのに、30 秒から 60 秒程度はかかりそうだ。日常的に必要なものでないことや、頻繁に使用するものでもないことを思えば、さほど困るという処理時間ではないとは思うが、「待つ」ということに対するイライラ感はひとそれぞれであるから、なにが起こらないとも限らない。
となれば、できれば進捗状況がわかるほうがよいかもしれない。
アジャイル本を見ると、ちょうどそんなことが出ている(p.400)。 ただ、これは AJAX を利用しているので、そのままでは期待するものとは少し違ってしまう。:update => :xxxx となるので id="xxxx" のブロックを更新するときに表示するという使い方。/item/list というアドレスで実行ボタンをポチッとしたときに、この場合だとアドレスはそのままになってしまう。できれば結果表示だから /item/result となるようであってほしいし、現状では実行ボタンでのアクションは result を実行し、result.rhtml が表示される。
とりあえずアドレスは諦めるとして、list.rhtml 全体を :update 先の id をもつブロックタグで囲めば全体を更新してくれるけれど、ちょっとすっきりしない。
/item/list から /item/result へ遷移する間で進捗インジケータとなる画面を出すという方法はないものか? とちょっと思案中。間に indicator アクションを経由させるという方法もありそうではあるけれど、パラメータなどを橋渡しする必要もでてくるだろうし、ちょっとスマートさにかけるようにも思う。
さらにいえば進行の割合も表示できたら「本当に動いているのか?」という不安からも解消されそうではあるのだが・・・。
#ひとまずは「時間がかかる」旨の注意書きだけ表示させているけれど。
| 固定リンク
コメント