2007年12月20日木曜日

唖然とする某システム.

 最近、某所にて某システムを触る機会がありました.
 …某某ばかりじゃ分からないけど orz
 その某システムが凄い訳です.

 PHPで書かれているんですが、まず、エラー画面にエラーハンドラで受け取ったエラー内容を「ほぼそのまま」表示します.
 ○○○.phpの○○行目で、○○関数の引数が○○だからエラーが出ましたよ、と(実際のメッセージは異なります).
 そりゃもう親切丁寧に教えてくれる訳ですよ orz

 更にエラーが発生した際、場合によってはクエリを画面に出力してくれます.
 まぁ!なんて親切なんでしょう♪ … orz
 ※これは多分意図した訳ではなく、デバッグ気分で echo ったであろうコードを削除し忘れているかと思われます

 とまぁ、致命的と思われる事はこの辺にしておき、一番衝撃的な事(いや、上のも十分衝撃的なんですが、自分でもやってしまいそうと言う意味での衝撃的)が、Ajax周りの挙動.
 私は余りそんな組み方をしませんが、

 1. 複数の選択欄(SELECT)がある
 2. 選択欄Aを選択するとAjaxが走り、サーバーへ選択欄Bのリストを取りに行く
 3. サーバーから取得したリストを選択欄Bへセットする
 (選択欄Dまで繰り返し...省略...)

 と言う「まぁ、やるっちゃーやるな」と言う処理なんですが(私は選択する度にトラフィックが発生するのが嫌で、余程膨大な選択種が無い限り最初に全部読み込みます)、今回出くわした環境がアナログ回線だったが為に、下の様な挙動を連発する訳です.

 選択欄Aで選択→選択欄Bが空欄のまま→ボーっと待つ→数秒後選択欄Bにリストがセットされる
 選択欄Aで内容1を選択→選択欄Aで内容2を選択しなおす→数秒後選択欄Bには選択欄Aの内容1に連動するリストがセット

 正直使う気が失せますね、これじゃ……
 良くAjaxでデータを読み込む時に、ローディング画像を表示しつつDIVなどで画面を保護する作りにしますが、選択欄を連動させるくらいでそんな保護しませんしねぇ.
 逆にいちいち選択内容変更する度に(選択欄を連動させる為だけに)ローディング画面になったら、Ajaxな意味が無くなるくらい煩わしくなりますし.

 まぁ、平成19年も師走を迎えた昨今、そんなWindows95を思い出す速度環境下なんて余り無いでしょうから、そんなに気にする必要も無いのかもしれませんけどw

 とは言いつつ、今回出くわした様な作りにはしない様に心掛けようと心底思った今日この頃.

/**
 * 追記.
 */
 この投稿書いてから、Gmailが高速化する手段として「メッセージをあらかじめ読み込んでおくため、メールを開くときにGoogleサーバにアクセスしなくてもよくなり、メールの表示が速くなる」(『@IT』より一部抜粋)方法を選んだ事を思い出しました.
 Ajaxも使い方次第では旧来よりユーザビリティを低下させるかもね、と.
 ※Gmailの場合、正確には「Ajaxなバックグラウンド処理で事前に読み込む」と言う方式らしい

0 件のコメント: