ちょっとひさびさの話題になりますが、社内IRC で
注: モバイル互換のウェブサイトが既に存在する場合は、変換せずにそのページを直接表示します。
というのは 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 タグが書いてありますね。
Shibuya.pm #7 おわりました。お疲れ様でした。
自分は Test::Base についてプレゼン しました。資料アップしときます。ちょっと時間が5分ではおさまらなかったので、もうちょっとしゃべりたいことありましたが、便利そうかな? というのが伝われば、あとは使ってみてよさがわかるとおもうので、ぜひ使ってもらえるといいかなと思います。あと Ingy の去年のオリジナルなスライドは こちら から。
途中でお知らせしましたが、L-1 ビザを取得して11月からUSのサンフランシスコオフィス勤務となりました。Shibuya.pm のリーダーは竹迫さんに引き継ぎましたが、これからも機会があればリモートなり日本なりで Shibuya.pm には参加したいと思ってます。今後ともよろしく。
Plagger World Tour in 大阪 ということで、Kansai.pm 第7回ミーティングにゲストスピーカーとして参加します。
日時: 2006年10月17日(火) 18時~21時
会場: デジハリ大阪校
そもそも Plagger World Tour のラップアップを日本でまだやっていないなぁ、と思ってつぶやいていたところ、Kansai.pm の方で反応してもらって、ミーティングをセットアップしてもらうことができました。(ここでも会場手配で協力してもらった幹事マン Thanks です) 関西のほうではこうしたセミナーで話したこともないので、Plagger のイントロから応用まで幅広くしゃべろうと思っています。大阪にかかわらず関西近郊の方はぜひ。
個人的に大阪にいくのも数年ぶりなので楽しみです。10/17 の夕方前に大阪入りして、翌日の昼に帰る予定。
Pragmatic Bookshelf からでている Pragmatic Ajax - Web 2.0 Primer の日本語版がオライリージャパンから発売されています。監訳ということで、内容の技術チェックなどのお手伝いをさせてもらいました。
Ajax は JSONRPC や Prototype.js, Dojo などひととおりなめる程度につかったことがある自分にとっては、監訳しながら新しい内容も得られてちょっとオトクな気分でした。日本語ではまだ解説がすくない Dojo また Prototype.js や Scrip.taculo.us 、また Rails や PHP などのバックエンドとの透過的なつなぎこみについても章をさいて解説してあってためになります。(目次はこちら)
このような最新技術書の悩みどころとして、出版された同時と現在とで状況が変わっている部分が多かれ少なかれ出てきてしまうのは避けられないですが、気づいた点は訳注などで補足するようにはなっています(ただ、私自身が追いきれていないので完全にはフォロー出来ていないと思います。お気づきの点はオライリージャパンまでフィードバックを送っていただければ助かります)
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)
のようにできました。