blosxom から typo へ
色々あって、typo へ移行してみた。
Atom Threading Extensions
IRC で miyagawa さんが貼っていた URL 経由で見つけたのですが、Atom Threading Extensions なんてものがあったのですね。
要するに、Atom Syndication Format で、メーリングリストや掲示板の様なスレッドを表現するための仕組みです。
コメントやトラックバックの関連を視覚化、というアイデアは色んな人達が考えていると思うのですが、それをサポートするような規格が既にあったとは知りませんでした。
ここではざっと要点だけご紹介します。詳細知りたい方は原文をお読みください。そんなにボリュームないですし。(このエントリも間違っている可能性があるので、できれば原文読んで頂いた方が良いかと。)
'in-reply-to' 拡張要素
entry 要素の子要素として指定するもので、そのエントリが、どのエントリに対する reply なのかを示す要素です。
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>http://www.example.org/myfeed</id>
<title>My Example Feed</title>
<updated>2005-07-28T12:00:00Z</updated>
<link href="http://www.example.org/myfeed" />
<author><name>James</name></author>
<entry>
<id>tag:example.org,2005:1</id>
<title>My original entry</title>
<updated>2006-03-01T12:12:12Z</updated>
<link
type="application/xhtml+xml"
href="http://www.example.org/entries/1" />
<summary>This is my original entry</summary>
</entry>
<entry>
<id>tag:example.org,2005:1,1</id>
<title>A response to the original</title>
<updated>2006-03-01T12:12:12Z</updated>
<link href="http://www.example.org/entries/1/1" />
<thr:in-reply-to
ref="tag:example.org,2005:1"
type="application/xhtml+xml"
href="http://www.example.org/entries/1"/>
<summary>This is a response to the original entry</summary>
</entry>
</feed>
この例では、2番目の entry が最初の entry に対する reply となっています。各属性の意味は以下の通りです。
- ref
- 元エントリの atom:id 要素。
- href
- 元エントリの IRI。
- type
- 元エントリのメディアタイプ。
- source
- 元エントリが含まれる Atom Feed または Entry の IRI。
'replies' link relation
link 要素の rel 属性として replies を指定することで、その entry に対する reply が含まれている(かもしれない)リソースを参照します。
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>http://www.example.org/myfeed</id>
<title>My Example Feed</title>
<updated>2005-07-28T12:00:00Z</updated>
<link href="http://www.example.org/myfeed" />
<author><name>James</name></author>
<entry>
<id>tag:entries.com,2005:1</id>
<title>My original entry</title>
<updated>2006-03-01T12:12:12Z</updated>
<link href="http://www.example.org/entries/1" />
<link rel="replies"
type="application/atom+xml"
href="http://www.example.org/mycommentsfeed.xml"
thr:count="10" thr:updated="2005-07-28T12:10:00Z" />
<summary>This is my original entry</summary>
</entry>
</feed>
この link 要素は thr:count 属性と thr:updated 属性を持つことができます。各属性の意味は以下の通りです。
- thr:count
- href で示されるリソースに含まれている reply の数。
- thr:updated
- href で示されるリソース内の reply の最終更新日時。
どちらの属性も補助的なものであって、正確な数値でなくとも良い、という点には注意が必要です。
'total' 拡張要素
entry に対する reply の総数です。ドラフトにはサンプルがなかったので、以下の例は適当です。間違ってたらごめんなさい。
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>http://www.example.org/myfeed</id>
<title>My Example Feed</title>
<updated>2005-07-28T12:00:00Z</updated>
<link href="http://www.example.org/myfeed" />
<author><name>James</name></author>
<entry>
<id>tag:example.org,2005:1</id>
<title>My original entry</title>
<updated>2006-03-01T12:12:12Z</updated>
<link
type="application/xhtml+xml"
href="http://www.example.org/entries/1" />
<summary>This is my original entry</summary>
<thr:total>10</thr:total>
</entry>
</entry>
</feed>
これもやはり補助的な数値なので、正確な数値だと期待してはいけないようです。
thr:count, thr:updated, total の数値が正確なものでなくて良い理由については、ドラフトの「6. Considerations for using thr:count, thr:updated and total」について書かれていますので、ここでは省略します。(書くのめんどくさくなった。)
Six Apart ユーザーギャザリングに行ってきました
Ben と会話することができました!ちょうど今日は Catalyst::Plugin::AtomServer を使ったプログラムを書いていたので、会話のネタもばっちりでした。以下、会話の概要。(B: Ben, M: 自分)
M:「今、Catalyst::Plugin::AtomServer 使ったプログラム書いてるよ。WSSE と Basic Auth の両方に対応してるのがいいね。」
B:「ありがとう。ちゃんと動いてる?」
M:「動いてるけど、Catalyst::Plugin::Authentication::Credential::Atom では MD5 で DB に格納されたパスワードが使えないよね?」
B:「そうなんだよね。」
M:「だから今ハックしてるよ。」
B:「できたらパッチ送ってよ。」
てな感じでした。話しかける時には全然緊張しなかったのに、会話が終ったあとに鼓動が早くなって、手が小刻みに震えるという軽い興奮状態になり、その余韻が今もまだあったりします。
それから、CHEEBOW さん、上ノ郷谷さんともお話しできました!CHEEBOW さんは、はてブでブクマしてくれてたので、こちらのことは知ってくれているだろうとは思っていたのですが、上ノ郷谷さんまでもが「知ってますよ!」と言ってくれたのはメチャメチャうれしかったです。
また、小飼弾さんにも軽くご挨拶。そして帰り際にもまた Ben と話す機会があったので、「Bloglines::WebService の Changes に一緒に名前載ってるよ。」「パッチはできたら明日送るよ。」みたいなことを言いました。
今日は perl 界の天上人二人と接することができて、プログラミングに対するモチベーションあがりまくりです。帰りの電車でも Catalyst::Plugin::Authentication::Credential::Atom のコードを眺めながら、どうやってハックしようか考えてました。
宮川さんや関村さんにもお会いできるとうれしいな、と思っていたのですが、残念ながらお会いできませんでした。YAPC までの楽しみにしたいと思います。
そして終了後は、会社の方々 + ヤスヒサさん + ふうりさん とでお食事。楽しかったっす。
Six Apart ユーザーギャザリング vol.2 に行きます
どうしようか悩んでいたのですが、Ben Trott が来ると聞いて、Six Apart ユーザーギャザリング vol.2 に行くことにしました。
彼の姿を拝めば、いい perl プログラムが書ける御利益とかありそうなので。それに、Ben とはちょっとした縁があるので。と言っても、WebService::Bloglines の Changes に、一緒に名前が載ってる、というだけなんですけどね。これを紙に印刷して持っていって、「Hey you, 俺ら一緒に名前載ってるYO!」とか言ってみようかと。いや、やっぱやめよう。
「お前、MT じゃなくて blosxom 使ってるじゃん」とか言われそうですが、実はちゃんと MT のライセンスを購入していて、妻や友人がブログ書くのに使っていたりします。
もしここを見ている方で、ユーザギャザリングに行かれる、かつ俺に興味があるというレアな条件を満たしている方は、当日声をかけていただけるとうれしいです。目印はこの顔。
はてラボ + Ning
はてラボについて「はてな社員以外も参加できるとおもしろい」みたいなことが色々なところで言われてますが、Ning みたいなサービスをはてラボでやることのメリットって、はてなドメインに自分のウェブアプリを置くことによって、JavaScript から直接はてな API にアクセスできることじゃなかろうか、と思ったりした。(はてラボはドメイン違うからダメだけど。)
はてな API に簡単にアクセスできるような Javascript ライブラリを、はてなだったり他の誰かが作ってくれたりとか、はてな API の出力を JSON にしてくれたりして、それを利用した Javascript アプリをはてなドメイン上に置くことができるとなると、はてな API を利用したオリジナルアプリを開発する敷居はぐっと低くなるだろうし、さらに 他サービス API へのアクセスを中継してくれるようなものをはてな側で用意してくれれば、qooqle の様なものをフル Javascript で書いたり、ってことができるんじゃなかろうか、と。(Yahoo みたいにリクエスト数に制限があるときついけど。)
あとは当然はてななので、Ning と違って perl の環境用意してくれるよなー、とか、はてなフレームワーク使わせてくれるかなー、とか、gorou さんがいるから Ruby on Rails も用意してくれるんじゃなかろうか、とか、妄想が膨らむばかりです。
Build on your own API
本職ウェブプログラマになった弊害として、ブログがちょっと書きにくくなってしまいました。今までのウェブ関連エントリは完全に趣味でやってたことなので、誰に憚ることもなかったわけですが、これからは仕事と絡む内容も多くなってしまうため、どこまで書いていいのかの線引きに悩んでしまいます。
ですが、なるべくオープンなスタンスは貫きたいと思っているので、自社ビジネスに影響を与えない範囲で、うまく書いていけたらな、と思ってます。
というわけで今日は、O'Reilly Radar > Web Development 2.0 から。
海外ブログ紹介エントリは書くつもりはないため、内容は詳しく説明しませんが、Web 2.0 について開発の観点から整理したもの、という感じです。
この中で特に目を引いたのが、「Buidl on your own API」 の項。これはまさに、自分が転職して最初にやりたかったこととまったく同じだったりします。
API を公開、ってのが今の流れになってるわけですが、API を第三者へ公開することを主目的とせずに、自社のサービスの基盤となるデータ上に API を被せ、ライブラリを整備することによって、自社内でのサービス開発の効率化と各サービスの連携が容易にできるようにしよう、という狙いですね。第三者への API やライブラリの公開はその副産物、といった感じで。
転職してからのここ1週間ちょいの間に、既存のサービスの改良をしつつ、以前から考えていた上の様なアイデアを整理して上司に提出、他の方々とディスカッションして意見を頂き、ある程度方向性が固まったところで、これから具体的な仕様決めと実装に着手といった感じです。
この考えについては、社内での反応も悪くはなかったので、イケるという確信はあるものの、やはり今までは日曜プログラマにしかすぎなかったわけで、自社内でやるんなら API でラップせずに直接データベース叩かせた方がパフォーマンスはいいんじゃね、とか、他社はこんなまわりくどいことをやってるんだろうか、とか若干の不安はあったのですが、O'Reilly Radar のエントリによりそういう流れが実際にあるということを知って、大変勇気づけられました。
といった形で、しばらくは API やライブラリ整備といったサービス基盤作りに注力、その後おもしろいサービスをがんがん作っていけたらなぁ、と思ってたりします。
Carson Workshops Summit - The Future of Web Apps
こんなカンファレンスが!行きて〜。2月8日ロンドンかー。会社のお金で行かせてくれないかなぁ…
別に行かなくても、内容はあとで誰かがまとめてくれたりするんでしょうが、こういったすごい人たちの姿を生で見て、生で話を聞くとすっごい刺激になって、モチベーションアップにつながるんだろうなぁ。
何をするにしてモチベーションってすごく重要だと思うのですが、モチベーションを維持するために最も重要なのは「人」なんだろうなぁ、と最近思います。同じ価値観を共有する人たちと会って話をして刺激を受ける。これがモチベーション維持には最良なんだろうなぁ、と。
今、自分の本職はウェブなんかとは全然関係がなくて、ウェブ関連技術なんかについて語り合えるような人が身近にいません。そのため、時々すごくモチベーションが低くなることがあるんですよねぇ。ま、そんな状況ももうすぐ終わりなんですけどね。へへへ。
FeedBurner に新機能
TechCrunch - FeedBurner Integrates Web Services Into Feeds より。
FeedBurner に FeedFlare という新機能が追加されてます。フィードの中に、エントリに対して del.icio.us で付与されたタグとか、Technorati より取得したエントリの被リンク数とか、del.icio.us にブックマークするためのリンクなんかを埋め込んでくれます。
他にもいくつか埋め込んでくれる情報はあるのですが、詳細は上記 TechCrunch のエントリを参照して下さい。
設定は [Optimize]タブ → 左サイドメニューの [FeedFlare] から。 せっかくある機能なので、このブログのフィードにも設定してみました。
Web Services を使って他から情報をひっぱってきてフィードに埋め込む、というのは、他にも色々応用できそうですね。
追記: FeedFlare を Activate したら、フィードに本文が含まれなくなってしまった…のでとりあえず今はオフにしてます。
タグの関連性の可視化 #2
前回のエントリに対して、Blog Room - タグのデザインで良いアイデアを頂きましたので、ちょいと実装してみました。(Blog Roomのdbさん、ありがとうございます!)
タグの上にマウスオーバーすると、関連するタグだけを表示して、色の濃さで関連の強さを表現し、関連しないタグは非表示にする、といったことをJavascriptでやってます。
ちょっと動きがbuggyだったり、見せ方には工夫の余地がまだまだありますが、前回のポップアップ表示よりはるかに良さげな感じですね。
06/04 追記
Takaさんから頂いたご意見をもとに、関連のないタグは消すのではなく、白くするようにしてみました。
ajax alpha geeks blog bloglines blosxom catalyst category cgi::application daapd db dbx del.icio.us entries_in_this_page firefox greasemonkey hackers html::prototype itunes javascript jkl.parsexml json linux mac mobile perl plugin rast redirect_permalink relationship rendezvous rss sack of ajax safari same_topic shelf sitebar sledge tagging technorati template toolkit visualization xbel xml xmlhttprequest ウェブサイト ウェブメール オンラインブックマーク サイドバー ソーシャルブックマーク ブログ モジュール 文字化け
タグの関連性の可視化 #1
前回のエントリに対して、fladdict.net blogのTakaさんからコメント頂きまして、タグの関連性についてTakaさんも同様のことを考えてていらっしゃった様で、「その可視化も触れられれば書いてみたいと思います」とのことなので、どんなことを書いて下さるのか、楽しみだったりします。
で、関連性の可視化については前回、色をつかってみてはどうだろう、でも具体的にどうやるかはわからん、みたいなことを書いたのですが、今回は色を使うのは保留して、マウスオーバーした時に、関連するタグを表示してみてはどうだろう、ということを考えついて、以下の様に実際に作ってみました。タグの上にマウスカーソルを乗せると、関連するタグを表示します。関連タグの表示には、「あれこれポップアップ」を利用させて頂いております。
関連するタグは、各タグ間の相互情報量を計算して、数値の高いものから4つまでピックアップしてます。(4という数字には特に意味はないです。)
ajax alpha geeks blog bloglines blosxom catalyst category cgi::application daapd db dbx del.icio.us entries_in_this_page firefox greasemonkey hackers html::prototype itunes jkl.parsexml javascript json linux mac mobile perl plugin rast redirect_permalink relationship rendezvous rss sack of ajax safari same_topic shelf sitebar sledge tagging technorati template toolkit visualization xbel xml xmlhttprequest ウェブサイト ウェブメール オンラインブックマーク サイドバー ソーシャルブックマーク ブログ モジュール 文字化け
うーん、なんとなくしっくりこないですね。また色々考えてみます。