ブログ  前の月  次の月 

たけまる / 2007-06


2007-06-29 Fri

_ microformats の例 - hReview [microformats]

hReview は,ブログの記事などを評価するときに用いられます.

■ class 属性

主な class 属性です (CSS selector 表記).評価対象は必須です.
.hreview ".fn .url" 評価対象
.hreview .summary 概要
.hreview .dtreviewed 評価日時
.hreview .type 種類 (product, business, event, person, place, website)
.hreview .reviewer 評価者 (hCard)
.hreview .rating 評価 (1-5)
.hreview .description 詳細

評価対象には hCard と hCalendar を指定することもできます.

■ 代替表記について

評価は 1 から 5 の数値で表すことになっていますが,代替表記を使うこ
ともできます.タグ名を abbr とし,正式な表記を title 属性に書きま
す (たぶん評価以外に使ってもよいと思います).

<abbr class="rating" title="5">★★★★★</abbr>

■ 例

hReview の簡単な例を示します.

<div class="hreview">
  <div>
    <span class="summary">microformats の評価</span>
    (<a class="fn url" href="http://microformats.org/">microformats.org</a>)
  </div>
  <div>
    評価者:
    <span class="reviewer vcard">
      <span class="fn">マイクロ 太郎</span>
    </span>
  </div>
  <div>
    評価:
    <abbr class="rating" title="5">★★★★★</abbr>
  </div>
</div>

microformats の評価 (microformats.org)
評価者: マイクロ 太郎
評価: ★★★★★


■ 参考情報

hReview を生成するツールがあります.概要や日時を入力すると,
hReview に対応した HTML を出力してくれます.
- hReview Creator

hReview の仕様は以下にあります.
- hreview - Microformats
- hreview-ja - Microformats
- hreview-cheatsheet

2007-06-24 Sun

_ XML::FeedPP v.0.21 のパッチについて [perl][feed]

きのうのエントリ [2007-06-23-1] で,
XML の解析には XML::FeedPP を使っています.バグを修正するために,
以下のパッチを当ててください.
XML-FeedPP-0.21_01.patch
XML-FeedPP-0.21_02.patch
XML-FeedPP-0.21_03.patch
と書いておきながら,パッチの説明をまったくしませんでした.あまりに
不親切なので,一応説明しておきます.

なお,XML::FeedPP については↓をみてください.
[Perl] XML::FeedPP - RSS・RDF・Atomフィードの解析・生成・変換・結合

# 作者の川崎さんにはパッチをお送りしてあります.

XML-FeedPP-0.21_01.patch

XML::FeedPP を Atom 1.0 に対応させるためのパッチです.Atom 0.3 と
Atom 1.0 のフィードを扱うときには,それぞれ,
my $atom03 = XML::FeedPP::Atom03->new( ... );
my $atom10 = XML::FeedPP::Atom10->new( ... );
のようにしてください.

また,後方互換性も保たれています.たとえば,
my $atom = XML::FeedPP::Atom->new( ... );
とすれば,Atom 0.3 フィードを扱うこともできます.

XML-FeedPP-0.21_02.patch

"JST" のように,略称で表されたタイムゾーンに対応しました.このパッ
チを当てるときは,Time::Timezone モジュールが必要になります.

XML-FeedPP-0.21_03.patch

RDF (RSS 1.0) の著者を表す要素名を,"creator" から "dc:creator" に
修正しました.名前空間の表し方というのは一通りではなく,他の表記も
ありえるのですが,たぶん "dc:creator" と表すのが一般的だと思います.

■ その他の問題点

XML::FeedPP は名前空間の扱いが厳密ではありません.また,Atom で
content 要素が XHTML であるときを扱うこともできないようです.これ
らの点が気になる場合は XML::Feed を使ったほうがいいかもしれません.
一方,速度を重要視するときは XML::FeedPP がいいでしょう.

参考 たけまる / フィード変換モジュールはどれが速いかベンチ

2007-06-23 Sat

_ GData に (ほぼ) 準拠したブログ検索 [gdata]

"Google データ API" (GData) に (ほぼ) 準拠した「ブログ検索ウェブサー
ビス」を作りました.

ウェブサービスの API は,ウェブサービスの数だけ存在するといってい
いほどマチマチです.似たサービスであっても API が再発明されていま
す.そのため,ウェブサービスを利用したマッシュアップ系サービスも,
マチマチに対応せざるを得なくなっています.どうにも無駄な気がします.

ということを考えていたら,こんなニュースがありました.

p0t: 標準Web API
「YouTubeの次期APIには、GDataを採用」

この瞬間に標準のWeb APIはGDataにきまっちゃった・・・?

API の優劣を比較することは難しいですが,上の記事にも書かれているよ
うに,GData は「もっとも無難」な API でしょう.基本的なクエリはしっ
かり定義されていて,一部のサービスでしか使わないような特殊な API
はなく,丁度よいという印象です.

デファクトになると判断するのはまだ速いと思いますが,GData (ほぼ)
準拠の「ブログ検索ウェブサービス」を作ってみました.すでにある
GData サービス (Google Calendar など) と同じように,ブログ検索を扱
えるようになります.

デフォルトでは,"Googleブログ検索" に対して検索を行います.クエリ
パラメータ uri= でフィードを指定すると,そのフィードからクエリに合
致するエントリを検索します.

# ちなみに,同じ会社でありながら,Googleブログ検索の API は GData
# とまったく異なります.

■ 例

# けっこう重いです..

2007-12-01 以降に書かれた "google" に関するブログを検索
/feed/search/?q=google&updated-min=2007-12-01T00:00:00Z

"xml" に関するブログと CPAN モジュールを検索 (検索対象に CPAN を追加)
/feed/search/?q=xml&uri=http://search.cpan.org/

■ ベースURI

http://teahut.sakura.ne.jp/feed/search/

■ パラメータ

GData で定義されているパラメータを簡単に説明しておきます.詳しくは,
たけまる - GData/Protocol をみてください.

パラメータ 説明
q= 検索文字列 (フレーズや除外文字列, OR 指定可能, ex. q="Elizabeth Bennet" -Austen)
author= エントリの著者名あるいは電子メールアドレス
/-/<category>/ カテゴリ ("|" で区切ると OR)
updated-min=, updated-max= 更新時刻の範囲 (ex. 2007-01-01T00:00:00+09:00)
alt= 変換後のデータ形式 (atom, rss, json-in-script)
callback= JavaScript関数名 (alt=json-in-script のとき)

デフォルトでは Googleブログ検索 から検索しますが,uri= で検索対象
ブログを追加することもできます.

■ GData との相異点

- 検索文字列 (q=, author=) は単語単位ではなく,任意の部分文字列に
  ヒットする (N-gram)
- カテゴリクエリ (/-/<category>/) では @scheme を無視している
- POST などによるエントリの変更はできない

■ ソース

[2007-04-02-1] のフィード変換サービスと同じく,Perl で書きました.

スクリプト
mod_rewrite の設定

■ XML 変換

XML の解析には XML::FeedPP を使っています.バグを修正するために,
以下のパッチを当ててください.
XML-FeedPP-0.21_01.patch
XML-FeedPP-0.21_02.patch
XML-FeedPP-0.21_03.patch

(2007-06-24 追記) パッチの説明を [2006-06-24-1] に書きました.
(1007-12-03 追記) XML::FeedPP から XML::Feed に変更しました.
Referrer (Inside): [2007-12-03-1] [2007-06-24-1]

2007-06-21 Thu

_ microformats の例 - hCalendar [microformats]

hCalendar は,スケジュール情報を表すために用いられます.iCalendar
という規格のうち,イベントを表す部分 (VEVENT) を microformats に移
植したようです.

■ class 属性

主な class 属性です (CSS selector 表記).概要,開始日時は必須です.
.vevent .summary 概要
.vevent .dtstart 開始日時
.vevent .dtend 終了時刻
.vevent .description 説明
.vevent .location 場所
.vevent .url URL
.vevent .category カテゴリ

主催者などの情報は定義されていないようです.

■ 代替表記について

日時は 2007-01-01T00:00:00+09:00 のように表すことになっていますが
(RFC3339 参照),人間にとって読みにくいので,代替表記を使うことがで
きます.タグ名を abbr とし,正式な表記を title 属性に書きます (代
替表記は日時以外に使ってもよいと思います).

<abbr class="dtstart" title="2007-01-01T00:00:00+09:00">平成19年元旦</abbr>

■ 例

hCalendar の簡単な例を示します.

<div class="vevent">
  <span class="summary">初詣</span>
  <table>
    <tr>
      <th>日時
      <td><abbr class="dtstart" title="2007-01-01T00:00:00+09::00">平成19年元旦</abbr>
    <tr>
      <th>場所
      <td><span class="location">明治神宮</span>
    <tr>
      <th>詳細
      <td><div class="description">参加者募集中</div>
  </table>
</div>

ブラウザで表示すると次のようになります.

初詣
日時 平成19年元旦
場所 明治神宮
詳細
参加者募集中


■ 参考情報

hCalendar を生成するツールがあります.概要や日時を入力すると,
hCalendar に対応した HTML を出力してくれます.
- hCalendar Creator

hCalendar の仕様は以下にあります.
- hcalendar - Microformats
- hcalendar-ja - Microformats
- hcalendar-cheatsheet - Microformats

2007-06-18 Mon

_ コメント欄と一言メッセージを復活させました

コメント欄と一言メッセージを復活させました.エントリの一番下に表示
されています.表示されないときは,タイトル横の "_" をクリックして
みてください.

結城浩さんの日記 を参考に,簡単なスパム対策を施してあります.

2007-06-16 Sat

_ microformats の例 - hCard [microformats]

[2007-06-11-1] では microformats の概要について説明しました.今回
から個々の microformats 仕様をみていきます.

hcard は,名刺に書かれるような情報を表す microformats です.元々
vCard という規格があって,それを microformats に移植したようです.

■ class 属性

主な class 属性です (CSS selector 表記).名前は必須です.
.vcard .fn 名前
.vcard .adr 住所
.vcard .tel 電話番号
.vcard .email 電子メール
.vcard .org 所属
.vcard .title 役職
.vcard .url URL
.vcard .category カテゴリ

いくつかの class 属性は,より詳細に指定することができます.

名前を詳細に指定するときは,.fn ではなく .n を使います.
.vcard .n .given-name 名前 (ファーストネーム)
.vcard .n .family-name 名字
.vcard .n .additional-name ミドルネーム

住所です.
.vcard .adr .type 種類 (work, home, etc.)
.vcard .adr .street-address 町内住所
.vcard .adr .locality 市町村
.vcard .adr .region 州・県
.vcard .adr .postal-code 郵便番号
.vcard .adr .country-name

電話番号や電子メールは,種類を指定することができます.電話番号の例
です.
.vcard .tel .type 種類 (home, work, fax, cell, pager)
.vcard .tel .value 電話番号

■ 例

簡単な例を示します.これは,株式会社マイクロ に勤めている マイクロ
太郎 さんの名刺です.

<div class="vcard">
  <div class="org">株式会社 マイクロ</div>
  <span class="fn">マイクロ 太郎</span>
  <div class="tel">+81-3-1234-5678</div>
  <a class="email" href="mailto:foo@example.com">foo@example.com</a>
</div>

ブラウザで表示すると次のようになります.

株式会社 マイクロ
マイクロ 太郎
+81-3-1234-5678


■ 参考情報

hCard を生成するツールがあります.名前や住所を入力すると,hCard に
対応した HTML を出力してくれます.
- hCard Creator

hCard の仕様は以下にあります.
- hcard - Microformats
- hcard-ja - Microformats
- hcard-cheatsheet

2007-06-13 Wed

_ ルートの無限入れ子クイズ [math]

たまには数式をいじっておかないと,と思い立ち,解いてみました.

[結] 2007年6月 - 結城浩の日記 - ルートの無限入れ子クイズ

問題

大学入試だったらしいので,高校生らしい解き方をしてみます (というか,
この解法しかわからん
もっと簡単に解けたので追記しました).

続きを読む

2007-06-11 Mon

_ microformats とは [microformats]

Web2.0 の次を目指す技術として microformats が注目されています.一
言でいうと,ウェブページに簡単な「目印」を付けるための技術です.
microformats には,ウェブ検索を変える力があると期待されています.

まず,microformats とはどのような技術なのかみていきます.

ウェブページに使われている HTML は,ページのレイアウトを指定する言
語です.このため,機械がページの内容を読むことはできません.XML を
使えば機械が読めるようになりますが,人間が読むには殺風景です (CSS
と組み合わせてレイアウトを指定できますが,面倒です).

大雑把にいうと,microformats は「HTML に XML のフレイバーを加えた
もの」です.そのために,class 属性を用います.

たとえば,microformats で名刺を表すには,

<div class="vcard">
  <div class="org">株式会社 マイクロ</div>
  <span class="fn">マイクロ 太郎</span>
  <div class="tel">+81-3-1234-5678</div>
  <a class="email" href="mailto:foo@example.com">foo@example.com</a>
</div>

のような HTML を用意します.

これをブラウザで表示すると,

株式会社 マイクロ
マイクロ 太郎
+81-3-1234-5678


となります.人間がみれば,名前が「マイクロ太郎」であることはすぐに
読みとれます.

また,CSS selector で ".vcard .fn" のように指定すれば名前を取得で
きるため,機械も「読む」ことができるわけです.

このように,「".vcard .fn" のような class 属性の使い方を決めておく」
のが microformats です.名刺やイベントのように,よく使われる情報を
中心に class 属性が決められています.

ところで,microformats によって何が変わるのでしょうか?

まず,ウェブページに表示されている情報を,他のアプリケーションで利
用できるようになると思います.たとえば,Google hCalendar @ Make Data Make Sense
にある Greasemonkey Script を使うと,microformats で表されたイベン
ト情報を,ワンクリックで Google Calendar に送ることができます.イ
ベント名や日時をコピペする必要はありません.こういったことが簡単に
できるようになるでしょう.

さらに,microformats によって「ピンポイントな検索」ができるように
なりそうです.Technorati Microformats Search では,microformats の
種類 (hCard など) を指定して検索することができます.つまり,名刺や
イベントといった情報のカテゴリを指定した検索が可能です.将来的には,
「イベントの開始時刻」のようにさらにピンポイントな検索ができるので
はないでしょうか.

まだ対応ツールは少ないですが,普及してこなれてくればウェブがもっと
便利になると期待しています.

残念ながら,microformats を紹介した書籍はまだ少ないです.邦書では
Web2.0 BOOK で軽く触れられているくらいでしょうか.



洋書では,まるごと microformats についての本が出版されています (ま
だ読んでませんが).



次のエントリからは,よく使われる microformats を紹介します.

- hCard [2007-06-16-1]
- hCalendar [2007-06-21-1]
- hReview [2007-06-29-1]
Referrer (Inside): [2007-06-16-1]