昨日と今日で色々と調べたので、その辺りメモっておきます。
そもそも [Electron や NW.js とは何か]
基本的には、
の両者とも、
既存の Web 技術を使って Cross-Platform な Desktop App が作れる
という類いの代物。
なので、基本的には 、 プログラミング言語 としては Javascript 系言語を、インターフェース の構築には Web 技術 + 各種プラットフォームの固有な要素を、それぞれ使う、というイメージになる。
ただし、 Electron と NW.js はそれぞれ方向性が微妙に違っていて、
- Electron node.js に WebView + α を加えたモノ
- NW.js WebView に node.js + α を加えたモノ
という違いが有るっぽい。
Electron と NW.js でのセキュリティの違い
これも Electron だろうと NW.js でも基本的には、
が必要になる、という点では同じなんだけれども、
- Untrusted な Remote Contents を表示する
という要件が有る場合、
Electron より NW.js を選んだ方が良いのではないか
という印象がある。
と言うのも、
- Electron は Desktop UI として WebView を使う
という方向性のため、
Electron の UI 上で Untrusted な Remote Contents を表示する
というのは指向されておらず、また、実際 2016 年 6 月現在の Electron では、
- Untrusted な Remote Contents を確実に安全に表示する方法
は、
Electron 本体に手を入れる他ない
というのが、今のところの現実 ( 2016 年現在)みたいらしく、現に Electron ベースの ブラウザである Brave では、Electron 本体のコードにパッチを当てて、 Brave の ブラウザを実装しているっぽい。
その反面、 NW.js では NW.js での Node Integration を無効に出来たり、あるいは、 Chrome Extensions の API がそのまま生えてするらしいので、この辺りの事から言っても、
Electron は node.js が主体となって WebView がくっ付いてる
NW.js は WebView が主体となって node.js Integration がくっ付いている
と言えるのではないかと思います。
Electron と NW.js のどちらを使えば良いか
基本的には、
- Electron は Web 技術を使って Desktop App を作りたい時に使う
- NW.js は Web App に Standalone な Desktop UI を付けたい時に使う
というイメージで捉えておけば問題はなさそう、と個人的には思います。
ただ、どちらにせよ、
や
デスクトップアプリとしての 脆弱性対策
は、 必ず必要 となってくるので、その辺りについて瑕疵が有ると、
そのアプリを使った人や組織に、致命的なダメージが行ってあばばばばば
というのは覚悟しておいた方が良いと思います。
以上
ちなみに、僕は今回、こう言うまとめ記事を書いてはいるものの、僕自身もまだ完全には Electorn や NW.js について、
実装上の注意点やら脆弱性を作り込まない方法やら
ってのは理解し切ってないので、もし何が指摘が有るのであれば、コメント欄やはてブのコメなのでご指摘して頂ければな、と思います。
と言う事で、昨日と今日で調べたことのまとめは以上です。はい。