せっかくだから俺はこの npapi の話をするぜ
DESCRIPTION
TRANSCRIPT
はじめに
• “Gecko” の勉強会ですが、ソースを見る時間なかった
ので NPAPI の葬式も兼ねてせっかくだから NPAPI の
状況をまとめしたいと思います。
• Android, B2G, Rust, Servo の話はないよ!
Who’s Guy?
Naruto TAKAHASHI(@TNaruto)
• Mail: [email protected]
• Blog: http://eflmemo.hatenablog.com/
• Company: Turbo Systems Co, Ltd.
Interesting Keyboards
• EFL(Enlightenment Foundation Libraries)
• Tizen
• WebKit
NPAPI 歴
• Android 向け NFC NPAPI Plugin の開発
• 鬼門だらけの開発
• Android + NPAPI
• JNI で C のプラグインから NFC サービスを触る
• Javascript, C++, JAVA のジェットストリームア
タック
NPAPI 歴(cont)
•大変な作業な割に情報がないので勉強会で発表
• http://www.slideshare.net/TNaruto/android-
web-kit
•国内外より NPAPI に関する質問が複数ありました
NPAPI とは
• 複雑で面倒なプラグインシステム。
• 面倒なのに使われ続けているのは代替がないから。
• プラグイン実装例。
• Flash
• Unity
• Silverlight
各プラットフォームのNPAPI対応状況
Google Chrome
• NPAPI に限界を感じ、より使いやすいフレームワークを求めてPPAPI を作成。
• 来年から NPAPI を排除する方向へ
• 複雑だし、セキュリティ面でも良いとは言えないため。
• 20世紀のソフトウェアと位置づけ
• 利用者の多い Flash は PPAPI へ移植済み
Firefox
• NPAPI のサポートを続ける。
• PPAPI の開発には参加せず。
• NPAPI を Gecko Plugin API を呼ぶぐらいに愛でてる
• でも 次の Firefox からは標準設定でプラグインを自動ロードをしなくなる。('A`)
• NPAPI プラグインがロードできる環境で有り続ける
Internet Explore
•見られるんじゃない?
•よくしらないです。
Opera
•見られると思うよ。
•すみません、ほんとしりません
iOS
• Flash はアレなんで HTML5 をプッシュ
• 2009年か2010年あたりから
• Flash 排除
•それは NPAPI も排除を意味する。
Android WebKit(Blink)
•NPAPI のロード可能
•オフィシャルにサンプルも用意。
•ただし、Android を弄れないとロードできない。
• Adobe が Android 4.2 以降 Flash パッケージを提供
しなくなった。
Android WebKit(Blink)(Cont)
• 近い未来、Webkit から Blink へ置き換えられたら?
• Chrome が NPAPI 排除の方針
• Blink は Chrome のためのレンダリングエンジン
• Android で Blink が採用されたら NPAPI がブロックされる?
• 扱いづらい上に今後 Android でも利用できるか不透明
Android Firefox
• Android Webkit のプラグインロード部分をパクっt…尊
重しそのままの形でインスパイアして NPAPI ロードのオ
ポチュニティを実現。
• Android Firefox 上で NPAPI が使える?
• Android で NPAPI が使いたいときは Firefox を使えば
良い?
Firefox OS
• "Webがプラットフォーム"
• HTML, Javascript, CSS
• NPAPI
• ネイティブじゃね?
• 仮想敵じゃね?
• ソース見てないけどそんなに積極的じゃなさそう
•モバイルプラットフォームは NPAPI プラグインの利
用を収束する傾向にある。
•ところが。。
Tizen
• Tizen 2.0 からサポート始めたよ!(バーン)
• 2012年に突然の NPAPI サポート宣言
• プラグインのサンプルもオフィシャルに出しているよ
• ただしバイナリのみ。
• S@msung の人から質問メール来るレベル
• いや、あのね…。
• 他は NPAPI を捨てる方針なんだからさ…。
NPAPI 状況のまとめ
• PCブラウザではフラグメント発生中。
• NPAPI
• PPAPI
• モバイルプラットフォームではほとんど扱えず。
• NPAPI を使いたいときは Firefox ブラウザを使いましょう。
NPAPI 実装
NPAPI SDK
• https://code.google.com/p/npapi-sdk
•Win, MacOS, Linux 対応
NPAPI Scripting
• Scripting(DOM への API の追加)の実装方法が色々あ
ります。
• LiveConnect
• XPConnect
•NPRuntime
NPAPI Scripting(Cont)
• NPAPI Scripting 実装方法が複数あり情報が交錯している。
• 現在のスタンダードは NPRuntime の利用。
• XPConnect は Piro さんより発表していただけます。
• 個人的には Scripting には NPRuntime 利用を強く推奨し
ています。
NPRuntime サンプル
•簡易サンプルの作成
• https://github.com/Naruto/npruntime-sample
• Linux only
NPRuntime サンプル ビルド
•ビルド&インストール
•make
• sudo cp libtestplugin.so /usr/lib/mozilla/plugins/
プラグインロードを確認
• about:plugins へアクセスする
Scripting API の実行を確認
• xdp-open ./test_plugin.html
NPAPI 今後の話どういう使い方をしていく?
NPAPI 活用例
• ケース: Web アプリケーションから PC で動作している PluseAudio を触って、出力先デバイスをスピーカーから Bluetooth ヘッドセットへ切り替えたい。
• 最初のアンサー: クライアント上で Web サーバを立ち上げて、php スクリプト経由で PulseAuido を触れば良いのでは?
• サーバー立ち上げも面倒だし、php からシステムのリソースを触るのはセキュリティの懸念事項ふえるよね。
• 正直、面倒い。
NPAPI 活用例(cont)
•次のアンサー: PulseAudio を触る NPAPI プラグイン
を作れば良いのでは?
•インストール簡単。
•セキュリティの懸念する範囲が狭い。
NPAPI 今後
• プラットフォームとしての利用
• HTML5 が同等かそれ以上のことが出来るようになるまで使われる。
• Web API のラピッドプロトタイピング向け
• レンダリングエンジンの仕組みを知らなくても API 追加可能
• API の追加にはプラグインのコンパイルのみ
• Ad-hoc な Web API 追加方法としても使える
まとめ
NPAPI は死んだ、何故だ!
•坊やd...
•枯れたのと技術が進歩して一部を代替できるように
なった。
•全部代替できたら今頃は Flash は無くなってるはず
ゾンビだからさ
•NPAPI は今後も残り続けると予想。
•今のところまだ、完全に代替できる仕組みがない。
•NPAPI 上のプラットフォームは使い続けるしかない。
• Ad-hoc な API 追加方法としての活用もある。
総括
•終わったと放棄するより、NPAPI で何が出来るかを
知っておいた方が有益です。
•でも、個人的にはブラウザで何でも出来る時代が来て
欲しいです。
ご清聴ありがとうございました。