2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.NET使いが始めるElectron開発環境構築

Posted at

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ファイルを以下に変更

package.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を同じフォルダに入れて下記のコマンドを打つと起動

Main.js
'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の作成

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

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?