2008/03/27

引っ越し

はてなに引っ越しました。

2008/02/21

Gmailの個別URLとAJAX、またはステートフルURL

AJAXの短所

AJAXではページ遷移をせずにサーバと通信することが可能なため、AJAXを利用しないWebアプリより使いやすいアプリを作成することができる。
ただAJAXにもいくつかの短所がある。その代表的なものが「リンクができない」、「ロボットが読めない」の2つだ。

1.リンクができない。
通常AJAXを利用する場合、ページ遷移がなくなる代償に、表示内容に対するURLの一意性が失われる。つまり、「今現在のブラウザの表示内容」と「今現 在のURL」が一致しなくなる。そのため「今現在のブラウザの表示内容」をブックマークする(URLで指し示す)ことができない。
このような「ブラウザの表示内容」と一致するURLのことをなんと呼ぶのだろうか?
ちょっと調べたところでは分からなかった。
「今現在のブラウザの表示内容」は、アプリケーションの現在の状態と一致する。
そこで、とりあえずここではこのようなURLをステートフルURLと呼ぶことにする。

2.ロボットが読めない。
AJAXを利用するWebアプリの場合、ページの表示内容はJavaScriptなどでコントロールする。そのため、もしステートフルURLがあったとしても検索エンジンのクローラなどではその「今現在の表示内容」を再現できず、読むことができない。

Gmailの個別URL

Gmailではこの短所のうち、少なくとも1を解決している。
現在のGmailでは、AJAXを利用して各メールの詳細を表示したり、あるラベルのついたメールリストを表示したりしているが、そこで表示した「メールの詳細」や「あるラベルのついたメールリスト」をそれぞれ別のURLで表している。

Gmailでinboxにあるメールを開くと、URLに「#inbox/xxxxxxxxx」のような文字列が追加される。この文字列を含んだ「http://mail.google.com/mail/#inbox/xxxxxxxxx」という文字列がそのメール詳細を表示した状態に対応するステートフルURLとなる。
「http://mail.google.com/mail/#inbox」はinbox内のメール一覧、「http://mail.google.com/mail/#hoge」はhogeというラベルのついたメール一覧を表す。

試してみればわかるが、IE, FIrefox, Safariなどのブラウザはlocation.hrefに#xxxxxという文字列が追加されても、#より前の部分のURLが変わらなければ、ページ遷移することはない。#を使えば、JavaScriptなどから自由に「今現在のURL」を変えることができるため、#以降に「今現在の表示」状態を表す文字列を追加すれば「今現在のブラウザの表示内容」と「今現在のURL」を一致させることができるようになる。

検索エンジン対策

ステートフルURLがあれば、短所2「ロボットが読めない」は簡単だ。
サーバ側でURLに含まれる「#」以降の文字列もパースし、それに対応する内容をnoscript要素の中に入れておけばよい。

ブラウザ上での状態遷移とサーバ側での状態復元の2重管理が必要になるが、もしそのWebアプリを検索エンジンから検索できるようにしたいなら、手間をかける価値はあるだろう。

2007/11/08

tnsnames.oraの設定無しで接続する。

sqlplus "user/name@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=)))(CONNECT_DATA=(SID=)))"

(DESCRIPTION…はtnsname.oraに設定する文字列と同一。

2007/09/29

9月24日 ピピ島

10日目:最後の別れ / ティミ出発の朝。宿の人たちに別れを告げる。
ション・プーチはまだ起きていない。朝方、激しい雨が降ったがもうすぐ止みそうだ。
港に着くと、ティミが何かを待っていた。彼女とは昨日会えなかったので、別れを言う機会ができて良かったと安堵する。短い別れを交わし、フェリーに乗って出港を待っていると、しばらくして彼女が少し戸惑いながらやって来る。
実は彼女も、イミグレーション・オフィスで滞在期間延長の手続きをしにプーケットに行くのだと言う。
彼女につきあってイミグレーション・オフィスに。なかなか場所が分からず、ついたときには昼の休憩時間。

再開を待って彼女は手続きを、俺は日記書きを。彼女はどうにか無事、手続きを終えた。街の中心部で土産を買うのに付き合ってもらってから、彼女の帰りのボートのチケットを入手するつもりが、イミグレから街の中心部までの道がまた分からない。2人とも歩き疲れていたので、タクシーを拾う。タクシーといっても少し大きめのスクーターで、それに3人乗り。何がどう間違って伝わったのか、タクシーはまず港に向かった。3人乗りでもなかなか安定していて、運転手と俺の間に挟んだティミの感触も心地言い。結局、港で彼女を下ろし、俺はまた街に戻ることにした。

1人きりの状態から始まった旅は、寂しい疎外感につつまれていた。モンスーンが一時的に癒してくれたが、雨が止むとまた1人。それがいつのまにか、ヅーン、ステファン、クリスティナと出会い、ション・プーチやキム、ドナとアリー(と一応サトシ)、ジャッキー、そしてレナにティミ、といつの間にかいろんな人に囲まれていた。旅が終わりに近づくにつれて、1人、また1人と別れを告げる。そして、ティミと別れた俺は、また1人に戻る。疎外感はもうない。寂しいけれど、最初の頃とは違う寂しさだ。終わらない旅は旅じゃない。短い旅だし、最初から終わりの見えていた旅だ。だけど、そんな足袋の中にも、終わらずにずっと続き続けるものはあるだろう。

また、いつか、それに再会する日がきっと来る。

9月23日 ピピ島

9日目:別れの時へ / レナ今日はピピ島最後の日。明日の朝にはここを発ち、プーケットから日本に向かう。

昨日はマヤ湾から戻った後、シーフロッグで下働きをしていたジャッキーと会い、2人で夕食に。そしてそのまま飲みに行くことに。彼はミャンマー出身で、イギリス、マンチェスターで少し働いた後、ここにやってきた。パスポートを5年前に失って、違法移民となり、今では毎月3000バーツを警官に払い黙認してもらっている。5ヶ月ほど前、1ヶ月間ピピ島に来ていた日本人女性と恋仲になったが、彼女が日本に帰ってから連絡が取れなくなった、という。アドレス帳を見せてもらうと、ケータイの番号で、しかも数字が1つ多い。わざとか、間違いか分からない番号だ。それに日本の国債番号がない。これでは連絡が取れないのも無理はない。とりあえず、日本に戻ったら彼女に連絡をとってみて、可能だったらお互いの連絡先を教えることにした。彼は喜んでいたが、なぜか食事は俺のおごりだった。ま、いいんだけどさ。

今朝はゆっくりして、昼前にインターネット屋でション・プーチの調べ物をしていると、ジャッキーがやってきて、一緒に食事。食後、別れて土産を探す。特にこれといったものはない。娘の島は、生活自体が素晴らしいのであって、モノはそうでもない。途中、シーフロッグによってレナたちに別れの挨拶を。そこで、母への土産にトムヤムクンを買いたいが言い方法はないかと聞くと、それならピピ島のレシピを書くから、必要なスパイスだけ買っていけばいいと言う。確かにそれはいい考えだ。もちろん、日本にもレシピはあるけど、世話になった人からもらうレシピというのも乙だろう。料理の得意なスタッフが戻ったらレシピをもらうことにして、とりあえずバンガローに戻る。

プールで人泳ぎ。シャワーを浴びて、タイ・マッサージやに。最後のマッサージはいつもより長く、丁寧に。気がつくと3人の女の子が周りを囲んでいた。誰が一緒に日本に行くか、一議論。いつもマッサージをしてくれる娘はしずかにそれを聞いていた。

マッサージ後、再びジャッキーと会い、夕食。また彼女への思いをずっと語り続ける。何度も、彼女は太っていて美しくない、というのが印象的だ。それでも彼女を愛している、と。語りが長いので適当なところで切り上げて、バンガローに戻る。

そこではション・プーチと宿のスタッフが食後の晩酌を楽しんでいた。俺もまざって一緒に飲む。
他の旅行者がいないのと、多くのスタッフがあまり英語を話さないため、ほぼタイ語での会話。カヤックの話をしているのかと思えば、実際には洗濯機が故障した話だったり、プーケットの話をしているのかと思えば、パンガンの話だったり。オセロとチェスを足して2で割ったようなゲームを教えてもらい、ション・プーチ斗勝負。最初は勝ったり負けたりしていたが、途中から彼が本気を出すと、全く勝てなくなった。簡単に見えるが結構奥が深い。何度も挑戦し、ようやく勝ったところでお開き。

宿を出て、辺りを散歩する。星がちりばめられた空に、街のほのかな明かりで浮かび上がるヤシの木。静かな海岸でたまに出くわすファイヤーダンス。街はまだ飲み歩く旅行者で活気が残っている。
最後はやはりサンフラワー・ビーチバーに。もうすぐ終わりの時間で、客はだれもいない。1人、海に向かって飲んでいると、バーのオーナーがやってきた。ベン・サンフラワーと名乗るドレッドヘアの男。目が少しイカレテイル。ピピ島の狂人と呼ばれているらしい。彼は津波で家族を無くした。イングランドから来て、ここで出会った奥さん。一緒にサンフラワー・ビーチバーで働いていた。彼は奥さんが亡くなった日の、彼女が死んだ時間を覚えていた。そのとき彼女は、こうやって俺の胸の中で死んでいったんだ。何年何月何日の何時何分だった。その時間に、こうして彼女は俺の胸の中で死んでいったんだ。やあ、マレーシアへようこそ。……違う、ここはタイだったな。ベンは何度も繰り返す。やあ、マレーシアへようこそ。なんだ、お前は泣いているのか?
当時のサンフラワー・ビーチバーは津波で流された。バーを再建したとき、彼は少しバーの位置を移動した。サンフラワー・ビーチバーの裏手には津波の犠牲者のための小さな記念公園がある。

干潮で遠浅の海がずいぶんと遠くまで引いていた。残りのビールを海に捧げに沖に向かって歩く。戻ってくると猫が切り株に座って、海を眺めていた。彼は何を見ているのだろうか。バーではいつのまにかハッピーバースデーの曲が流れている。

日本に戻るときが来たのだ、と俺は小さくつぶやいてみた。