2015/08/07

LinuxのFirefoxやChromium等で最新のFlash Playerを使う(主にfreshplayerplugin)

GNU/Linux向けのFlash Playerは、従来のNPAPI版のプラグインの提供がバージョン11.2(2012年3月下旬に公開)で最後となり、セキュリティ修正のみがその5年後の2017年3月まで提供されることになっているが、バージョン11.3以上は新しいPPAPI版のプラグインがGoogle Chromeに同梱される形で同ブラウザとともに公開されているのみで、他のブラウザで使える形式での配布も単体での配布もされていない。

(2017/3/29)その後NPAPI版の開発は再開され、更に “すべてのバージョン” の配布ページからダウンロードすることでPPAPI版も単独で入手可能となっている。Firefoxでは多数のNPAPIプラグインがサポート終了されて使用できなくなったが、Flashプラグインは引き続き使用できる。

本記事ではGNU/Linux上でGoogle Chrome以外のWebブラウザからPPAPI版のFlash Playerを用いるための方法についてを扱う。

  1. Chromiumブラウザからの使用
  2. Mozilla Firefoxなどのブラウザからの使用
    1. freshplayerplugin (プラグインアダプタ/ラッパー)
      1. freshplayerpluginの概要
      2. Flashプラグインの配置
      3. freshplayerpluginのインストール
      4. freshplayerpluginの動作状況・問題点
    2. Pipelight
      1. Pipelightの概要
      2. Pipelightのインストール
      3. Flashプラグインを有効にする
      4. Pipelightの動作状況・問題点

Chromiumブラウザからの使用

自由なソフトウェアのChromiumブラウザは内部的にはGoogle Chromeに非常に近く[1]、PPAPI版の最新のFlash Playerを動かすことができる作りになっている。そのため、Google Chromeの配布ファイルからプラグイン[2]を取り出して動かすことができる。

Debian/Ubuntuでは “pepperflashplugin-nonfree” パッケージをインストールすることで自動的にGoogle Chromeがダウンロードされてプラグインのみが/usr/lib/pepperflashplugin-nonfree/以下に配置される。プラグインの後にChromiumのパッケージをインストールした場合は “sudo update-pepperflashplugin-nonfree --install” を実行すると動作するようになる。

Mozilla Firefoxなどのブラウザからの使用

FirefoxなどのWebブラウザはPPAPIに対応していない。

Firefoxを同APIに対応させるという案自体はこれまでに出ているが、色々な理由で対応予定はない。[3]

Firefoxなどでは2017年3月まではNPAPI版のFlash Player 11.2を安全に使うことができるが、その後はそのままではFlash Playerが安全には使えなくなる。

以下、GNU/Linux上のFirefoxなどのブラウザで最新のFlash Playerを用いるための2つの方法についてを扱う。

freshplayerplugin (プラグインアダプタ/ラッパー)

freshplayerpluginの概要

freshplayerpluginGoogle Chrome付属のFlashプラグインを従来のNPAPI対応Webブラウザでから利用するためのラッパー。基本的にMITライセンス(外部プロジェクト由来のコードは除く)。

FirefoxにおけるPPAPI対応の実装を行うのは同アプリケーションの内部についての理解が必須な上、もしうまく動作するものができたとしてもコードの取り込みに向けた活動も行う必要があるが、一方で、既存のNPAPIプラグインという形で動作する “PPAPIプラグインを用いるラッパー” という形の実装を作る場合はこの中身の部分のみに注力していればよいため、この “freshplayerplugin” はこのラッパー形式のプラグインとして開発されている。

Flashプラグインの配置

前提として、Google Chromeがインストールされているか、同ブラウザに含まれるFlashプラグインのファイル群がディストリのパッケージ用のディレクトリなどに配置されている必要がある。

(2017/3/29)単独でPPAPI版がダウンロードできるようになっているため、Google Chromeはなくてもよい。また、同ブラウザのPPAPI版プラグインについては直接付属せずに一般ユーザのディレクトリに自動的に最新バージョンがダウンロードされる形になっている。

バージョン0.3.1時点での標準の探索ディレクトリは下のダブルクォート内の項目のいずれかとなる。

[引用]freshplayerplugin-0.3.1/src/config_pepperflash.c より
const char *pepperflash_path_list[] = {
    "/opt/google/chrome/PepperFlash",           // Chrome
    "/opt/google/chrome-beta/PepperFlash",      // Chrome beta
    "/opt/google/chrome-unstable/PepperFlash",  // Chrome unstable
    "/usr/lib/pepperflashplugin-nonfree",       // pepperflashplugin-nonfree (Debian)
    "/usr/lib/PepperFlash",                     // chromium-pepperflash-plugin (Slackware)
    "/usr/lib64/PepperFlash",                   // chromium-pepperflash-plugin (Slackware)
    "/usr/lib/chromium-browser/PepperFlash",    // chrome-binary-plugins (Gentoo/Sabayon)
    "/usr/lib64/chromium-browser/PepperFlash",  // chrome-binary-plugins (Gentoo/Sabayon)
    "/usr/lib/adobe-flashplugin",               // adobe-flashplugin (Ubuntu)
    "/usr/lib/chromium/PepperFlash",            // chromium-pepper-flash (Old Build) (CentOS/Read Hat/Fedora)
    "/usr/lib64/chromium/PepperFlash",          // chromium-pepper-flash (Old Build) (CentOS/Read Hat/Fedora)
    "/opt/chromium/PepperFlash",                // chromium-pepper-flash (New Build) (CentOS/Read Hat/Fedora)
    "/usr/lib/pepflashplugin-installer",        // pepflashplugin-installer (Ubuntu)
    NULL,
};

これら以外の場所に配置したプラグインを参照したい場合は

  • 環境変数XDG_CONFIG_HOMEが定義済みの場合: ${XDG_CONFIG_HOME}/freshwrapper.conf
  • 同環境変数が未定義の場合: [ホームディレクトリ]/.config/freshwrapper.conf

[一部]ファイル名:freshwrapper.conf
pepperflash_path = "/path/to/libpepflashplayer.so"

のような設定を記述する(右辺は実際の場所に置き換える)。

freshplayerpluginのインストール

UbuntuではPPAリポジトリ “ppa:nilarimogard/webupd8” で “freshplayerplugin” という名前でパッケージが提供されている。

ソースからプラグインをビルドする場合はリリース版のダウンロードページからソースをダウンロードしてビルドする。

ビルドに必要なパッケージはプロジェクトページの “Install” に書かれており、Debian/Ubuntuでのパッケージ名も羅列されている。

[freshplayerplugin-x.y.z]$ mkdir build && cd build
[freshplayerplugin-x.y.z]$ cmake ..
[freshplayerplugin-x.y.z]$ make (オプション...)

ビルドが正常に完了するとlibfreshwrapper-flashplayer.soが作られる。

他のNPAPIプラグインと同様、一般ユーザの場合はこのファイルを[ホームディレクトリ]/.mozilla/plugins/以下に、全てのユーザに対して有効にするには管理者権限で/usr/lib/mozilla/plugins/以下に配置すればよい。

(2015/10/4)プラグインのファイル名はバージョン0.3.3からlibfreshwrapper-flashplayer.soに変更された。

freshplayerpluginの動作状況・問題点

バージョン0.3.1時点では動作はかなり良好で、niconicoで日本語のコメントを入力して送信することもできる(uimで確認)。同サイトで動画内コメントの文字列の右端が欠ける現象があるものの、他のサイトを含めて全体的には安定してあまり問題もなく動作している印象がある。

niconicoについては当面Google Chrome系Webブラウザで閲覧することを推奨する。

Pipelight

Pipelightの概要

Pipelightは改変版のWine[4]を用いてWindows用プラグインをGNU/Linux版のNPAPI対応Webブラウザ[5]から用いるためのツール。

Microsoft SilverlightがDRM含めて使える他、Flash Playerにも対応しており、プラグインのインストール自体も簡単に行える。

Pipelightのインストール

公式サイトの “Installation” にディストリごとの導入についてが書かれている。

UbuntuではPPAリポジトリ “ppa:pipelight/stable” で “pipelight-multi” という名前でパッケージが提供されている。

Flashプラグインを有効にする

下はプラグインを有効にするまでの作業例。

(パッケージ情報の取得・インストール操作の前に必ず実行)
$ sudo pipelight-plugin --update

(Flashプラグインを有効にする)
$ pipelight-plugin --enable flash

The following modules require a license confirmation before they can be enabled:

[*] Adobe Flash Player
        By continuing the installation you agree that you've read and accepted the
        ADOBE Personal Computer Software License Agreement:
        http:// ... /Flash%20Player_11.0.pdf

        To find out more click here:
        http://get.adobe.com/flashplayer

Do you accept the 1 license(s) above? [Y/N] y
Plugin flash is now enabled

(一般ユーザ権限で有効なプラグインを一覧)
$ pipelight-plugin --list-enabled
flash

プラグインを無効化するには “pipelight-plugin --disable flash” を実行する。

Pipelightの動作状況・問題点

基本的には動作自体はするものの、一部日本語が文字化けしたりプラグインがうまく有効にならなかったりすることがあり、Flash目的でこのソフトウェアを使用するのは個人的にはあまりおすすめできない。

使用したバージョン:
  • Chromium 43.0.2357.130
  • Mozilla Firefox 39.0.3
  • freshplayerplugin 0.3.1
  • Pipelight 0.2.8.1
  • Wine Staging 1.7.48
  • pepperflashplugin-nonfree 1.7ubuntu1
[1]: Google Chromeは大部分がChromiumに基づいている
[2]: libpepflashplayer.somanifest.jsonから成る
[3]: PPAPIの仕様や文書が十分ではない上、Chromiumの実装はGoogle Chrome系ブラウザのレンダリングエンジンである “Blink” と非常に密接で別のレンダリングエンジンへ応用しにくい、などの記述が見られるが、後述のラッパーによって良好な動作が実現しており、今後どうなるかについては分からない
[4]: 必要な改変の一部は公式版への取り込みが進んでいるが、まだ全てではないため、改変版が必要
[5]: Google Chrome系Webブラウザではバージョン35からサポートが廃止されており利用不可・また、PPAPIを用いるのは技術的制約によって将来的にも難しく、ChromiumでPPAPIを使用可能にするパッチが公開されているにとどまる・場合によってはNPAPIに対応する独自ブラウザを提供する可能性も