クロノス・クラウン - 記事検索

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
no link
2016年01月25日 13:22:43
 ここ数年、「NW.js(旧node-webkit)」を触ってきました。

 そして、先週の金曜日の夜から、今週の朝にかけて「Electron」で、ブログ更新用ソフトを作りました。

 というわけで感想です。



● 方向性がだいぶ違う


「NW.js」も「Electron」も、「node.js」+「WebKit」なのですが、方向性が大きく違うと感じました。

「NW.js」は、既存のウェブアプリに「node.js」の機能を追加した印象です。

「Electron」は、「node.js」のプログラムから「WebKit」を呼び出したものです。

 そういった違いが、色濃く表れるのは、複数ウィンドウを使う場合です。

「NW.js」だと、ウィンドウから、ウィンドウを呼び出すことになり、「最初のウィンドウを閉じたらどうなるの?」→「実行は続く」という、直感的ではない状態になります。

 それに、aタグのtarget="_blank"で、新しいウィンドウを開くと、途端に「あれ、どうなっているの?」となります。

 これは、地味にイラッときます。というか、大きなアプリを作るのには筋が悪いと感じます。実際に、規模が大きくなってくると、「向いていないな」と感想を持つようになりました。

「NW.js」で作れるのは、1ページで完結するアプリまでだなあと。

 対して、「Electron」では、ウィンドウ管理が、直感に従っています。

 「Electron」では、メインプロセス(node.jsのプロセス)とレンダープロセス(ブラウザのプロセス)に分かれています。

 このメインプロセスから、「BrowserWindow.getAllWindows()」することで、開いている全てのウィンドウを取得して管理できます。

 また、「app.on('window-all-closed', function() {})」で、全てのウィンドウの終了を検出したり、「app.on('browser-window-created', function() {})」で、新しいウィンドウが開いたのを検出したりできます。

 そして、プロセス間は、IPC(inter-process communication:プロセス間通信)でやり取りすることになります。

 これは堅牢な設計だと感じさせられます。その分、コード量が増えますが。



● ウェブアプリの移植


「node.js」+「WebKit」を使いたい用途の1つは、既存のウェブアプリの、ローカルアプリへの移植だと思います。

 これは、「NW.js」の方が圧倒的に簡単です。「Electron」だと、メインプロセス周りを追加して作らないといけないので、無駄が多いです。

 あと「Electron」は、「jQuery」がそのままでは動きません。scriptタグに書いていた「jQuery」はエラーが出るため、「Electron」用に書き換える必要があります。以下のような感じに。

window.jQuery = window.$ = require("./lib/jquery.min.js");

 そのため、移植に一手間かかります。「NW.js」だと、コピペで終わるのですが、少しだけ面倒です。



● 終わりに


「NW.js」は、冒険家が十徳ナイフで、ザクザクとウェブアプリをローカル化する感じで、「Electron」は、建築家が設計図を引いて、建物を作っていく感じです。

「NW.js」は、簡単だけど、複雑なことをするのには向いていない。

「Electron」は、面倒だけど、きっちりとしたものを作りやすい。

 そういった方向性の違いがあります。

 個人的な感想としては、以下のような感じです。

「NW.js」→ウェブアプリから、ローカルアプリへの移植に向いている。

「Electron」→JavaScriptを使い、1からローカルアプリを作るのに向いている。

 そういった感じです。
最新20件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について