SlideShare a Scribd company logo
1 of 56
Download to read offline
P R E S E N T A T I O N :
フロントエンドエンジニア 堀祐磨(ほりでー)
Electronで作る

はじめてのGUIアプリ
PDF差分比較アプリを作ってみた
Electronで作るはじめてのGUIアプリ
づや会 Vol.4 node.js
2
Electronで作るはじめてのGUIアプリ
自己紹介
堀 祐磨 (ほりでー)
1988年生まれ。多摩美術大学を中退後、
デザイナーとしてグラフィックデザイン・
Webデザイン・UIデザインを経験。
2015年、株式会社LIGにフロントエン
ドエンジニアとして入社。
Electronで作るはじめてのGUIアプリ
DTP制作
4
Electronで作るはじめてのGUIアプリ
DTP制作の辛さ
IllustratoとかInDesignで
印刷物を作るお仕事
バージョン管理とか無理

(全部バイナリ)
5
Electronで作るはじめてのGUIアプリ
DTP制作の辛さ
カタログとかで商品の値段とかを校正後
に間違って変えようものなら(=デグレ)…
数万部の刷り直し! 

損害賠償!
Electronで作るはじめてのGUIアプリ
目視で確認なんて

やってられん
7
Electronで作るはじめてのGUIアプリ
GraphicsMagickの
gm compare コマンド
8
Electronで作るはじめてのGUIアプリ
1枚づつの比較しかできない
印刷用PDFを分解→個別に比較→再結合~の流れをgulp
化
便利なんだけどターミナルから叩くのは直感的ではない
GUIアプリにしよう!
9
Electronで作るはじめてのGUIアプリ
コマンドライン版

差分比較ツール
便利なんだけどターミナルから
叩くのは直感的ではない
GUIアプリにしよう!
Electronでやってみよう!
10
Electronで作るはじめてのGUIアプリ
つくってみた
11
Electronで作るはじめてのGUIアプリ
GUI版差分比較アプリ
ファイルをGUIから指定して、ボタンを押すとコマンドが走る!
12
裏側
Electronで作るはじめてのGUIアプリ
gulp以外使わないから
node.jsのAPIが分からん!
13
Electronで作るはじめてのGUIアプリ
const fs = require('fs');
14
Electronで作るはじめてのGUIアプリ
node.jsの標準API "fs"
ファイルシステムまわりの機能
フォルダを作る
ファイルを読み取る
ファイルの存在確認
ファイルの権限確認
ファイルの読み書きするならこれ
15
Electronで作るはじめてのGUIアプリ
const child =
require('child_process');
16
Electronで作るはじめてのGUIアプリ
node.jsの標準API "child_process"
spawn
childProcessインスタンスを返し、そいつのイ
ベントを使ってあれこれする
exec
コマンド実行後にコールバックが走り、それであ
れこれする
execFile
シェルスクリプトファイルにパラメータを渡して
実行し、そいつの実行後にコールバックが走り、
その中であれこれする
上記は全部非同期処理だが、それぞれ同期処理版(~
Sync)のメソッドもある
17
OSのシェルを叩けるので、これさえあれば何でもできる!
Electronで作るはじめてのGUIアプリ
electronで
child_process使う際は
罠があるので注意

(後述)
18
Electronで作るはじめてのGUIアプリ
同期処理と非同期処理
多くのAPIが非同期で、たいてい同期
バージョン(~Sync)も用意されている
同期バージョンは実装が考えやすいが、
処理が終了するまで他の処理が全部止
まる
今回のアプリは同期処理中心に実装
19
Electronで作るはじめてのGUIアプリ
electronのAPI
20
Electronで作るはじめてのGUIアプリ
dialogモジュール
21
Electronで作るはじめてのGUIアプリ
dialogモジュール
ユーザーとの対話ウィンドウ(OSネイティブ)を出す
showMessageBox
通知や選択を求める一般的なダイアログを表示
showOpenDialog
ファイルやフォルダの選択を求めるダイアログを表示
showSaveDialog
ファイルの保存先を求めるダイアログを表示
返り値がシンプルで使いやすい
22
Electronで作るはじめてのGUIアプリ
BrowserWindow

モジュール
ウィンドウ1つに相当するオブジェクト
ブラウザ画面のサイズやURLを指定し
たり、様々な状態についてのプロパティ
を持つ
23
Electronで作るはじめてのGUIアプリ
appモジュール
アプリケーション全体についての色々なイベントを持っている
アプリ全体に影響するメソッド
quit/hide/show
環境やOSによっていい感じに内容を変えてくれる便利メソッド
getPath('hoge')
アプリの現在パス
OSのユーザーホームのパス
OSのテンポラリフォルダのパス
~などを取得できる
24
Electronで作るはじめてのGUIアプリ
メインプロセスと

レンダラプロセス
25
Electronで作るはじめてのGUIアプリ
メインプロセスと

レンダラプロセス
メインプロセス
1個しかないプロセスで、consoleは
electron実行時にCLI上に出てくる
サーバ的な役割
26
Electronで作るはじめてのGUIアプリ
メインプロセスと

レンダラプロセス
レンダラプロセス
ウィンドウごとに立ち上がるプロセスで、
consoleはChromiumのデバッグ画面上に出て
くる
クライアント的な役割
メインプロセスに比べて制約が大きいらしい

(セキュリティの為)
27
Electronで作るはじめてのGUIアプリ
メインプロセスと

レンダラプロセス
両プロセス間の通信はイベントを使った非同期通
信が基本(ipcMain/ipcRendererモジュール)
同期的な通信機能も用意されているものの、メ
インプロセスから結果が帰ってくるまでレンダラ
プロセスは応答しなくなる(非推奨)
remoteを使うと擬似的にレンダラプロセスから
メインプロセス内にあるモジュールも利用可能
28
Electronで作るはじめてのGUIアプリ
Electronアプリの

テンプレート
29
Electronで作るはじめてのGUIアプリ
frontplate

ビルド構成
gulp + webpack + babel
テスト環境
gulp + webpack + babel + Karma
+ mocha + power-assert
30
※LIGのCTOが作ったテンプレ(OSS)
Electronで作るはじめてのGUIアプリ
webpackやKarmaの

設定でつまづいたところ
31
Electronで作るはじめてのGUIアプリ
つまづきポイント
webpackがnode.jsの __dirname を置き換えちゃう
webpack.confに設定追記で解決
32
Electronで作るはじめてのGUIアプリ
つまづきポイント
webpackがnodeの標準モジュールを合体
させようとして壊れる!
targetをelectronにして解決!
33
Electronで作るはじめてのGUIアプリ
つまづきポイント
Karmaがrequire()できないって言ってくる
karma-electronを導入
ブラウザテスト用にrequireを実装(テスト時のみ)
34
Electronで作るはじめてのGUIアプリ
ビューの実装
35
Electronで作るはじめてのGUIアプリ
安心のBootstrap!
36
Electronで作るはじめてのGUIアプリ
安心のjQuery()!
37
Electronで作るはじめてのGUIアプリ
アプリのパッケージ化
38
Electronで作るはじめてのGUIアプリ
asar
atom-shell app
packages
39
Electronで作るはじめてのGUIアプリ
electron-packager
40
Electronで作るはじめてのGUIアプリ
ここに大きな罠が…
41
Electronで作るはじめてのGUIアプリ
asarの罠
child_processはほとんど使えない!
42
Electronで作るはじめてのGUIアプリ43
http://electron.atom.io/docs/
v0.36.3/tutorial/application-
packaging/
Electronで作るはじめてのGUIアプリ
asarの罠
任意のコマンド実行できちゃうじゃん!
そんな危険なもの配れないよ!
でもchild_process.execFile()なら
使っていいよ!
44
Electronで作るはじめてのGUIアプリ
asarの罠:execFileなら許す
何が違う?
実行するシェルスクリプトが事前に必要
そのシェルスクリプトは、asarのビルド時に
unpackオプションを指定しておくこと
同期版のchild_process.execFileSync()は
使えない
45
Electronで作るはじめてのGUIアプリ
非同期処理が面倒臭いから
execSync()で作ってたの
に~!!!
46
Electronで作るはじめてのGUIアプリ
そういう訳で、
このデモアプリはCLIから
しか起動できません orz
47
(いつか非同期化する…絶対…)
Electronで作るはじめてのGUIアプリ
感想
48
Electronで作るはじめてのGUIアプリ
感想
開発環境と違う挙動するasarは曲者
同期的なメソッドを使うと、作りやすいけどやっぱり微妙
非同期処理怖い(特にループ)
自分の人生じゃ当分来ないだろうと思ったけど、案外早
く来た…
GUIアプリ初挑戦したけど面倒臭い
オプションを変更するUIを置くだけでも面倒臭い…
49
Electronで作るはじめてのGUIアプリ
感想
シェル叩く機能を作るのであれば、
nodejs側のロジックを作りこむより
も、シェルスクリプトとして作り込ん
だ方が作りやすい?
マルチプラットフォーム対応するのは
難しそうだけど、OSXだけならこっ
ちの方が楽かも…?
50
Electronで作るはじめてのGUIアプリ
今後の展開
非同期化してパッケージ化できるように
する
graphicsmagickなどのバイナリもパッ
ケージ内にまとめ、インストール不要に
したい
GUIから設定できるオプションを増やす
51
Electronで作るはじめてのGUIアプリ
最後に宣伝
52
http://media-massage.net/
 ブログもあるよ! /
Thank you!
http://media-massage.net/
デザインとWeb開発とその他諸々。

More Related Content

What's hot

What's hot (20)

やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
 
datatech-jp Casual Talks#3 データエンジニアを採用するための試行錯誤
datatech-jp Casual Talks#3  データエンジニアを採用するための試行錯誤datatech-jp Casual Talks#3  データエンジニアを採用するための試行錯誤
datatech-jp Casual Talks#3 データエンジニアを採用するための試行錯誤
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
データサイエンティストのつくり方
データサイエンティストのつくり方データサイエンティストのつくり方
データサイエンティストのつくり方
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚
 
実践イカパケット解析α
実践イカパケット解析α実践イカパケット解析α
実践イカパケット解析α
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 

Viewers also liked

Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Atsushi Tadokoro
 
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
CODE BLUE
 

Viewers also liked (20)

Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話
 
インフラざっくり会
インフラざっくり会インフラざっくり会
インフラざっくり会
 
JSオジサン openframeworks emscripten
JSオジサン openframeworks emscriptenJSオジサン openframeworks emscripten
JSオジサン openframeworks emscripten
 
フロントエンドの技術で始めるデスクトップアプリ
フロントエンドの技術で始めるデスクトップアプリフロントエンドの技術で始めるデスクトップアプリ
フロントエンドの技術で始めるデスクトップアプリ
 
Electron を知る
Electron を知るElectron を知る
Electron を知る
 
Electronで 動画ながら見アプリを作った
Electronで 動画ながら見アプリを作ったElectronで 動画ながら見アプリを作った
Electronで 動画ながら見アプリを作った
 
アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方
 
今更はじめるQuartz Composer
今更はじめるQuartz Composer今更はじめるQuartz Composer
今更はじめるQuartz Composer
 
PodcastをSkype経由で録音
PodcastをSkype経由で録音PodcastをSkype経由で録音
PodcastをSkype経由で録音
 
C#マスコット(公開用)
C#マスコット(公開用)C#マスコット(公開用)
C#マスコット(公開用)
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
 
面白法人カヤックのウェブフロントエンド術
面白法人カヤックのウェブフロントエンド術面白法人カヤックのウェブフロントエンド術
面白法人カヤックのウェブフロントエンド術
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Electronからはじめるnodejs
ElectronからはじめるnodejsElectronからはじめるnodejs
Electronからはじめるnodejs
 
20分でできる!Xamarin.Forms入門
20分でできる!Xamarin.Forms入門20分でできる!Xamarin.Forms入門
20分でできる!Xamarin.Forms入門
 
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
 
WebアプリをElectronに乗せる
WebアプリをElectronに乗せるWebアプリをElectronに乗せる
WebアプリをElectronに乗せる
 
WPF4.5入門
WPF4.5入門WPF4.5入門
WPF4.5入門
 
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのかRedmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ
 

Similar to Electron で作るはじめてのguiアプリ

社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
Peatix Japan
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
Yohei Oda
 
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
theguild
 

Similar to Electron で作るはじめてのguiアプリ (20)

Web制作者のための上流工程の簡単な説明
Web制作者のための上流工程の簡単な説明Web制作者のための上流工程の簡単な説明
Web制作者のための上流工程の簡単な説明
 
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
 
【オープンセミナー岡山2014】 明日からできるデザイン脳
【オープンセミナー岡山2014】 明日からできるデザイン脳【オープンセミナー岡山2014】 明日からできるデザイン脳
【オープンセミナー岡山2014】 明日からできるデザイン脳
 
TOPPA!! ノーコード講座
TOPPA!! ノーコード講座TOPPA!! ノーコード講座
TOPPA!! ノーコード講座
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作
 
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
 
『修羅道』制作事例 モバイルハイエンドグラフィックゲーム実現まで
『修羅道』制作事例 モバイルハイエンドグラフィックゲーム実現まで『修羅道』制作事例 モバイルハイエンドグラフィックゲーム実現まで
『修羅道』制作事例 モバイルハイエンドグラフィックゲーム実現まで
 
事業企画
事業企画事業企画
事業企画
 
ものづくりの視点で説明する要件定義
ものづくりの視点で説明する要件定義ものづくりの視点で説明する要件定義
ものづくりの視点で説明する要件定義
 
UIデザインは誰のもの?
UIデザインは誰のもの?UIデザインは誰のもの?
UIデザインは誰のもの?
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Prottとsketchとzeplinのススメ
ProttとsketchとzeplinのススメProttとsketchとzeplinのススメ
Prottとsketchとzeplinのススメ
 
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
Pixateワークショップ―アプリケーションの概要とpixateの使い方 初級編―.pdf
 
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
 
頭を柔らかくするデザインの発想 by Life is Tech !
頭を柔らかくするデザインの発想 by Life is Tech !頭を柔らかくするデザインの発想 by Life is Tech !
頭を柔らかくするデザインの発想 by Life is Tech !
 
Approach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSApproach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOS
 
App inventor for bussiness
App inventor for bussinessApp inventor for bussiness
App inventor for bussiness
 
福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるために福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるために
 

More from 祐磨 堀

More from 祐磨 堀 (7)

キャリア設計的な話
キャリア設計的な話キャリア設計的な話
キャリア設計的な話
 
約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた
 
実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れ
実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れ実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れ
実装を引き受ける前に詰めておくべきWebフロントエンドの想定漏れ
 
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみたKubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
 
LIGブログをテキストマイニングしてみた TinyTextMinerとRによる、はじめてのデータマイニング
LIGブログをテキストマイニングしてみた TinyTextMinerとRによる、はじめてのデータマイニングLIGブログをテキストマイニングしてみた TinyTextMinerとRによる、はじめてのデータマイニング
LIGブログをテキストマイニングしてみた TinyTextMinerとRによる、はじめてのデータマイニング
 
AWSで自宅サーバ?
AWSで自宅サーバ?AWSで自宅サーバ?
AWSで自宅サーバ?
 
やさしいSassり方
やさしいSassり方やさしいSassり方
やさしいSassり方
 

Electron で作るはじめてのguiアプリ