Ajaxの価値とは

Ajaxブームもそろそろ下火になってきたと思います。「なぜか?」から「どうしたら?」まで考えてみました。

※記事を載せる時間すら減ってはいますが、通勤時間などでJavaScriptAjaxなどに関して考える時間はあるので、ここでその間に考えたことをメモしておきます。

一般にWebに公開されているAjaxアプリと呼ばれるものはどんなものがあるかと思い浮かべてみたいと思います。

  • 検索系
    • 住所(郵便番号)検索
    • ウェブ検索
  • 変換系
  • 画像系
  • 計算・処理系

こんな感じでしょうか。本当はまだまだあるとは思いますが、とりあえずすぐ思いつく程度で軽い分析には十分です。

これらを参考に、
「そもそもどうしてAjax*1が有用なのか」
を考えると、それはつまり
「どうして一部だけサーバーで処理するのか?」
という疑問になります。
もちろん「全部をサーバーで処理する」とはしない*2でしょうから、
「なぜ、全部をクライアントで処理しないのか」
を考えてみます。

例えば上に挙げた中から考えると以下の理由がわかります。

  • データはサーバーに置き、必要な分を必要なときに渡すため。
    1. (クライアントで全部処理するには)ベースとなるデータ量が膨大である。
    2. なおかつ、そのデータのごく一部にしかアクセスしない。
    3. 1つ1つのデータはわりと軽いものである。
  • 処理を高速化するため。
    1. サーバーの方が処理速度がダントツに速い。
    2. ユーザーのトリガーを受けてから戻るまでの間、業務的な処理の割合が高い。
    3. 通信時間を差し引いてもサーバーで処理する方が速い。
  • 処理内容・方法を隠蔽するため。
    1. 直感的な操作は欲しいが、肝心な業務処理の方法は公開したくない。


さて、理由(≒Ajaxのメリット)が整理できたところで、
「どうしたらAjaxを使ってウケるサイトを作れるか」
を考えてみたいと思います。





・・・と言っておきながら、この考え方は間違っていると思います。

Ajax*3は単なる技術的な手段です。
それが見直されただけであり、例えばJAVAでいう
「SWING*4を使って何を作ろうか」
と考えているようなものです。
本当はその逆で、
「○○○ということをしたいのだけれど、どんな手段で実現しようか」
を考え、その手段の1つとしてAjaxがあるはずです。

では、考え方を修正して
Ajaxが有効な手段として考えられるサービスは何か」
と考えなければなりません。
Ajaxが有効な手段となるケースとは、上記で整理していますから、それに当てはまる“○○○”を考えることになるでしょう。
例えば以下のようなもの*5はどうでしょうか。

  • 時刻表検索
    1. データ量が膨大であるのに、参照するデータはごく一部のみ。
    2. 最初のルート検索などでアルゴリズムが売りの場合は、隠蔽できる。
    3. 検索結果から再検索しても、画面レイアウトはほとんど変わらない。
    4. 参照先の再検索(1本前の時間検索とかする)の対象となるデータ幅が狭い。
    5. 付近のデータで、再検索されそうなデータをアイドル時間に予め読み込んでくれると瞬時に表示可能。
    6. 検索結果がGUI操作できると新鮮。

ただ、これだと誰でも考えつきそうですね。
誰も考えたことがないような「こんなこともできるのか!」を世に出すためには、上記の“××系”を新しく増やす必要があると思います。
これは結構難しいですが、その分他人には思いつかれにくいでしょう。
私は××系とかカテゴリーを考えずに、“○○○”(前述)を考えていますが、ほとんど既存の××系にあてはまってしまいます。

つまり、結論としては、
「検索系でも、変換系でも、画像系でも、計算・処理系でもない、Ajaxのメリットに合致するWEBサービスを考えよ」
となるでしょう。

*1:技術としてのAjax = 非同期のHTTP通信

*2:理由は明白なので省略

*3:ここでも技術としてのAjaxのこと

*4:ここでは例としてSWINGですが、Ajaxjava.net.HttpURLConnectionクラスなんかに当たるんでしょうか…

*5:すでに実現しているものもあるかも知れません。調べてません。