<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>node-webkit &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/node-webkit/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Fri, 13 Dec 2013 01:46:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>&#034;node-webkit&#034; &#8211; Alphabetical Advent Calendar 2013</title>
		<link>https://blog.mach3.jp/2013/12/13/jaac-n-node-webkit.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 13 Dec 2013 01:46:17 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Advent Calendar 2013]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node-webkit]]></category>
		<category><![CDATA[node.js]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3724</guid>

					<description><![CDATA[&#8220;N&#8221; は node-webkit の &#8220;N&#8221;。 node-webkit node-webkit は、HTML + CSS + JavaScript でネイティブアプリケー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>&#8220;N&#8221; は node-webkit の &#8220;N&#8221;。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-sfUrlKvY_uc/UqR4jlYXMuI/AAAAAAAACYg/WulO3x5-j-Y/s400/ac2013-n.png" alt="N"/></figure>



<p></p>



<span id="more-3724"></span>



<h2 class="wp-block-heading">node-webkit</h2>



<p>node-webkit は、HTML + CSS + JavaScript でネイティブアプリケーションを作る事が出来る、 Chromiumをバンドルした node.js ベースのランタイムです。 Mac / Windows / Linux 用にそれぞれビルドする事が可能で、1セットのコードからクロスプラットフォームを実現出来ます。</p>



<p>Titanium Desktop や Adobe AIR 等と似たような存在ですが、 組み込んだ JavaScript からそのまま node.js のモジュールを利用出来るという大きなメリットがあります。 勿論 Titanium や AIR と同じように node-webkit 独自のAPIも提供されています。</p>



<h2 class="wp-block-heading">アプリケーションを作ってみる (Mac編)</h2>



<p>実際にシンプルなMac向けのアプリケーションを作ってみる事にします。</p>



<h3 class="wp-block-heading">下準備</h3>



<p>まず node-webkit をダウンロードしてインストールしておきましょう。 （ビルドする場合には同梱する事になるのですが、開発中はアプリケーションから開いた方が効率が良いと思います。）</p>



<p><a href="https://github.com/rogerwang/node-webkit#downloads">Download / rogerwang/node-webkit</a></p>



<p>上記URLの Download から、各環境向けにビルドしたバイナリが取得できます。 Mac 用のバイナリをダウンロードし、普段アプリケーションをインストールするのと同じように、 <strong>node-webkit.app</strong> をアプリケーションフォルダにコピーします。</p>



<h3 class="wp-block-heading">ファイル構成</h3>



<p>アプリケーションを立ち上げるのに最低限必要な物は次の要素です。</p>


<pre class="wp-block-code"><span><code class="hljs">app.nw/
├ package.json
└ application/
     └ index.html
</code></span></pre>


<ul class="wp-block-list">
<li>app.nw : アプリケーションのルートディレクトリ</li>



<li>package.json : マニフェストファイルとなります</li>



<li>application : アプリケーションのリソースを格納するディレクトリ</li>



<li>index.html : アプリケーション本体です</li>
</ul>



<h3 class="wp-block-heading">package.json</h3>



<p>package.json はアプリケーションの基本的な情報を書き込んでいきます。 このファイルが無かったり記法が間違っていたりするとアプリケーションは立ち上がりません。 中身は JSON で記述し、アプリケーションの名前やメインファイルのパス、ウィンドウの見た目などを指定する事ができます。</p>


<pre class="wp-block-code"><span><code class="hljs language-json">{
    <span class="hljs-attr">"name"</span>: <span class="hljs-string">"nw-hello"</span>,
    <span class="hljs-attr">"version"</span>: <span class="hljs-string">"0.0.0"</span>,
    <span class="hljs-attr">"main"</span>: <span class="hljs-string">"application/index.html"</span>,
    <span class="hljs-attr">"window"</span>: {
        <span class="hljs-attr">"width"</span>: <span class="hljs-number">800</span>,
        <span class="hljs-attr">"height"</span>: <span class="hljs-number">600</span>,
        <span class="hljs-attr">"toolbar"</span>: <span class="hljs-literal">false</span>
    }
}
</code></span></pre>


<p>&#8220;main&#8221; で指定したファイルがアプリケーションの本体となります。</p>



<p>設定項目はこの他に沢山用意されています。 項目の詳細については公式のwikiに詳しく記載されていますのでそちらをご覧ください。<br />
<a href="https://github.com/rogerwang/node-webkit/wiki/Manifest-format">Manifest format · rogerwang/node-webkit Wiki</a></p>



<h3 class="wp-block-heading">index.html</h3>



<p>メインファイルとなるHTMLでは、普段通りのHTML/CSS/JavaScriptを記述していけば良いです。 勿論 js や css ファイル等を外部リソースにしても構いません。</p>



<p>ここでは試しに node.js の機能を少し使ってみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
    Hello, <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"user-name"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
    <span class="hljs-keyword">var</span> cp = <span class="hljs-built_in">require</span>(<span class="hljs-string">"child_process"</span>);
    <span class="hljs-keyword">var</span> userName = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"user-name"</span>);
    cp.exec(<span class="hljs-string">"whoami"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e, out, error</span>)</span>{
        userName.innerHTML = out;
    });
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></span></pre>


<p>アプリケーションを立ち上げると &#8220;Hello, [ユーザー名]&#8221; と表示されます。 ユーザー名を取得する為の whoami コマンドの実行に node.js の <strong>child_process</strong> を使用しています。</p>



<h3 class="wp-block-heading">アプリケーションを立ち上げる</h3>



<p>はじめにインストールした node-webkit.app を使ってアプリケーションを立ち上げます。 ターミナルで <strong>open</strong> コマンドを使い、引数にアプリケーションのディレクトリを指定します。</p>


<pre class="wp-block-code"><span><code class="hljs">$ open -a node-webkit /the/path/to/app.nw
</code></span></pre>


<p>または、node-webkit をインストールしておくと *.nw に関連付けがされる様なので、 finder から app.nw を叩くか、直接 open コマンドでも開きます。</p>


<pre class="wp-block-code"><span><code class="hljs">$ open /the/path/to/app.nw
</code></span></pre>


<p>無事立ち上がりましたか？</p>



<h3 class="wp-block-heading">Windowsの場合はどうなるか</h3>



<p>Windowsの環境でも基本的な開発の仕方はかわりません。 アプリケーションの起動は、ダウンロードしたバイナリ（nw.exe）にアプリケーションディレクトリをドラッグドロップして行います。</p>



<p>（パスを通して引数にディレクトリを渡して起動する事も出来ますが、それをする人は稀でしょう）</p>



<h2 class="wp-block-heading">パッケージングする （Mac編）</h2>



<p>このままではこのアプリケーションは自分の環境でしか動かないので、 他のコンピューターでも使用出来るようにします。 といっても、Macの場合は恐ろしく簡単で、 node-webkit.app を複製してファイルを差し替えるだけで出来てしまいます。</p>



<p>node-webkit.app は finder で見るとファイルのように見えますが、 実際は次のような構造のディレクトリになっています。</p>


<pre class="wp-block-code"><span><code class="hljs">node-webkit.app/
└ Contents/
     ├ Frameworks/
     ├ Info.plist
     ├ MacOS/
     ├ PkgInfo
     └ Resources/
</code></span></pre>


<p>この <strong>Resources</strong> の中にアプリケーションのディレクトリを入れ、 node-webkit.app を <strong>hello.app</strong> のようにリネームしてあげれば完成です。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">hello.app/
└ Contents/
     ├ <span class="hljs-tag">&lt;<span class="hljs-name">省略</span>&gt;</span>
     └ Resources/
          └ app.nw/
               ├ package.json
               └ application/
</code></span></pre>


<p>こんな感じになりますね。</p>



<h2 class="wp-block-heading">パッケージングする （Windows編）</h2>



<p>Windows向けのアプリケーションは、Macのようにディレクトリのままリリースする方法と、 アプリケーションディレクトリを exe ファイルに結合する方法があります。</p>



<p>まずはWindows用のバイナリをダウンロードして zip を展開しておきましょう。これは共通して使用します。<br />
<a href="https://github.com/rogerwang/node-webkit#downloads">https://github.com/rogerwang/node-webkit#downloads</a></p>



<h3 class="wp-block-heading">ディレクトリのままパッケージングする</h3>



<p>Macのようにディレクトリのままコピーしてしまう方法も取ることが出来ます。 但し、package.json は nw.exe と同じディレクトリになければなりませんので、 アプリケーションディレクトリの中身をそのままコピーするイメージです。 （その為、アプリケーションのリソースはまとめて <strong>application/</strong> 等に格納しておくと管理が楽です）</p>


<pre class="wp-block-code"><span><code class="hljs">node-webkit-vX.X.X-win-ja32
├ credits.html
├ *.dll
├ nw.exe
├ nw.pak
├ nwsnapshot.exe
├ package.json
└ application/
     └ index.html
</code></span></pre>


<p>nw.exe はアプリケーションの名前にあわせてリネームしておくと良いでしょう。 ディレクトリ内の dll ファイルや pak ファイルは動作時に必要なので、まとめて同梱して配布しましょう。</p>



<h3 class="wp-block-heading">結合してパッケージングする</h3>



<p>まず、node-webkitのディレクトリの中に、アプリケーションディレクトリを zip 圧縮した物を格納します。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">node-webkit-vX</span><span class="hljs-selector-class">.X</span><span class="hljs-selector-class">.X-win-ja32</span>
├ <span class="hljs-selector-tag">nw</span><span class="hljs-selector-class">.exe</span>
├ &lt;省略&gt;
└ <span class="hljs-selector-tag">app</span><span class="hljs-selector-class">.zip</span>（<span class="hljs-selector-tag">zip</span>ファイル）
</code></span></pre>


<p>zip 圧縮する際に注意しなければならないのは、zip のルートに package.json がなければならない点です。 多くの圧縮ツールは圧縮時に同名フォルダを中に作ってその中に展開してしまいますが、その構成ではアプリケーションは正常に立ち上がりません。 Git CUI 等にある zip コマンドを使用した方が手っ取り早いかもしれませんね。</p>



<p>結合は、コマンドライン（コマンドプロンプト）で行います。</p>


<pre class="wp-block-code"><span><code class="hljs">&gt; copy /b nw.exe+app.zip hello-world.exe
</code></span></pre>


<p>Mac等の環境でシェルコマンドで行う事もできます。</p>


<pre class="wp-block-code"><span><code class="hljs">$ cat nw.exe app.zip &gt; hello-world.exe
</code></span></pre>


<p>これで完成です。古い nw.exe と app.zip は削除しておきましょう。</p>



<h2 class="wp-block-heading">参考資料</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/rogerwang/node-webkit">rogerwang/node-webkit</a></li>



<li><a href="https://github.com/rogerwang/node-webkit/wiki">Home · rogerwang/node-webkit Wiki</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>node-webkit でアプリを習作してみた話</title>
		<link>https://blog.mach3.jp/2013/11/21/try-node-webkit.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 21 Nov 2013 01:26:02 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node-webkit]]></category>
		<category><![CDATA[node.js]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3578</guid>

					<description><![CDATA[node-webkit というのは、HTML+CSS+JSでデスクトップアプリケーションが作れるランタイムです。 故あってこれでアプリを作ろうという企画がありましたので、 学習の為に簡単な物を作ってみました。 つくってみ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://github.com/rogerwang/node-webkit">node-webkit</a> というのは、HTML+CSS+JSでデスクトップアプリケーションが作れるランタイムです。 故あってこれでアプリを作ろうという企画がありましたので、 学習の為に簡単な物を作ってみました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-2ZIHlAMG8-Y/UozUUgYC-1I/AAAAAAAACP0/cTlFDcxj8eo/s400/20131121-00.png" alt="node-webkit でアプリを習作してみた話"/></figure>



<p></p>



<span id="more-3578"></span>



<h2 class="wp-block-heading">つくってみたもの</h2>



<h3 class="wp-block-heading"><a href="https://github.com/mach3/imaguria">Imaguria</a></h3>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://github.com/mach3/imaguria
</div></figure>



<p>画像を Data URI に変換する node-webkit 製の単機能アプリケーション。 画像をアプリケーション画面にドロップするか、 コピーした画像をアプリケーション画面にペーストすると、 Data URI が表示されます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-rHEZ-EgmaCA/UozUUvsFvSI/AAAAAAAACP4/avJQ2x1D4Zc/s500/20131121-01.png" alt="Imaguria"/></figure>



<p></p>



<p>Windows版とMac版をご用意しました。 あまり使い道が思いつきませんが、せっかく作ったのでもしよろしければ。</p>



<p>この内容ならWebアプリケーションで十分用を足せるので あまり良い題材とは言えないかもしれませんが、 なにせ手頃な題材が思いつかなかったので。</p>



<p>おかげでおおまかな開発の流れがわかりました。</p>



<h2 class="wp-block-heading">作ってみた感想</h2>



<p>node-webkit は chronium を内包しているので、Webの技術でデスクトップアプリケーションが作れます。 Adobe AIR や Titanium Desktop 等に似た存在ですね。</p>



<p>強みの一つは、独自のAPIの他に node.js をフロントのJavaScriptから利用できる点で、 <strong>require(&#8230;)</strong> 等してモジュールを利用する事ができます。</p>



<p>node.js がそうであるように、Win / Mac / Linux のいずれでも動くマルチプラットフォームのアプリケーションが開発出来ます。 どの環境でも chronium がベースになるので、 Web開発者が常に悩まされ続けてきたクロスブラウザなどという物に縛られずに新しい技術を使い放題です。 これは結構書いていて爽快ですね。</p>



<p>node.js でローカルのファイルシステムを扱える他、Webストレージや Web SQLなどもサポートしている様です。</p>



<p>ちなみに、開発はMacがダントツでやり易かったです。</p>



<h2 class="wp-block-heading">参考URL</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/rogerwang/node-webkit">rogerwang/node-webkit</a></li>



<li><a href="https://github.com/rogerwang/node-webkit/wiki">Home · rogerwang/node-webkit Wiki</a></li>
</ul>



<h2 class="wp-block-heading">まとめ</h2>



<p>node-webkit でのアプリの作り方はまた別の機会にします。</p>



<p>Webの技術でデスクトップアプリケーションを作るための選択肢が一つ増えました。喜ばしいことです。 これとは別に、Windows8のストアアプリもJavaScriptで開発出来る様ですよ。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
