ラベル electron の投稿を表示しています。 すべての投稿を表示
ラベル electron の投稿を表示しています。 すべての投稿を表示

2016年1月17日日曜日

electronにvvvv.jsのpatchを含める

先の記事でelectronからvvvvパッチを見る方法を書いた。
この方法は一台のMacでvvvvパッチを見る方法としては十分機能する。
しかしvvvv.jsのパッチを作って、第三者のMacで実行して見せたいという事もあるだろう。
electronにvvvv.jsと作成したvvvvのパッチを含める事が出来る。

このvvvvパッチを含めたelectronを他のMacにインストールすればvvvvのパッチを再生できる。
方法としてはごく普通のelectronアプリの作成方法となる。
以下の方法ではasarを用いてファイルサイズを小さくしている。
(もちろん後述するContents/Resources/内にappディレクトリを作成してそこにvvvv.js以下を配置すればvvvvパッチを再生できる。)

以前書いた記事では多くのデモを再生する為examples内にindex.js等を書いた。
今回は単一のvvvvパッチを再生する為だけのelectronアプリを作成する目的としている。
よってファイルの追加をした。
変更、追加した各ソースはgithubに置いてある。

おおまかな手順
1)asarによりelectronに含ませる為のvvvv.jsとパッチを含めた"app.asar"というアーカイブファイルを作る。
2)electronに"app.asar"を追加する。


実行手順
Macのターミナル.appからnpmでasarをインストールする。
Passwordではユーザのパスワードを入力する。

$ sudo npm install -g asar
Password:
npm WARN engine cryptiles@2.0.5: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.38","npm":"1.4.28"})
npm WARN engine hoek@2.16.3: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.38","npm":"1.4.28"})
npm WARN engine boom@2.10.1: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.38","npm":"1.4.28"})
/usr/local/bin/asar -> /usr/local/lib/node_modules/asar/bin/asar
asar@0.9.0 /usr/local/lib/node_modules/asar
├── chromium-pickle-js@0.1.0
├── commander@2.3.0
├── cuint@0.1.5
├── minimatch@2.0.4 (brace-expansion@1.1.2)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── glob@5.0.15 (inherits@2.0.1, path-is-absolute@1.0.0, once@1.3.3, inflight@1.0.4)
└── mksnapshot@0.1.0 (fs-extra@0.18.2, decompress-zip@0.1.0, request@2.55.0)

sudo を付け忘れると
Please try running this command again as root/Administrator.
とエラーとなるので注意してほしい。

$ npm install -g asar
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/asar'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/asar']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/asar',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/asar',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack:
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53',
npm ERR!      'Object.oncomplete (fs.js:108:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 14.5.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "asar"
npm ERR! cwd /Users/14
npm ERR! node -v v0.10.38
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/asar
npm ERR! fstream_path /usr/local/lib/node_modules/asar
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/asar'
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53
npm ERR! fstream_stack Object.oncomplete (fs.js:108:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/14/npm-debug.log
npm ERR! not ok code 0

自分の環境では0.9.0がインストールされた。
$ npm ls -g | grep asar
├─┬ asar@0.9.0

以下の例では/toolというディレクトリにvvvv.jsを展開しているので/tool/vvvv.jsのディレクトリに移動する。
$ cd /tool/vvvv.js
$ pwd
/tool/vvvv.js

/tool内にapp.asarというファイルを作るので、上書きを防ぐ為、事前にapp.asarというファイルが存在しないか確認する。
$ ls /tool/app.asar
ls: /tool/app.asar: No such file or directory

存在しなかったので、aparによってpackというコマンドを使いapp.asarというファイルを作る。
$ asar pack . /tool/app.asar

正しくapp.asarファイルが作成できていれば
$ asar list . /tool/app.asar
として内容を確認できる。

この作成したapp.asarファイルを既存のelectronに含ませるため、同一バージョンのelectronをインストールする。
まずはターミナルからelectronのバージョンを確認する。
$ electron -v
  v0.32.2


この場合はv0.32.2なので、electron-v0.33.2-darwin-x64.zipをダウンロードして入手する。
ブラウザからelectronのサイトを確認する。
electronのサイトの一番下にある、prebuilt binaryをクリックして、githubに移動する。



github上のhttps://github.com/atom/electron/releasesよりelectronの該当バージョンのtagを探す。



ここには目的のバージョンである、v0.32.2がなかった。
一番下にあるNextのボタンをクリックして該当バージョンを探す。



下側にある、electron-v0.33.2-darwin-x64.zipというファイルをダウンロードする。

以降の操作はMacのfinderから操作する。
electron-v0.33.2-darwin-x64.zipというファイルをダブルクリックして解凍する。



FinderからElectron.appをcontrolクリックしてパッケージの内容を表示する。



Contents/Resources/内に作成した/tool/app.asarをコピーする。
(もちろん不要となったapp.asaeは削除して良い。)



後は作成したElectron.appをクリックすればvvvv.jsのパッチを再生できる。
普通にクリックして起動した場合、Macのセキュリティ機能で以下の様にファイルの実行に制限があるかも知れない。



これは、controlキーを押した状態でクリックする事で回避できる。




このままでは、アイコンがelectronのままなのでファイルを多く作った場合は混乱しがちだ。
アイコンを変更する方法等は改めて書きたい。

参考
http://electron.atom.io/docs/v0.36.4/tutorial/application-distribution/
https://github.com/atom/asar

2016年1月13日水曜日

electronからvvvvパッチを見る。

前置き

VVVVとは

グラフィカルにプログラムを組み立てる開発環境です。
非営利目的の使用は無料です。

(公式サイトから引用 https://vvvv.org/documentation/jp.propaganda )

vvvv.org

このソフトウェアは様々な利用用途がある訳だが、windowsのみのリリースとなっている。(2016年1月13日の段階)

Macから利用するには、BootCampなりVMwareなりを介して利用するのが容易で一般的だと思う。
これはオーバーヘッドなところがあったり、このソフトウェアの存在を知らない人に、vvvvを試してもらうには非常にハードルが高い。
気軽に試す方法として、ブラウザから実行できる、http://vvvvjs.com/ という物もある。

しかしこれも、javascriptを必要として、htmlファイルをブラウザから開くという事となる。
どの様なブラウザで実行しているのかを考慮する必要があるかも知れない。

もっとスタンドアローンで、単一なアプリケーションとして動作して、誰でもいつでも難しい操作を必要としない実行環境を検討してみた。

そこで、ありきたりだが、electronで動作させる。

これなら、単一なファイルとして実行環境を用意して、他人にvvvvを試す環境を提供できるのではないか。

vvvvjs.com にはいくつのサンプルがgithub上にある。
これをelectron上で実行させる。

forkしたソースはこちら。


事前準備
electronをインストールする。
 (当然、npmも必要)
electronはv0.32.2、vvvv.jsは1.1。
内包されているjqueryはjquery-1.8.2.min.jsでの動作を確認した。

Macでの実行方法
複雑な事は無く、electronをインストールしてpackage.json、jsファイル、htmlを書く。
ファイルを配置して、index.jsを指定する。

適当なターミナルからelectronを実行する。

githubには当然、ファイルが追加してあるので、git cloneしてelectronを実行する。

 $ electron examples/<examplesdirectory>/index.js
と実行する。

以下スクリーンショットは01_canvas_arcsを実行した結果。

当然、<examplesdirectory>の箇所は適宜変更してほしい。
ウィンドウが開かれ、デモ画面が見られる。

ソースの説明
難しい事はしていないく、 基本vvvvjsのサンプルを実行している。
ただindex.htmlはelectronに合わせ修正している。
あまり動作を確認していないが、electron以外にブラウザでindex.htmlを開いても確認できる様になっている。

これは参考にさせていただいた以下のブログに書いてある通り。

phiary.me

タネを明かせば、index.htmlを上記のブログを参考にして書き換えただけでelectoron上で動いた。


vvvv.jsは所詮、javascriptで動くもので、センサー関連との連動や、パフォーマンスなどは期待できない。(カメラなどはvvvvjsの実装次第)

しかしどのプラットフォームでも実行できる、完全なアプリケーションとして第三者に渡す事ができる点が大きなメリットを生むと思う。
また、複数のウインドを利用する事で、既存のvvvvと違った表現ができると思われる。

バイナリなどにする方法は改めて書きたい。

参考

http://phiary.me/electron-jquery-script-tag-load