せっかくだから俺はこの npapi の話をするぜ

36
せっかくだから俺はこの NPAPI の話をするぜ Naruto TAKAHASHI([email protected] ) Gecko Study meeting 2013/09/30

Upload: naruto-takahashi

Post on 11-Nov-2014

4.376 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: せっかくだから俺はこの NPAPI の話をするぜ

せっかくだから俺はこのNPAPI の話をするぜ

Naruto TAKAHASHI([email protected])

Gecko Study meeting

2013/09/30

Page 2: せっかくだから俺はこの NPAPI の話をするぜ

はじめに

• “Gecko” の勉強会ですが、ソースを見る時間なかった

ので NPAPI の葬式も兼ねてせっかくだから NPAPI の

状況をまとめしたいと思います。

• Android, B2G, Rust, Servo の話はないよ!

Page 3: せっかくだから俺はこの NPAPI の話をするぜ

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

Page 4: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 歴

• Android 向け NFC NPAPI Plugin の開発

• 鬼門だらけの開発

• Android + NPAPI

• JNI で C のプラグインから NFC サービスを触る

• Javascript, C++, JAVA のジェットストリームア

タック

Page 5: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 歴(cont)

•大変な作業な割に情報がないので勉強会で発表

• http://www.slideshare.net/TNaruto/android-

web-kit

•国内外より NPAPI に関する質問が複数ありました

Page 6: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI とは

• 複雑で面倒なプラグインシステム。

• 面倒なのに使われ続けているのは代替がないから。

• プラグイン実装例。

• Flash

• Unity

• Silverlight

Page 7: せっかくだから俺はこの NPAPI の話をするぜ

各プラットフォームのNPAPI対応状況

Page 8: せっかくだから俺はこの NPAPI の話をするぜ

Google Chrome

• NPAPI に限界を感じ、より使いやすいフレームワークを求めてPPAPI を作成。

• 来年から NPAPI を排除する方向へ

• 複雑だし、セキュリティ面でも良いとは言えないため。

• 20世紀のソフトウェアと位置づけ

• 利用者の多い Flash は PPAPI へ移植済み

Page 9: せっかくだから俺はこの NPAPI の話をするぜ

Firefox

• NPAPI のサポートを続ける。

• PPAPI の開発には参加せず。

• NPAPI を Gecko Plugin API を呼ぶぐらいに愛でてる

• でも 次の Firefox からは標準設定でプラグインを自動ロードをしなくなる。('A`)

• NPAPI プラグインがロードできる環境で有り続ける

Page 10: せっかくだから俺はこの NPAPI の話をするぜ

Internet Explore

•見られるんじゃない?

•よくしらないです。

Page 11: せっかくだから俺はこの NPAPI の話をするぜ

Opera

•見られると思うよ。

•すみません、ほんとしりません

Page 12: せっかくだから俺はこの NPAPI の話をするぜ

iOS

• Flash はアレなんで HTML5 をプッシュ

• 2009年か2010年あたりから

• Flash 排除

•それは NPAPI も排除を意味する。

Page 13: せっかくだから俺はこの NPAPI の話をするぜ

Android WebKit(Blink)

•NPAPI のロード可能

•オフィシャルにサンプルも用意。

•ただし、Android を弄れないとロードできない。

• Adobe が Android 4.2 以降 Flash パッケージを提供

しなくなった。

Page 14: せっかくだから俺はこの NPAPI の話をするぜ

Android WebKit(Blink)(Cont)

• 近い未来、Webkit から Blink へ置き換えられたら?

• Chrome が NPAPI 排除の方針

• Blink は Chrome のためのレンダリングエンジン

• Android で Blink が採用されたら NPAPI がブロックされる?

• 扱いづらい上に今後 Android でも利用できるか不透明

Page 15: せっかくだから俺はこの NPAPI の話をするぜ

Android Firefox

• Android Webkit のプラグインロード部分をパクっt…尊

重しそのままの形でインスパイアして NPAPI ロードのオ

ポチュニティを実現。

• Android Firefox 上で NPAPI が使える?

• Android で NPAPI が使いたいときは Firefox を使えば

良い?

Page 16: せっかくだから俺はこの NPAPI の話をするぜ

Firefox OS

• "Webがプラットフォーム"

• HTML, Javascript, CSS

• NPAPI

• ネイティブじゃね?

• 仮想敵じゃね?

• ソース見てないけどそんなに積極的じゃなさそう

Page 17: せっかくだから俺はこの NPAPI の話をするぜ

•モバイルプラットフォームは NPAPI プラグインの利

用を収束する傾向にある。

•ところが。。

Page 18: せっかくだから俺はこの NPAPI の話をするぜ

Tizen

• Tizen 2.0 からサポート始めたよ!(バーン)

• 2012年に突然の NPAPI サポート宣言

• プラグインのサンプルもオフィシャルに出しているよ

• ただしバイナリのみ。

• S@msung の人から質問メール来るレベル

• いや、あのね…。

• 他は NPAPI を捨てる方針なんだからさ…。

Page 19: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 状況のまとめ

• PCブラウザではフラグメント発生中。

• NPAPI

• PPAPI

• モバイルプラットフォームではほとんど扱えず。

• NPAPI を使いたいときは Firefox ブラウザを使いましょう。

Page 20: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 実装

Page 21: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI SDK

• https://code.google.com/p/npapi-sdk

•Win, MacOS, Linux 対応

Page 22: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI Scripting

• Scripting(DOM への API の追加)の実装方法が色々あ

ります。

• LiveConnect

• XPConnect

•NPRuntime

Page 23: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI Scripting(Cont)

• NPAPI Scripting 実装方法が複数あり情報が交錯している。

• 現在のスタンダードは NPRuntime の利用。

• XPConnect は Piro さんより発表していただけます。

• 個人的には Scripting には NPRuntime 利用を強く推奨し

ています。

Page 24: せっかくだから俺はこの NPAPI の話をするぜ

NPRuntime サンプル

•簡易サンプルの作成

• https://github.com/Naruto/npruntime-sample

• Linux only

Page 25: せっかくだから俺はこの NPAPI の話をするぜ

NPRuntime サンプル ビルド

•ビルド&インストール

•make

• sudo cp libtestplugin.so /usr/lib/mozilla/plugins/

Page 26: せっかくだから俺はこの NPAPI の話をするぜ

プラグインロードを確認

• about:plugins へアクセスする

Page 27: せっかくだから俺はこの NPAPI の話をするぜ

Scripting API の実行を確認

• xdp-open ./test_plugin.html

Page 28: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 今後の話どういう使い方をしていく?

Page 29: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 活用例

• ケース: Web アプリケーションから PC で動作している PluseAudio を触って、出力先デバイスをスピーカーから Bluetooth ヘッドセットへ切り替えたい。

• 最初のアンサー: クライアント上で Web サーバを立ち上げて、php スクリプト経由で PulseAuido を触れば良いのでは?

• サーバー立ち上げも面倒だし、php からシステムのリソースを触るのはセキュリティの懸念事項ふえるよね。

• 正直、面倒い。

Page 30: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 活用例(cont)

•次のアンサー: PulseAudio を触る NPAPI プラグイン

を作れば良いのでは?

•インストール簡単。

•セキュリティの懸念する範囲が狭い。

Page 31: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI 今後

• プラットフォームとしての利用

• HTML5 が同等かそれ以上のことが出来るようになるまで使われる。

• Web API のラピッドプロトタイピング向け

• レンダリングエンジンの仕組みを知らなくても API 追加可能

• API の追加にはプラグインのコンパイルのみ

• Ad-hoc な Web API 追加方法としても使える

Page 32: せっかくだから俺はこの NPAPI の話をするぜ

まとめ

Page 33: せっかくだから俺はこの NPAPI の話をするぜ

NPAPI は死んだ、何故だ!

•坊やd...

•枯れたのと技術が進歩して一部を代替できるように

なった。

•全部代替できたら今頃は Flash は無くなってるはず

Page 34: せっかくだから俺はこの NPAPI の話をするぜ

ゾンビだからさ

•NPAPI は今後も残り続けると予想。

•今のところまだ、完全に代替できる仕組みがない。

•NPAPI 上のプラットフォームは使い続けるしかない。

• Ad-hoc な API 追加方法としての活用もある。

Page 35: せっかくだから俺はこの NPAPI の話をするぜ

総括

•終わったと放棄するより、NPAPI で何が出来るかを

知っておいた方が有益です。

•でも、個人的にはブラウザで何でも出来る時代が来て

欲しいです。

Page 36: せっかくだから俺はこの NPAPI の話をするぜ

ご清聴ありがとうございました。