フォームのユーザーインターフェース
ajaxに手を出してからやることがだいぶ増えた。
今までHTMLは丸投げしていたのでテンプレート変数の割り当てさえ考えれば良かったのだが、ajaxをやりだすとタグの構成というかHTMLをほとんど全部書かなきゃいけなくなってくる。
デザインが動的に変わるんだから仕方ない。GUIアプリを分業するノウハウが必要なのかな?
で、フォームの話。
ネットワークのコストを無視すれば入力チェックなどは全部サーバに依頼すればいいわけだけど、現実的には一文字入力するごとにサーバに問い合わせるわけにもいかない。
しかし、例えば新規ユーザ登録の場合、ユーザ名が4文字以下ならJavaScriptで「ユーザ名を5文字以上にしてください」と表示するとする。そして5文字以上ならサーバに問い合わせて既存ユーザと重複していないかチェックするとする。
一見スムーズに動きそうだが、5文字以上入力した瞬間にメッセージの応答速度が変わるので利用者が混乱するかもしれない。6文字目7文字目を入力途中にも「ユーザ名を5文字以上にしてください」のメッセージが表示されつづけるかもしれない。かと言って待ち時間に「ユーザ名の重複をチェックしています.....」と表示するのは冗長な気がする。
こういうことを考えるときりがないし、自分が考える範囲ではないように思う。
でもいちいち「このタイプとこのタイプどっちがいいでしょう?」って聞くのも聞かれるのも大変そうだし、実際に動くものを見ると判断が変わるかもしれない。
何パターンかに対応するようにも作れるし、頭の体操というか汎用的に作る練習にもなるが・・ちとめんどくさい。
実際の所、一般的にはどういう処理までクライアントサイドでどこからがサーバサイドにするのがベターなんだろう。
パスワードに関しても、ユーザの視点だとデスクトップアプリのシリアルナンバー入力欄のように正しい入力が行われた瞬間にチェックマークが付くのがいいんだろうが・・。
ユーザ名の長さや未入力チェックをクライアントサイドでやると、せっかく全ての入力チェックにパスしていざログインボタンを押したらパスワードエラーが表示されることも起こる。そういうのは何か矛盾してると感じるけど良い方法が思い付かないな。