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

クロクロ ショップ 本、ゲーム、同人誌他を販売
クロクロ ツールズ 便利なWebアプリを多数収録
ソフトウェア
めもりーくりーなー Winのメモリーをお掃除するソフト
Novel Supporter 小説推敲補助ソフト
PCソフト 便利なソフトを多数公開
Webサービス 便利で楽しいサービス多数
レトロゲームファクトリー レトロゲーム移植会社のお仕事小説
#電書ハック 電子書籍編集部のお仕事小説
顔貌売人 IT系ミステリ
裏切りのプログラム IT系ミステリ
ゲーム
Little Bit War Switch向け高速RTS
TinyWar high-speed 1ステージ数分の8bit風RTS
EX リバーシ 変形盤面、ステージ多数
PuzzleAndGame.com ブラウザで遊べるパズルやゲーム
同人活動
るてんのお部屋 コミケなどで活動(DL販売
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件 (全て見る)

柳井が執筆した本や商品

Web小説のための Novel Supporterで 超効率的に文章推敲する本
推敲箇所を可視化するソフトを使い、実際の小説の推敲手順を示した本。詳細ページ
レトロゲームファクトリー
過去のゲームを最新機用に移植する会社のお仕事小説。新潮社より発売中。詳細ページ
#電書ハック
電子書籍編集部のお仕事小説。文藝春秋より発売中。詳細ページ
顔貌売人 ハッカー探偵 鹿敷堂桂馬
シリーズ第2弾。文藝春秋より発売中。詳細ページ
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
松本清張賞の最終候補に残った拙作小説(デビュー作)。詳細ページ
JavaScriptでリバーシゲームをつくろう
ライブラリを使わず、全コードを書いて、リバーシゲームを作るまでを徹底解説。詳細ページ
HTML5とJavaScriptで作る落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルの全コードを掲載して解説した本。詳細ページ
レトロ風RPGフルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本。詳細ページ

柳井が作成した動画講座