October 27, 2006

Google Mobile supports Mobile Link Discovery

ちょっとひさびさの話題になりますが、社内IRC で

Google モバイル

注: モバイル互換のウェブサイトが既に存在する場合は、変換せずにそのページを直接表示します。

というのは Mobile Link Discovery を見ているのかなぁ? という話になったので実験。Google モバイルで "bulknews" を検索し、Bulknews.net に link rel="alternate" media="handheld" を入れる前後で結果をみてみた。

結果としては、MLD タグをいれるときちんとモバイルサイトにリダイレクトされました。Google モバイル側で、リンクをクリックする際に GET を投げて link タグをスキャンしているようですね。Google++!

他にもモバイル検索エンジンで、Mobile Link Discovery を読んでリンクを処理している (consumer) の例があれば教えてほしいです。

UPDATE: Google Mobile の 英語版FAQ には携帯端末のリダイレクトの仕方ということで Mobile Link Discovery タグが書いてありますね。

Posted by miyagawa at 03:52 PM | Comments (0) | TrackBack (0)

October 21, 2006

Shibuya.pm Tech Talks #7

Shibuya.pm #7 おわりました。お疲れ様でした。

自分は Test::Base についてプレゼン しました。資料アップしときます。ちょっと時間が5分ではおさまらなかったので、もうちょっとしゃべりたいことありましたが、便利そうかな? というのが伝われば、あとは使ってみてよさがわかるとおもうので、ぜひ使ってもらえるといいかなと思います。あと Ingy の去年のオリジナルなスライドは こちら から。

途中でお知らせしましたが、L-1 ビザを取得して11月からUSのサンフランシスコオフィス勤務となりました。Shibuya.pm のリーダーは竹迫さんに引き継ぎましたが、これからも機会があればリモートなり日本なりで Shibuya.pm には参加したいと思ってます。今後ともよろしく。

Posted by miyagawa at 05:26 AM | Comments (1) | TrackBack (0)

October 07, 2006

Plagger World Tour in 大阪

Plagger World Tour in 大阪 ということで、Kansai.pm 第7回ミーティングにゲストスピーカーとして参加します。

日時: 2006年10月17日(火) 18時~21時
会場: デジハリ大阪校

そもそも Plagger World Tour のラップアップを日本でまだやっていないなぁ、と思ってつぶやいていたところ、Kansai.pm の方で反応してもらって、ミーティングをセットアップしてもらうことができました。(ここでも会場手配で協力してもらった幹事マン Thanks です) 関西のほうではこうしたセミナーで話したこともないので、Plagger のイントロから応用まで幅広くしゃべろうと思っています。大阪にかかわらず関西近郊の方はぜひ。

個人的に大阪にいくのも数年ぶりなので楽しみです。10/17 の夕方前に大阪入りして、翌日の昼に帰る予定。

Posted by miyagawa at 12:44 AM | Comments (0) | TrackBack (0)

October 06, 2006

実践 Ajax を監訳しました

実践 Ajax ―Web2.0アプリケーション開発への手引き
Justin Gehtland Ben Galbraith Dion Almaer 宮川 達彦 加藤 慶彦
オライリー・ジャパン

Pragmatic Bookshelf からでている Pragmatic Ajax - Web 2.0 Primer の日本語版がオライリージャパンから発売されています。監訳ということで、内容の技術チェックなどのお手伝いをさせてもらいました。

Ajax は JSONRPC や Prototype.js, Dojo などひととおりなめる程度につかったことがある自分にとっては、監訳しながら新しい内容も得られてちょっとオトクな気分でした。日本語ではまだ解説がすくない Dojo また Prototype.js や Scrip.taculo.us 、また Rails や PHP などのバックエンドとの透過的なつなぎこみについても章をさいて解説してあってためになります。(目次はこちら)

このような最新技術書の悩みどころとして、出版された同時と現在とで状況が変わっている部分が多かれ少なかれ出てきてしまうのは避けられないですが、気づいた点は訳注などで補足するようにはなっています(ただ、私自身が追いきれていないので完全にはフォロー出来ていないと思います。お気づきの点はオライリージャパンまでフィードバックを送っていただければ助かります)

Posted by miyagawa at 01:36 PM | Comments (0) | TrackBack (0)

October 03, 2006

HTML::Selector::XPath をリリース

CSS Selector in Perl とか subtech - Bulknews::Subtech - CSS selector to XPath あたりで議論していた CSS 2 Selectors to XPath コンパイラなモジュールをつくって、CPAN に HTML::Selector::XPath としてリリースしました。

使い方は naoya さんが先に書いてますが、HTML から正規表現を使うことなくスクレイプするのに便利。たとえば Mixi にログインしてマイミク最新日記と、1件目のタイトル、本文を抜き出すコードが、以下のようにかけます。

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use HTML::Selector::XPath;
use HTML::TreeBuilder::XPath;
use WWW::Mechanize;

binmode STDOUT, ":utf8";

my $mech = WWW::Mechanize->new;
$mech->get("http://mixi.jp/");
$mech->submit_form(
    fields => {
        email => $ARGV[0],
        password => $ARGV[1],
    },
);

$mech->get("http://mixi.jp/home.pl");
$mech->get("http://mixi.jp/new_friend_diary.pl");

my @nodes = $mech->xpath(q|//a[@class="new_link" and contains(@href, "view_diary.pl?id=")]|);
print map $_->dump, @nodes;

my $link = URI->new( $nodes[0]->attr('href'), $mech->url );
$mech->get($link);

my $author = $mech->xpath('//td[contains(@background, "http://img.mixi.jp/img/bg_w.gif")]/b/font[@color="#605048"]')->content->[0];
$author =~ s/さんの日記$//;
print "Author: $author\n";

my $title = $mech->xpath('//td[@bgcolor="#FFF4E0" and @width=430]');
print "Title: ", $title->content->[0], "\n";

my $body = $mech->selector("td.h12");
print map { ref $_ ? $_->as_HTML : $_ } $body->content_list;

bgcolor とか width とかが変わったら書き直しやん!というツッコミはあると思いますが、正規表現で書くよりはかなり書きやすくなってます。ちなみに WWW::Mechanize::xpath と ::selector は use Perl の記事 に書いてあります。WWW::Mechanize のプラグインモジュール化する予定。

ruby のスクレイピングツールキット scrAPI にあるはてなダイアリーキーワードからのスクレイプ例も、

> export URL=http://d.hatena.ne.jp/keyword/%BA%B0%CC%EE%A4%A2%A4%B5%C8%FE 
> ~/tmp/selector.pl $URL "span.title > a:first-child"
紺野あさ美 (href=/keyword/%ba%b0%cc%ee%a4%a2%a4%b5%c8%fe?kid=800)
> ~/tmp/selector.pl $URL "span.furigana"
こんのあさみ (class=furigana)
> ~/tmp/selector.pl $URL "ul.list-circle > li:first-child > a"
アイドル (href=/keywordlist?cname=idol)

のようにできました。

Posted by miyagawa at 11:36 PM | Comments (0) | TrackBack (0)