12月2007

こたつつきみかん – 2007

さて、早いもので、もう2007年も終わりですね。そんなわけで2007年の統計です。今年の1月1日から設置していたGoogle Analyticsの集計です。(1月1日 – 12月29日)

google analytics

セッション数19086,ページビュー28671、こんなにもたくさんの方々に自分の記事が見てもらえた事は大変ありがたいことです。これまでにないほど簡単に、個人の主張を大勢の方々に発信できるネットやブログサービスに感謝します。ブログを書き続けるモチベーションを与えてくれた皆さんに感謝します。そして、ブログのスペースを提供してくださった山本さんに感謝します。来年もブログを継続していくとともに、最大限にActiveBasicにコミットできる年にしていこうかと思っています。

それでは皆さん、良いお年を。

P2Pの教科書

年末のゆったりとした時間を利用して、久々に本屋巡りをしました。今日目についた本はこれです。

P2P教科書 (インプレス標準教科書シリーズ) P2P教科書 (インプレス標準教科書シリーズ)
江崎 浩

インプレスR&D 2007-12-22

Amazonで詳しく見る by G-Tools

P2Pのありとあらゆることが書かれている本です。具体的には、P2Pの概要から始まり、P2P周りの著作問題、P2Pの歴史、仕組み、ビジネス利用についてです。特にP2Pの仕組みでは、プログラムのコードこそ書かれていないものの、初期のハイブリット型P2Pから、第二世代のピュアP2P、そして第三世代のWinnyのようなキャッシュ機能やクラスタリングを備えた高度なP2P、最後にBittorrentと、代表的な技術についてかなり詳しく解説されているので、P2Pに興味のある人は必見の本と言えるでしょう。

P2Pと言えば、最近ニコニコ動画のプロキシとして動作する、動画キャッシュ共有プロキシというものを下のリンク先で実験していますね。これはうまく隙間をついたような発想ですね。

P2Pニコ動キャッシュ共有プロキシを作ってみた

インターフェース体験

最近は「直感的なインターフェース」というのが流行りなのか、iPod touchを始めとするApple製品から始まり、インターフェースが語られる場所ではよく見かけるキーワードとなっているようです。しかし私は、インターフェースにとって直感的な操作方法を提示する事は必要な事ではありますが、それよりもインターフェースを操作したときの「体験」の方が重要だと最近考えています。

例えば、iPodのクイックホイールです。これはよく直感的な操作だという意見が見られますが、決してそんな事はないでしょう。少なくとも、私が最初にiPodと手にしたとき、操作方法が数分わかりませんでした。我々は、ボタンを押して操作するというのが当たり前になりすぎています。何も知らない人がiPodを手にしたとき、クイックホイールを指でなぞって操作できる人は、一体どれだけいるでしょう?私には到底直感的に操作方法がわかるとは思えません。

先ほどiPodの操作が数分わからなかった書きましたが、私が操作できるようになるまでに何があったのでしょうか。それは、インターフェースの体験と学習です。iPodを手にした私は、ボタンで操作する事に疑いの余地もなかったので、ボタンを押して項目を選択しようとしていました。しかし思った通りに操作する事はできません。どうすればいいのだろうかと、しばらくいじっていると、ある事に気がつきました。ボタン上で指がずれたときに、選択されている項目が連動して動くのです。もしかして、ボタンを押してまわすのかと思って最初はやったものの、すぐに指でなぞって操作する事に気がつきました。

ところで、iPod touchはインターフェース体験と、直感的な操作の両方を実現している、すばらしいインターフェースです。つい最近、ようやく私もiPod touchをお店の展示品で操作させていただきましたが、確かに直感的と言えるにはふさわしい操作をすることができます。しかし、それ以上に大切なのは、その直感的な操作を体験させるインターフェースにあると思うのです。例えば、スクロールのフリック操作ですが、いくら直感的な操作だとしても、もし画面が指に合わせて動かなかったらどうでしょうか?動作が正しく伝わっていないのかと思ったり、そもそも操作することが面白くなく、ただの指で操作する事できる珍しい製品として幕を閉じていた事でしょう。

MacがWindowsより優れている事について、よくインターフェースが挙げられます。しかしながら今日、両方のOSを見比べてわかる通り、ほとんど似通ったものです。メニューバーが固定、それともドキュメントウィンドウに付くか、そんなことは些細なことで、その人の嗜好によるのではないかと思ったりします。このように、インターフェースを見ているだけではMacの優位性を語ることなど難しく、むしろWindowsの方が優れている部分も十分にあるのではないかと思います。

しかし私は、先に述べたインターフェース体験の部分ではWindowsよりMacの方が優れていると考えています。例えば、どちらのOSもアプリケーションを起動する方法は一緒で、アプリケーションアイコンをダブルクリックします。このとき、Windowsの場合、画面に即座に変化がありません。対してMacは、即座にアプリケーションアイコンがDockで飛び跳ねて、起動しているという状況を表してくれます。アプリケーションを多重起動してしまった経験は、誰にでも一回はあるでしょう。

また、ウィンドウをドラックしてみましょう。ウィンドウをドラックしているのに、ウィンドウが動いてくれない、そんなことはないでしょうか?右クリックをしているのにメニューが出てこない。タスクバーでウィンドウを選択しているのに切り替わらない、さらに、いつの間にか二回以上押していて、ウィンドウがタスクから出たり入ったりする。そんなことはないでしょうか?対してMacは、いくらアプリケーションがおかしな状態でも、ウィンドウの動作はいつだって滑らかです。ウィンドウがドラッグの操作についていけない場合など、そうそうありません。また、タスクの切り替えもスムーズで、目的のウィンドウになかなか切り替わらないなんてことは、よっぽどの事でない限りありません。

Macは、ユーザーがインターフェースに対して行った操作を即座に画面上に反映し、インターフェースの体験をさせてくれます。この体験こそが、インターフェースの学習を容易にさせ、また、インターフェースに対するストレスの軽減、そして見た目だけでは語れないMacのインターフェースの使いやすさに繋がっているのだと思うのです。

Mac OS X Leopardは、Core Animationと呼ばれる重要な技術が追加されました。これはスムーズなアニメーションを簡単に利用できる技術で、iTunesのCover Flowから始まり、さまざまなところで活躍しています。この技術はもちろんデベロッパも自由に利用でき、インターフェースの体験を作る事に大いに貢献する事でしょう。

Quick Lookプログラミングガイド日本語訳が公開

どうやらAppleはLeopardの技術についての翻訳にはやる気があるようです。

Quick Lookプログラミングガイド

Quick Lookのプラグインも作ってみたいと思っているので、そのうち読みたいです。

QTKitも強化されているようです

QTKit Capture Programming Guide[PDF]

QT…でリファレンスを引いているとQTCapture…というものがやたらと引っかかるので、何ができるのだろうと調べてみたら、これもLeoaprdで追加されたAPIのようです。リンク先のドキュメントの冒頭の方に書かれていますが、カメラ,マイクからの入力をキャプチャーするもので、少し下の方まで読むと、入力されたものを画面やQTファイルにアウトプットするものだと言う事がわかります。

With the release of Mac OS X v10.5 and the latest release of QuickTime 7, the reach and capability of the framework have been extended. The QuickTime Kit now includes the addition of 17 new classes, all designed to support professional-level video and audio capture, and pro-grade recording of media.

professional-levelのキャプチャーって一体なんだよって感じですが、それは一先ずおいといて、どうやらこれらのAPIは外部からのデバイス入力専用のもので、パソコンの画面そのもののキャプチャーには使えなさそうです。もう少し調べたいです。

メッセージサーバのURLが変更されたようです

ここ最近になって、自作のニコニコ動画のコメントダウンローダーでコメントがダウンローダーできなくなったと思ったら、よく見るとURLが変更されたみたいです。

今までは、”http://msg%d.nicovideo.jp/api/”だったのが、”http://msg.nicovideo.jp/%d/api/”に変更されました。%dは任意の数字です。

最初はFLVと同じようにコメントもダウンロード規制されているのかと思い、今まで適当だったリクエストヘッダに、リファラーを記述してみたり、POSTのXMLにuser_id属性を付加したりしましたが、結局、よく見たらURLが変更されていただけだったようです。

ところで、ダウンロードしたコメントは、現在このような書式になっています。

<?xml version="1.0" encoding="UTF-8"?><packet><thread last_res="8829" resultcode="0" revision="1" server_time="1197199187" thread="1197027961" ticket="0x291a7280"/><view_counter video="80744"/>
<chat anonymity="1" date="1197195697" mail="sage shita big orange 184" no="8625" thread="1197027961" user_id="_UzrXmeCsmhiCbpCW2l6SVv51SI" vpos="18803">思い切って 前髪を切った              &#8203;</chat>
<chat anonymity="1" date="1197195700" mail="big ue blue 184" no="8626" thread="1197027961" user_id="3qjgAyyvNEUXtAV0LFsCoF7dbG4" vpos="12852">(’、’;)&#9730;(・・ )</chat>
<chat anonymity="1" date="1197195717" mail="184" no="8627" thread="1197027961" user_id="Erf8MOd-xqCBCD9T_bGOFaelObg" vpos="19265">ピアノさいこー</chat>

...

</packet>

最初の方にちょっとした情報が記述されており、メインのコメントはchatタグに記述されています。chatはコメントが投稿された順に記述されており、再生したときに早くコメントが出てくる順ではありません。

代表的な属性は、vposとmailです。vposはビデオ上でのコメントの場所(時間)を表し、mailにはコメントを投稿するときに入力する「コマンド」の値が入っています。shita(字幕),big(大きさ),orange(色)とかコメントを修飾するやつです。

表示に必要なのはこの二つですが、vposには要注意です。まず、単位が1/100秒です。あまり見かけない単位ですね。もう一つは、ビデオ上をスクロールするコメントのvposは、そのコメントが画面の中心に出ているときを表し、一方字幕の場合は、そのコメントが出現する時間を表しています。つまり、一つのコメントが表示されている時間は4秒間と決まっているので、画面上を流れるコメントはvposより2秒前に右側から表示を始めなければなりません。

そういうわけで、プレーヤーを作る人は注意しましょう。1週間前になりますが、作成していたオフラインプレーヤーを字幕表示に対応させました。

nPlayer -
通常コメントが250までの長さの動画に、1000表示しているので歌詞がたくさん表示されています。

最後に、Image KitとCore Animationの記事を書こうと思っていたのですが、これから2,3ヶ月の間特に忙しいので、年末年始あたりに時間が取れなければ書く事ができないかもしれません。せっかく、どちらもそこそこ使えるようになったのに、それを紹介できないのは残念です。IKImageBrowserViewの記事は書きかけになっているので、年内には仕上げたいです。

そういうわけなので、このブログ自体も翌年3月あたりまでは更新頻度が激減するかもしれません。

Apple Japanが本気になってきたのか?

なんとObjective-C 2.0の日本語訳に続いて、待望のCore Animationガイドも日本語化されたようだ。もうすでにアニメーションのところまでは英語で読んでしまっていたが…

Core Animation プログラミングガイド

この調子で翻訳を進めてもらいたいものである。

とりあえずプロトタイプ

Core Animationが予想を上回る生産力を見せたので、昨日と今日でニコニコ動画のオフラインプレーヤーのプロトタイプを作成する事ができました。

niconico offline player with core animation

いろいろと手抜きもありますが、とりあえず時間軸にそってコメントが流れる段階までは作成できました。今のところ配置は適当ですが、コメントが非常に滑らかに流れるのが新鮮です。さすがCore Animationと言ったところでしょうか。