Ajaxアプリケーション開発における7つの大罪
翻訳校正:村上雅章・野崎裕子
Ajaxを利用するにあたって犯してしまいがちな過ちについて、小さなものと大きなもの、それぞれ7つを挙げて解説する。
Ajaxは近ごろ人気を集めているが、その人気は伊達ではない。Ajaxを使うことで、より迅速に、より効率良く、より動的なアプリケーションを開発することができるのだ。しかし、Ajaxには固有の落とし穴もあるのだ。
こういった落とし穴は一見したところ、単なる常識を使うことで避けられるように思える。そして、この見方はある意味において正しい。しかし、Ajaxアプリケーションはその先祖にあたるDHTMLとはアーキテクチャが大きく異なっているのだ。あなたがアプリケーション開発作業においてどれ程の常識を発揮しようと、先人たちの犯した過ちから学んでおく方が良いことに変わりはない。そこで、こういった過ちを7つの大罪と呼ぶことにする。ただし、過ちは決してこれらだけに留まらない。
事実、こういった7つの大罪のいずれかを犯す前により小さな過ちを犯す可能性が高い。このため、まずはこのような小罪を7つ見てみることにしよう。これらは誰もが犯す過ちである。そして、これらの過ちはあまりにもありがちであるため、ほとんどのものは簡単なGoogle検索で見つけることができるはずだ。
7つの小罪
「戻る」ボタンの誤用--これは誰もが犯す過ちである。「戻る」ボタンは、さまざまなウェブアプリケーションにおいてあって当然と思われているボタンだ。ところが、経験の浅い多くのAjax開発者はいくつかの理由から、「戻る」ボタンをAjaxアプリケーションに組み入れてしまい、結果としてユーザーの期待を裏切ってしまうのである。この理由としてはまず、「戻る」ボタンの処理を行ううえでJavaScriptが最適の言語ではないということが挙げられる。次に、Ajaxの設計では新たな考え方が要求されるという理由がある。
「戻る」ボタンは最適ではないということが、経験の浅いAjax開発者にとってすぐに判るとは限らない。「戻る」ボタンは、イベントに特化した「元に戻す」機能を使いたい場合に、ページ更新のタイミングか、それよりも頻繁に必要となる機能である。この点について、コーディングを開始する前によく考えておくべきである。さもなければ、同じことを2度行う羽目になってしまうはずだ。何が起こっているかをユーザーに知らせない--Ajaxを使用すると、ブラウザが提供しているウェブユーザーインタフェースではページのロード状況を完全には把握できなくなる。このため、何が起こっているのかをユーザーに対して明示的に伝えるために、視覚的な手がかりを組み込んでおく必要があるのだ。
リンクを設けない--これもAjaxで犯してしまいがちな過ちである。つまり、ユーザーがアプリケーションの外でコピーアンドペーストできるようなURLを設けておかないという過ちだ。あなたも、URLをコピーして誰かに電子メールで送るという行為を何度も行っているはずだ。Ajaxにおいて、ユーザーがコピーアンドペーストできるようなURLを提供する唯一の方法は、手作業でそれを提供することである。なぜだろうか?Ajaxアプリケーションでは「サーバが該当ページを応答してくるわけではない」からである。JavaScriptが動的に生成しているのだ!ウェブアプリケーションサーバによって提供されることが当たり前になっているこの機能に対するユーザーの潜在的な需要を軽視してはいけない。サーバはURLを提供しないため、あなたが手間をかけてそれを提供する必要があるのだ。
ページ制御のためにコンテンツ制御を犠牲にする--動的なコンテンツ制御を模索している場合、従来のような方法でクライアントとサーバとの間のやり取りを行わなくてもよいという仕組みは、とてもありがたいものであるはずだ。しかし、これには弊害もある。ユーザーのエクスペリエンスを洗練したものにするために、ページの特定の領域を再描画することで、きめの細かい制御を行えることは確かである。しかし、これによってあなたはもっと大きなものを見失ってしまうのだ。
われわれは、ページの特定部分の処理に気を取られるあまり、そのページ全体がサーバによってリフレッシュされないということを忘れてしまいがちになる。こういったことにより、ページの断片化が起こったり、ユーザーの閲覧しているページ自体の情報が古くなるため、ユーザーエクペリエンスに混乱がもたらされたりすることもあるのだ!常にページ全体に気を配るようにし、動的なコンテンツ変更を引き起こすイベントによって、ユーザーの目に触れる部分すべてが確実に変更されるようにしよう。スパイダを遮断する--Ajaxのメリットは、ページをリロードすることなしに膨大な量のテキストをフィードすることができる点にある。そしてこの点はAjaxのデメリットでもある。もしも検索エンジンに優しいアプリケーションを開発したければどうすればよいのだろうか--あなたにも判るはずだ。ページの中身がどのようなものであれ、コンテンツを如実に物語るテキストを、スパイダが処理できるようにページの上部にたくさん埋め込んでおくのである。
読めないテキストを生成する--Ajaxがサポートしている文字セットの数はそれほど多くはない。これは生死にかかわる制限ではないものの、このことを忘れると大きな問題を引き起こすおそれがある。基本的な文字セットはUTF-8である。JavaScriptが送信する内容がどのようなものであれ、適切にエンコードしておくことを忘れないようにしよう。また、サーバ側のコンテンツに文字セットを設定しておくことも忘れないようにしよう。
JavaScriptを使用していないユーザーに対して、何が起こっているのかを知らせない--JavaScriptを利用できないブラウザというものも存在しており、それが意味していることをすぐに理解できないようなユーザーも存在している。こういったユーザーに対して、何が起こっているのかが判るようなヒントを与えるようにしよう。
さて、次はいよいよ「7つの大罪」だ。
- ホワイトペーパー
- 企画特集
- 話題のタグ
SQLite対応アプリのデータベースファイルを閲覧する
グーグル、「Google Buzz」を発表--Gmailのソーシャル機能を強化
「H.264」ストリーミングのロイヤリティ無料期間が延長
マイクロソフト、「Office 2010」のRC版をリリース
DBのパフォーマンスに困ってませんか?
利用者の理想を追求した最新レンタルサーバ
仮想環境のバックアップは難しいのか
アプリケーション仮想化 3つの課題
通販サイトのアクセス集中からの危機を救う
アンケートから見るセキュリティ対策の実態
事例 VMwareでデータセンターをクラウド化
レガシーアプリケーションの稼働どうしてる?
新しい視点のレンタルサーバが誕生!
経営統合後の事業損益構造の見える化を実現
Xbox Live インディーズゲーム開発の軌跡
御社はまだフリーの転送サービスですか?
仮想化をダメにするストレージの実態
身近な業務をCRMが変革!