Sorry, Japanese only.
Last modified: Sat May 30 14:35:33 2009
NicoCache
これは何?
ニコニコ動画の動画をキャッシュして一度見た動画を二度目以降は快適に見られるようにするツールです。
もっと詳しく
一度見た動画は、ブラウザのキャッシュが残っている限りはもう一度見に行くとすぐに再生されますが、キャッシュから消えると一度見た動画なのに再度ダウンロードが必要になります。混んでいる時間だと読み込みが遅くてなかなか後ろの方が見られなかったり、「動画が繋がりません」と言われて全く見られなかったりします。
ブラウザのキャッシュでは、動画はサイズが大きいのですぐにあふれて消えてしまいます。キャッシュサイズを大きく設定することもできますが、今度は動画以外の余計なファイルまで大量に残ってしまったりブラウザの動作が遅くなったりする問題があります。
NicoCacheは、SMILEVIDEOの動画ファイルのみをブラウザのキャッシュとは別にHDDの空きが許す限りキャッシュするローカルプロキシです。一度見た動画であれば、二度目以降は瞬時に読み込みが完了します。マイリストに登録して何度も見るような動画をキャッシュしておくと便利です。
動画を最後まで読み込んだ時点でHDDに保存されているので、気に入った動画を保存しておこうと思った時に改めてダウンロードする必要がありません。
エコノミーモードになる動画でも、通常モードのキャッシュがあれば通常モードの画質で見ることができます。
みんながNicoCacheを使うとニコニコの負荷が減るので、そのうち一回目に見る動画もすぐ読み込めるようになるかもしれません。
入手
ダウンロードは以下より。Java Runtime Environment (JRE) 5.0以上が必要。ブラウザは多分なんでも動くはず。基本的にFirefox、たまにIEで動作確認。OSはWindowsで動作確認していますが、MacやLinuxでも動くそうです。
JavaはJava.comなどから入手してください。
- 2009/05/30 NicoCache 0.41
- swfの動画のURLが変わり(as3付加)キャッシュできなくなっていたので対応。
- 2009/04/11 NicoCache 0.40
- ニコニコの仕様変更により見出しに大百科へのリンクが入った影響でタイトルが正常に取得できなくなったので対応。
- 2009/03/25 NicoCache 0.39
- swfの動画のタイトルを記憶していない場合はnmと仮定して扱うようにした。これで@CMなどもタイトルが取得できるようになった。
- 2009/03/22 NicoCache 0.38
- APIのURLが変更になりタイトルが取得できないケースが発生していたので対応。
- 今後さらにURLが変更されてもリダイレクトされていれば追随するようにした。
- smで始まらない動画のタイトルが取得できないケースを減らした。(現状非対応の例: 公式動画をwatchページを経由せずに再生したケース)
- 2008/07/05 NicoCache 0.37
- 今日のメンテの仕様変更でwatchページのタイトルをキャッシュできなくなったので対応。
- 2008/06/05 NicoCache 0.36
- deflate圧縮対応でミスっていたのを修正。
- これの影響でJDK5でビルドできなくなっていたのも同時に直った。
- 2008/05/25 NicoCache 0.35
- gzip展開の要否をきちんとヘッダで判定するようにした。
- deflate圧縮にも対応した。
- 2008/05/25 NicoCache 0.34
- いつの間にかwatchページがgzip圧縮されて転送されるようになっていたので対応。この影響でsm以外の動画のタイトルが取得できていなかった。
- 2008/04/02 NicoCache 0.33
- 4/1のwatchページの変更の影響でキャッシュのファイル名に「ニコニコ動画」と入ってしまっていたのを修正。
- watchページからタイトルを取得できなかった時はサムネイル画面から取得していたのを、APIで取得するように変更。
- 2008/03/06 NicoCache 0.32
- ニコニコSP1に対応。mp4, swf形式も保存できるように修正。今後新しい形式が増えてもなるべく保存するようにしておいた。
- 永遠待ち状態の対症療法として通信タイムアウト設定を追加。(readTimeout)
- Unicodeファイル名が使えない環境で動作させる設定を追加。(fileNameCharset)
- 2007/11/25 NicoCache 0.31
- 1回のレスポンスで複数の相反するcookieを送ってくるサーバ(ニコニコには多分ない)にログインなどができない場合があったので対策。
- 2007/11/25 NicoCache 0.30
- [nlより]公式カテゴリの動画(ax, ca)のようにsmで始まらない動画に対応。副作用でニコニコへのアクセスが減って少しニコニコに優しくなった。これによりプロキシ自動設定を使っていた人は変更の必要があるのでプロキシ自動設定の説明ページを参照。
- [nlより]エコノミーモードのキャッシュが存在する時に通常モードのキャッシュを取得したら同じフォルダに生成するようにした。
- 2007/11/23 NicoCache 0.29
- Operaでニコニコにログインできないのを修正。(HEADリクエストに対応)
- 2007/11/15 NicoCache 0.28
- 一度動画サーバに接続失敗した動画はそれ以後キャッシュできなくなっていたバグを修正。
- 動画サーバが403や404を返してきた時にもキャッシュしていたバグを修正。
- 開発者向け: TransferListenerで書き換えない限り動作がおかしくなるようなヘッダは書き換えられないようにする。
- StringResourceをKeep-Alive非対応のクライアントでも問題がないようにする。
- 2007/11/04 NicoCache 0.27
- サーバが誤ったConetnt-Lengthを送ってくるとブラウザの読み込みが終わらない状態になることがあったので対策。
- 2007/11/03 NicoCache 0.26
- 大きなファイルのアップロードに対応したつもりができてなかったので修正。
- サーバがエラー応答でかつbodyがない場合に例外が表示されていたのを修正。
過去の更新履歴
使い方
- ブラウザのプロキシ設定で、localhostのポート8080を使うようにする。
- NicoCache.batをダブルクリックして起動する。
あとはニコニコで動画を見ると自動的に動画をキャッシュします。
ポート8080で待ち受ける他のツールも使っている場合はどちらかのポートの設定を変更してください。
便利な使い方
プロキシ自動設定はこちらへ
FAQ
- キャッシュしておけばニコニコで削除された動画も再生されるの?
- NicoCacheを使っていても、削除された動画にアクセスした場合は動画は再生されません。(削除通知が表示されます。NicoCacheを使わない場合と同じです。) 再生されるようにする予定もありません。
- 設定方法がよく分からないんだけど?
- 教えて君.netで画像付きで詳しく紹介されているのでそちらを参考にしてください。ブラウザの設定だけでなくNicoCacheを起動しておくのも忘れずに。
- プロキシをNicoCacheにしておくと表示されなくなるサイトがあるんだけど?
- 0.06までのNicoCacheはSSLを使っているページ(https://で始まるURL)は非対応です。0.07以上にアップデートしてください。
- なんでJavaなの?
- マルチスレッドで通信するプログラムを組むのにJavaが楽だったからです。動作は確かにネイティブよりは重いですが、最近のJavaは結構ましになっていると思います。出始めのJavaはかなり遅かったので遅い印象が強いですが…。作りは単純なので移植したい人はどうぞ。ソースもついてます。
- ウィンドウが邪魔なんだけど?
- NicoCacheGUIを使うとタスクトレイに入れることができます。もしくは起動バッチファイルを書き換えて「java」のところを「start javaw」にすればウィンドウは出なくなりますが、何も出ないので動いているのかどうかよく分からなくなります。もしくは任意のウィンドウを非表示にしたり最小化したりタスクトレイに入れたりするツールがあるようなのでそれで消してください。
- Windows専用なの?
- 起動を簡単にするためにバッチファイルを付けていますが、バッチファイルでは特別なことは何もしていません。Windows以外でも直接NicoCache.jarを起動すれば動くと思います。
NicoCache系ツール
- nicolist.netさんによる改造版のNicoCache_nlが公開されています。様々な便利な機能が追加されています。
- わんこさんによる改造版のNicoCache_pが公開されています。こちらも便利な機能が追加されています。
- 「"HB Software Factory"の跡地に出来た何か」でNicoCacheGUIが公開されています。NicoCacheや改造版をタスクトレイに入れたりすることができます。
無印と派生版の設定の違いはNicoCache_nlのサイトの本家と各派生版の設定が分かりやすくまとまっています。これを見れば機能の違いも大体分かります。
関連する技術・情報
今後の方針
NicoCache(無印)では、中核部分の安定化と、基本的にニコニコのサーバの負荷が増えないか減る機能を開発or派生版から逆輸入していこうと思います。
TODOリスト。実現は無保証、順不同。
リジューム対応→0.21で対応
大きなファイルのアップロードができないのを直す→0.20で対応
Keep-Alive対応(アップロードも含めて全部CONNECTの処理のところのようにする予定)→0.20で対応。サーバ側はHttpURLConnectionに任せてしまった。
- キャッシュの自動振り分け
- キャッシュの自動削除(人によっていろいろな使い方がありそうなので何を削除対象にするかの仕様を決めるのが難しい)
- 派生版の開発がもっと簡単になる内部設計にする→0.20から順次。
- キャッシュ管理関係がそろそろ拡張に耐えられなくなってきているので整理する。
NicoCache(無印)でやるかどうかは考え中の機能。
タイトルが長い動画の末尾が「...」になるのを防止(watchよりthumbへのアクセスの方がニコニコにちょっぴり優しい気がするので)→0.30でwatchを見たときに記憶するようにしたので解決。
- キャッシュファイル名のルールをカスタマイズ可能にする(キャッシュ以外のファイルはなるべく作りたくないので、ファイル名に動画IDの情報を記録しているが、互換性を保って、かつIDとファイル名が1:1対応する制約を満たして、読みにくくなるエスケープ表現を最低限にしたままカスタマイズできるいい仕様が思いつかない)
- 裏でDL(DL負荷が増えてしまうので)
- HTMLを変更・生成する系統の機能(既にnlでいい感じのができているので)
- FTPプロキシ(SSLと同じような問題だけど必要な人が少なそう)
- コンソールアプリをやめる(GUIを持つ方がとっつきやすいし内部の終了処理とかもきれいにできるけど、常駐するものなので使用リソースが少ないのが好きな人もいそうだし動作ログがリアルタイムに確認できる機能がコーディングなしで得られるのも個人的には魅力。)
NicoCache(無印)ではやらない機能。
- 多重DL
- 削除された動画を強制再生させる機能
- 自動巡回