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)

U2B Playerに新機能「Link2B」追加

久々にU2B Playerに新機能を追加しました。その名も「Link2B」(リンクチューブ)。最早名称にYouTubeの名残も何も残ってなくて訳が分かりませんが、U2B Playerを設置してあるページ内にYouTubeへのリンクがあると、YouTubeに飛ばずに、ページ内で大画面再生するようにリンクを変更します。 そんなことしなくても、YouTubeに飛ばしたくなかったらページ内に動画そのものを貼り付ければいいんじゃないの、と思ったりもするのですが、動画紹介よりも文章に重きを置きたい場合とか、多数の動画をひとつのブログエントリ内で紹介したい場合など、動画を貼りたくないケースも生じます。そういう場合には、ごく普通にYouTubeへのリンクを張っておくだけでページ内でポップアップ再生できるので、読者をYouTubeに飛ばしてしまうことなく(逃がすことなく)、動画を紹介できるのでよいのではないでしょうか。例えば次のような感じです(ページ読み込み完了後、リンクをクリックしてみて下さい)。

YouTubeは、Social Serviceの流れ上、必然的に誕生したサービスである。ブックマークの共有(Del.icio.us)、写真の共有(Flickr)、次は動画の共有、というアイデア自体は寧ろシンプルすぎるほどである。然しながら、シンプルさゆえに分かりやすいアイデアと、動画というインパクトの強いコンテンツのお陰で、今やYouTubeはTVに匹敵するほどの影響力を持つ存在となった。例えば、Back Street Boysの口パクをするだけのBack Dormitory Boysは、モトローラのCMに出るほどの有名人になったし、逆に、Lonelygirl15=Bree=Jessica Roseのように、YouTubeをバイラルマーケティングの場として活用する例も登場している。今や、BeatlesでさえもYouTubeをプロモーションの場に選ぶ時代なのだ。また、カノンを弾くギタリストスーパーマリオを弾くピアニストなど、YouTubeがなければその存在を広く知られることのなかった才能かもしれない。その他にも、3DガンダムOTOKO HAZARDMega64-Metal Gear Solidなど、「内輪ウケ」的コンテンツが陽の目を浴びることができたのも、YouTubeあってこそだろう。…

U2B Playerを貼っているサイト上のYouTubeへのリンクは、ページ読み込み完了次第、全部書き換えられてしまうので、この機能が不要な方は、Option Tools上でLink2BをOffに設定して、貼り直してください。ちなみに、小粋空間さんのLiteBox1.0の解説エントリで、U2B Playerと同時に設置できない旨注釈がありましたが、今回の修正でこの不具合も直してあります。たぶん、他のブログパーツ類との相互干渉も解消されているはずです(色々とご確認下さったkatsumipapaさん、有難う御座いました)。原因は前VersionでjQuery.jsを動的に読み込んでいたことだったので、今回のVersionからは利用しないようにしてあります。色んなサイトで簡単に使ってもらうことを前提にしているブログパーツで、あちこちに影響を与えてしまうライブラリに依存するのはダメということですね。

今回のLink2Bについては、U2B Playerと切り離してもいいかなあとか、もっと高機能化してもいいかなあとか思うのですが、その辺はユーザーの皆様のご要望にお任せ致します(ノーリアクションだったらなかったことにする)。

| | Comments (6) | TrackBack (0)

ALL YOUR WEBSITE ARE BELONG TO US

U2B Playerにエイプリルフールのネタを仕込んでおきました。びっくりさせた方、すいませんです。
最初は米国西海岸時間4月1日午前零時にネタバレしようかと思ったが、本ブログを読んでいる方はほとんど日本からのアクセスだと思うので、日本時間4月1日午前零時にネタバレ。
一応、「びっくり画面」は一回しか表示されないようになっているはずですが、もし何か不都合が生じていればコメント欄にて御連絡下さい。早急に対応させて頂きます。ちなみに、元ネタはZERO WINGの「ALL YOUR BASE ARE BELONG TO US」。懐かしいなあ。当時日本人の自分には、これが何であんなにバカウケなのか分からなくて、ネイティブスピーカーのollirodge兄さんに聞いてみたら、「ボビーオロゴンの日本語みたいなもんだよ」と言われて納得。
U2B Playerをはじめ、無償のブログパーツが色々と出ており、皆さん自由にそれを楽しんでいらっしゃるわけですが、無償だけにもしかしたら悪意のあるやつがいるかもしれません。私が善意でツールを無償提供している変人である可能性より、悪意でウイルスを仕込むクラッカーの可能性のほうが高いかもしれないわけで。というわけで今回のネタは、そのような危険性を皆様にリマインドすべく…とか何とかもっともらしいことを言ってみる。
ひそかにjQuery.jsを使わないようになっていたり、他にも近々U2B Playerの機能をUpgradeする予定です。色々書きたいことはあれど、詳細はまた今度。

追記:コメント欄にも書いておりますが、一度びっくり画面が表示されたら、Cookieに情報を保存して、二度目以降が表示されないようにしております。なので、ブラウザのセキュリティ設定でCookieがOffになっていると、4月1日の間中、びっくり画面が表示され続けることになります。但し、CookieのOnについてはセキュリティ上問題が生じることもありますので、Onにすることをお勧めするものではないことを一言申し添えます。

| | Comments (11) | TrackBack (0)

MashUp Freak!でサービス名をタグクラウド風表示

先日リリースした「MashUp Freak!」ですが、指定できるサービス名を人気順(利用度合)にタグクラウド風表示するようにしました。これにより、人気のAPI(WEBサービス)、或いはマイナーなAPIをビジュアル的に把握することができます。

MashUp Freak!自体は汎用性を持たせることが目的である為、マッシュアップサービスとしての実用性は決して高くありません。よって、本格的なサービスを作るには、特定用途に沿った形でサービスを作成する必要があります。ここでどういうサービスを組み合わせるか(Remixするか)が腕の見せ所ですが、このサービスクラウドを眺めることで、何かRemixのアイデアが閃くかもしれません。とは言え、人気のAPIを組み合わせればウケるサービスができるというわけではありませんが…。

| | Comments (0) | TrackBack (0)

Mash Up Awardで二度目の受賞

先日、本ブログで発表した「MashUp Freak!」ですが、Mash Up Award the 2ndで特別賞を戴きました(こことかここ御参照)。第1回目の「from A via G」の優秀賞受賞に続く二度目の受賞ということで、大変光栄に感じております。

前回は「アイデア」「サクッと作った感」が評価のポイントだったわけですが、今回は「コンセプト」「技術力」が評価対象となったようです。いずれもただの素人の商社マンたる私には身に余るお言葉であり、誠に恐縮至極に存じます。この場を借りまして、Awardの場を与えて下さったリクルート様及びサン・マイクロシステムズ様、APIを多数提供して下さった企業の皆様、そしてAwardを裏から支えておられた事務局の方々に御礼申し上げます。また、今回も生暖かく見守ってくれた友人たちと家族にも感謝の言葉を捧げます。

私自身は、MashUp Freak!はじめ、今後も気の向くままに色々と試していきたいと思いますので、引き続き皆様よりご意見等頂戴戴ければ幸甚です。また、一緒に何か作ってみたいとか、ビジネスについて議論してみたいとか、そういう奇特な方がいらっしゃれば、メールなり何なり、遠慮なくご連絡下さい。Los AltosとかMountain Viewの近くに住んでる人だとなお良し、なんて無茶は言いません。

…で、やっぱり第3回目は開催されるんですかね?今度は評価する側をやってみたいなあ、とか勢いに任せて言ってみる。ごめん。図に乗りすぎた。

| | Comments (3) | TrackBack (2)

10秒でMashUpが作れる「MashUp Freak!」

ここのところBay Areaは異常に暑い日が続いてて、日中は20度以上と初夏の勢いである。通常1~3月は雨季で寒い日が続くらしいのだが、今年はあっさり雨季も終了してしまった様子。
と、それは置いといて、「MashUp Freak!」というサービスを作った。
MashUp Freak!

MashUpしたいサービス名をクリックして、順番を適当に並べ替えるだけで即席MashUpを作ることができる。使い方はヘルプの中にも書いたんだけど、Winkでチュートリアルムービーも作ってみた。
即席MashUpを作って、はてブに登録するまでのムービー
Mash Up Award the 2nd応募用に作った、ってか、ホントはもっとさっさと完成させて、「こんなのたたみラボが作れよ」とか大口叩くつもりだったのが、UI部分に手間取って結局ぎりぎりに投稿。なお、UIなしのプロトタイプが完成したあたりでYahoo! Pipesが発表されてちょっと凹んだのは内緒だ。

今回のMash Up Awardは17社から30ものAPI(WEBサービス)が提供されているのが特徴である。前回のエントリでも書いた通り、これはすごいことだ思うのだが、Remixerからすれば、これだけの素材をどう調理したらいいのか、非常に難しい問題である。加えて、今の世の中、他にも公式・非公式、企業・非企業を問わず、大量のWEBサービスが提供されている。AmazonとGoogleしかなかった4年ほど昔と比べれば大変Happyな環境なのだが、それこそ組み合わせの妙、センスが問われるわけで、実に悩ましい。というわけで、「センス」の部分をあっさり諦めて、何でもありのサービスにしたというわけだ。

スクリプトの内容的には、大半をJavaScriptで書いている。今回はブログに貼付けるツールとかじゃないのでPrototype.jsを使ったが、今更その便利さに感動。うむ、実に時代に取り残されている。サーバーサイドはPHPで書いているが、APIからデータを取ってくるだけで時間がかかってしまうので、一部を除いてあまり複雑なことはしていない。全体の仕組みとしては、WEBサービス毎にAPIのURI、返してくる内容、次のサービスに投げるパラメータ、等々を前もって定義しておき、何番目に実行すればいいか、というMash UpのレシピをGUIから受け取って、順々に実行しているだけ。この辺はPlaggerがYAMLをベースに動いているのとちょっとだけ似ている。

Google Mapsについては、Ver2になってから初めて使ってみたので、ほとんどサンプルコードそのまま(笑)。ただ、「Bidders MapAds」(懐かしい)同様、Nakamura-KU ADDICTさんのinvGeocoderサービスを使わせてもらって、地図が動くたびに住所を調べるようにしている。Geocoderの方はGoogle提供のものを使っているが、このあたりは他にも色々サービスがあるので、別のものに差し替えたり、併用したりするかもしれません。

一番手間取ったUI部分には米Yahoo!のUIライブラリを使っている(Y!UIを使ってDrag & Dropを作る方法は、Diasparさんのサンプルを参考にさせて戴きました。有り難うございます)。jQuery.jsの派生版であるinterfaceを使おうかとも思ったが、jQueryの良さである「軽さ」が失われてしまうのでやめた。というわけで、YouTube検索の表示結果をクリックするとThickbox風に表示される部分はjQueryを使わず自作している。U2B Playerの方もjQueryを使ってるとLightboxとのConflictが生じたりするので、その内完全自作版に変更する予定。

仕組みについては他にも色々書きたいこともあるけど、このくらいで。MashUp Freak!自体は、あくまで簡単にMash Upが作れることを目指したものなので、実用性は低い。レゴで言えば幼児向けの、動物の形や木の形をした大きなブロックが入った詰め合わせみたいなもの。作りたいものが概ね簡単にできるんだけど、凝ったものを作ろうとすると物足りない、そんな感じ。でも、Mash Upサービスを作る際に、組み合わせの違いで随分テイストが変わってくることが分かってもらえると思う。例えば、同じGoogle MapsとHotPepperのMash Upでも、順番が違うとこんなに印象が違う。
Google Maps->HotPepper
HotPepper->Google Maps

これに関連して、Mash Upサービスのポイントだとか何とかも簡単に整理してみたんだけど、それはまた今度。
ちなみに、MashUp Freak!で使えるWebサービスは今後もどんどん追加予定です。ご感想・ご意見・ご要望等について、コメントやトラックバックで戴けると有り難いです。

| | Comments (1) | 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)

映像とか音楽とかのサービスの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)

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)

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要素み