Electronについて

ElectronはWEBシステムの開発技術を用いてデストップアプリを作成する技術である。
ChromiumとNode.jsを一つのランタイムとすることにより動いている。
GUIはChromium、プログラム部分はNode.jsという感じ。
Node.jsとChromiumで使用しているV8エンジンを使用している。(V8エンジンのインスタンスは共有している)
GitHubチームと有志により開発されている。

Electronのアーキテクチャ

Electronにはメインプロセスとレンダラープロセスという2つのプロセスタイプが存在する。
package.json の main で指定されたスクリプト(index.js)を実行するプロセスを メインプロセスという。
レンダラープロセスはChromium のマルチプロセスアーキテクチャを利用したプロセスとのこと。
WEBシステムで例えるとサーバーサイドに相当するものがメインプロセス、フロントサイドに相当するものがレンダラープロセスと思われる。
メインプロセスとレンダラープロセスの間で通信を行う必要がある。
通信方法にはipcRendere,ipMain,RPCスタイルremoteモジュールなるものがある。

Electron API

Electron APIというものが用意されている。
Electron APIはメインプロセスからだけ使用できるもの、レンダラープロセスだけ使用できるもの、両方から使用できるものが存在する。

Node.js API

Node.js で利用できるすべての API は Electron で利用できる。
npmでAWS-SDKをインストールして使用するといったことも可能。

デバッグ

WEBシステムでサーバーサイドとフロントサイドでデバッグ方法が違うのと同様、メインプロセスとレンダラープロセスでデバッグ方法はことなる。
レンダラープロセスをデバッグするときは、Chromium Developer Toolsetなるツールを利用できる。
メインプロセス中のJavaScriptをデバッグするときは、Electronを--inspectまたは、--inspect-brkフラグ付きで起動し、外部デバッガを使用する必要がる。 また、Chromium デベロッパーツールなるツールを使うようである。

アプリケーションの配布

実行ファイルであるElectron.app (Linuxではelectron、Windowsではelectron.exe) が作成でき、一般配布することが可能。
プレビルドバイナリなるものをダウンロードする必要がある。
また、ファイル構成を下記のように変更する必要がある。
	electron/resources/app
	  ├── package.json
	  ├── main.js
	  └── index.html
	


ファイル群をパッケージ化するasarアーカイブなるものも存在する。(dllと似たようなものか?)

electron.exe のファイル名を変更したり、アイコンやその他の情報を rcedit などのツールで編集可能。


Electronのインストール

npmを使ってElectronをインストールできる。
	$ npm -g install electron-prebuilt


ElectronのHello World

  1. プロジェクトのディレクトリに移動する
    	$ cd hello_world
  2. package.jsonを作成する
    	$ npm init -y
    Electronのpackage.jsonを作成する
  3. hello_worldディレクトリ内にindex.jsとindex.htmlを作成
    	hello_world
    	  ├── package.json
    	  ├── index.js
    	  └── index.html
    			
    (メインプロセス)
    (レンダラープロセス)
  4. 実行する
    	$ electron .

    Electronの実行