Apr 28, 2007

セカンドライフってまだやってたのね

FPN-IT技術者は超保守的、セカンドライフへの無関心が持つ意味

これはネタとしてもひどいね。マジレスさしあげると、

  • ITエンジニア(IT系の技術者)はWeb屋さんではないし、ITサービス(?)はインターネットを使ったサービスだけではない。ITと「インターネットに関わる技術」を混同してないか。ぱっと思いついてすぐ実現できることに従事しているエンジニアしかいなかったり、特定の技術だけに依存してしまうエンジニアしかいなかったりしたら、ほとんどの基幹産業は機能不全に陥るだろう。
  • セカンドライフは「異界」であるかもしれないが、そんな「異界」など現実世界やネットに五万とある。そしてほとんどの人はそのほとんどすべてにコミットしない。だから異界なのだ。セカンドライフという異界(実質的に有料のSNSに過ぎない)だけにコミットすべき必然性がない。ついでに言えば、「世界」を模したものしか「世界」と認識できないというのも感受性に乏しい話だよね。例えば、Webだって一つの「世界」であって、その上でのWeb 2.0技術(?)にコミットしている技術者に対して、別の小「世界」にコミットしないのは向上心がないだなんて誰が言えるというのか。
  • IBMはセカンドライフにコミットしているかもしれないが、ディペンドはしていない。ディペンドするなら「セカンドライフを快適に動作させるためのMPU・OS・ブラウザの開発」を全社的に行うことになるがそんなことは起き得ないし、リソースの無駄である。普通に考えてほとんどの大企業は話題になるからコミットしているのであってそれに企業生命をかけるのはバカのすることである。
  • セカンドライフは3Dインタフェースなんてものではない。インタフェースが3Dなのではなく描画が3Dなのである。なぜ3Dで描画しているかというと単に仮想世界を現実世界に模して表現したかったからに過ぎない。四半世紀以上前からあるインタフェースを「新しい」と喧伝するのはおかしい。Amigaの名作ゲーム「ドラッケン」は80年代末だった。懐かしいね。
  • セカンドライフのインタフェースはpoorである。セカンドライフの世界が地球とおなじくらい、あるいは地球より大きかったとしよう。セカンドライフのインタフェースでどうやって世界を探索し、移動するのだろう。それを合理的に解決するのが「真のインタフェースの問題」というものだろう。セカンドライフは特に何も解決していない。
  • 高橋尚子が勝てないのは彼女の年齢による体力の衰えとチーム編成の問題だというのが妥当なところではないか。「スポンサーがついてハングリーじゃないから実力が低下している」というのは、酒場の論理として一応は成立しているようではあるが、高橋に当てはめることできるのはこの命題が全アスリートに当てはまる真理であるに限られる(そうでなければ高橋がたまたまそういうインスタンスであると筆者は主張しているのである、根拠もなく、一方的に)。私はかなり荒唐無稽な話だと思うが、もしその命題を示したければ、「スポンサーが付くとハングリーでなくなる」ということと「ハングリーでなければ実力が下がる」ということの両方を証明しなくてはならない。だが、言うまでもなくどちらも容易に反例が見つかる。

Apr 26, 2007

Googleトランジットで面白い遊び方がないかなあ

たいやき小松くんがレポート書いていた(Google Japan Blog: Google トランジット - 地図を見ながら路線検索)、Googleトランジット、なかなか面白いですね。

Google トランジット

基本は乗り換え案内なので都市部でないと役に立たないのですが、既存の乗り換え案内と違って出発点と終点の入力の自由度がえらく高くなっているところが楽しめるところでしょうか。

冷静な目で見るとしかし、結局、(1) 入力の曖昧性を許す、(2) Googleマップとシームレスである、(3) AJAXでそれなりにシームレスな操作性を実現している、という3点くらいがGoogleトランジットの特徴です。これらの特徴というかメリットをそれほど重視しないならば、既存の乗り換え案内から格段に便利になったというほどではないのも確かです。ユーザにとってみると(2)や(3)が重要なのかもしれませんが、テクニカルには(1)だけが他の乗り換え案内サービスと差別化し得るポイントだと思います。GoogleトランジットはGoogleマップのジオコーダ(入力文字列→座標)を利用できるので、このジオコーダの利便性が上がれば上がるほど乗り換え案内としての利便性も向上するでしょう。例えば、曖昧にしか名前を覚えていないレストランへの行き方を検索したいというユーザの需要に答えられるサービスを実現するにはそれを満たすジオコーダが必要です。そして多分Googleは(今は無理でも)それに近いものを提供できる有力なcandidateです。

ところで、Googleトランジットは、出発地点に対応する座標から一定範囲内の駅と、到着地点に対応する座標から一定範囲内の駅の間の経路探索を総当たりで行い、乗り換え回数・所要時間・コストで定まる評価関数でランク付けして順に表示するってなことをやっているのだと思いますが、これはGoogleの発明?そうではない気がしますが、もしそうでないなら小松くんはもう少し書き方に注意すべきなのかもしれませんね(論文と広報ブログでは配慮すべき点が違うとは思いますが)。他のインスタンスがあれば知りたいところです。

あとは、Google検索で「渋谷から六本木」とかすると、駅前探険倶楽部などのリンクを表示してくれますが、これはいつGoogleトランジットへのリンクに置き換えられるのでしょう。何だかチグハグな感じもしますね。


さてと、現状のGoogleトランジットで何か面白い遊び方をするとしたら、それはへんてこなルートが表示されるのを見て愉しむことくらいでしょうか。

こんな感じに健康的なルートも表示させてみたり。

from: 岐阜県安八郡墨俣町 to: 岐阜県養老郡上石津町 - Google トランジット

上記はGoogleトランジットが市町村合併にまだ不十分にしか対応していない例でもあります。両町は今は大垣市の一部となっています。

じゃあってんで、上高地と平湯温泉で調べると、安房峠をてちてち越えるルートか、国道158号線をてちてち歩いて新島々まで行き、新島々駅~(松本電鉄上高地線)~松本駅~(篠ノ井線)~塩尻駅~(中央本線)~多治見駅~(太多線)~美濃太田駅~(高山本線)~高山駅と5線を乗り継ぎ(ワイドビューしなのなら塩尻での乗り換えは不要)、やはり国道158号線をてちてち歩いて平湯温泉に至るというルートが出てくると面白いと思ったのですが、あまり細かい地名には対応していない様子。残念。

from: 長野県松本市安曇 to: 岐阜県高山市 - Google トランジット

駅から徒歩で一定圏内の地名しかデータベースには含まれていない、ということかもしれませんね。

追記: そうでした。ワイドビューしなので名古屋まで出て、ワイドビューひだで高山まで行けば、乗り換え2回で済みますね。忘れていました。

Apr 24, 2007

Google AJAX Search APIに微妙なバグがあるような気がする…

Ogawa::Buzz: Googleの JavaScript APIがこっそり統一されてきている件について。に絡んでちょっと深追いしていて、微妙なGoogle AJAX Search APIの問題に悩まされています。私自身はJavaScriptに精通しているわけでもないので勘違いかもしれません。もし解決方法をご存知の方がいらっしゃったらご教授ください。

さて、問題というのは、

  • Microsoft Internet Explorer 6を使っている。
  • Seach APIをFeed APIとともに用い、かつFeed APIを二度以上使う。
  • ブラウザのキャッシュをクリアした状態で起きる(一旦ページのロードに成功すれば以降は問題ない)。

という非常に限定的な条件下で生じます。

試しに以下の7通りを用意してみました。

  1. 0 Search + 1 Feed
  2. 0 Search + 2 Feeds
  3. 0 Search + 3 Feeds
  4. 1 Search + 0 Feed
  5. 1 Search + 1 Feed
  6. 1 Search + 2 Feeds
  7. 1 Search + 3 Feeds

毎回IE6のキャッシュをクリアしてアクセスすると、6.と7.だけはブラウザがストールしてしまいます(ずーっと待っていると正常に表示されるのかもしれませんが忍耐強くないもので)。FirefoxやIE7ではそういう問題は起きません。Operaなどでどうなるのかは試していません。Feedだけを複数表示しても異常はなく、Searchと組み合わせたときだけ発生する問題なので、おそらくはSearchに問題があるのだろうと当たりをつけていますが、果たして…。

ちなみにJavaScriptの本体はgooglejsapi.jsです。こう書けば問題が回避できるという「添削」などを期待しております。中の人で対処してもらうのでも構いません。

というわけでよろしくお願いいたします _o_

2007-06-14追記:
あれ?直っているっぽい?

Apr 22, 2007

プジョー306を手放すことにしました

思い立って、98年の6月に購入した愛車のプジョー306スタイルを手放すことに決めました。私の車の利用頻度を考えると、ランニングコストとレンタカー代を天秤にかけるとレンタカーの方が圧倒的に経済的だったのですが、それを上回る愛着があり、なかなか手放せずにきました。いつかは手放さざるを得ず、6月にやってくる4回目の車検がいいタイミングなのではないか、と。まあ、昨夏燃料漏れが見つかって場当たり的な対処はしたもののゆくゆくはガソリンタンクの交換が必要になりそうだとか、かなり前からエンジンオイル漏れしていてその都度対処はしてきたもののそろそろ騙しようがないだとか、プジョーにありがちなその手の事情もあります。エンジン自体は絶好調だし、室内も9年経た車とは思えないくらい綺麗なんですけどね。

まず土曜日。近所のガリバー世田谷代田店に行き、査定してもらいました。

査定結果は、0円!!!

以前の車検時に支払ったリサイクル料の14,500円だけ戻ってきて、そこから月割の自動車税、買主の損失を補填する保険料を差っ引いて、松屋の牛めし10~20杯分くらいが私の手元に残る計算になるようです…。

…打ちのめされました。受取額はともかく、査定額が0円だなんて…。無価値すっか?あとその「買主の損失を補填する保険」というのがよく分かりません。なぜ売主が負担する必要があるのでしょうね。見かけの売却額を大きくするためなのかもしれませんが、それなら0円の物件に対しては保険料が必要ないはずなのです。0円の物件に対する事後損失は0円以上になり得ないし、それに価格を上乗せして売る業者は価格に保険料も含めるべきなのです。

気を取り直して日曜日。今度は買ったディーラーに持ち込んで査定してみました。

今度は、20,000円!!!

かなり?!上がりました。しかし…2万。リサイクル料が戻ってきて月割りの自動車税が差し引かれて、まあ豚めしなら100杯近く食べられます。で、分かったこともあります。やっぱりほとんど無価値であるということ。これ以上中古屋回っても意味がなさそうだ、と。辛抱強く買い手を待ったしても5~10万が最高で、そんなの駐車場代や車検代であっという間に吹き飛んでしまいます。金銭的なことを考えればやはりすぐ売るしかないのですね。

断腸の思いですが、決断しました。

売ります…。

バイバイバイバイクオ~…

Apr 20, 2007

Googleの JavaScript APIがこっそり統一されてきている件について。

RSS/Atomなどの各種フィードを取得する、Google AJAX Feed APIが公開されていましたね。

Google AJAX Feed API

使い方の説明は上記リンクから辿っていただくとして、GoogleのJavaScript API三兄弟である、MapsSearchFeedのインタフェースがこっそり統一されつつあることに気がついたので、このエントリーで紹介します。

はじめに、以下のようにGoogleが用意したAPI loaderを読み込みます。

<script type="text/javascript"
        src="http://www.google.com/jsapi?key=API key"></script>

3つのAPIのAPI keyは共通なので、上記で指定するのはどのAPIのサインアップページで生成したkeyでも構いません。

Feed APIを利用する場合には、

// API本体を読み込む
google.load('feeds', '1');
// 初期化関数を定義する
function feeds_init() {
  var feed = new google.feeds.Feed('http://b.hatena.ne.jp/hotentry?mode=rss');
  feed.setNumEntries(10);
  feed.load(function(result) {
    if (!result.error) {
      var container = document.getElementById('feed');
      var text = '';
      for (var i = 0; i < result.feed.entries.length; i++) {
        var entry = result.feed.entries[i];
        text += '<li><a href="' + entry.link + '">' + entry.title + '</a></li>';
      }
      container.innerHTML = '<ul>' + text + '</ul>';
    }
  });
}
// 定義した関数をイベントハンドラとして登録する
google.setOnLoadCallback(feeds_init);

のように書きます。この例ははてなブックマークのhotentryの最初の10件を表示するものです。

...で、ここからが重要。Search APIの場合も同様に、

// API本体を読み込む
google.load('search', '1.0');
// 初期化関数を定義する
function search_init() {
  var searchControl = new GSearchControl();
  searchControl.addSearcher(new GwebSearch());
  searchControl.draw(document.getElementById('searchcontrol'));
}
// 定義した関数をイベントハンドラとして登録する
google.setOnLoadCallback(search_init);

と書けちゃいます。Maps APIの場合もやっぱり、

// API本体を読み込む
google.load('maps', '2');
// 初期化関数を定義する
function maps_init() {
  var map = new GMap2(document.getElementById('map'));
  map.setCenter(new GLatLng(35.658586, 139.745450), 16);
}
// 定義した関数をイベントハンドラとして登録する
google.setOnLoadCallback(maps_init);

と書けちゃいます。

つまりは、script要素で各APIのJavaScriptコードをいちいち読み込む必要はなく(共通のAPI loader部分を読み込むだけで済み)、3つのAPIとも共通の手続きでブートストラップできます。別の言い方をすると、google.load()を含むコード部分をあらかじめモジュールとして分離しておけば、各HTML文書では、API loaderを読み込み、モジュールを必要に応じて追加するという比較的クリーンなマナーを採れる、ということです。

ちなみに、Search APIとMaps APIを上記の手続きで読み込む方法は、まだドキュメント化されていないので、今だけ限定でもれなく知らない人に自慢できます(笑)

以下は使用例。3つのAPIを順次呼び出してレンダリングしています。

Google AJAX API family (Feeds, Search, Maps)

API間で連携する例を作りたかったのですが、時間がないので省略します。

GSearch.setOnLoadCallback()というメソッドも存在していた(いる)ところを見ると、将来的には3つのAPIの共通かつ有用な部分をgoogleクラスが提供するようになるのかもしれません。

Apr 16, 2007

超シンプルなブログサービスTumblr

超シンプルなブログサービス、Tumblrを始めてみました。

tumbling pointers

ブックマークメモ用。Google Notebookでもいいのですが、もっさりしているので。

テンプレートをいじってみたのですが、自由度が低すぎますね。各エントリーのtitle要素を変更する程度の簡単な改造も今のところどうやったらいいか見当がつきません。わたしがやった改造は、↓くらい。

{block:Link}
    <div class="link">
        <a href="{URL}" class="link" {Target}>{Name}</a>
        {block:Description}
            <span class="description">{Description}</span>
        {/block:Description}
    </div>
    <ul>
        <li><a href="http://b.hatena.ne.jp/entry/{URL}">はてなブックマークで他の人の意見を読む</a></li>
        <li><a href="http://b.hatena.ne.jp/append?{Permalink}">このエントリーをはてなブックマークに追加する</a></li>
    </ul>
{/block:Link}

Apr 13, 2007

CentOS 5がリリース

首を長くして待っていたCentOS (www.centos.org - The Community ENTerprise Operating System)の5.0がリリースされていた。

[CentOS-announce] Release for CentOS-5 i386 and x86_64

いくつかのマシン(主にVMware Serverのホスト)には試験的に5.0 betaをインストールしてあったので、例によってこんな感じでアップデートしておいた。

(i386の場合)
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-0.0.el5.centos.2.i386.rpm
(x86_64の場合)
# rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/centos-release-5-0.0.el5.centos.2.x86_64.rpm
(以下はi386とx86_64で共通)
# yum clean all
# yum --disablerepo=* --enablerepo=base --enablerepo=updates update yum* rpm*
# yum clean all
# yum --disablerepo=* --enablerepo=base --enablerepo=updates upgrade

えらく時間がかかった。

新生銀行が今更「ビンゴカード」方式を導入するらしい

いろいろあった新生銀行が、いろいろあって口座番号と暗証番号、それとパスワードで認証する、古き良きネットバンキングシステム(シティバンク銀行のシステムと瓜二つ)を開始したのが約6年前。その新生銀行が重い腰を上げ、ソフトウェアキーボードによる暗証番号・パスワード入力をサポートしたのが約3年前。そしてそのネットバンキング界の雄(笑)が、ついに乱数表を使った認証に乗り出す。今更感がとても強い。

[新生銀行] セキュリティ・カードご提供開始のお知らせ

3年単位でのシステムの更新があるようだ。

さて乱数表を用いる、しかもログイン時にそれを用いる方式の問題点に関しては4年も前に高木さんが書いている通り。

「高木浩光@茨城県つくば市の日記」跡地

新生銀行の場合、ログイン時の乱数表認証をソフトウェアキーボードを用いて行うのかもしれない。しかし、その効果も限定的であるのは否めない。最近のソフトウェアキーボードでは、マウスで操作するだけでなく、キーの配列を毎回変えるとか、クリックする際にキーの内容を消すとか、簡単に実現できることは実現されているようだけど。ちなみに新生銀行の現在のソフトウェアキーボードは暗証番号の入力欄のみキー配列を毎回変えるという、どちらかと言えばトラディショナルな機能しか持たない。

Apr 7, 2007

「マイマップ」をGoogle Maps APIを使って描画する

当然のことだけど、Google Maps APIにKML/GeoRSS Overlays機能が追加されたことと、マイマップ機能がリリースされたことはセットだと捉えるべきだ。

前のエントリーで作ったマイマップがある。

「マイマップ」機能で作ったオーバーレイ地図
「マイマップ」機能で作ったKML

このKMLは、Google Maps APIを使えば下のようにオーバーレイ表示できる。

http://as-is.net/maps/kml2gmaps-ggeoxml.html?url=<KMLのURL>

つまり、マイマップ機能で作ったKMLは、Googleマップ自体でも、Google Earthでも、Google Maps APIでも、その他のアプリケーションでも利用できる。この事実こそが、前のエントリーで、マイマップ機能のことを「オンラインサービスとして実現されたKMLエディタアプリケーション」と呼んだ理由なのである。

Apr 5, 2007

Google Mapsのマイマップ機能が good!!

Google Mapsにマイマップ機能というのが追加されていた。

Google Maps

この機能を使うと、テキストだけでなく、写真やビデオをアノテーションとして追加するなどしてカスタマイズされた地図を作ることができる。また、そのカスタマイズされた地図を他人と共有したり、KMLとして出力することでGoogle Earthで表示したりすることができる。

「マイマップ」機能で作ったオーバーレイ地図
「マイマップ」機能で作ったKML

これは端的に言ってしまえば、Google Maps上にKMLエディタサービスを追加・実現したものだと言えるだろう。マイマップ機能で作成できるカスタマイズ地図というのは、アノテーションを表現するKML(またはGeoボキャブラリ付きのAtom Feed、または他のもう少し効率の良い内部表現)をGoogleマップ上にオーバーレイして表示したものと言ってよい。ユーザはマイマップ機能で作成したKML自体のURLを共有してもいいし、KMLをオーバーレイした地図のURLを共有してもいい。それらのURLの公開・非公開をアクセスコントロールする機能はGoogleが提供する、ということだ。

ちょっと視点を変えると、Google EarthはスタンドアロンなKMLエディタアプリケーションで(も)あるが、Google Mapsのマイマップ機能はオンラインサービスとしてそれを実現したものである。これは、スタンドアロンのメーラアプリケーションとGoogle Mailの関係と同じだと言える。マイマップ機能がGoogle Mailほど優れたインタフェースを持っているのかというと、それは「Yes」とは言えないが、非常によくできているというが現時点での印象である。

あとはKMLと等価なGeoボキャブラリ付きのAtom Feedを定義し、そのAtom FeedをGData APIで編集できるようになるのを期待すればいいのかな。

...そして、下のようなad hocなアプローチは無事寿命を迎えたわけである。

Ogawa::Buzz: Pin It!: Googleマップで任意の場所にピンを立てる Bookmarklet

約2年間お疲れ様。

Apr 2, 2007

大垣日大が選抜高校野球大会の決勝に進出

私の出身高校から一番近い隣の高校である、大垣日大高校が選抜高校野球の決勝に進出することになりました。

決勝は常葉菊川Vs大垣日大 選抜高校野球大会第11日|野球|スポーツ|Sankei WEB

私の目の黒いうちは岐阜県勢としてこのような偉業を達成する高校はないものと思っていました。高木守道がいた岐阜商業以来の快挙だと記憶しています(もちろん私が産まれる前のことです)。

そうそう、つれ合いが、

岐阜の大垣日大と静岡の常葉菊川は、

  • 地方性イマイチ / やまびこ打線とかさわやかイレブン、離島の島っ子みたいな明確な僻地色がない。
    (*) 両方とも東海道新幹線の停車駅を持つ都道府県である。しかし、両方とも「のぞみ」には平気でスルーされる。特に静岡県は熱海・三島・新富士・静岡・掛川・浜松の6駅を持ちながら全部スルーされる。スタンプラリーでこの6駅を回るのは山手線全駅を回るより時間がかかるのではないか。
  • ドラフトの目玉となるような目立った選手がいない。
  • スタンドにはかわいい娘皆無。
    (*) 磐田には長澤まさみがいても菊川にはいない。
  • 公立重視の岐阜県と静岡県において両校とも私学。
    (*) それゆえ両校の卒業生が地元でヘゲモニーを握るという例はあまりない。地元民も驚喜というよりはむしろ動揺している。
    (*) 岐阜・静岡の有望選手は愛知県内の私学に行ってしまうという現象もある?
  • 大垣日大に至っては「希望枠」でほんとは勝ち進んではいけなかった。
    (*) 「21世紀枠」の宮崎・都城泉ヶ丘なら世間はきっと許したし、テレビ的にもおいしかったに違いない。

そんな意味で明日の決勝は歴史的(に注目度の低い決勝)。

などと申しておりました。(*)は私の補足。

まあそう言わずに。相手投手の立ち上がりばなの不調につけこんで手堅く点を取り、9回まで着実に試合を運ぶ大垣日大の野球はなかなか玄人好みのするいい野球ですよ、地味だけど。149キロの剛速球を投げる朝倉健太がいながら春夏とも初戦敗退した東邦よりは間違いなく強いですよ。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com