SlideShare a Scribd company logo
1 of 23
Download to read offline
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="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/

More Related Content

Similar to Electron

The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#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 Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on LinuxTakayoshi Tanaka
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線Akira Inoue
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2shozon
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォームYasushi Kato
 
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022Atsushi Eno
 
Windows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャWindows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャ彰 村地
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug efvsug_jim
 
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8Akira Onishi
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Microsoft Corporation
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会Yoshihisa Ozaki
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開 第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開 Keisuke Matsuda
 

Similar to Electron (20)

The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォーム
 
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Windows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャWindows 8 でパケットキャプチャ
Windows 8 でパケットキャプチャ
 
Electron early 2019
Electron early 2019Electron early 2019
Electron early 2019
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug ef
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開 第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開
第84回 雲勉【オンライン:初心者向け】ECS入門 _ CloudFront + ELB + ECS FargateでWebサイトを公開
 

More from GIG inc.

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

More from GIG inc. (20)

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

Electron