AJAXでやってしまう間違い

2007/2/27

Ajax Mistakes」という面白い記事がありました。 AJAXを使ってWebアプリを作る時に陥りがちな間違いを列挙していました。

以下、要約してみました。 かなり削っているので、詳細は原文をご覧下さい。

AJAXを使うためにAJAXを使う

AJAXはカッコイイ技術です。 しかし、AJAXはツールでしかありません。 AJAXはオモチャではありません。 実験的にAJAXを使うために、不必要なところにAJAXを無理矢理使っている場合が多いです。

戻るボタンの動作を妨げる

戻るボタンはWebインターフェースで重要な役割を果たしていますが、JavaScriptとの相性は良くありません。 戻るボタンの機能を維持できない場合があることは、JavaScriptのみで構成されているページをお勧めしない理由の一つです。

ただ、使い勝手の良いサイトというものは、そもそも戻るボタンに依存しなくてもユーザが容易に操作できます。

裏で何かが発生しているのがわからない

何かをクリックしたときに、AJAXが発動するような場合にはそれがわかるようにして欲しいです。

オフラインな人々を置いてきぼりにする

技術が進歩したからといって、全ての人がその技術を使いたがっているわけではありません。 常にオンラインにいる人だけではなく、オフラインの人も考慮しましょう。

ユーザを待たせる

ネットワーク環境が貧弱な場合、AJAXで何かをする度に待たされるという可能性もあります。 ただ、AJAXのAはAsynchronousの頭文字であることでも分かるように、バックグラウンドで何かをするような設計でユーザを待たせないこともできます。

平文で機密情報を流してしまう

クライアントからサーバに対してAJAXで個人情報などを脆弱な方法で送りまくるコードを書かないように気をつけましょう。

単一プラットフォームしか想定しない

AJAXは単一のプラットフォームを想定して開発するのではなく、IEのJavascriptエンジン、Spidermonkey、Rhino、など様々なJavascriptエンジンで動作するようにしましょう。

複数人が同時に利用する可能性を忘れる

別々の人が同時に操作をしてしまう可能性があることを忘れないようにしましょう。

コードが大きくなりすぎるとブラウザの速度が低下する

興味深いものを作ろうとすると、コードを大きくしすぎてしまう恐れがあります。 コードが大きくなってしまうと、ブラウザの動作速度も遅くなります。

JavaScriptを無効にしている人やJavaScriptを使えない人を無視

W3 schools browser usage statistics」によると、ユーザの11%はJavaScriptを使っていないか使えないそうです。 JavaScriptが無いと見られないページを作ってしまうと、1割のユーザを除外している事になります。

ページの一部を予期しないタイミングで変更している

AJAXのAは「Asynchronous(非同期)」の頭文字です。 ページの更新や移動が非同期に行われ、予期しないタイミングで見ているものが変わってしまうと非常に混乱します。

URLを取得できない

Webの良いところは、今見ているページのURLを知人に渡すと同じものが見られることです。 また、ブックマークをしておいて後で見ることも可能です。 しかし、JavascriptやAJAXをベースにすると、この機能が活用できないサイトを作ってしまう事も可能です。 多くのAJAX Webアプリは、この問題に対処するためにパーマネントリンクを活用しています。

サーチエンジンのロボット巡回をブロック

URLを取得できない問題と同様に、検索エンジンが特定のページを取得できない場合もあり得ます。

ひたすら非同期でイベント送信

例えば、チェックボックスを変更する度にイベントを送信すると、非常に無駄で鬱陶しくなります。

勝手にページをスクロールしてユーザを混乱させる

非同期でページ内にテキストを増やすと、勝手にブラウザがスクロールしてしまうことがあります。 読んでいる途中に非同期でテキストを変更されると非常に鬱陶しいです。

UIに一般的ではない意味合いを持たせる

「一般的ではない物体を、一般的ではない動作をさせるためにクリックさせる」というのは良くある間違いです。

文字コード

UTF8を使いましょう。

変更が他の機能に反映されない

ちょっとしたローカルの変更が他のフィールド値に影響を与える事があります。 特定のフィールド毎に機能を書いているときなどに、他のフィールドへの影響を忘れてしまうことがあります。

エラー報告

Javascriptはサーバ側ではなく、クライアント側で動作します。 サーバ側で動作するプログラムであれば、問題が発生した時に分かる場合がありますが、クライアント側で発生している問題は把握できない場合があります。

HTMLページと利便性が変わっていない

AJAXの例として、普通のHTMLでやるのと利便性が変わらないものが紹介されていることがあります。

単なるツールの一つでしかない

AJAXは道具箱に新しく追加されたツールの一つでしかないことを忘れている人が非常に多い気がします。

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!