1.事の始まり
①業務ではもっぱらWPF+C#
でも正直秋田
②JavaScriptをそろそろ勉強したい。
上記二点について考えていたところ、職場でATOMを触る機会があり、
調べるとJavaScript書かれてるらしい→Electronというもので作られているらしい。。。という感じでいっちょ勉強がてら作ってみようと思った。
ちなみに環境はMacOS Sierraです。
2.実践
2.1 nodebrew && Node.jsのインストール
NodebrewがNode.jsのバージョン管理ツールらしく
Node.jsがjavaScriptの拡張の一つらしい。
curl -L git.io/nodebrew | perl - setup
Node.jsはとりあえず安定版を入れました。(2017/3/14時点でv7.7.2)
nodebrew install-binary stable
2.2 electronのインストール
electron-prebuildと書いている記事もあるけど、最近はelectronでいいらしい。(2017/3/14時点でv1.6.2)
sudo npm -g install electron
2.3 package.jsonの変更
mkdir ElectronSample cd ElectronSample npm init -y
自動生成されたjsonファイルを以下に変更
{
"name": "ElectronSample",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "node_modules/.bin/electron .",
"release": "node release.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
2.6 起動
main.js,index.htmlを同じフォルダに入れて下記のコマンドを打つと起動
'use strict';
// Electronのモジュール
const electron = require("electron");
// アプリケーションをコントロールするモジュール
const app = electron.app;
// ウィンドウを作成するモジュール
const BrowserWindow = electron.BrowserWindow;
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow;
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
app.quit();
}
});
// Electronの初期化完了後に実行
app.on('ready', function() {
// メイン画面の表示。ウィンドウの幅、高さを指定できる
mainWindow = new BrowserWindow({width: 800, height: 600});
mainWindow.loadURL('file://' + __dirname + '/index.html');
// ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function() {
mainWindow = null;
});
});
index.htmlはHelloWOrldでも貼っておけば良い
実行(Control+Cで終了してね)
electron ElectronSample/
2.5 electron-pacageのダウンロード&パッケージ化
npm i electron-packager -g
release.jsの作成
var packager = require('electron-packager');
var config = require('./package.json');
packager({
dir: './', // 対象
out: './dist', // 出力先
name: config.name, // 名前
platform: 'darwin', // or win32
arch: 'x64', // 64bit
electronVersion: '1.4.14', // electron のバージョン
icon: './app.icns', // アイコン
'app-bundle-id': 'jp.miyamura.sample', // ドメイン
'app-version': config.version, // バージョン
overwrite: true, // 上書き
asar: true, // アーカイブ
prune: true,
// 無視ファイル
ignore: "node_modules/(electron-packager|electron-prebuilt|\.bin)|release\.js",
}, function done (err, appPath) {
if(err) {
throw new Error(err);
}
console.log('Done!!');
});
パッケージコマンドを打つ前にやること
①npmを最新版にする
②NODE_PATHにグローバルモジュールのPATHを記述
以上、実行後下記のコマンドrelease.jsと同一階層で実行する
npm run release
3.締め
普段、IDEでアプリを作っている自分にとってほぼコンソール上での作業だったので、なかなか苦戦を強いられた。ただ、他所でも言われてる通り、フロントエンジニアの方はかなり楽にできると思われる。
次はTwitterAPIを用いて実際にものを作っていきたい。
その前に、Node.jsとHTML5の勉強をもしないと。。。。。
参考URL
1.30分で出来るElectron環境構築
http://qiita.com/nyanchu/items/15d514d9b9f87e5c0a29
2.electronを使ってみた
http://xanadu6291ex.webcrow.jp/wp/?p=175
3.electronのインストールでコケた時の解決方法 on OS X
http://qiita.com/masato_t/items/0a0f5f31b8225c3d9e52
4.node.jsのversionを管理するためにnodebrewを利用する
http://qiita.com/sinmetal/items/154e81823f386279b33c
5.NodeBrewインストール編
http://qiita.com/ebisennet/items/15c3c9fdb04e66db6323