Linux と Iceweasel/FireFox で艦これを遊べるようにしてみた

2014/11/08追記:2014/11/08早朝、または 2014/11/07夜から、この記事の方法では艦これに接続出来なくなりました。Linux版Google Chrome を使って接続するのをお勧めします。chromium と pepperflash-nonfree の組み合わせで艦これに接続出来るかどうかは未検証です。

2014/10/16追記:2014/10/14 に Flash Player の更新があり、Linux版Google Chrome安定版同梱の pepperflash が 15.0.0.152 から 15.0.0.189 になりました。15.0.0.189 では glibc のバージョンが 2.14 より前のものだとクラッシュするバグが修正されているので、わざわざ Google Chrome beta for Linux の debパッケージをダウンロードしなくても、Google Chrome for Linux安定版の debパッケージをダウンロードしてインストールすればちゃんと動く pepperflash を入手出来ます。pepperflash の入手方法をそのように改めました。

2014/10/12追記:この記事の最初のバージョンを書いたその日のうちに Flash Player の更新があり、Linux版Google Chrome安定版同梱の pepperflash が 14.0.0.177 から 15.0.0.152 になりました。しかし、このバージョンの pepperflash は glibc のバージョンが 2.14 より前のものだとクラッシュしてしまいます。そこで、Google Chrome beta 39 for linux amd64 が公開されたのを機に、そこから pepperflash 15.0.0.189 を持って来る方法に改めました。

2014/08/29 のメンテナンス後、Linux と FireFox(または Iceweasel)の組み合わせでは艦これに接続出来なくなってしまいました。これは Adobe で配布されている Linux版Flash Player の最終版が 11.2 で、セキュリティアップデート以外での更新が停止して久しい事が原因のようです。そこでここに、freshplayerplugin というラッパーを通して Linux版Google Chrome向けの最新版の pepperflash を使って艦これに接続する方法のメモを残しておきます。ざっくり言うと freshplayerplugin を使って、FireFox や Iceweasel に対して PPAPI の Flash Player を従来の NPAPI の Flash Player のように見せかけてやりとりさせて、艦これを遊べるようにしようという事です。

Iceweasel上での艦これプレイ画像

pepperflash の配置

まず、Google Chrome をダウンロードして入手します。

/home/username/debian/ といった適当なディレクトリを作って、ダウンロードして来た google-chrome-stable_current_amd64.deb を放り込み、apt-ftparchive を使って debパッケージの aptリポジトリを作るを参考にしてローカルな aptリポジトリを作成します。その後、/etc/apt/sources.list に

file:///home/username/debian ./

を追加して、

$ sudo apt-get update
$ sudo apt-get install google-chrome-stable

これで google-chrome-stable がインストールされます。このまま Google Chrome を使っても良いのですけども、当初の目的通り /opt/google/chrome/PepperFlash/ から libpepflashplayer.so と manifest.json を抜き取ります。

$ sudo mv /opt/google/chrome/PepperFlash/libpepflashplayer.so ./
$ sudo mv /opt/google/chrome/PepperFlash/manifest.json ./

その後、

$ sudo apt-get purge google-chrome-stable
$ sudo apt-get autoremove

しておくと、必要ないパッケージをシステムから取り除いておけます。

抜き取った libpepflashplayer.so と manifest.json は freshplayerplugin がきちんと見つけられるように /usr/lib/pepperflashplugin-nonfree/ というディレクトリを作って、その中に置いておきましょう。

$ sudo mkdir -p /usr/lib/pepperflashplugin-nonfree/
$ sudo mv libpepflashplayer.so /usr/lib/pepperflashplugin-nonfree/
$ sudo mv manifest.json /usr/lib/pepperflashplugin-nonfree/

freshplayerplugin のビルドと配置(書きかけ)

freshplayerplugin の README.md を読む

Freshplayerpluginの使い方に日本語解説あり

ブラウザのユーザーエージェント文字列を変更する

Iceweasel(や FireFox)の素のままのユーザーエージェント文字列だと艦これに接続出来ないので、FireFox のプラグイン、User Agent Switcher を使って Chrome 38 のユーザーエージェント文字列を送り出します。

Chrome 38 の UA文字列インポート用xmlファイルの例はこんな感じです。

importua.xml

<useragentswitcher>
  <useragent description="Chrome 38.0.2125.104" useragent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" appcodename="" appname="" appversion="" platform="" vendor="" vendorsub=""/>
</useragentswitcher>

User Agent Switcher の [Default User Agent] -> [Edit User Agents] -> [impot] で、xmlファイルをインポートします。

用途に応じて Flash Player を切り替える

艦これは PPAPI な 15.0.0.189 でないと遊べず、ニコ生は NPAPI な 11.2.202.411 でないと観られません。用途に応じて切り替えて使えると便利なのですけれども Iceweasel ではプラグインに複数の Flash を入れていると有効化や無効化が上手く機能しないようです。そこで、libflashplayer.so や libfreshwrapper-pepperflash.so の実体を別のディレクトリ(例えば ~/lib/flash_player/NPAPI/ とか)に置いて ~/.mozilla/plugins/ にはシンボリックリンクを作り、シンボリックリンクの作成や削除を行う事で Flash Player の 15.0.0.189 と 11.2.202.411 を切り替えます。シンボリックリンクを付け替えた後で Iceweasel を再起動させる必要があります。

swflash.pl

#!/usr/bin/env perl

use strict;
use warnings;
use autodie;
use Getopt::Std;
use Path::Class;
use File::HomeDir;

my $flashdir = 'lib/flash_player/NPAPI/'; # 実体を置いてあるディレクトリ例

my $homedir    = File::HomeDir->my_home;
my $linkdir    = dir( $homedir, '.mozilla/plugins/' );
my $substflash = file( $homedir, $flashdir, 'libflashplayer.so' );
my $substfresh = file( $homedir, $flashdir, 'libfreshwrapper-pepperflash.so' );
my $linkflash  = file( $linkdir, 'libflashplayer.so' );
my $linkfresh  = file( $linkdir, 'libfreshwrapper-pepperflash.so' );

my %opts;
getopts('np', \%opts);

if ( $opts{ n } ) {
    symlink $substflash, $linkflash unless ( -f $linkflash );
    unlink $linkfresh if ( -f $linkfresh );
}

if ( $opts{ p } ) {
    symlink $substfresh, $linkfresh unless ( -f $linkfresh );
    unlink $linkflash if ( -f $linkflash );
}

__END__
$ sudo apt-get install libpath-class-perl libfile-homedir-perl

と、依存するパッケージを入れた後で、swflash.pl に実行権限を与え実行パスを通した上で使うと、お手軽に Flash を切り替える事が出来ます。

オプション n で NPAPI な 11.2.202.411、

$ swflash.pl -n

オプション p で PPAPI な 15.0.0.189 に切り替わります。

$ swflash.pl -p

動作確認環境 : Debian GNU/Linux 7.6 wheezy amd64

戻る


Last updated : 2014/10/16
Author : 犬山ぽち丸 / INUYAMA Pochimaru / Pochimaru Inuyama
E-mail : pochi@hoshinoumi.net
Key ID : 4A1B5E85
Key fingerprint : 4605 4D40 6154 20C1 5592 3E54 5A37 FEE9 4A1B 5E85

正当な XHTML 1.1 です 正当な CSS です