Virtual化する社会(Short ver.)

年が明けてから3ヶ月近く経って、新年の抱負も今年の予測も何もないが、今年は Virtual化(Virtualization)がますます進むと考えている。ここでいう「Virtual化」とは、SecondlifeのようなMetaverseだけを意味するのではなくて、もっと広義のVirtualizationのことである。具体的には、Web上の「ID」や「ハンドルネーム」でidentifyされた個人が、現実世界とは別個にWeb世界で活発に行動する傾向が進むということである。

「ハンドルネームでBlogを書く」というこの行為自体、ここで言うVirtualizationの具体例と言えるし、「Amazonで本を買う」「ヤフオクでレア品を競り落とす」という行為もVirtualizationの実例である。各々、AmazonのログインIDやYahoo!のIDで特定される「Web上の個人」が「Web上で商行為を行っている」と言えるからだ。ビジネスにおいて、こうしたWeb上の活動を捉える場合、現実世界のリアルな個人と紐付けて考える必要はない。現実世界における性別・年齢・職業と言った属性情報はWeb上では何の意味もなさず、あくまで「Web上のナニモノか」というidentificationさえできればよいからである。Web上での個人活動は、現実世界と深くリンクしている場合もあれば、全く異なっている場合もある。いずれの場合であっても、Webビジネスに深く関係するのはWeb上の行動でしかなく、それを捉えることが最も大事なのである。私自身を例にとれば、Web上であたかも技術者のように振舞っているTEDDY-Gを、現実世界の商社マンの振る舞いと紐付けて考えることは全く意味がない。寧ろ、「Web上での私」を捉える意味ではDecisionをmisleadする可能性すらあるのだ。

というわけで、既に3ヶ月が経過してしまっているが、今年はこの「Web上の人格」「Identification」に注目している。昨年盛り上がったMetaverseのような直接的なVirtualizationより、もっと深いところでVirtualizeされたサービスとかシステムとか、そういうものをビジネスにしたいというか作りたいというか、そんな妄想に耽る今日この頃である。

| | Comments (1) | TrackBack (0)

U2Bplayer、改修+ややupdate

YouTube APIGoogle Data APIに統合されて新しくなったので、U2B playerも更新。…って、とっくの昔に出来てたネタを、サーバにUPするのに1ヵ月半もかかってしまうというこの事実。以下、簡単に。

改修したところ
・「お気に入り」「投稿ビデオ」の表示数上限を25個に戻した。
Updateしたところ
・「Today's Top Rated Video」以外に、「Today's Most Viewed Video」「Recently Featured Video」を追加。
Option Toolsで設定できます)

いずれもYouTube APIの変更により可能となったもの。サポートチームが「将来直すかも」と言ってたのはこのことだったのか。

| | Comments (2) | TrackBack (0)

PEAR::Services_Lingrで日本語を扱うときの注意

Cometを使ったホントの非同期ブラウザチャットのLingr、使ってみるとかなりCool。ブラウザベースだからソフトをインストールする必要もないし、軽くチャットするだけならアカウントを取る必要すらない。まさにインスタントなメッセンジャー。でもってこのLingr、APIまで公開してあり、様々なサービスに展開する可能性を秘めている。実にCool。Lingrの仕組みについては江島健太郎氏のこのエントリを読んでいただくとして、APIを使って何かしたい人には、既に様々なライブラリDeveloper Wiki上で公開されている。いやあ、実に2.0、2.0。

でもって、ライブラリの一つ、Lingr APIをPHPで簡単にいじくることのできるパッケージのPEAR::Services_Lingrを使ってみたんだけど、Room.observeメソッドとかでメッセージを取り出すときに日本語のメッセージがうまく取れない。調べてみたら、Lingr APIが返してくるXML中の日本語が数値文字参照で、そのままだとXML_Unserializerが読んでくれないことがわかった。ので、Services_Lingrパッケージの中のLingr.phpの中でXML_UnserializerにXMLを投げるところの前(94行目あたり)に下記のようなコードを挿入して問題解決。

...
$result = $http->getResponseBody();
$map = array(0x0080, 0xffff, 0, 0xffff);
$result = mb_decode_numericentity($result, $map, "UTF-8" );

$xml =& new XML_Unserializer();
...


UTF-8じゃなくてEUC-JPにするときは、$map=array(0, 0x10FFFF, 0, 0xFFFFFF); とすればよい。これでXML_Unserializerで処理して返ってきた配列がちゃんと日本語で返ってくる。mb_decode_numericentityの使い方については、ここここを参考にした。有難うございます。
ひょっとしたら最新版のXML_Unserializer使えば問題なく動くのかもしれないけど、一応メモ代わりに。…って、Lingr APIをPHPで使いたい人、しかもXML_Unserializerdが何かちゃんと日本語処理してくれない人、ってえらい限定された人向けのエントリだな。

Powered by ScribeFire.

| | Comments (2) | TrackBack (0)

今見ているページにGoogle Mapsを追加するBookmarklet

こないだのG2Gmapの応用。
今見ているページ上で住所部分を選択し、下記のBookmarkletを実行するとページ内にGoogle Mapsを表示する。
地図を表示

Bookmarkletの登録方法は、IEならば上記リンクの上で右クリックをして「お気に入りに追加」を選択。「追加しようとしているお気に入りは、安全でない可能性があります。続行しますか?」と聞かれるので黙って「はい」を選ぶと登録完了。追加先を「リンク」フォルダにするとリンクツールバーに表示できる。
Firefoxの場合も同様に右クリック→「このリンクをブックマーク」で登録可能。このとき、「個人用ツールバーフォルダ」を指定すると、ブックマークツールバー上に表示できる。Operaの場合も同じようにして登録できる。

前のエントリでもちらっと書いたが、知らない土地でレストランやお店の情報を得るときに、ブログや個人のウェブサイトが役に立つことが結構多い。で、そういう草の根情報が地図情報と一緒になってると助かるんだけど、個人サイトでそこまでサポートしてくれていることはあんまりない。そんなとき、このBookmarkletでひょいっとページ上に地図を表示したら便利じゃないかなと。こういう、「ウェブページをお好みでカスタマイズして使う」というのは、Greasemonkey然り、Widget然り、結構当たり前の方法になるような気がする。

Powered by ScribeFire.

| | Comments (0) | TrackBack (0)

How to Make "Mash Up"

Mash Up Award the 2ndが開催されるとのことで、僭越ながら前回受賞者としてコメントを寄せさせて頂きました。 今回は15社以上の企業がWeb APIを公開・提供するそうで、中々面白げ。現時点ではどういうAPIが揃っているのかまだ全部チェックしきれてないんだけれども(輸入CDのライナーノーツみたいだ)、コメントに書いた通り、それだけの企業が「乗ってきた」こと自体がすごいと思う。確かに企業にしてみれば、API公開はただのロックイン戦略でしかないんだけれど、この場合、ロックイン対象はGeeksなわけで、それだけGeeksを企業が重視するようになったということになる。つまり、インターネットの世界のEarly AdopterがGeeksだという認識と、Geeksをターゲットにしたマーケティング(ギーク指向マーケティング、Geeks Oriented Marketing)が漸く一般化してきたというわけだ。

「API公開」の企業にとってのもうひとつの利点は、市場に対する開発のアウトソーシングである。APIを公開しておくだけで、市場の草の根開発者が自動的に二次開発を行ってくれるわけで、企業としては開発コストを下げることが可能になる。うまくいけば開発コストダウンと、二次サービスによる集客アップが図れる一方、失敗しても投資の回収リスクは殆ど生じない(勿論、公開API準備コストが殆どかからないという前提だが)。本来自社でまかなうべきコストを市場に投げるという意味では、社員への報酬を市場取引に任せてしまうストックオプションに似た仕組みとも言えるかもしれない(すると、その内API公開のコストP/L計上すべきなんて議論に…!?)。

さて、前置きが長くなったが(いや寧ろここまでが本文か)、本題のMash Upの作り方について。既にKawa.net Blogでスマートに説明されてるので、その通りなんだけれども、大事なのはどういうRemixをするか、という点。自分の場合、大きく分けて、二つの方法論(というほどのもんじゃないが)に沿って作っている。一つ目は、「こういうことができればCoolだよなあ」という、Usage-Centricな発想に基づくもの。例えばU2B Playerがそれ。「YouTubeのお気に入りをブログで表示できたらよくね?」みたいなところからスタートして、自分が使うところをイメージしてインタフェースを作りこんでいく。二つ目は、ビジネスモデルの雛形に肉付けしていく、もっとBusiness-Orientedなもの。例えばYouTube+Adsとか、Bidders MapAdsがそれ。「動画に広告」とか「地図に広告」とかをイメージする、或いはイメージしてもらう為に作ったもので、テーマが歴然としている。

恐らく、ビジネスマン的には後者の方が作りやすいし、簡単だ。「頭だけでビジネスを考えてしまう人たち」のエントリの冒頭部分に挙げた新規ビジネスの発想法の2と3などを参考に、素材とするAPIの組み込み方を考えるだけ、それだけの作業である。しかし、個人的にはこうして作ったMash Upは「あざとい」のでイマイチだと感じている。その一方、前者のようにUsage-Centricで作られたMash Upは、作者自身が楽しんで使っているだけにユーザーも素直に受け入れられる「面白さ」がある。いずれにせよ、Mash Upを作るにはできるだけ多くのAPIやサービスを知っていることが前提条件で、可能な限りのTrial & Errorを繰り返すことが方法論云々以上に重要だと思う。

ちなみに、「Last.Tube」はUsage-CentricかつBusiness-OrientedなMash Upだと思ってるんだけど、あんまり(というか全く)注目されてないっぽい。しょぼん。シンプルながらCOOLな「ZonTube」みたいなMash Upをメイクできるかどうかは、結局はセンスの問題、とか何とか身も蓋もないことを最後に言ってみる。

| | Comments (2) | TrackBack (0)

Got To Do (alternative GTD)

2005年に"Web2.0"というキャッチーなフレーズで総括されたここ数年のインターネットの「革新」が、2006年には世の中にかなり広く認知されるようになった。勿論それは、ベストセラーとなった梅田望夫氏の「ウェブ進化論」の貢献に因るところも大きいわけだが、それ以上に、YouTubeやはてなブックマークなどのサービスが非常に身近になったことや、ブログやSNSの「簡単さ」が一般ユーザーにとっての障壁を下げていることが大きいだろう。こうした流れの中で、ブログパーツ(Widget)を使えば"MashUp"さえも今や一般ユーザーが簡単に実現できるようになった。つまり、2006年はWeb2.0(或いはSemantic Web)のコモディティ化の年だった、と言える。

その一方で、Geeksは一般ユーザーには全く実現し得ない世界を構築しつつある。例えば、Perlを使ったインターネット上のリソースアクセス自動化ツールの「Plagger」などは、使い勝手・必要性・面白さの全ての意味で、一般人には理解不能なツールである(Googleに「はらへった」と入れただけでピザが届いても普通の人は喜ばない)。同様に、YAMLやJSONの便利さや、Ruby On RailsCakePHPの生産性の高さも一般人には全く理解できない世界だ。この意味で、インターネットとITは、ますますハイエンド化が進み、敷居が高くなっていると言える。

このように纏めると、インターネットが相反する二つの方向に走っているように思える。しかし、この「コモディティ化」と「ハイエンド化」の双方に共通しているのが、「情報へのアクセス」を実現したいという欲望である。YouTubeはてなブックマーク、Plaggerは情報へのリーチを容易にするし、ブログやWidget、Railsは情報のアウトプットを促進する。各々、必要な情報に「アクセスしたい」「アクセスさせたい」という欲望を実現するツールやサービスである。インターネットも誕生から10年が経過し、複雑になってきたように思えるが、結局のところ「情報流通」という原点に回帰しているだけだとも言えよう。

こうした中で、ますます重要性を増すのは「Search」である。何を今更、と思う向きもあるかも知れないが、世の中にはGoogleでさえリーチできない情報が多数ある。また、Googleのサーチアルゴリズムでは不満なユーザーも沢山存在する。単に情報を収集するだけではなく、情報の海の中から必要なものを峻別し、組み合わせることで価値あるものに仕上げる能力の重要性がこれまで以上に増している。「Search」と言うよりは「Discovery & Remix」という方が正しいかもしれない。

忘れてはならないのは、「Discovery & Remix」にはユーザーのアクションが不可欠だと言うことだ。私自身も、「自分がやらねばならない(I've got to do)」ということを強く意識しつつ、これからも様々なことに取り組んでいきたいと思う。

| | Comments (0) | TrackBack (0)

2006年最後のMashUp、Last.Tube

今年は色々とMashUpを作って公開してきたわけですが、いよいよ大トリの登場です。…というほど派手なもんではありません。

自分の好きなアーティストは人におススメしたいもの。で、他人にそのアーティストのよさを伝えるには、音楽性云々を語るよりも曲そのものを聞いてもらうのが一番早い。さらに、音楽だけでじゃなく、クールなPVを見せられたら、もっと効果的だろう。というわけで、Last.fmの自分のページの「Weekly Top Artists」のリストをもとに、YouTubeの動画とAmazonの広告をリストアップするWidgetを作った。右側の「Last.Tube」がそれ。貼り付けたい人は下記のscriptタグを自ブログに貼り付けてほしい。なお、YouTubeとAmazonで各々検索にヒットしなかった場合は、動画・広告が表示されず、アーティスト名だけが表示される。

<script type="text/javascript" src="http://www.got2do.com/api/Last2Bplayer.php?user=[Last.fmのユーザ名]&aid=[Amazon.co.jpのアソシエイトID]"></script>
(ユーザー名、アソシエイトIDは各々自分のものに変更してください。)

早い話がこれまたアサマシで、本年「TEDDY-G脅威のテクノロジー」を駆使して様々なアサマシを提案してきた当ブログの2006年最後を飾るにふさわしいエントリである。二つ前の「映像とか音楽とかのサービスのMashUpについて、あと最近聴いてる曲」のエントリを書きながら、「ああここでJ.Valentineのアルバムへのリンクを張りたいなあ」とか思ってるうちにアイデアが発展して、突貫工事で作ったもの。最後まで突貫工事というのも実に自分らしい。Weekly Top Artists以外のデータを使ったほうがいいんじゃないか、とか、どう見てもU2B Playerの使いまわしです、とかその辺は追々調整するかもしれません。

ところでこのLast.fm、私自身は吸収されたaudioscrobblerのほうのユーザーだったのだが、audioscrobblerの「自分のお気に入りを自動的に学習する」という仕組みと、Last.fmの「新しい発見を提供する」というExperienceが結びついて非常に優れたサービスになっている。M&Aで最も難しいのは買収後の組織の融合だが、Last.fmは見事に組織を"MashUp"させてすばらしいサービスを完成させることに成功した。2007年は2.0熱も多少冷め、金を稼ぐ仕組みを持ってる人たちによる、そうじゃない人たちの買収が加速し、淘汰が進んでいくだろう。そうした中で、自分たち自身をどれだけうまく"MashUp"させられるかが、買う人にとっても、買われる人にとっても重要になるのではなかろうか。

| | Comments (1) | TrackBack (1)

トラフィックの推移から見る日本のインターネット

2000年末から2001年にかけてブロードバンドサービスが開始した当初、そんなに広い帯域があってもどうすんの?という意見が散見されたが、YouTubeをはじめとするビデオ系サービスの隆盛を見るにつけ、漸くブロードバンドが利活用されるようになってきた感がある。また、MashUpはサーバー間のデータ通信を促進するし、AJAXも使いようによってはクライアントとサーバー間のデータ通信を増加させる要因になり得る。こうなってくるとインターネットのトラフィックは大変なことになってんじゃないの?と思って調べてみた。

ソースは総務省の「我が国のインターネットにおけるトラヒック総量の把握」と「ブロードバンドサービス等の契約数」。但し、2004年5月のトラフィック総量だけは公表値がないので、「トラヒック総量の把握」の資料添付の「国内主要IXにおけるトラヒックの推移」をベースに推計してみた(2004年11月以降の公表値を見る限り、国内トラフィック総量が主要IXトラフィックの約4倍であることより推計)。

結果は上図の通り。インターネット契約数をユーザ数とすれば、ユーザ当たりのトラフィックは、2005年を境に飛躍的に増加していることがわかる。ちなみに、推計値だらけになるので割愛したが、2003年以前のユーザ当たりトラフィックは、2004年と殆ど変わらないレベルで推移している。2005年というとYouTubeとGoogle Videoが開始した年であり、それと時を同じくして日本のユーザの一人当たりトラフィックが増加しているというわけだ。結構雑な調査ではあるが、最初に示した仮定の通り、ここ2年ほどでユーザが求める帯域幅は一気に拡大したと言ってよいだろう。但し、ビデオ系サービスのように瞬間風速が大きなものがその要因となっているのか、MashUpやAJAXのようなデータ交換技術が要因となっているかまでは、これだけでは不明である(まあ、多分前者なんだろうけど)。

今後、ますますこういった傾向が進んでいくと、ニーズが増えてくるのがトラフィックを軽減させるサービスだ。データ配信のルーティングの効率化技術や、データのキャッシュ技術、圧縮技術、負荷分散、といった最早枯れた感のある技術が以外に注目を浴びるのかもしれない。勿論、バックボーンではそうした技術はとっくに採用されているから、今後はもっとエンド側のネットワークやLAN内での活用が促進されるだろう。ブログがLAN内で活用され始めたように、Web上のサービスと同じような仕組みが、LAN内で活用され始めることが予想されるからだ。MashUpだの集合知だの、Web2.0の裏側で以外に地味な分野が儲かるのかもしれない。

| | Comments (0) | TrackBack (0)

映像とか音楽とかのサービスのMashUpについて、あと最近聴いてる曲

新年の辞で2006年は映像とか音楽のコンテンツの"Remix"(MashUp)が進むぜ!とか書いたわけですが、振り返ってみると思ったより進まなかった気がします。確かにYouTubeのTrafficの伸びっぷりはすごく、Alexaのグラフ(下図)で見るとまさに「うなぎのぼり」です。でもって、YouTubeの動画を引用しつつ書くスタイルのブログも割とポピュラーになっており、YouTubeでプロモーションをする企業も現れ始めました。こうしたコンテンツのReuseは確かにひとつの方向ではありますが、一次著作物以上の良さを提供するRe"Mix"に至るにはまだもうちょっと時間がかかりそうです。弊「U2B Player」「YouTube+Ads」もRemixと呼ぶには少し足りない感じ。この辺は、純粋にRemixが難しいのに加え、音楽や映像コンテンツにアクセスする為のInterfaceをサービス側がもうちょっと用意する必要があるのかもしれません。

さて、音楽と言えば、米国に来てから車中心の生活になりましたが、当初はiPodで音楽をガンガン聴くつもりが以外に使ってません。じゃあ、何を運転中に聴いてるかと言うとラジオ。(ミーハーな)洋楽好きの私としては、普通にラジオを聴いているだけで十分に楽しめてしまうのです。特に良く聴くのが、R&B中心の地元ラジオ局のKMELで、そこで最近割とよくかかるのが、J. Valentineの"She's worth the trouble"。何か90年代を思い出させるベッタベタの曲調に妙にハマってAmazonとかiTMSで探してみても引っかかりません。と思ったら、来年アルバム発売ですか。で、さらにググってみるとimeemで音源を公開してる人がいました。このimeem、「P2P型のSNS」ということで当初は開始したのですが、今はコンテンツをシェアするSNSみたいになってる模様。ブログに貼るプレイヤーも準備されてた為、ああ違法だ違法だ著作権法改正後には貼るだけでも有罪だ、いや聴いた時点で有罪だ、とか思いつつ下記に貼付け(いきなり再生される為、「続きを読む」以下に貼ってあります)。

さて、そもそもこの曲の曲名とアーティスト名をどうやって知ったかというと、ラジオに表示される文字情報。ぼけーっとラジオを流し聞きしてて、いい曲だなと思ったらすかさずチェックできるので、新しい曲を発見するのになかなか便利。この辺の新しい発見ができるのが、iTunes+iPodからラジオに移行(回帰?)した理由のひとつでもあります。ビジネス的には、この辺をうまくRemixできればなあ、と思います(ハードに詳しい人ならば、文字情報をうまく使って、「それPlaggerで」というところなんだろうけど)。

2006年も残りわずかだというのに、とりとめもないエントリですが、ホントはここ2年くらいインターネットのビジネスを考える際にこれまで自分が使っていたフレームワークを公開しようと思って筆を執ったのでした。たぶん全7回くらいになる上、「父さん、今更こんなものを」感も強いのでアクセスの低い年末にこっそり書くつもりでしたが、どう考えても間に合いません。というわけで、新年早々古いネタのオンパレードになる予定。

Continue reading "映像とか音楽とかのサービスのMashUpについて、あと最近聴いてる曲"

| | Comments (0) | TrackBack (0)

サイト内検索をするBookmarklet

インターネットには驚くほど数多の情報リソースが詰まっている。特に驚くべきことは、個人が企業サイトも顔負けの情報量を持つウェブサイトを準備していたりすることだ。特にIT系、プログラミング言語のリファレンスページなど、専門書を買うまでもないくらい充実しているサイトも多い。しかしながら、古いサイトの場合、Movable TypeやXOOPSなどのCMSを使わずにHTMLだけで構成されていたりして、検索機能が弱い場合が結構ある。そんなときに重宝するのが、言わずと知れたGoogleのサイト内検索機能(site:オプション)だ。で、いちいちGoogleに飛んでsite:hoge.comとか書くのが面倒なので、Bookmarkletにしてみた。これ。

サイト内検索
サイト内検索(ディレクトリ指定)

上の方は、実行すると検索キーワードを聞いてくるので、入れるとGoogleに飛ぶ。但し、今見ているページが存在するディレクトリを指定する形になる。下の方は、実行すると検索キーワードの前に検索するディレクトリが今のページが存在するディレクトリでいいか聞いてくるので、もうちょっと上の階層を指定したければ、そこで指定し直せばよい。

このサイトもそういった先人に倣い、できるだけ有用な情報リソースになろうとしているんだけども、結局日記と特に変わらないレベルというこの事実。しょぼん。

| | Comments (0) | TrackBack (0)

U2B Playerとprototype.jsの競合問題解決

直前のエントリで書いたprototype.jsとの競合問題ですが、修正しました。
U2B Playerのコードで一箇所 for (a in b) { } `を使って連想配列の値を取り出してるところがあったんだけど、prototype.jsによってObject.prototypeが汚染されてしまってうまく処理できなかったのが原因。さっき急に最速のここで対応策が説明されてたのを思い出して、あっさり修正完了。こんな感じ。

for (var a in b){
if (b.hasOwnProperty(a)) {
//処理内容
}
}

hasOwnPropertyを使ってチェックしてあげればいいですよ、ってそれだけのことだったのかあ。というわけで、prototype.js使ってるドリコムでも無事U2B Playerが使えるようになりましたとさ。

| | Comments (0) | TrackBack (0)

U2B Playerの変更点、というか変更を余儀なくされてるだけなんだけど

YouTubeのAPIで取得できるユーザーのお気に入り/投稿ビデオの一覧が上限10個になってしまったので、U2B Playerで表示できるお気に入りビデオ数も10個になってしまっている。YouTubeには「前みたいにリストを全部取得する方法ないの?」と質問を投げているんだが、OK、返事はナシのつぶてだ。俺の英語が意味不明で全然通じてない可能性も割と濃厚なんだけど、San Mateoまで乗り込んでも相手されないと思うので、誰かもし解決方法を知ってる人がいれば教えて下さい。
※追記:その後YouTubeのサポートチームと何度かメールでやり取りした結果、現状APIから取得できるビデオの数は上限10個とのこと。将来的に直すかもしれないそうだが残念無念。
あと、prototype.jsと一緒に使うとIEではうまく表示できないという不具合が生じてる。直す方法は分かったんだが、書き直す時間が微妙になくて、直せてません。こんなエントリとか一個前のやたら長いエントリ書いてる暇あったら直せよ、ってホントすいません。以上、事務連絡でした。
※追記:直しました→こんな簡単な方法で。

| | Comments (0) | TrackBack (0)

Youtubeをブログに(中略)Amazon、インターナショナル

アメリカに行ったようなエントリを投稿して以来ぱったりブログが更新されないので「こいつアメリカで死んだんじゃねえの?」とか思われてそうですが、その実わりかし元気に過ごしてます。マニアックな人はサイドバーのU2B Playerの内容が更新されてるので、「こいつYoutubeは見てるじゃねえか!」と思われていたかもしれません(そんな人はいない)。このところBay Areaは朝晩の気温差が下手すると20度近くあって、一日どんな格好して過ごせばいいのかわからないような状況です。

さて、ブログを放置してる間に「YouTubeの動画をブログに貼ってAmazonアフィリエイト」にいくつかTrackbackがついていたようです。「リンク集のまとめ」さん、「バンザイ!!デジタル新製品!!」さん、「TAKAHASHI KAZUHIKO BLOG」さん、「Garbagenews」さん、「リアルなねたで勝負blog」さん、「KandaNewsNetwork」さん、「ネタフル」さん、ご紹介有り難う御座いました。Amazonアソシエイトプログラムブログにも取り上げて頂いてますね。あと、「webdog」さんにも取り上げて頂いていると友人に教えてもらいました。

半分冗談で作ったものに意外に反応があって驚きなんですが、調子に乗ってインターナショナルヴァージョンを作ってみました。Youtube+Ads(Bookmarklet)をYoutube上で使うか、直接http://www.got2do.com/lab/U2Bads.htmに飛んで頂くと、パラメータの中に「Amazon」というのが増えているのがわかると思います。ここで日本、アメリカ、イギリス、ドイツ、フランスのいずれかを選ぶと各国のAmazonに対応したリスティング広告が作成できます。フランス版で作ったサンプルは下記。

なんでタンゴかって、まあ、その辺はあまり気にしない。なお、各国Amazonのアフィリエイトプログラムに参加するためには、各々のサイトに飛んで別々のアソシエイトIDを取得する必要があるので注意が必要です。

さて、このネタについてはマッシュアップのビジネスモデルについて色々思うところがあるんだが、取り急ぎ、はてなブックマークのid:shidho氏の「# これをそのままパクってアフィリエイトやったとしたら、その人は誰のチカラで稼ぐことになるんだろう?」というコメントに反応。これは確かにその通りで、著作権を持ってる人、費用を負担する人、収益を得る人、が複雑に絡み合い(マッシュアップだから当然だけど)、収益構造が歪な形になっている。これ以上の言及は今回はやめておくけれども、各々のプレイヤーが重視していること(収益、アクセス数、知名度、Experience等)をうまく満たしつつ、しかるべきところに収益をdistributeする仕組みがマッシュアップのビジネス面ではキーになるだろう。

技術的にももうちょっと掘り下げてみたいところはあるんだけど、U2B Playerの不具合とか先に対応しないといけないことがあるので、いらんことするのは又今度にします。

| | Comments (2) | TrackBack (0)

Sun x Recruit MashUp Awardで優秀賞を戴きました

アメリカに来てからの諸々をメモ代わりに書いておこうと思いつつ、もっと優先させねばならないことが出てきたのでそっちから。

えーっと、タイトルの通り、「Sun x Recruit Mash Up Award」で優秀賞を戴いてしまいました。CNETとかITmediaとかjapan.internet.comとかにも出ています。
先日書いたエントリの通り、素人が二日で作った作品がまさか受賞するとは思っていなかったので、驚くと同時に恐縮しまくっております。同じく優秀賞の「castella-UILo お祭り2006 ~みんなで作ろうPodcastMAP~」「じゃらん×Skype - Share Over Skype 」と比べてみると、その適当さが際立ちます。でも、リクルートのほうの講評ページによると、『ガリガリとコードを書かずに「サクッと作った感」が、マッシュアップという開発スタイルにマッチしています』だそうで、ハイ、確かにサクッと作りました。「マッシュアップ度が低い」というより、「完成度が低い」と、そう直接的に仰って戴いて結構です。ちなみに、評価戴いたポイントである「IPアドレスから都道府県を割り出す」部分が現在死んでます。数日中に復旧させたいと思います。復旧できるかな。復旧できるといいな。さすがのマッシュアップ度の低さだ。
一応、サンプルページも作りました。死んでるけど。→ サンプル1 サンプル2 サンプル3

受賞の連絡を戴いたのが、8/22のことで、まさに出発直前の最後のメールチェックをしていて知ったという状況。というわけで、せっかく受賞したのに授賞式には行けずじまい。もし出席できてれば、ほかの受賞者の方とか事務局の方ともいろいろ話ができたのになー、と思うと残念です。今後もし何かのご縁があったら宜しくお願い致します。

3年前に、当時はWebサービスだのSemantic Webだのと呼ばれていた世界を知ってから、「一般人とGeeksの溝を埋める」のを目標に、このブログ含め色々やってきたわけですが、その成果がひとつ表れたのかなと自分では思ってます。今回の「fromA viaG」をはじめ、色々なスクリプトをうごかしている「Got2Do.com」は、3年前はまだ同じ会社にいた盟友と一緒に、「何かやらなきゃ」(I've got to do)という思いを形にすべく立てたものですが、自分みたいなシロートでも何かやれば形にはなるんだな、との思いを深めてます。これを機に、気持ちを新たにまた精進したいなと思います。

最後に、いつも生暖かい目でワタクシを見守ってくださっている家族、友人、ブログ読者、ならびに〆切1分前の応募(なんと7/31 17:59に応募)を見捨てずにちゃんと見てくださったMash Up Award事務局の方々、どうも有難うございました。

| | Comments (3) | TrackBack (0)

ブラウザの時代

何か新しいブラウザが続々とリリースされている。Firefoxが2.0のBetaを出したなーと思ったら、Livedoorが国産ブラウザのLunascapeのカスタマイズ版のTOVIRA(トビラ)をリリースし(Operaはどうすんの?)、MicrosoftもIE7.0 Beta3をリリースしている。Operaも9.0をリリースしてから結構経つ。Firefox教の信者である私ではあるが、フト魔がさして色々インストールして使ってみた。

どのブラウザもよくできていて、使いやすくなったなーという感じ。いきなり結論を言うと、後は個人との相性と、プロモーション力だけじゃなかろうか。どのブラウザも、RSSリーダ機能とタブ機能を標準装備しているのは共通だが、各々うまく特色を出している。Operaは軽いし、TOVIRAはGyaoとの連携による動画機能とか面白げだし(見ないけど)、IE7.0は見た目がMacっぽく(Firefoxっぽく?)リニューアルされて(笑)やたら高機能になっている。でもやっぱり様々な薬品(Extension)を投与できて、Greasemonkeyで簡単カスタマイズも可能なFirefoxが最強。と言いつつ、Extension使えなくなったら困るので2.0BetaにはまだUpgradeしてない。

RSSリーダについては、Rabbit Tickerやら自作のリーダやらSharp ReaderやらGlucoseやら個人的には色々使ってきたのだが、結局ブラウザとシームレスにつながっていないと不便なので、今のところブラウザに落ち着いている。ブラウザの中では、専用リーダとしても充分つかえるOperaがいちばん。TOVIRAはゴテゴテしててイマイチな感じ。IE7はシンプルで見やすい。でも、まあ、いずれもFirefox+Sageから乗り換えるほどではない。っつか、オンライン環境であればlivedoor reader最強なので、この点においてはブラウザなど飾りです(以下略。しかもlivedoor readerなら携帯からも読めるし、気になる記事にピンをつけておいて後でブラウザで熟読したりできる。これはホントにクールだ。

タブ機能については、IE6以前であってもCollectorを使えばタブブラウザっぽく使えたのだが、バグで動かなくなることが多くなった(ver1.0当時)ので使うのをやめた記憶がある。今回のIE7は、コンパクトながら必要なタブ機能をまとめた感じで、外部リンクをタブで開くかウィンドウで開くかとか、新しいタブにフォーカスするかどうか等の基本設定をカスタマイズできるのは好印象。OperaはタブでRSSリーダやメールを行き来できるのがクール。TOVIRAも動画ブラウザやRSSリーダをタブで行き来できるようにすればよかったのに。ただ、タブ機能についてはやはりFirefox+Tab Mix Plusが最強。立ち上げが遅くていらいらすることもあるが、セッション復元機能(前回終了時の状況を復元する機能)はやはり便利だ。

RSSリーダ機能とタブ機能以外では、上に挙げたOperaのメール機能やら、TOVIRAの動画機能やらが特徴的だが、この辺はGMailやYoutubeなんかのブラウザに依存しないサービスのほうに軍配が上がる気がする。無論RSSリーダにしてもそう。オフラインで読むことを想定しなければ、Firefox+Sageさえいらないわけで。「オフラインで読む」と言えば、変り種はHeatseek。アダルト専用ブラウザとの謳い文句で、「ボスが来た!」ボタンとかある(笑)わけだが、このブラウザの動画Download&管理機能はよくできている。フツーに動画管理ソフトとして使えるレベル。まあ、こういう「ローカル」「オフライン」との連携が寧ろブラウザ選びで重要になるのかも、とか思ったりした。

とか何とか言いながら、結局帰ってくるのはFirefox。そのわけは、何と言っても標準でJavascript コンソールやDOMインスペクタなんかのツールがついてて、さらにFirebugなんてインストールした日には、無敵のDebugツールになるという開発環境としての使いやすさである。大事なのは、開発環境としての使いやすさではなくて、開発環境にさえなりうるFirefoxの拡張性の柔軟さだ。これからのよりWorld Wide MeshでP2Pな世界においては、「サーバーサイド」と「クライアントサイド」の分散・分業と連携が進むはずで、そうなったらブラウザ=クライアントサイドではユーザー好みにカスタマイズできる柔軟性がより重要になるだろう。10年後くらいには、ブラウザのパーツを使って自分好みのアプリケーションを使う時代が当たり前になっているかもしれない。

| | Comments (0) | TrackBack (0)

From AのAPIを使ってリスティング広告のテスト

リクルートとSun Microsystems主催の「MashUp Award」用に、リクルートが「カーセンサー」「じゃらん」「Smatch」「From A」のAPIを各々公開している。Awardに応募する気はまったくなかったのだが、締め切りの7/31間際になって急にアイデアを思いついたので、2日間で作って投稿してみた。このブログの右サイドバーの一番下に貼ってあるのがそれで、「from A via G」と名付けた。Got2do経由でFrom Aのデータをとるので「via G(G経由)」というわけ。安易な名前だ。ウェブサイトの内容に最適なバイト情報を表示する所謂リスティング広告で、訪問者のアクセス場所に応じてその地域の情報が表示されるようになっているあたりがちょっとした演出か。マッチングにはお馴染みの「TEDDY-G脅威のテクノロジー(以下略。U2B PlayerみたいにクリックするとLightboxライクに拡大されるとか、Google Maps->Blogを使って地図を表示するとか凝ったことをやれば見栄えがしたんだろうが、なんせ突貫工事だったので時間切れ。ははははは。アサマシ(アフィリエイト)でも何でもないので、貼る人もいないと思うが、貼りたければ貼りたいところに <script type="text/javascript" src="http://www.got2do.com/api/viaG.php"></script> とオマジナイを書けばよし。

たぶん裏には色んな思惑があるだろうAwardというネタとは言え、さまざまなAPIを公開したリクルートは立派だと思うし、どのAPIもそれなりなので、どんな作品が作られたのかAwardの結果が楽しみである。その一方で、仕様については結構お粗末だなあと思う点も多かった。カーセンサーAPIなんかはフリーワード検索ができるので使い勝手がいいのだが、From AのAPIについては「関東版」「関西版」と言った版や、決められたカテゴリから選ぶだけなのでMashUpしにくい。加えて、結果として返ってくるXMLのスキーマの設計がイマイチで、「何でここはわざわざ入れ子なんだろう」とか「これは別々のタグで分類すべきでは?」とか素人目に見て何だかキモチワルイ点が多いのだ。もともと公開を前提としてないデータベースがあって、それをそのままXMLにしてアウトプットしてるんだろなあ、とか推測するのだが、この辺も兎に角MashUpしにくい点だった。

まあ、その辺はグダグダ考える前にAPIを公開してしまった心意気の方を評価できるからいいのだが、From AのAPIのエラー処理で、「403」とかをわざわざXMLにして返すのは何だかなあ、と思った。本来サーバがステータスコードとして返せばいいものだし、これではSOAP Web Servicesの悪夢の復活である(From A APIがどういうステータスコードを返すか調べずに書いてるが、ステータスコードもきちんと返してたらそれはそれで冗長)。大企業が「API公開」すること自体は快挙だと思うのだが、だからこそこの辺はきちんとRESTfulにしてほしかった。「ウェブ進化論」読んで変な気を起こした変な大企業がリクルートの動きに倣ってGeeksの夢をまた破壊しても困るので。
素人なのにケチつけてごめんね。おかあさん初めてMashUpしたからごめんね。

最近「Youtubeに広告を貼ってみる」とか「U2B Player」とかでリスティング広告の真似事をしてみていて思うのが、広告も情報、コンテンツの一部だということだ。サイト内容と広告内容のマッチング加減がツボにはまればはまるほどその意義は高まる。でもって、決して「きちんとマッチする」ことではなく、ユーザの「ツボにはまる」ことが重要なのだ。ご存知の通り、「TEDDY-G脅威の(以下略」は寧ろマッチング精度が低いことがRemix価値を向上させている(私以外にそう思ってる人はいないかも知れないが)。既存のメディアに関しても、HDDレコーダやIP放送やVideo Podcatingやら何やらが浸透していったとしても、CMフィルムそのものの価値とメディア自体との相性次第で早送りされたりカットされたりはしないんじゃないだろうか。週末の朝の子供番組の某玩具メーカーのCMは商業的すぎてちょっとナニだが、仮面ライダーカブトの合間に流れるオロナミンCのCMなんて、本編と相俟ってかっちょいいです。

| | Comments (0) | TrackBack (0)

U2BplayerをちょっとUpgrade、クールに大画面再生

気がつくと1ヶ月あまりもブログを書いてなかった。最近色々書いてる気がしていたが、それは全部メールだったようだ。大丈夫か俺。
というわけで、U2BplayerをまたUpgrade。いい加減飽きたって?まあ、いつものようにサムネールから好きなビデオをクリックしてほしい。すると、いつものちっこいビデオ画面の代わりに、サムネールの拡大画像とタイトル・再生時間が表示される。これをクリックすると…ほら!クールな大画面でビデオを楽しめるようになってるだろう!Closeボタンか画面外をクリックすると大画面を閉じられる。驚いたかい!?驚かないって?…そうか、それは残念だ。しょぼん。

テクニック自体は、写真をポップアップさせるLightbox.jsとかHTMLをポップアップさせるThickbox.jsと同じ。最初Thickbox.jsをそのまま使おうかと思ったが、色々不要な部分も多かったので、邪悪なライブラリ・jQuery.jsの強力さを生かして半自作(追記:jQuery.jsの動的読み込みに関しては、他のライブラリとの干渉問題が生じてしまう為、現在ポップアップ表示にはjQuery.jsを使わず、自作関数を使っています。詳細はこちらの記事をご参照下さい)。ソースを見てもらえれば分かるが、HTML生成部分が異様に長くなった以外、コードはシンプル。さすがjQuery.js。邪悪だ。ダウンロードリンクはHatena-Tubeの方式をパクって、Tubeちゃんねるのダウンロードリンクを流用している。Qooqle Videoのダウンロードリンク生成スクリプトを使おうかと思ったが、簡単な方に流れた。
あと、これまで外部JavascriptやJSONを読み込むのに使っていたloadJSON()という汎用関数を拡張し、任意のタグをHEAD内に追加するinclude()という関数を作った。大画面表示の為のCSSファイルもこの関数で読み込んでいる。気になる人(あまりいないと思うが)はソースを読んでほしい。

アクセス解析を見る限り、色んな人に使って頂いてたり、紹介して頂いたりようで、途中までははてブにマメに記録してたりしてたんだが、力尽きたので、わかる範囲で下記の方々に更新通知のTrackbackを送らせて頂きます(順不同)。

ブログパーツをさがせ」様、「初心者でもできる簡単FC2ブログの作り方」様、「いのウェブログ日記」様、「パコからのニュース」様、「夏のクラクション」様、「PVCのカタチ」様、「生殺しパブ」様、「yukolog.」様、「dorog」様、「J-Rock Online」様、「YUMMY!」様、「よしぶろっ」様、「zeus-ares.com」様、「Fuguzoku Blog」様、「M.P.S.T. blog」様、他にも「youtubeで遊ぼう!」様でもご紹介頂いたりしておりますが、Ping URLがないので諦めます。

実は、ここ数日この辺のスクリプトをちょびっとずついじってて、大画面表示なしの旧Versionとか、旧Version(小画面再生)に大画面表示機能を足したやつとかがあります。また、サムネールをクリックすると即大画面表示するようにもできるんですが、何となく今の形に落ち着きました。引き続き、ご要望や気づいた点、バグ等あったらコメント欄あるいはTrackbackでの通知をして頂けると助かります。

【追記】U2B Player読み込み完了後に、ページ内のすべてのYouTubeへのリンクを、ページ内での動画オーバーレイ表示させる機能(Link2B)を追加しました。詳細解説はこちらです。

| | Comments (11) | TrackBack (6)

U2B PlayerをUpgrade、リスティング広告追加

先日気まぐれに作ってみたU2B Player(ユーチューブプレイヤーと読む)ですが、satokotoさんの「ブログパーツを探せ」をはじめ、こことかこことかこことかで紹介して頂いたり、色んなところで使って頂いたりしているようです。ありがたい。で、気が向いたのでちょっとUpgradeしてみました。既に気付いている方は気付いていると思いますが、今週からU2B Playerの下にリスティング広告(アサマシ)が表示されるようになっています。となると、アフィリエイトIDやらカテゴリーやらさらにパラメータを指定しなきゃならないので、貼り付け補助用のツール(ページ)も作ってみました。下記がそれです。

U2B Player Option Tools

指定するパラメータの解説は以下の通り。
Play Mode 

 3つのモードを指定可能。

  • top:YouTube.comのトップページで紹介されているビデオ25個を表示する。
  • favorite:「ID」で指定したユーザーのお気に入りビデオを表示する。お気に入りが25個以上の場合は26個目以降は表示しない。ID指定必須。
  • uploaded:「ID」で指定したユーザーが投稿したビデオを表示する。投稿ビデオ25個以上の場合は26個目以降は表示しない。ID指定必須。
User ID  modeが「favorite」「uploaded」のとき、ユーザーIDを指定する。
Affiliate ID AmazonのアソシエイトIDを入れる。何も入れないと私のIDになります。デフォルト設定では私のIDになっています。
Category Amazonの商品のカテゴリーから選んでください。デフォルトはDVDです。

「Show U2B Player!」ボタンを押すと画面の左側でプレビューします。アソシエイトIDがデフォルトで私のIDになっているということは何も指定しないと私にアフィリエイト口銭が落ちるわけで、無料でツール配っておいて自分の収益源にするとはふてえ野郎だ、詐欺じゃねえかって声も聞かれそうですが、それってGoogle皇帝陛下のビジネスモデルじゃん?なので、こちらで把握できた利用者様のブログにはTrack Backを貼って御連絡しておきます(本記事中にて各々の記事への言及はしておりません、すいません)。適宜皆様のアソシエイトIDに変更願います。

今回は技術的にもちょっとグダグダ述べたいところがあるのでもうちっとだけ続くんじゃ(亀仙人・談)。
リスティング広告の検索の仕組みは「YouTubeの動画をブログに貼ってAmazonアフィリエイト」と同じ。「TEDDY-G脅威のテクノロジー」を使って動画に付けられたタグの重み付けをして、重要度の高いタグによるAmazonの検索結果を表示しているだけ。TEDDY-G脅威のテクノロジーは、前回と違ってJavaScriptなのでソース見るとネタバレしますが、そっとしておいてあげてください。
さて、今回それよりも大事なのは、JavaScriptによる外部スクリプトの読み込み。いつもの通り、Amazon検索にはawsearch.jsを使ってるわけですが、JavaScriptには外部スクリプトの読み込み機能がありません。そこで、PerlのUse、PHPのinclude/requireみたいなことをするには、Scriptタグを動的に生成してappendChildするのですが、本ブログでも何度もReferしている最速インターフェース研究会さんの「JSAN構想とリモートデータの取得とUser JavaScript」にある通り、JavaScriptでは読み込み終了後に処理再開したり、読み込み完了のイベントを取得して処理したりすることができません。そこで、Google Suggestや拙作Bidders検索やU2Bplayerその他諸々のJSONネタではあらかじめ関数を var hoge=function(data) {...} の形で設定しておき、読み込まれる側のスクリプトを hoge(data)={...} の形で吐き出すことで、読み込み完了と同時に関数hogeを実行するようにしてあります。しかし、awsearch.jsのようなライブラリを読み込んで実行するにはライブラリ側に hoge(data)={...} を追加で書き込んでやる必要が生じ、あまり美しくありません。そもそも、折角のライブラリの汎用性が損なわれてしまいます。この点を先の「JSAN構想とリモートデータの取得とUser JavaScript」のサンプルスクリプトでは、setTimeoutを利用して、定期的に読み込みが完了したかチェックする関数wait()を作成し、随時監視する方法を取られています。こんな感じです。

var wait=function(func) {
    try {
        eval('check=' + func);
        if (check) {
            //読み込み完了
        } else {
            setTimeout(wait(func),100);
        }
    catch (e) {
    };
}
wait ('hoge()');

然しながら、これをそのままパクッたところ、「too much recursion」と叱られてしまいました。散々悩んだ結果、setTimeoutの代わりにsetIntervalを使うことで問題解決しました。こんな感じです。

afterLoaded=setInterval ( function () {
    try {
        X=hoge();
        //読み込み完了後に実行したい処理
        clearInterval(afterLoaded);
    } catch (e) {
    }
},100);

実際のコードの方では、ムービーやらサムネイルやらを制御するオブジェクトplayU2Bのメソッド(プロパティ)playAds()を、まずは内容空のfunctionとして定義しておき、setIntervalで指定する関数の中でputAds()をawsearch.jsを使って検索結果を取得して表示するメソッドとしてoverwriteしています。putAds()はサムネイルクリックのたびに実行するよう指定しているので、awsearch.js読み込み完了までは何も起きず、読み込みが完了すると広告が表示されるようになっています。この仕組みをうまく使うと、外部JavaScriptを一発読み込むだけでprototype.jsやscriptaculous.jsなんかも同時に読み込んで色々できるんじゃないでしょうか。

色々御託を並べましたが、U2B Playerのユーザーの方で「こういう機能が欲しい!」とか言うご要望があれば、熱が冷めないうちは対応させて戴きますので、Trackback、コメント等お寄せ下さい。ちなみに、動画をDownloadできるボタン/リンクというのは考えたんだけども面白くなさそうだからつけるのやめた。

【追記】ページ内でLightBoxのように動画をオーバーレイさせて表示させる機能を追加しました。詳細解説はこちらです。
【追記2】U2B Player読み込み完了後に、ページ内のすべてのYouTubeへのリンクを、ページ内での動画オーバーレイ表示させる機能(Link2B)を追加しました。詳細解説はこちらです。

| | Comments (8) | TrackBack (1)

livedoorReaderすげえ

もう既にあちこちでスゲエ!と言う声が上がってるlivedoor Reader。確かにすごい。使いやすい。かっちょいい。
っつーわけで、ワンクリックでlivedoor Readerに登録するためのBookmarklet作ってみた。コレ↓。
livedoor Readerに登録
今チャットの合間に数分で作ったもんだが、一応IEとFirefoxとOperaで動作確認はした。
それにしても我ながらノーミソ使ってなさそうなソースだ。

追記:リンクを貼っていただいた元したらばの社長の中の人のブログのコメント欄にて、livedoor Reader本家にちゃんとBookmarkletがあることを発見。

  ( ゚д゚)   「ブラウザ用登録ボタン(Bookmarklet)」
_(__つ/ ̄ ̄ ̄/_
  \/    /

  ( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /

  ( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
  \/    /

| | Comments (1) | TrackBack (1)

YouTubeの動画をブログに貼ってAmazonアフィリエイト

 そんなことしたらRevverじゃん、という気もしないではないが、YouTubeの動画に広告を挿入してブログに貼るツールを作った。使い方はいつも通り簡単。YouTubeの動画再生のページでこの
YouTube+Ads(Bookmarklet)
というBookmarkletを実行してパラメータ設定+プレビューのページに飛び、必要なパラメータを設定して、自動生成されるタグを自分のブログ or Web Siteに貼るだけ。なお、IFRAMEタグが使えるブログでないと貼れません(よってはてな、アメブロ、Gooなんかは×)。必要なパラメータは下記。

Video IDYouTubeの動画のID。上のBookmarkletを実行すると自動で入力される。
Affiliate IDAmazonのアソシエイトIDを入れる。何も入れないと私のIDになります。
Movie Size動画サイズをLarge/Medium/Smallから選ぶ。デフォルトはLarge。
CategoryAmazonの商品のカテゴリーから選んでください。デフォルトはDVD。

Continue reading "YouTubeの動画をブログに貼ってAmazonアフィリエイト"

| | Comments (10) | TrackBack (10)

ブログ上でYoutubeのお気に入りビデオを再生するU2B Player

今やユニークユーザ数でGoogle Videoを圧倒し、映画配給会社のプロモーションにも使われるようにまでなったYouTube.com。所謂Social Serviceで、ユーザーが投稿したビデオを評価・共有できる。音楽PV好きとしては、Flash Video採用で画質・音質ともにイマイチな同サービスより、この間タグを貼ってみたGoFish.comのほうがお気に入りなんだけども、API(Web Services)が公開されているという意味ではYouTube.comに軍配が上がる。その割にはこのAPIを使ったネタがないなーと思って作ってみたのが右サイドバーに貼ってある「U2B Player」。U2Bとかいてユーチューブと読む。読んでくれ。読んで下さい。再生画面の下に並んでるサムネールをクリックするとそのビデオが再生画面に表示されて、再生ボタンを押すと再生されます。

前のエントリのG2V Player同様使い方は簡単で、JavaScriptの使えるブログに下記のSCRIPTタグをサイドバーに貼るだけ。前回同様、 ココログの場合は「マイリスト」→「新規作成(リンク)」→「テキスト表示(設定)」でSCRIPTタグをベタ打ち、livedoorブログの場合は「カスタマイズ/管理」→「プラグインの設定」→「新規追加」→「上級者向けプラグイン(Javascript)」で下記のURLを指定する。但し、今回はいくつか機能をつけたのでパラメータを指定しないといけない。

<script src="http://www.got2do.com/api/U2Bplayer.php?
 mode=[モード]&user=[ユーザID]&proxy=[プロキシ名]"
 type="text/javascript" charset ="utf-8"></script>

mode  3つのモードを指定可能。省略した場合は「top」を指定したと見なされる。3つのモードについては各々下記。
  • top:YouTube.comのトップページで紹介されているビデオ25個を表示する。
  • favorite:「ID」で指定したユーザーのお気に入りビデオを表示する。お気に入りが25個以上の場合は26個目以降は表示しない。ID指定必須。
    ※YouTubeのAPIの仕様変更に伴い、表示数上限が10個になっています。ご注意下さい。(参考)
  • uploaded:「ID」で指定したユーザーが投稿したビデオを表示する。投稿ビデオ25個以上の場合は26個目以降は表示しない。ID指定必須。
    ※YouTubeのAPIの仕様変更に伴い、表示数上限が10個になっています。ご注意下さい。(参考)
user  modeが「favorite」「uploaded」のとき、ユーザーIDを指定する。
proxy  YouTube.comからGETしたXMLをJSONに変換するプロキシを指定する。
  • g2d:www.got2do.comのプロキシを利用。省略した場合はこれになる。
  • drk7:drk.7.jpさんの提供されている「XML2JSON」サービスを利用。詳細は後述。


よって、例えばユーザー名teddygのお気に入りビデオを貼りたい場合は下記のいずれかになる。

<script src="http://www.got2do.com/api/U2Bplayer.php?mode=favorite&user=teddyg" type="text/javascript" charset ="utf-8"></script>
<script src="http://www.got2do.com/api/U2Bplayer.php?mode=favorite&user=teddyg&proxy=drk7" type="text/javascript" charset="utf-8"></script>

言うまでもないが、パラメータを全て省略するとYouTube.comのトップで紹介されているビデオが表示される。

スクリプトの内容についてはG2V Playerと同じで、JSONで受け取ったデータを配列に読み込んで、HTMLに整形してブログに挿入しているだけ。今回は自前のgot2do.comのプロキシ以外にdrk7.jpさんの提供するXML2JSONサービスも利用できるようにしてみた。ウチのサーバの負荷分散とかいうわけではなくて、単に使ってみたかっただけです。

XML2JSONサービスではパラメータvarで指定した関数のdataプロパティをJSONで吐き出した上、onload()メソッドを実行するようになっているので、まずはJavascript上でそれを定義する必要がある。今回はonloadメソッドだけを持つjsonU2Bという関数を用意し、jsonU2B.onload()は実際のHTML生成等を行うplayU2Bオブジェクトのインスタンスを生成してplay()メソッドを実行するだけにしています。ソースコード自体はG2Vplayerとほとんど同じなので、使ってもないnext()とprev()のメソッドが名残として残ったままになっている。まあ気にしない。
あと、XML2JSONサービスでは元のXMLデータが複数の同一要素を持っている場合(例えばRSSにおけるitem要素みたいなの)に、数値をキーとする配列ではなく、各々の要素のID?みたいなの?をキーとする連想配列としてJSONが吐き出される。よって、各々の要素にアクセスするにはキーを指定する必要があるので、そのキーだけを別の配列としてplayU2Bのプロパティとして持つようにして処理しています。ってもう何のことだかわかんないな。

ってなわけで、ブログ上で自分の見つけた面白ビデオを紹介したい人だとか、自分の子供や孫を動画で自慢したい人、自分とか自社とかのビデオをPRしたい人、例えばライブ映像を流したいバンドの人だとかにはいいんじゃないでしょうか、ねえollirodge兄さん

【追記