読者です 読者をやめる 読者になる 読者になる

daisuke_nomura の日記

Android プログラマーな鉄道ファンのブログ

Windows Phone 7でニコニコ実況を閲覧するアプリを公開しました

はじめに

@daisuke_nomuraです。
Windows Phone 7(以下、WP7)でニコニコ実況を閲覧するためのアプリを開発し、7月7日にWindows Phone Marketplaceで公開しました。ななふぉの記事が分かりやすいので、そちらを参照のこと。


MangoからNoDoに移植
このアプリはMango(Windows Phone 7.1)向けに開発し、ニコニコ動画にてエミュレータでの動作の様子を公開していました。今回のアプリはMangoアプリをNoDoに移植したサブセットとなります。
ニコ動のWP7アプリ作ってみる その4【実況】

Mangoとは、Windows Phone 7の次のメジャーバージョンのことです。
Androidが2.1から2.2、そして2.3にバージョンアップしたのと同じ流れとお考えください。
今のバージョンはNoDoという名称です。
MangoではNoDoでは使えなかったSocketやマルチタスクなどが利用できます。
そして、Mango向けに開発していたこのアプリは、ニコニコ実況を閲覧をする際に必要なSocketを利用していました。


ニコニコ実況はHTTPでアクセスできる
NoDoではSocketが利用できないのでニコニコ実況に接続できないと思っていましたが、@koizukaさん曰く、

とのことです。
ニコニコ実況はHTTPでアクセスできることが分かりましたし、ニコニコ実況のコメントサーバのIPアドレスとポート番号は知っています。
しかしながら、APIを知らない上、HTTPリクエストにどのような情報を載せればいいのか分かりません


アプリキャスト版のAPIにアクセス
HTTPでアクセスする方法を探しました。
丁度タイミング良く、ソニーのテレビBRAVIAで利用出来るアプリキャストに対応したニコニコ実況がサービスインしました。
これは使えます。
アプリキャストのSDKを確認すると、アプリキャスト版がHTTPで通信していることが分かりました。
自宅にはBRAVIAがあり、アプリキャスト版がHTTPでアクセスしているAPIを見つけることに繋がります。


このアプリについて

Marketplaceにおける名称:Nico Jikkyo Application
名称:ニコアプリ(実況)
価格:無料
URL:http://social.zune.net/redirect?type=phoneApp&id=4aabd661-88a5-e011-986b-78e7d1fa76f8




ニコニコ実況をWindows Phone 7で閲覧するためのアプリです。
ニコニコ実況をご存じない方はニコニコ大百科の記事を参照。
コメント取得をHTTPで行っているので、コメントの数が多いと弾幕になりがちです。
これは、

  1. コメント取得が数秒に1回
  2. コメントの衝突判定は(Socketで)リアルタイムにコメントを取得することを想定している
  3. それなのに一定間隔で一度にコメントをまとめて取得

以上の理由のため、コメントの流れが早いと(新しく取得するコメントの数が多いと)簡単に弾幕になります。
Mangoアプリはコメント取得がリアルタイムでなので、この問題は解消されるのでご心配なく。


Mangoアプリについて
Mangoアプリでは、Socket、ログイン、コメント投稿、過去ログに対応します。
過去ログ以外は既に対応済みであるため、MangoアプリをMarketplaceに提出できるようになったら直ぐに提出する予定です。


仕様
最後に仕様について記述します。
ニコニコ実況アクセス解析を担当する方のご参考になれば幸いです。
アクセスするAPI: アプリキャスト版と同一
取得コメント数: 16個
コメント取得間隔(最大): 5,300ミリ秒
コメント取得間隔(最小): 2,900ミリ秒
コメント取得間隔 = 5,300ミリ秒 - 一回前で取得した新規コメント数 * 150ミリ秒
ユーザーエージェント: NicoJikkyoApplication/WP7
リクエストの特徴: guidパラメータがHTTPのGETリクエストに付加される
guidパラメータを付加する理由: WP7では、5秒前にアクセスしたアドレスにもう一度アクセスすると、HTTPリクエストをせずにキャッシュを読む仕様のため、それを乗り越えるため