« ダース・ベイダーのおもしろネタ・2題 | メイン | EOS 5D、フルサイズセンサー搭載で登場! »

2005年08月21日

Ajax というか「非同期メッセージ型ウェブ・アプリケーション」の本質を理解する(・・・したい)

ここで Google Maps を初めて紹介したのは『Google Mapsすげぇ!(inspired by compose-R.net)』というエントリでしたが、これに使われている Ajax という技術の本質を解説してあるブログを見つけたので、自分のメモのためにあげておきます。

以前、Microsoft で Internet Explorer 4.0 を開発し、いまはやはりレドモンド在住でソフト会社を経営されている中島聡さんという方なんですが、そんな方でも

最近、「これからのウェブ・アプリケーションはAjaxだ」という声を良く聞く。ソフトウェアを生業としているエンジニアとしては、この手の「流行もの(hype)」に触れた時には、表面的なものに踊らされずに、その本質を自分なりにしっかりと捕らえて消化・吸収して自分のものにしなければいけない。

というふうに本質を捉え、基本に戻る大切さを説いておられます。

Ajaxというのも、その名前から来るような Asynchronous JavaScript + XML という技術の組み合わせに本質的な意味があるわけではなく、あくまでも「非同期でメッセージをやり取りすることとそれから来る使い勝手の良さ」が重要なポイントであり、それをどういう手段で実現するかというのはまた別の問題なんだそうです。

Googleなどが進めている第二世代のウェブ・アプリケーションのアーキテクチャーの本質は、XHTMLやXMLやJavascriptにあるのではない。その本質は、

(1)アプリケーションの明示的なインストールが必要ない。
(2)サーバーとの通信を非同期に実行することにより、通信遅延によりUIをブロックしない。
(3)サーバーとのやり取りは、RPCではなく、メッセージで行う。
(4)データ・バインディングはサーバー側ではなく、クライアント側で行う。
(5)UIにインテリジェンスがあり、ある程度はサーバーに戻らずにユーザーとやり取りをする。

の5点にある。開発言語はJavaであろうとFlashであろうとも良いし、サーバーとのメッセージにXMLを使わなくともかまわない。その意味で言うと、Ajaxという名前(J=Javascript、x=XML)がそもそもふさわしくしくないとも言える。単に、「非同期メッセージ型ウェブ・アプリケーション(Asynchronous Message-driven Web Application)」と呼ぶ方がずっと明確だし、特定の言語にしばられなくて済む。

プログラミングがやりたい

ここからは突然、まったくの個人的な独白に移ります。
まあ、こんなときにこんなことを考えていたんだなぁ、という記録のようなものです(ブログのある意味本質がそうだと思いますが)。ですから、わざと話し言葉で書こう(^^)


僕は Web サイト構築(あえて、デザインとは言いません)の仕事をしているけど、プログラミングはできないんだよなぁ。
しかし、いまの Web サイトの構築がまったくプログラムの知識なしでできるかといったら、そんなことはありえないわけで。

Google Maps を初めて見たときの衝撃は忘れられない。
そしてそれ以降、その API が公開されてから“市井の人たち”がどんな優れたアプリケーションを開発してきたかというのをつぶさに見てきたけど、思うのは「あぁ、自分がやりたいことを自分でできたらどんなに楽しいか」っていうこと。
いま実は、映画館マップβ - MOVIEs.ne.jpの中で使われている汎用 Google Maps API スクリプト“ KsGMap ”というスクリプトにとても関心があって、この作者の方と頻繁にメールのやり取りをして、テストをしたり、いろいろアイデアを採り入れてもらってたりするんですよ。
それはそれでとても楽しんだけど、やはりそういうのを本当に自分向けにカスタマイズできれば、もっと楽しいだろうと。

でも、API のドキュメントやいろんな実用例のスクリプトを見ればよくわかるんだけど、“たかが”JavaScript、なんだよねぇ。自分で書けないくせに“たかが”とはなんだ!と言われそうだけど。
なんか、やればできるような気がするだけ、悔しいんだよねぇ。

人は年を取るに従って、夢や自分がやれると思っていたことを失っていくのは事実だし。極端な例だけど、いまさら F1 レーサーになりたい!って言ったって絶対無理なわけで。
で、いまさら C++ とかJava とか勉強しても始まらないって思ったりするわけなんですが、親しみやすそうな JavaScript なら、なんかできそうな気がする。いや、一からできないまでも、いろんな人が作ったものを参考に改造くらいはできるんじゃないかな〜、と思うわけ。

中島さんがおっしゃるように、今後、Google Maps に限らずいろんな場面で「非同期メッセージ型ウェブ・アプリケーション」が使われていくのは間違いないことでしょう。
そんな中で彼も

「ブラウザー上でプラグインなしで動かしたいからHTML Javascriptを使う」とか、「ウェブ・サービスとの連携にHTTPを介してXMLをやり取りする」などの理由はもっともなので、それを否定するつもりは全くないので誤解しないで欲しい。実際、メッセージに"XML over HTTP"を使うことには私も大賛成

と書かれているように、JavaScript はもっとも簡便にそれを実現できるキモになる技術かなぁ、と。
なんどか勉強しつつ、投げ出していた格好になっていたんだけど、これを気に勉強しようと。XMLのような今後不可欠になりそうなものと合わせてね。

というか、すでに勉強をちょこちょこやっているわけですが。
そのきっかけとなった心の動きをちょっと書き留めておこうか、と。プロのプログラマーの方からすれば笑っちゃうような話だと思うけどねぇ(^^;; 仕事で、というなら自分が勉強するより、信頼できるプログラマーの人を見つけて、組んでやった方がよっぽどいいんでしょうけど。まあ、そういう場合もある程度理解できる知識は必要だからね。
(以上、独白終了)

そういえば、むかしプログラマー30歳定年説?というようなことがよく言われていたような気がするんですが、いまはどうなのかな?
それが事実だとすると、僕なんかもういまさらやってもって話になっちゃいますが(笑)。

でも、ぶっちゃけ楽しいですね。何千歩か、あるいは何百万歩かわかりませんが、そういう先達の歩いていく道を、なんとかついて歩いているのって。追いつけるはずもないんですが、とりあえず遅れないようについていこう、という感じでしょうか。

あ、でもこういうふうに、次から次へとリンクをたどっていろんなサイトを読ませて頂いているんですが、気がついたらあっという間に半日、一日が過ぎ去ってしまう。
気づくと、“いま”作るべきものをやっていないことに気づき、愕然とするんですが。
はあ〜、もっとこんなふうにスピード上げてやらないといけないんだけどな。
反省してもやらないなら、猿以下だよねぇ>自分
っていうか、“メモ”のつもりでちょこっと書くつもりだったのに、こういうのを長々と書いているのって………。

投稿者 Shin : 2005年08月21日 16:18

トラックバック

このエントリーのトラックバックURL:
http://skys.jp/mt/mt-tb.cgi/1015

このリストは、次のエントリーを参照しています: Ajax というか「非同期メッセージ型ウェブ・アプリケーション」の本質を理解する(・・・したい):

» 汎用Google Maps APIスクリプト “KsGMap” Ver1.00 リリース! from Sky's The Limit
Google Maps についてはこの blog でも、サーキットマップの紹介などでたびたび取り上げていますが、これを自分のサイトに設置して利用することができ... [続きを読む]

トラックバック時刻: 2005年09月29日 15:07

コメント

プログラムって憧れますよ。
JavaScriptもいろいろ出来て便利でしょうね。
私はDelphiやろうとしてソフトDLしたまんま、そのまんま・・・orz
メモ帳くらい作りたかった。

投稿者 samuppe : 2005年08月21日 19:25

いや〜、そうなんですよね。プログラムできるっていうだけで、なにかソンケーしてしまうのですが。
でも、いま結構必要に迫られているので、おもしろい!と思いながら見ていたトルコGPでも JavaScript 本を片手に(おいおい)。

Delphiっていうとインディのスポンサーですが、なんのソフトでしたっけ?(調べろって>自分)
とにかく、 Google Maps に関してはある程度自分でこなせるようにしたいと野望を抱いています(^_^;;

投稿者 Shin : 2005年08月22日 01:46

Shin さんのエントリを見て、自分でプログラムを組めることに憧れを抱いていた頃の自分の気持ちを思い出した気がしました。最近は初心を忘れがちで、プログラムを書くことを楽しんでいなかった自分を反省しています。初心に立ち返って頑張ろう(>自分)。

いつも広範な情報をわかりやすく料理されているのには感心させられます。プログラミングも是非頑張って下さい。

投稿者 miyoshi : 2005年08月22日 02:43

>そういえば、むかしプログラマー30歳定年説?というようなことがよく言われていたような気がするんですが、いまはどうなのかな?

 TBありがとうございます。私は44ですけど、現役でバリバリプログラムを書いています。野球選手よりは選手寿命が長いと思います。ゴルファーには負けるかもしれませんが。

 ちなみに、とりあえず Javascript からっていうのは良い選択肢だと思います。ただ、私からすると shin さんみたいな人にも簡単にウェブアプリケーションを作ることの出来る仕組みを作りたいな、と思ってしまいます。

投稿者 satoshi : 2005年08月22日 10:57

あぁ、こんな独白でも書いた甲斐があるものですね。

◆miyoshiさん

ある意味、憧れを抱いているときが一番楽しいのかもしれません。クルマを書く直前(新車が来る直前)のワクワクした気持ちのような。
そういう意味では、いまが一番おもしろいのかも。

わかりやすく、と言っていただけてうれしいです。
僕は根が素直なので(だいたい、こんなことを自分で言ってるヤツなので)おだてられると図に乗るのですが、長くても読みやすい、わかりやすいと言っていただける方が結構いてくださって、曲がりなりにもやり続けている甲斐があるというものです。
いつも、短く短くとは思ってるんですけどね。

どっちかというと、書きながら自分に理解させている、というのが本当のところです。書いてるとなに言ってるんだかわからなくなることや、最終的にはそのことについてなにも考えがまとまっていなかった、ということがわかって、“書きかけ”になっているエントリが山のようにあります。
自分に理解させるように書く、と思っているところが、お言葉を額面通りに取らせていただけば、長いなりに少しはわかりやすくなっている理由かもしれません。アップしたあとも読み返してはしょっちゅう直しています。

今後ともよろしくお願いいたします。

投稿者 Shin : 2005年08月25日 01:25

◆satoshiさん

コメントありがとうございます。
いまはそういう時代なのですね。まあ、ひとくちにプログラマーとかシステムエンジニアだとか言っても、いろんな状況が存在するのかもしれません。

>私からすると shin さんみたいな人にも簡単にウェブアプリケーションを作ることの出来る仕組みを作りたいな

これはぜひぜひ作ってください。
よく雑誌なんかでオブジェクト指向によるプログラミングみたいな特集があって、「シロウトでもカンタン」みたいなことが書いてあるのを読んでみるのですが、やはり実際はちんぷんかんぷん(笑)。

こういう時代だからこそ、(もちろん自ら学ぶ姿勢は欠かせないとしても)簡単にウェブアプリケーションが作れるような仕組みができるとしたら大歓迎です。

JavaScript、とにかく“いじって”みたいと思います。
そちらの示唆に富むエントリ、楽しみにしております。どうぞよろしくお願いいたします。

投稿者 Shin : 2005年08月25日 01:31

あ、言い忘れましたが、おふたりとも、お返事遅くなって申し訳ありません。
うれしいと思いながら、なかなか・・・。
時間はあるんですよね。

投稿者 Shin : 2005年08月25日 01:32

コメントしてください




保存しますか?