狠狠撸

狠狠撸Share a Scribd company logo
Electron
● Electronとは
● Electronの特徴
● Electronの仕組み
● Electronを触ってみよう
● おまけ
● まとめ
Index
#1. Electronとは
#1. Electronとは
Windows / macOS / Linuxで実行できるデスクトップアプリを
HTML / CSS / JavaScriptで開発できるフレームワークです。
#2. Electron特徴
#2. Electronの特徴
● ES2015記法でJSを扱うことが出来る
● Node.jsが組み込まれているため、ファイルシステムや OSの機能をnpmパッケージで呼び出し利
用できる
● レンダリングにChromiumというOSSのブラウザを使用しており、ベンダープレフィックスの記述が
不要
● デスクトップアプリには欠かせないメニューやダイアログ操作等々、 OSのネイティブAPIを呼び出さ
ないといけない部分については Electronが内部的にAPIをラップしてJSで呼び出せる仕組みになっ
ている。
#3. Electronの仕組み
#3. Electronの仕組み
      コマンドを実行すると、package.jsonファイル内の
mainに記述されているjsファイルをメインプロセスとして起
動します。
JavaScript側のメインプロセスと表示する側のレンダラープ
ロセスでIPC通信を行います。
electron
#3. Electronの仕組み
メインプロセス
あらゆるElectronアプリケーションのエントリーポイントです。
ダイアログのオープンやメニュー操作などはリソースを集中的に使うので、レンダラープロセスを妨げないようメインプロ
セスで実行されます。
また、メインプロセスには完全なNode APIがビルドインされています。
レンダラプロセス
レンダラプロセスはアプリケーションにおけるブラウザウィンドウです。
メインプロセスとは異なり複数のプロセスの存在が可能で、1つが故障しても他のプロセスに影響しないのが特徴です。
またレンダラプロセスは隠すことも可能でブラウザ表示されずバックグラウンドでコードのみ実行させることも可能です。
#4. Electronを触ってみよう
#4. Electronを触ってみよう
今回は右のような簡単なコメントを投稿してリストとし
て表示することができるアプリケーションを作りたい
と思います。
#4. Electronを触ってみよう
1. アプリケーション作成の準備
右図のようなpackage.jsonになっていることを確
認して下さい。
{
“name”: “electron-app”,
“version”: “1.0.0”,
“description: “first electron app”,
“main”: “index.js”
“scripts”: {
“test”: “echo ”Error: no test specified” && exit 1”,
},
“author”: “your name”,
“license”: “MIT”
}
#4. Electronを触ってみよう
1. アプリケーション作成の準備
以下のコマンドでElectronをインストールしてください
試しにElectronを起動してみましょう。
npm install electron@1.8.2 --save-dev
./node_modules/.bin/electron
右図の画面が表示されたらインストール完了です
#4. Electronを触ってみよう
2. アプリケーション作成
それでは早速アプリケーションを作成していこうと思いま
す。
まずはエントリポイントになる index.jsを右図のように作成し
てください。
const { app, BrowserWindow } = require('electron');
let win;
function createWindow() {
win = new BrowserWindow({ width: 800, height: 600 });
win.loadURL(`file://${__dirname}/index.html`);
win.on('closed', () => { win = null; });
}
app.on('ready', createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (win === null) {
createWindow();
}
});
index.js
#4. Electronを触ってみよう
2. アプリケーション作成
次に読み込むHTMLを記述し、</body>タグの
前で次ページで記述する jsファイルを読み込み
ます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>My First Electorn app</title>
</head>
<body>
<h1>CommentBox</h1>
<form id="comment-form">
<input type="text" id="comment-input" placeholder="コメント">
<input type="submit" value="投稿">
</form>
<ul id="comments"></ul>
<script src=/slideshow/electron-88047032/88047032/"renderer.js"></script>
</body>
</html>
index.html
#4. Electronを触ってみよう
2. アプリケーション作成
最後にコメント投稿時の動作用
JavaScriptを記述していきます。
document.addEventListener('DOMContentLoaded', () => {
// formのsubmit時の動作を定義する
document.getElementById('comment-form').onsubmit = () => {
// コメントを入力するinputを取得する
const commentInput = document.getElementById('comment-input');
if ( commentInput.value === '' ) {
// コメントが入力されていない場合何もしない
return false;
}
// 入力されたコメントを元にli要素を作成
const newComment = document.createElement('li');
// 作成したli要素をDOMに挿入する
newComment.innerText = commentInput.value;
document.getElementById('comments').appendChild(newComment);
// コメント入力のinputは空にしておく
commentInput.value = '';
return false;
};
});
renderer.js
#4. Electronを触ってみよう
     (./node_modules/.bin/electron .)
コマンドを実行してください。
右図のような画面が出てきたら成功です。
electron .
#5. おまけ
#5. おまけ
Electronの開発に役立つ記事やビデオ、必要なリソースが Awesome Electronというサイトにまとめられてい
るので是非参考にしてみてください。
具体的には以下のような情報がまとめられています(抜粋)
● Apps:Electronで開発されたアプリが列挙されており、「 Open Source」となっているものはソースの閲
覧が可能です。
● Boilerplates:あらかじめ登録されているテンプレートが紹介されています。フロントのフレームワークと
してReact.jsやVue.jsを使いたい場合はここから使用するとすぐに始められます。
● Tools:Electronの開発に役立つリソースが紹介されています。
#6. まとめ
#6. まとめ
● 複数書かずに各OS対応のデスクトップアプリが作れます。
● Node.jsやJavaScriptを使用することで幅広い表現が可能です。
● App StoreやGoogle Playへの認証もなく配布できる
今回はElectronについてと導入についてお話ししました。
アプリケーション制作と敷居を高く感じることなく、制作配布できるも
のなんだなと覚えていただけたら嬉しいです。
有难うございました!
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
お問い合わせはこちらから
https://giginc.co.jp/contact/
Ad

Recommended

贰濒别肠迟谤辞苍で作るおれおれマークダウンエディタ
贰濒别肠迟谤辞苍で作るおれおれマークダウンエディタ
yuosaka
?
フロントエンドの技术で始めるデスクトップアプリ
フロントエンドの技术で始めるデスクトップアプリ
Tomotaka Kusaka
?
Docker と ECS と WebSocket で最強のマルチプレイ?ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ?ゲームサーバを構築
gree_tech
?
Hello ".NET" World
Hello ".NET" World
将 高野
?
贰濒别肠迟谤辞苍で作るおれおれマークダウンエディタ2
贰濒别肠迟谤辞苍で作るおれおれマークダウンエディタ2
yuosaka
?
厂辫谤颈苍驳2概论蔼第1回闯厂鲍骋勉强会
厂辫谤颈苍驳2概论蔼第1回闯厂鲍骋勉强会
Mitsuhiro Okamoto
?
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
?
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
Dot netcore multiplatform 2
Dot netcore multiplatform 2
shozon
?
.狈贰罢クロスプラットフォーム
.狈贰罢クロスプラットフォーム
Yasushi Kato
?
Monomeeting 20081022
Monomeeting 20081022
Atsushi Eno
?
Ext.direct
Ext.direct
Shuhei Aoyama
?
狈辞诲别.箩蝉でブラウザメッセンジャー
狈辞诲别.箩蝉でブラウザメッセンジャー
驰补丑辞辞!デベロッパーネットワーク
?
Windows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャ
彰 村地
?
Electron early 2019
Electron early 2019
Masahiro Kondoh
?
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
Daisukei vsug ef
Daisukei vsug ef
vsug_jim
?
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
Akira Onishi
?
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
?
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
Keisuke Matsuda
?
Lt41
Lt41
GIG inc.
?
Lt40
Lt40
GIG inc.
?

More Related Content

Similar to Electron (20)

The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
?
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
Dot netcore multiplatform 2
Dot netcore multiplatform 2
shozon
?
.狈贰罢クロスプラットフォーム
.狈贰罢クロスプラットフォーム
Yasushi Kato
?
Monomeeting 20081022
Monomeeting 20081022
Atsushi Eno
?
Ext.direct
Ext.direct
Shuhei Aoyama
?
狈辞诲别.箩蝉でブラウザメッセンジャー
狈辞诲别.箩蝉でブラウザメッセンジャー
驰补丑辞辞!デベロッパーネットワーク
?
Windows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャ
彰 村地
?
Electron early 2019
Electron early 2019
Masahiro Kondoh
?
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
Daisukei vsug ef
Daisukei vsug ef
vsug_jim
?
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
Akira Onishi
?
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
?
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
Keisuke Matsuda
?
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
?
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
Dot netcore multiplatform 2
Dot netcore multiplatform 2
shozon
?
.狈贰罢クロスプラットフォーム
.狈贰罢クロスプラットフォーム
Yasushi Kato
?
Monomeeting 20081022
Monomeeting 20081022
Atsushi Eno
?
Windows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャ
彰 村地
?
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
Daisukei vsug ef
Daisukei vsug ef
vsug_jim
?
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
Akira Onishi
?
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
?
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS Fargateて?Webサイトを公開
Keisuke Matsuda
?

More from GIG inc. (20)

Lt41
Lt41
GIG inc.
?
Lt40
Lt40
GIG inc.
?
Lt39
Lt39
GIG inc.
?
尝罢38テーマ3-2
尝罢38テーマ3-2
GIG inc.
?
尝罢38テーマ3-1
尝罢38テーマ3-1
GIG inc.
?
尝罢38テーマ2-2
尝罢38テーマ2-2
GIG inc.
?
尝罢38テーマ2-1
尝罢38テーマ2-1
GIG inc.
?
尝罢38テーマ1-2
尝罢38テーマ1-2
GIG inc.
?
尝罢38テーマ1-1
尝罢38テーマ1-1
GIG inc.
?
lt37
lt37
GIG inc.
?
濒迟23后半
濒迟23后半
GIG inc.
?
濒迟23前半
濒迟23前半
GIG inc.
?
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
GIG inc.
?
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
GIG inc.
?
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
GIG inc.
?
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
GIG inc.
?
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
GIG inc.
?
LT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPA
GIG inc.
?
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
GIG inc.
?
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
GIG inc.
?
尝罢38テーマ3-2
尝罢38テーマ3-2
GIG inc.
?
尝罢38テーマ3-1
尝罢38テーマ3-1
GIG inc.
?
尝罢38テーマ2-2
尝罢38テーマ2-2
GIG inc.
?
尝罢38テーマ2-1
尝罢38テーマ2-1
GIG inc.
?
尝罢38テーマ1-2
尝罢38テーマ1-2
GIG inc.
?
尝罢38テーマ1-1
尝罢38テーマ1-1
GIG inc.
?
濒迟23后半
濒迟23后半
GIG inc.
?
濒迟23前半
濒迟23前半
GIG inc.
?
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
GIG inc.
?
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
GIG inc.
?
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
GIG inc.
?
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
GIG inc.
?
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
GIG inc.
?
LT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPA
GIG inc.
?
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
GIG inc.
?
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
GIG inc.
?
Ad

Electron