突然消失するかもしれないブログ

”とつきえブログ”

ARMベースのLinkStation/玄箱Proに仕事をさせよう(1)nicocache

今更説明は不要かもしれませんが、nicocacheとはJavaで書かれたニコニコ動画のキャッシュサーバです。

nicocacheを導入するメリットは、ニコニコ動画の運営者と視聴者双方にあります。

視聴者自身がnicocacheを導入することにより、一度視聴した動画はnicocacheにより動画データがキャッシュされるので、二回目以降の視聴ではnicocacheのキャッシュデータが使用されます。これにより、ニコニコ動画のトラフィック、サーバの負荷を抑えることができます。まsた、視聴者はニコニコ動画の回線やサーバの負荷状態によらず高速かつ安定して動画を視聴できるようになります。

さて、PowerPCベースのLinkStation(~HD-HGLAN), 玄箱(~KURO-BOX/HG)であれば、IBMが提供している最新のJDKが利用できたため、LinkStation、玄箱上でnicocacheを使用することができました。

一方、ARMベースのLinkstation、玄箱Proではなかなか実用的なJava実行環境がありませんでした。

ところが、Debian lenny以降では、Sun自身がオープンソース化したOpenJDKを標準で使用できるようになり、ARM版のDebianでもOpenJDKが使用できるようになりました。

そこで、OpenJDKを使用してARMベースのLinkStation/玄箱Proでnicocacheを使用する方法をご紹介します。

 

(1)LinkStation/玄箱ProをDebian lenny以降にする。

ちょっと古いので実態と合っていないところがあるかもしれませんが、以下を参考に玄箱ProをDebian lenny化します。

玄箱Proセットアップその3 « 突然消失するかもしれないブログ

自分的には、Debian lennyは安定版ということで進化がほとんど止まっていますので、Lenny化後、Squeeze化することをオススメします。

玄箱PROをDebian squeezeにバージョンアップ « 突然消失するかもしれないブログ

 

(2)OpenJDKをインストールする。

OpenJDKのインストールはとても簡単。apt-get installするだけです。

$ su
# apt-get install openjdk-6-jdk

自分の場合、以前、jamvmというJavaの実行環境をインストールしていたため、/etc/alternative/javaのリンクが/usr/bin/jamvmになったままだったため、正常にjavaコマンドを実行することができませんでした。

そこで、以下のように手動でシンボリックリンクを張り直します。

# cd /etc/alternative
# rm java java.1.gz
# ln –s /usr/lib/jvm/java-6-openjdk/bin/java .
# ln –s /usr/lib/jvm/java-6-openjdk/man/man1/java.1.gz .

 

(3)nicocache_pをダウンロードする。

nicocacheのオリジナルは、ASR’s Room NicoCacheですが、複数のPCからnicocacheを使用することができませんので、nicocacheの派生版のNicoCache_p – パンヤポータルのnicocache_pを使用します。

nicocacheの派生版にはnicocache_nlという高機能版もありますが、NicoCache_nl 秋.01 (2008/10/05)以降、バージョンアップがされていないため、ニコニコ動画サーバの仕様変更により正常にキャッシュができないため、nicocache_pを使用する必要があります。

2009/07/12現在の最新版は、NicoCache-0.39p(2009/03/25)です。

 

(4)nicocache_pを設定する。

$ wget http://homepage2.nifty.com/wanko/pangya/NicoCache-0.39p.zip

$ mkdir NicoCache-0.39p

$ cd NicoCache-0.39p

$ unzip ../NicoCache-0.39p.zip

nicocache_pのzipファイルには、unix用の起動シェルスクリプトが含まれていないため、以下のようなシェルスクリプト(NicoCache_p.sh)を作成します。

#!/bin/sh

LANG=ja_JP.UTF-8 java -jar NicoCache_p.jar

# ターミナル(コンソール)への文字出力で使用する文字コードを指定する。
# -Dfile.encoding=EUC_JP

# デバッグ出力をONにする。
# -Ddareka.debug=true

HD-HGLANでNicoCacheサーバ構築 « 突然消失するかもしれないブログにもあるとおり、

上記のシェルスクリプトでは、「LANG=ja_JP.UTF-8」により、保存されるキャッシュファイルのファイル名、ターミナル(コンソール)への文字出力がUTF-8になります。

また、「-Dfile.encoding=EUC_JP」を追加すると、ファイル名はUTF-8ですが、ターミナル(コンソール)への文字出力がEUCに変更することができます。

 

(5)config.propertyを設定する。

NicoCache_p.shを実行すると、初回起動時にnicocache_pの設定ファイルであるconfig.propertiesが自動生成されるので、以下のように変更します。

#NicoCache config file
listenPort=8080
#allowFrom=local
allowFrom=lanC ← 適宜変更する
touchCache=true
maxCacheSize=0
cacheFolder=cache ← 適宜変更する
subFolders= ← 適宜変更する

saveCache=0
title=true
proxyHost= ← 適宜変更する
proxyPort= ← 適宜変更する

allowFrom=lanCとすることで、192.168.*.*のPCからアクセスできるようになります。

# local = 自PC(127.0.0.1 , localhost)

# all = 全IP

# lanA = クラスAプライベートIP(10.*.*.*)

# lanB = クラスBプライベートIP(172.16.*.* – 172.31.*.*)

# lanC = クラスCプライベートIP(192.168.*.*)

# lan = lanCと同じ

cacheFolderでメインのキャッシュフォルダーが自動作成されますが、都合に合わせて適宜変更します。

また、subFoldersで、変更はされませんが読み込みのみのキャッシュフォルダーを「&」区切りで複数指定することもできるので、お気に入りのキャッシュデータはこちらのフォルダーに手動で移していくと良いと思います。

proxyHost, proxyPortで、上位のプロキシーサーバを指定することもできます。例えば、玄箱Proでsquidを実行していたら、そちらを指定すると更にキャッシュ効果が高まるかもしれません。

 

最後に感想

これで念願の玄箱Proでnicocacheが使用できるようになったわけですが、やはりARM9は非力なせいか、PowerPCベースのLinkStation/玄箱に比べてニコニコ動画で動画を視聴しようとすると若干つっかかる感じが否めません。

まぁ、快適さと省電力はトレードオフなので仕方ないですかね。

それと、ニコニコ動画のエコノミーモード(低画質モード)についてですが、

エコノミーモードとは (エコノミーモードとは) – ニコニコ大百科によると、

2009年2月26日より、午後6時~午前2時の間と土・日・祝の昼12時からなるようになった。

平日なら午前2時から午後6時、土・日・祝日なら午前2時から昼12時までにニコニコ動画にアクセスすれば、エコノミーモードを回避できる可能性が高いですので、その点に注意すると良いかもしれません。(エコノミー画質ばかりキャッシュしても悲しいので・・・)

広告

ARMベースのLinkStation/玄箱Proに仕事をさせよう(1)nicocache」への1件のフィードバック

  1. androidzaurus 7月 17, 2009 8:51 am

    なるほー。Beagleboardでやってみたいな。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。