ElectronよりNWjsが使いやすかった話

クロスプラットフォームおデスクトップアプリケーションを開発する場合、選択肢に上がるのはElectronNWjsNeutrinoJSあたりでしょう。 NeutrinoJSはまだ日が浅く、機能面の不足が大きいので実質、ElectronNWjsになるかと思います。 ElectronNWjsを少しですが両方使ったので感想をまとめます。

Electronとは

Electronは、GitHubが開発したオープンソースのソフトウェアフレームワークである。 ChromiumとNode.jsを使っており、HTML、CSS、JavaScriptのようなWeb技術で、macOS、Windows、Linuxに対応したデスクトップアプリケーションをつくることができる。

NWjsとは

NW.js(エヌダブリュージェイエス)とは、HTML/CSS/JavaScriptで書かれたWebアプリケーションを、デスクトップ(Windows/Mac/Linux) 向けにパッケージングし、ネイティブアプリケーションとして実行するためのクロスプラットフォーム実行環境です。(「node-webkit」から「NW.js」に改名されました。)

NWjsとElectronについて

Electronは情報量が多い

npmのダウンロード数やGithubのスター数もNWjsより多く、VSCodeやAtomがElectron製なこともあり、NWjsより人気です。 それにともなって、情報量も多く躓いたときに解決しやすいです。

それに比べて、NWjsは圧倒的に情報が少ないです。またドキュメントも昔風で読みにくく、サンプルコードがないです。

NWjsはシンプルで分かりやすい

NWjsはウェブアプリケーションを作る要領でデスクトップアプリケーションを作成できます。 画面の作成処理など面倒なことはしなくてよいのが楽です。

ElectronはメインプロセスやレンダープロセスとのIPC通信が必要になる、都度ブラウザ生成処理が必要など複雑です。 ElectronのJavaScriptコンテキストの明確な分離、個別のノードコンテキストの導入、および相互通信機能は、多くのパワーと柔軟性を提供します。しかし、NW.jsもコンテキストの分離も出来ますし、Electronほど複雑ではないのが良いです。

NW.jsは1枚ペラの、WebアプリをEXE化するだけではない

コラム:ElectronとNW.js-マンガで分かる JavaScriptプログラミング講座にて、1枚ペラの、WebアプリをEXE化するのに向いている。とあります。 しかし、そのようことはなく、ReactやVueなどのフレームワークも利用できますし、ES6やTypeScriptももちろん使用できます。 SPAを構築したことがある方なら慣れたように開発が可能です。

フレームワークの規律や利便性のおかげで1ページだけのアプリケーションを作るものではなくなっています。 NW.jsのReactボイラープレート

結局

Webアプリケーションを今まで開発してた人、Webアプリケーションを移行するならNW.jsからが良いと思います。大規模なものや会社などではElectronを使いたいですが、小さめであればまずNW.jsから始めてみてもよいのでは。

両方簡単に始められるのでまずはお試しあれ。

About

現役フリーランスエンジニアの勉強・備忘録。
バックエンドがメイン。フロントからインフラまで色々やってます。