<?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/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>Cordova &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/cordova/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>Electron、React Native、Cordova…Web技術でネイティブアプリ開発する方法を、アシアル田中さんに聞いた</title>
		<link>/shumpei-shiraishi/24253/</link>
		<pubDate>Wed, 20 Sep 2017 01:00:22 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Electron]]></category>
		<category><![CDATA[React Native]]></category>
		<category><![CDATA[アシアル]]></category>
		<category><![CDATA[ネイティブアプリ]]></category>

		<guid isPermaLink="false">/?p=24253</guid>
		<description><![CDATA[連載： HTML5 Conference 2017特集 (7)こんにちは、編集長の白石です。 この記事は、9月24日に開催されるHTML5 Conference 2017に登壇するエキスパートに、予定しているセッションの...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/html5-conf2017/" class="series-457" title="HTML5 Conference 2017特集" data-wpel-link="internal">HTML5 Conference 2017特集</a> (7)</div><p>こんにちは、編集長の白石です。</p>

<p>この記事は、9月24日に開催される<a href="http://events.html5j.org/conference/2017/9/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Conference 2017</a>に登壇するエキスパートに、予定しているセッションのトピックを中心に、様々な技術的なお話を伺おうというものです。セッションの内容をより深く理解する手助けになるだけでなく、本記事単体でも面白く読んでいただけることを目指しています。</p>

<p>今回お話を伺ったのは、アシアル株式会社 代表取締役社長の田中正裕さんです。</p>

<p><img src="/wp-content/uploads/2017/09/DSC05050.jpg" alt="" width="640" height="416" class="alignnone size-full wp-image-24312" srcset="/wp-content/uploads/2017/09/DSC05050.jpg 640w, /wp-content/uploads/2017/09/DSC05050-300x195.jpg 300w, /wp-content/uploads/2017/09/DSC05050-207x135.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>田中さんのセッションは「<a href="http://events.html5j.org/conference/2017/9/session/#h3" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web技術でネイティブアプリを開発する話</a>」（ホール 14:20-15:00）です。
（現在<a href="https://html5j.connpass.com/event/64992/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Conference</a>は定員オーバーの状態ですが、無料イベントということもあってキャンセルも多めに出るらしいので、あきらめずにキャンセル待ちすることをお勧めします！）</p>

<h2>Webとネイティブ境目が曖昧になってきた</h2>

<p><b class="speaker">白石:</b> 田中さんは、ずっとWebとネイティブのハイブリッドアプリの分野で活躍してらっしゃいます。そんな田中さんから見て、最近のWebやモバイルアプリ開発についてはどのように見ていらっしゃいますか？</p>

<p><b class="speaker">田中:</b> はい、まずはそもそも<strong>最近Webがネイティブにかなり近づいてきた</strong>な、と思っています。</p>

<p>例えば<strong>実現できる機能</strong>。以前はWebとネイティブはできることに差がありましたが、最近はWebにできることがすごく増えてきています。Service Workerの登場で、以前はWebでは実現が難しかった、プッシュ通知やバックグラウンド処理なども可能になってきている。</p>

<p>ネイティブは<strong>コードがバイナリにコンパイルされて高速に動く</strong>、という点でも、Web Assemblyの登場により、今後は目立ったディスアドバンテージではなくなっていくでしょう。そもそも、端末速度の向上とブラウザエンジンの高速化で、速度差自体が目立たなくなってきています。</p>

<p><b class="speaker">白石:</b> Web Assemblyは期待ですよね。そのうち、フルWeb AssemblyのWebアプリフレームワークが出たりするのではないか、と期待しています。</p>

<p><b class="speaker">田中:</b> きっと出るでしょうね。<strong>iOS 11がWeb Assemblyに対応したことも、すごく大きな意味を持っていると思います</strong>。</p>

<p>他には、<strong>アプリの起動方法</strong>も違いとしてよく挙げられていましたが、Webはブラウザからアクセスするもので、ネイティブはインストールして使用するもの、という区分けも最近意味がなくなってきました。例えばProgressive Web Appsなんかはその象徴ですよね。ブラウザがWebアプリを端末にインストールしたら、あとはネイティブアプリと遜色なく動作する。</p>

<p><img src="/wp-content/uploads/2017/09/cfcaf6eeddc91267089972517eadeac9.jpg" alt="" width="640" height="413" class="alignnone size-full wp-image-24313" srcset="/wp-content/uploads/2017/09/cfcaf6eeddc91267089972517eadeac9.jpg 640w, /wp-content/uploads/2017/09/cfcaf6eeddc91267089972517eadeac9-300x194.jpg 300w, /wp-content/uploads/2017/09/cfcaf6eeddc91267089972517eadeac9-207x134.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> Safariには昔から、ホームスクリーンにWebサイトへのブックマークを追加する機能がありますが、それがもっとスマートな形で実現しそうですね。</p>

<p><b class="speaker">田中:</b> そして、<strong>Web技術を使ってアプリを作る方法自体が今や多様化していて</strong>、以前のような「Webかネイティブか」という単純な二分法じゃなくなっているんですよね。</p>

<h2>Electron</h2>

<p><b class="speaker">白石:</b> はい、その多様化したアプリ開発手法を本日は伺いに参りました。一つ一つ教えてください。</p>

<p><b class="speaker">田中:</b> カンファレンスのセッションではコード例を挙げながらお話しようと思いますが、今日は口頭による説明で進めましょう。</p>

<p>ではまず最初に、<strong><a href="https://electron.atom.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Electron</a></strong>の紹介からいきたいと思います。クロスプラットフォームなデスクトップアプリを開発するためのフレームワークで、元々はGitHubが開発した「Atom Shell」というツールでした。</p>

<p><img src="/wp-content/uploads/2017/09/b309412fccac651c5527b1f2b991dac3-640x519.png" alt="" width="640" height="519" class="aligncenter size-large wp-image-24255" srcset="/wp-content/uploads/2017/09/b309412fccac651c5527b1f2b991dac3-640x519.png 640w, /wp-content/uploads/2017/09/b309412fccac651c5527b1f2b991dac3-300x243.png 300w, /wp-content/uploads/2017/09/b309412fccac651c5527b1f2b991dac3-207x168.png 207w, /wp-content/uploads/2017/09/b309412fccac651c5527b1f2b991dac3.png 646w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">田中:</b> 特徴としては、Chromiumを組み込んだブラウザレイヤーと、Node.jsによるネイティブレイヤーの<strong>二層構造になっている</strong>という点が挙げられるかと思います。WebViewはもちろん、Node.jsもクロスプラットフォーム性の非常に高いプラットフォームですので、Electronを用いると、クロスプラットフォームなアプリを簡単に開発することができます。</p>

<p><b class="speaker">白石:</b> 著名なところでいうと、SlackはElectronで書かれているんですよね。</p>

<p><b class="speaker">田中:</b> そうです。Slack、Visual Studio Code、そしてもちろんGitHub製のエディタであるAtomと、<strong>著名なベンダーもElectronの採用には積極的</strong>ですね。</p>

<p><b class="speaker">白石:</b> Electronの将来は明るそうですね。Electronの欠点とかはあるんでしょうか？</p>

<p><b class="speaker">田中:</b> WebViewの上で動作するので、やはりパフォーマンスやメモリ使用量の面では不利になりますね。ただ実際には、PCはモバイルに比べると速度面で優位ですので、そこまで気にするところでもありません。</p>

<p>さっき挙げた例で言うと、SlackやAtomは重いなあ…と感じることが多いですが、Visual Studio Codeはすごく軽快に動作します。なんでElectron開発元が開発している<a href="https://pavelfatin.com/typing-with-pleasure/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Atomがあんなに重い</a>のか(笑)。VS Codeの軽快さは、相当な技術力のなせる業なのかもしれません。</p>

<p><b class="speaker">白石:</b> さすがマイクロソフトってところですね。</p>

<h2>Cordova</h2>

<p><b class="speaker">田中:</b> では次は<strong><a href="https://cordova.apache.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cordova</a></strong>についてですが、これは説明の必要もないくらい有名なフレームワークですね。Electronのモバイル版と言ってもいいかなと。WebViewと、ネイティブ機能を利用するためのCordovaプラグインという「二層構造」であるところも同様です。</p>

<p><img src="/wp-content/uploads/2017/09/ca4059d14ea5ff949406ad69e4dcd9d3-640x590.png" alt="" width="640" height="590" class="aligncenter size-large wp-image-24256" srcset="/wp-content/uploads/2017/09/ca4059d14ea5ff949406ad69e4dcd9d3.png 640w, /wp-content/uploads/2017/09/ca4059d14ea5ff949406ad69e4dcd9d3-300x277.png 300w, /wp-content/uploads/2017/09/ca4059d14ea5ff949406ad69e4dcd9d3-207x191.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>Electronと違うところは、よりベースとなるOSの依存度が高いというところが挙げられると思います。WebViewは基本的にOSネイティブのものを使用しますし、Cordovaプラグインは通常ネイティブの開発言語で開発します。（Electronの場合はWebViewは組み込みのChromium、ネイティブ部分はNode.js）</p>

<p><b class="speaker">白石:</b> 田中さんは<a href="https://ja.monaca.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>の開発者でもあり、Cordovaのことは誰よりも知りつくしていらっしゃるかと思いますが、利点や欠点を教えていただけますか？</p>

<p><b class="speaker">田中:</b> 利点はやはり<strong>クロスプラットフォーム性</strong>です。複数のモバイルOS上で動作するアプリを、ほぼ1ソースで書くことができます。</p>

<p>欠点は昔から言われているように、パフォーマンスが遅いという点。ただ先程も申し上げたように、端末もブラウザも速度が向上していて、<strong>「遅さ」はあまり気にならないレベルになっていると思います</strong>。少なくとも、Monacaのユーザーに限って言うと、ほとんどの方が問題ないとおっしゃってますね。</p>

<p><b class="speaker">白石:</b> ぼくも、もうそういう段階なんじゃないかな…とは思っていたのですが、田中さんに言われると説得力が違いますね。</p>

<p><b class="speaker">田中:</b> 今では、Cordovaを使っていても、ユーザーが気付くこともほとんどないと思います。例えば、◯◯（某ECアプリ）も実はCordovaを使っているようなんです。</p>

<p><b class="speaker">白石:</b> えっ！あの◯◯が！ぼくもよく使っていますが、全然気づきませんでした。</p>

<p><b class="speaker">田中:</b> そうなんです。意外と広がっているんですよね。今後もその存在感は増していく…と言ってもいいんじゃないでしょうか。</p>

<h2>React Native</h2>

<p><b class="speaker">田中:</b> では次は<strong><a href="https://facebook.github.io/react-native/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">React Native</a></strong>です。Facebookが作っているモバイルアプリ用のフレームワークで、一言で言えば<strong>Reactを使ってモバイルアプリを作るためのツール</strong>ですね。Reactの仮想DOMを、ネイティブのUIコンポーネントを利用してレンダリングするものです。</p>

<p><img src="/wp-content/uploads/2017/09/3b017fa494b999834a7b7f8fcc067744-640x489.png" alt="" width="640" height="489" class="aligncenter size-large wp-image-24257" srcset="/wp-content/uploads/2017/09/3b017fa494b999834a7b7f8fcc067744-640x489.png 640w, /wp-content/uploads/2017/09/3b017fa494b999834a7b7f8fcc067744-300x229.png 300w, /wp-content/uploads/2017/09/3b017fa494b999834a7b7f8fcc067744-207x158.png 207w, /wp-content/uploads/2017/09/3b017fa494b999834a7b7f8fcc067744.png 644w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> React Nativeは最近人気急上昇中ですよね。その理由は何なんでしょうか？</p>

<p><b class="speaker">田中:</b> React自体に人気があるということと、そしてFacebookが自ら使用しているのが大きいですね。React Nativeは、元々Instagramのチームが作っていたそうです。</p>

<p><b class="speaker">白石:</b> React Nativeの利点や欠点はなんでしょうか。</p>

<p><b class="speaker">田中:</b> WebViewの上で動作するのではなく、<strong>ネイティブに動作するアプリが作れる</strong>というのは大きな利点ですね。パフォーマンス上の問題も生じにくいし、ネイティブのルック＆フィールをそのまま利用できる。</p>

<p>また、<strong>UIスレッドとJavaScriptのUIスレッドが最初から分かれている</strong>のも利点だと思います。JavaScriptの処理がUIスレッドの動作を阻害しないので、UIが60fpsを維持しやすい。</p>

<p><img src="/wp-content/uploads/2017/09/0d1fc25917d5033de13db1bb5ff53ac5.jpg" alt="" width="640" height="415" class="alignnone size-full wp-image-24315" srcset="/wp-content/uploads/2017/09/0d1fc25917d5033de13db1bb5ff53ac5.jpg 640w, /wp-content/uploads/2017/09/0d1fc25917d5033de13db1bb5ff53ac5-300x195.jpg 300w, /wp-content/uploads/2017/09/0d1fc25917d5033de13db1bb5ff53ac5-207x134.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> では、React Nativeには欠点といえるものはありますか？</p>

<p><b class="speaker">田中:</b> 作ってみると分かるのですが、<strong>結構作り方に癖がある</strong>んですよね。それに慣れるのが少し大変かもしれません。コードの共通化は促進されるものの、クロスプラットフォームじゃないというところも、議論が分かれるところです。</p>

<p><b class="speaker">白石:</b> Facebookは「Learn Once Write Anywhere」（一度学べばどこでも書ける）と言っていますね。</p>

<p><b class="speaker">田中:</b> そうですね。クロスプラットフォームは最初から目指していない。そこもCordovaとは大きな違いです。</p>

<p>CordovaはWebそのものですから、ブラウザを使って開発し、ブラウザの機能が増えてネイティブと遜色なくなれば、<strong>なくなって当然のものという前提でした</strong>。React Nativeは、ネイティブアプリをJavaScriptで作るという発想です。なので、<strong>開発にはネイティブの知識が必要になります</strong>。JavaScriptを使用するので、開発体験自体はWebに近いものがあるのですが、やはりHTMLやCSSを使ったUI開発とは別物です。</p>

<h2>NativeScriptとWeex</h2>

<p><b class="speaker">田中:</b> あとはNativeScript、あとWeexというフレームワークを紹介していこうと思います。</p>

<p><b class="speaker">白石:</b> ここらへんまで来ると、聞いたことないという人も多そうですね〜。</p>

<p><b class="speaker">田中:</b> <strong><a href="https://www.nativescript.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">NativeScript</a></strong>は、ネイティブで動作するアプリをJavaScriptで書けるフレームワークです。「React NativeからReactを抜いたもの」と考えてもいいでしょう。</p>

<p><img src="/wp-content/uploads/2017/09/8f838a4f8fe2ceccfa26523dee3df81f-640x476.png" alt="" width="640" height="476" class="aligncenter size-large wp-image-24258" srcset="/wp-content/uploads/2017/09/8f838a4f8fe2ceccfa26523dee3df81f-640x476.png 640w, /wp-content/uploads/2017/09/8f838a4f8fe2ceccfa26523dee3df81f-300x223.png 300w, /wp-content/uploads/2017/09/8f838a4f8fe2ceccfa26523dee3df81f-207x154.png 207w, /wp-content/uploads/2017/09/8f838a4f8fe2ceccfa26523dee3df81f.png 734w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> ぼくもNativeScriptの名前は聞いたことがあったのですが、Angularの界隈で耳にしました。</p>

<p><b class="speaker">田中:</b> そう、<strong>Angularと組み合わせて使える</strong>というのを一つのウリにしています。Angularのイベントとかにも積極的に出ていて、Angularチームとの関係は良好そうです。</p>

<p><b class="speaker">白石:</b> 利点や欠点を教えていただけますか？</p>

<p><b class="speaker">田中:</b> 利点はやはりネイティブのパフォーマンスで動くこと、そしてAngularと組み合わせて使えることでしょうね。ただ、「組み合わせて使える」と言っても、React Nativeほどスムーズには使えないのが悩ましいところですが。</p>

<p>欠点は…なんといっても<strong>ユーザーが少ない</strong>ことですね。採用事例とかも探したのですが、今のところ見つかっていない状態です。<a href="https://github.com/NativeScript/NativeScript" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GitHub上ではかなりの人気なのですが</a> （筆者注: 2017/9/16時点で11,076のスターを集めている）。</p>

<p>あと、開発していたTelerikという会社が<a href="https://www.progress.com/company" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Progress</a>という大企業に買収されてしまって。その後ちょっと開発が停滞してしまっているように見えるんですよね。それもちょっと心配なところです。</p>

<p><b class="speaker">白石:</b> 買収あるあるですね(笑)。</p>

<p><b class="speaker">田中:</b> 最後は<strong><a href="https://weex.incubator.apache.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Weex</a></strong>をご紹介しましょう。</p>

<p>これはVue.jsを使ってネイティブアプリを作れるというフレームワークです。React NativeのVue版と言っても差し支えないかと思います。</p>

<p><img src="/wp-content/uploads/2017/09/47fb8c8b3ebd64a3c5bd860933b30c1e-640x561.png" alt="" width="640" height="561" class="aligncenter size-large wp-image-24259" srcset="/wp-content/uploads/2017/09/47fb8c8b3ebd64a3c5bd860933b30c1e.png 640w, /wp-content/uploads/2017/09/47fb8c8b3ebd64a3c5bd860933b30c1e-300x263.png 300w, /wp-content/uploads/2017/09/47fb8c8b3ebd64a3c5bd860933b30c1e-207x181.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> では、利点もReact Nativeなどと同様に、ネイティブの速度で動く、ネイティブのUIコンポーネントが使えると言ったところですよね、きっと。</p>

<p><b class="speaker">田中:</b> はい、あと面白いのは、これってアリババが開発に携わっているんです。なので、実は中国ではすでに事例が多いそうなのですよね（筆者注: <a href="https://weex.incubator.apache.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Weexのサイト</a>に、「Who uses it」というセクションで採用企業の一覧がある）。</p>

<p><b class="speaker">白石:</b> おお、それはNativeScriptとは違うところですね。アリババが付いているとなると、開発リソースも割けそうだし、事例もどんどん増えていきそうです（筆者注: 元々<a href="https://github.com/alibaba/weex" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">アリババのGitHubリポジトリ</a>上で開発されていたが、Apache Software Foudationに寄贈された）。</p>

<p><b class="speaker">田中:</b> Vue自体もすごく人気がありますしね。Vueに関心のある方にとっては、注目に値するプロダクトだと思います。</p>

<h2>Web技術を用いたネイティブアプリ開発は広まるか？</h2>

<p><b class="speaker">白石:</b> では最後にまとめとして、Web技術を使ってネイティブアプリを作るという手法は、今後も広がっていくのかどうかをお聞きしたいです。</p>

<p><b class="speaker">田中:</b> そうですね、今回取り上げた各プロダクトのnpmのダウンロード数とかを見ると、右肩上がりではあるんです。ただ、その事実を以て、Web技術によるアプリ開発の人気が高まっていると言い切れるかは微妙です。アプリ開発市場そのものも、まだまだ拡大していっていますからね。</p>

<p>個人的には、Web技術によるアプリ開発が、ネイティブの開発手法よりも人気が上回るようなことにはならないと思います。OSの開発元がオフィシャルに推進しているわけでも、何かを保証しているわけでもありませんし。これまでiOSやAndroidの開発者を雇って、アプリ開発を行っていたような企業が、Cordovaを選ぶようなことは、今後もあまり起きないと考えています。</p>

<p><img src="/wp-content/uploads/2017/09/cd1aae51a0afb4f8d39b32db9d75c7fe.jpg" alt="" width="640" height="425" class="alignnone size-full wp-image-24314" srcset="/wp-content/uploads/2017/09/cd1aae51a0afb4f8d39b32db9d75c7fe.jpg 640w, /wp-content/uploads/2017/09/cd1aae51a0afb4f8d39b32db9d75c7fe-300x199.jpg 300w, /wp-content/uploads/2017/09/cd1aae51a0afb4f8d39b32db9d75c7fe-207x137.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker">白石:</b> なるほど、冷静なご意見。</p>

<p><b class="speaker">田中:</b> ただ一つだけ言えるのは、<strong>Web技術者による、フロントエンドのアプリケーション開発が今後も伸びていく</strong>のは間違いないということです。それが純粋なWeb技術だけを用いてProgressive Web Appsを作るのか、先程紹介した技術のどれかを利用してモバイルアプリを作るのかについては、あまり変わらないと思います。</p>

<p>だから、<strong>元々Webをやっていた会社にとっては、既存のスキルセットや資産を使って、やれることの選択肢が増えてきているのは間違いありません</strong>。</p>

<p>Web技術の進化も、Webブラウザによる実装もまだまだ続いていますし、Webの未来にはまだまだ期待しています。</p>

<p><b class="speaker">白石:</b> よくわかりました。田中さん、今日はWeb技術を使ってネイティブアプリを作るテクノロジーについて、幅広く教えていただきありがとうございました。大変勉強になりました。</p>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Conference 2017特集]]></series:name>
	</item>
		<item>
		<title>Cordovaは今やMicrosoftが主導！？最新状況と基本を素早く再チェック！</title>
		<link>/masahiro/20562/</link>
		<pubDate>Wed, 07 Sep 2016 00:31:55 +0000</pubDate>
		<dc:creator><![CDATA[田中 正裕]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>

		<guid isPermaLink="false">/?p=20562</guid>
		<description><![CDATA[連載： Web技術でアプリ開発2016 (2)Web技術でアプリ開発2016特集・第二弾は、Cordovaの最新状況と基本をご紹介。その歴史からプラットフォーム／ライブラリの特徴、ネイティブな機能を呼び出す方法などを解説...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/web-based-apps-2016/" class="series-391" title="Web技術でアプリ開発2016" data-wpel-link="internal">Web技術でアプリ開発2016</a> (2)</div><p>Web技術でアプリ開発2016特集・第二弾は、Cordovaの最新状況と基本をご紹介。その歴史からプラットフォーム／ライブラリの特徴、ネイティブな機能を呼び出す方法などを解説していきます。</p>

<h1>概要</h1>

<p><a href="https://cordova.apache.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cordova</a>は<a href="http://phonegap.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap</a>と呼ばれていた時代を含めると、8年以上の歴史があります。PhoneGapが産声を上げたのは2008年、Nitobi社がハッカソンでPhoneGapを発表しました。オープンソースで提供されていたPhoneGapは注目され、2011年にはNitobiはAdobe社に買収されます。その結果、オープンソースで提供されているフレームワーク（PhoneGap本体）はCordovaと名前がつけられ、Apache Foundationの仲間入りします。</p>

<p>その結果、Adobeだけでなく、GoogleやMicrosoft、IBM、インテルといった会社がCordovaを支えています。現在、コミュニティをリードしているのはMicrosoftで、Cordovaのコア機能の実装だけでなく、開発者向けの製品へのCordova対応を進めています。</p>

<p>PhoneGapは、Adobe Creative Cloudのいちプロダクトとして、Cordovaをベースとした有償の<a href="https://build.phonegap.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ビルドツールを提供している</a>ほか、エンタープライズ製品も発表されています。</p>

<h1>Hello, World</h1>

<p>Cordovaはクロスプラットフォームではありますが、ビルドできるアプリはビルド環境に依存します。</p>

<ul>
<li>macOS: iOS, Android</li>
<li>Windows: Windows, Android</li>
<li>Linux: Android</li>
</ul>

<p>ローカル環境に依存してしまうため、クラウド環境を使って複数のOSに対応させるソリューションが各社から提供されています。詳しくは<a href="https://build.phonegap.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap Build</a>や<a href="https://ja.monaca.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>を参照してください。</p>

<p>Cordovaアプリの開発には様々なオプションがあります。エディタとしては、MicrosoftのVisual StudioやVS Code、JetBrainsのWebStormなど、Web開発と親和性の高いツールを選ぶと良いでしょう。</p>

<p>Cordovaがオフィシャルに提供しているツールとしてCordova CLIがあります。これを使うと、コマンドラインツールでPC上でのシミュレートからビルドまで行うことができます。Cordova CLIはNode.jsを入れた後、下記のようにインストールします。なお、Cordova CLIはNode.jsバージョン4以上に対応しています。</p>

<p></p><pre class="crayon-plain-tag">$ npm install -g cordova</pre><p></p>

<p>インストールしたらcordovaコマンドが使えるようになります。早速アプリを作成するために、cordova createコマンドを実行します。</p>

<p></p><pre class="crayon-plain-tag">$ cordova create helloworld
$ cd helloworld
$ cordova -v
6.3.1</pre><p></p>

<p>これでプロジェクトが作成されました。次にプラットフォームを追加します。cordova platformコマンドを使用し、引数にはプラットフォーム名（android、ios、windows等）を指定します。</p>

<p></p><pre class="crayon-plain-tag">$ cordova platform add android (ios, windows)</pre><p></p>

<p>ブラウザーでプレビューするには、cordova serveコマンドを使います。</p>

<p></p><pre class="crayon-plain-tag">$ cordova serve</pre><p></p>

<p>ブラウザーを開き、<a href="http://localhost:8000/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://localhost:8000/</a>にアクセスします。下記の画面が表示されたら成功です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/08/cordova-serve.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/08/cordova-serve-186x300.png" alt="cordova-serve" width="186" height="300" class="aligncenter size-medium wp-image-20572" srcset="/wp-content/uploads/2016/08/cordova-serve-186x300.png 186w, /wp-content/uploads/2016/08/cordova-serve-129x207.png 129w, /wp-content/uploads/2016/08/cordova-serve.png 385w" sizes="(max-width: 186px) 100vw, 186px" /></a></p>

<p>実際のアプリを表示するには、プラットフォーム名をクリックします。なお、ブラウザではネイティブAPIとの連携ができないため、ブラウザー上で変なエラーメッセージ等が表示される可能性があります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/08/cordova-deviceready.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/08/cordova-deviceready-186x300.png" alt="cordova-deviceready" width="186" height="300" class="aligncenter size-medium wp-image-20573" srcset="/wp-content/uploads/2016/08/cordova-deviceready-186x300.png 186w, /wp-content/uploads/2016/08/cordova-deviceready-129x207.png 129w, /wp-content/uploads/2016/08/cordova-deviceready.png 385w" sizes="(max-width: 186px) 100vw, 186px" /></a></p>

<p>最後にビルドを行ってみましょう。USBで接続した端末に実行するにはemulateを、パッケージを作るにはbuildコマンドを使用します。</p>

<p></p><pre class="crayon-plain-tag">$ # エミュレータを起動します
$ cordova emulate android (ios, windows)
$ # ビルドを実行します
$ cordova build android (ios, windows)</pre><p></p>

<h1>プラットフォーム／ライブラリの特徴</h1>

<table>
<thead>
<tr>
  <th>項目</th>
  <th>説明</th>
</tr>
</thead>
<tbody>
<tr>
  <td>対応プラットフォーム</td>
  <td>iOS, Android, Windows, Firefox OS, Ubuntu&#8230;</td>
</tr>
<tr>
  <td>コードベースは（ほぼ）完全に統一できるか？</td>
  <td>統一できる</td>
</tr>
<tr>
  <td>UIを記述する言語</td>
  <td>HTML、CSS、JavaScript</td>
</tr>
<tr>
  <td>UIはネイティブか、Webか</td>
  <td>WebView上で実行される</td>
</tr>
<tr>
  <td>パフォーマンス</td>
  <td>WebViewのためネイティブより遅い</td>
</tr>
<tr>
  <td>ネイティブな機能を呼び出せるか？</td>
  <td>Cordovaプラグインを通じて呼び出せる</td>
</tr>
</tbody>
</table>

<p>以下に上の表を補足します。</p>

<h2>サポートするプラットフォーム</h2>

<ul>
<li>iOS</li>
<li>Android</li>
<li>Windows (Windows Phone, Windows 10)</li>
</ul>

<p>以前から数多くのモバイルOSに対応しており、上記以外にもBlackberryやTizen、Firefox OSなどもラインアップに加わっています。アンオフィシャルなものでは、<a href="https://github.com/stevengill/cordova-electron" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Electron対応</a>もあります。</p>

<h2>コードベースは完全に統一できるのか？</h2>

<p>作り方次第ではありますが、基本的には完全に統一できます。ただし、プラットフォームごとにブラウザーエンジンが異なるため、その癖を理解しておく必要があります。</p>

<p>iOSはWebKit、AndroidはWebKitから派生したBlinkが使われるため、近い挙動となります。一方Windowsアプリでは、セキュリティの理由でInnerHTMLやインラインJavaScriptが禁止されているなど、細かい挙動に違いがあります。</p>

<p>また、CSSのプロパティやJavaScriptのサポート度合いもブラウザ依存です。その辺りに気をつけて確認をしながら開発を行うことが求められます。</p>

<p>一方、ネイティブ側は各OSごとの実装依存となります。プラットフォームごとの注意点について、CordovaのAPIドキュメントに記述されています。</p>

<h2>UIを記述する言語</h2>

<p>WebView上にUIを表現します。そのためWebサイトやWebアプリと同様、HTML、CSS、JavaScriptの組み合わせで記述していきます。</p>

<p>ただしモバイルUIにゼロから対応していくのは大変です。そのため、<a href="http://ja.onsen.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen UI</a>や<a href="http://ionicframework.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ionic</a>といったオープンソースのUIライブラリーが多用されます。</p>

<h2>パフォーマンス</h2>

<p>WebView上で動作させることから、ネイティブと比べてボトルネックが発生しやすいです。ただし端末スペック向上やブラウザの最適化などのおかげで、昔と比べるとはるかにスムーズに動作します。</p>

<p>一方で、パフォーマンスチューニングの要であるブラウザ上での高速化テクニックに乏しいという事情もあります。Service WorkerやWebAseemblyといった技術に期待したいところです。</p>

<h2>UIはネイティブか、Webか</h2>

<p>WebView上で開発しますので、ブラウザの持つHTML、CSS、JavaScriptを使用します。</p>

<p>ネイティブUIを実装する取り組みも行われており、Microsoftからは<a href="http://microsoft.github.io/ace/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Project Ace</a>というプロジェクトが立ち上がりました。これを使うと、パフォーマンス向上だけでなく、WebView上にネイティブウィジェットを配置したり、WebViewをネイティブUIの中に組み込むといった事が可能になります。</p>

<h2>ネイティブな機能を呼び出す方法</h2>

<p>Webレイヤーからネイティブレイヤーに、非同期的にネイティブAPIを呼び出す仕組みを備えています。SwiftやJavaで記述する必要がありますが、JavaScript APIで実現できないOSやデバイスの機能を呼び出すことができます。</p>

<p>また、Cordovaプラグイン仕組みが提供されており、npmには様々なプラグインが<a href="https://www.npmjs.com/browse/keyword/ecosystem:cordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">公開されています</a>。プラグインを組み込むにはcordova pluginコマンドを実行します。</p>

<p></p><pre class="crayon-plain-tag">$ cordova plugin add cordova-plugin-camera</pre><p></p>

<p>上記の例では、カメラを制御するプラグインを組み込んでいます。これで、下記のようにしてカメラ画像の撮影が可能になります。</p>

<p></p><pre class="crayon-plain-tag">navigator.camera.getPicture(onSuccess, onFail, {
  quality: 50,
  destinationType: Camera.DestinationType.FILE_URI
});
function onSuccess(imageURI) {
  var image = document.getElementById('myImage');
  image.src = imageURI;
}
function onFail(message) {
  alert(message);
}</pre><p></p>

<h1>まとめ</h1>

<p>かつてPhoneGapと呼ばれていた頃と異なり、WebやモバイルOSの進化の流れを受け、だいぶ様変わりしました。一方で、一昔前はアーリーステージにつきものの仕様変更や互換性問題がありましたが、現在では比較的落ち着き、良くも悪くも枯れてきたように思います。</p>

<p>Cordovaの強みは、Web技術をそのまま生かすことでのエンジニア層の厚さと、幅広く使われていることによるエコシステムの大きさではないでしょうか。一度使ったことがある方も、そうでない方も、最新のCordovaを試してみてはいかがでしょうか。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Web技術でアプリ開発2016]]></series:name>
	</item>
		<item>
		<title>進化の早いMicrosoft EdgeとWebプラットフォーム ～「de:code 2016」セッションレポート ～</title>
		<link>/albatrosary/19173/</link>
		<pubDate>Thu, 26 May 2016 06:00:50 +0000</pubDate>
		<dc:creator><![CDATA[佐川 夫美雄]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Edge]]></category>
		<category><![CDATA[de:code]]></category>

		<guid isPermaLink="false">/?p=19173</guid>
		<description><![CDATA[連載： de:code 2016 特集 (5)エキスパートの佐川が、「de:code2016」のセッションレポート、日本マイクロソフトエバンジェリスト・物江修氏の「Developing on the Edge. 〜 We...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/ms-decode2016/" class="series-371" title="de:code 2016 特集" data-wpel-link="internal">de:code 2016 特集</a> (5)</div><p>エキスパートの佐川が、「de:code2016」のセッションレポート、日本マイクロソフトエバンジェリスト・物江修氏の「Developing on the Edge. 〜 WebプラットフォームとCordova 〜」をご紹介します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/DSC03849.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/DSC03849-640x480.jpg" alt="DSC03849" width="640" height="480" class="alignnone size-large wp-image-19176" srcset="/wp-content/uploads/2016/05/DSC03849.jpg 640w, /wp-content/uploads/2016/05/DSC03849-300x225.jpg 300w, /wp-content/uploads/2016/05/DSC03849-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>今年の夏、MicrosoftはWindows 10の大型アップデート「Windows 10 Anniversary Update」を予定している。このアップデートで「Microsoft Edge」にも数多くのAPIが追加される。このセッションでは新しく追加されるAPIの紹介と、それらを利用したUniversal Windows Platform(以下、UWPと記載する)、Cordovaアプリケーションの開発ポイントを紹介する。</p>

<ul>
<li>Microsoft EdgeとWindows10のWebプラットフォーム</li>
<li>EdgeHTMLの新機能とこれからの方向性</li>
<li>Webプラットフォームを利用したアプリケーション開発</li>
</ul>

<h1>Microsoft EdgeとWindows10のWebプラットフォーム</h1>

<p>初めに、Microsoft EdgeとWindows 10で「Webプラットフォーム」と呼んでいる事柄についてみていく。すでにご存じのとおり、Windows10には、2つのマイクロソフト製のブラウザが含まれている。Windows10から新しく採用された「Microsoft Edge（以降、Edgeと記載する）」と「Internet Explorer11」である。</p>

<p>Webブラウザが2つ入っている理由は、以下のとおり。</p>

<ul>
<li>Edgeは相互運用性を重視し、最新のWebコンテンツをブラウズするため</li>
<li>Internet Explorer 11は過去のバージョンのIE向けに作られたコンテンツを従来どおりに見るため</li>
</ul>

<p>この二つは物理的に完全に別なものとなっていて、レンダリングエンジンもJavaScriptエンジンも異なる。</p>

<p>EdgeのレンダリングエンジンとJavaScriptの組み合わせが、Windows 10用のアプリケーションを開発する際に使用されるWebプラットフォームになるが、現状、Windows 10で動作するアプリケーションのすべてがEdgeのエンジン（以降、EdgeHTMLと記載する）を利用しているわけではない。</p>

<p>どういう意味か。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/DSC03858.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/DSC03858-640x480.jpg" alt="DSC03858" width="640" height="480" class="alignnone size-large wp-image-19175" srcset="/wp-content/uploads/2016/05/DSC03858.jpg 640w, /wp-content/uploads/2016/05/DSC03858-300x225.jpg 300w, /wp-content/uploads/2016/05/DSC03858-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>アプリケーションとの組み合わせを見てみる。Windows 10から採用されたUWPアプリケーションは、EdgeHTMLを使用している。しかし、以前の環境で作られたWindows 8系のいわゆるWindowsストア・アプリケーションやデスクトップ・アプリケーションであるWin32アプリケーションは、以前の Tridentを使用している。</p>

<p>新しいSDKに含まれるWeb ViewコントロールはEdgeを使用するようになっているので、もしどちらも選択が可能である場合はEdgeHTMLを使用する。</p>

<h1>Windows 10 Anniversary Updateまでに搭載されるEdgeの新機能</h1>

<p>ここからは「Windows 10 Anniversary Update」までに搭載されるEdgeの新機能について紹介していく。Edgeのエンジンが、Windows 10でアプリケーションを開発する際に使用するWebプラットフォームの機能になるので、そのままアプリケーションから使用できるようになる。</p>

<p>Edgeの2016年の機能実装を含めた展望については、今年の2月に<a href="https://blogs.windows.com/msedgedev/2016/02/03/2016-platform-priorities/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Edgeの開発者ブログ</a>で公開されており、その記事では優先課題とて5つ存在する。（参考までに、日本語の開発者ブログは<a href="https://blogs.msdn.microsoft.com/msedgedev_japan/2016/04/18/looking-ahead-microsoft-edge-for-developers-in-2016/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>です）</p>

<ol>
<li>WebテクノロジとWindowsストアによるモダン拡張機能プラットフォームを提供する</li>
<li>アクセシビリティとインクルーシブ デザインにより、Microsoft Edgeを使うすべての人の力になる</li>
<li>Microsoft Edgeの基本であるセキュリティ、パフォーマンス、効率を引き続き向上させる</li>
<li>Webの未来を見据えて開発する</li>
<li>コミュニティのフィードバックや参加を可能にするチャネルを増やす</li>
</ol>

<p>まずは拡張機能。ネイティブ形式のアドオンとは異なるWebテクノロジを活用した、開発者になじみのある拡張機能プラットフォームを作成する。現在のInsider Previe版のEdgeでは同じくプレビュー版のアドオンを使用できるようになっている。</p>

<p>次にアクセシビリティ。この項目では「HTML Accessibility API Mappings」と「Core Accessibility API Mappings」への対応、「ハイコントラストのサポート」や「視覚障碍のある方にとっての読みやすさ」や、「フォーカスおよび選択の操作性の向上」などが表明されていた。</p>

<p>基本機能では、「JavaScript エンジンのベンチマークの向上」「さらなるセキュリティの強化」たとえばFlashを別のプロセスに分離し、不要なコンテンツ処理を保留したり、GPUレンダリングの強化などが表明されている。</p>

<h1>Insider Preview に搭載された新機能</h1>

<p>ここからは「Insider Preview」に搭載された新機能について紹介していく。現在、Insider Previewに実装されていて、実際に試すことができるものが約20個以上、開発中のものを含めると36個くらいあり、しかも、これは現段階のものなので、これからまだ増える可能性がある。</p>

<ul>
<li>Web Speech API (synthesis)</li>
<li>Fetch API</li>
<li>Beacon</li>
<li>Web Notifications</li>
<li>WebRTC</li>
<li>OPUS open audio</li>
<li>VP9 open video playback</li>
<li>WOFF File Format 2.0</li>
<li>FIDO 2.0 Password</li>
<li>Canvas 2D path2D</li>
<li>Ambient Light Events</li>
<li>Color input type</li>
<li>Element</li>
<li>Default parameter (ES2015)</li>
<li>Destructuring (ES2015)</li>
<li>Generators (ES2015)</li>
<li>SIMD (after ES2016)</li>
<li>Exponentiation Operator (ES2016)</li>
<li>Array.prototype.includes (ES2016)</li>
<li>Async Functions (after ES2016)</li>
</ul>

<p>Insiger Previewに新しく搭載された機能をいくつか、デモを交えながら紹介する（この記事ではデモ資料省略）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/DSC03850.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/DSC03850-640x480.jpg" alt="DSC03850" width="640" height="480" class="alignnone size-large wp-image-19174" srcset="/wp-content/uploads/2016/05/DSC03850.jpg 640w, /wp-content/uploads/2016/05/DSC03850-300x225.jpg 300w, /wp-content/uploads/2016/05/DSC03850-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<h3>Web Speech API</h3>

<p>IETF標準の言語タグである「BCP 47」に対応しており、タグの指定によってさまざな言語の指定ができる。音量、音声、速度はもちろん、SSML (Speech Synthesis Markup Language) を使用して音声合成時の修飾的情報を指定したりもできる。</p>

<h3>Fetch API</h3>

<p>「Fetch API」は、Webサーバと通信するためのAPIで、Promise ベースで非同期処理を行える。従来の「XMLHttpRequest」の仕様のさまざまな不足分をなくし、より細かい処理ができるようになっていて、将来的に「XMLHttpRequest」は「Fetch API」に置き換わると言われている。「Fetch API」は「XMLHttpRequest」とは異なり「Service Worker」からも使用できる。参考までに「Service Worker」とは、「Progressive Web Apps」というモバイルWeb向けの新しいコンセプトだ。</p>

<h3>Web Notifications</h3>

<p>「Web Notifications」はユーザーへのデスクトップ通知の設定や表示のために使われるもので、EdgeではWindows 10のアクションセンターと統合される。この通知には、カスタムアイコンやタイトル、メッセージが設定可能だ。Service WorkerとPush APIを組み合わせると、サーバからのPuch通知を受け取って表示したりということが可能になるが、残念ながらこの2つはまだサポートされていない。しかし、ブラウザ上でアプリケーションが稼働状態であれば、WebSocktsやWebRTCの通知を受け取ってデスクトップ通知を表示するといったことが可能だ。</p>

<h2>WOFF2.0フォント</h2>

<p>WOFF2.0フォントは、従来のフォントファイルのサイズを30%以上多く減らす新しいフォーマットだ。日本語を含むアジアフォントではおよそ50%前後節減できると言われている。現在、Webページの60%以上でカスタムWebフォントが使用されていて、平均的にWebページのサイズの5.3%を占めると言われているので、これをサポートすることでページの表示速度の向上が期待できる。</p>

<h3>WebRTC</h3>

<p>WebRTCについて。RTCとは「Real Time Cominucation」の略で、プラグインなしでWebブラウザ間のボイスチャット、ビデオチャット、ファイル共有ができる技術がWebRTCだ。Firefox、Chromeは、Edgeに先行してWebRTC1.0をサポートしているが、EdgeはWebRTCの使い勝手を改善したORTCのみをサポートしてた。このWebRTCとORTCは互換性があるので、互いに通信を行うことができるが、さらなる相互運用性を高めるためにEdgeHTML 15では、WebRTC1.0もサポートすることになった。</p>

<h4>RTCの相互間運用性</h4>

<table>
<thead>
<tr>
  <th>APIサポート</th>
  <th>ORTC</th>
  <th>WebRTC</th>
</tr>
</thead>
<tbody>
<tr>
  <td>EdgeHTML13</td>
  <td>Yes</td>
  <td>No</td>
</tr>
<tr>
  <td>EdgeHTML15</td>
  <td>Yes</td>
  <td>Yes</td>
</tr>
</tbody>
</table>

<table>
<thead>
<tr>
  <th>Codecサポート</th>
  <th>H.264 UC</th>
  <th>H.264</th>
  <th>VP8</th>
</tr>
</thead>
<tbody>
<tr>
  <td>EdgeHTML13</td>
  <td>Yes</td>
  <td>No</td>
  <td>No</td>
</tr>
<tr>
  <td>EdgeHTML15</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
</tr>
</tbody>
</table>

<h3>その他</h3>

<p>そのほかにもオーディオ用の高い圧縮フォーマットであるOpusや動画圧縮コーデックのVP9、細かい時間の計測に使用される「High Resolution Time」のLebel2や、フォルダのドラッグ・アンド・ドロップ、Webブラウザで生体認証を行うためのFIDO(ファイド)2.0、それからBeacon、アクセシビリティ関連のエレメントなどなど多くの機能がサポートされる。</p>

<h1>ハイブリッド・アプリケーション</h1>

<p>説明した機能は、ハイブリッド・アプリケーション開発用の様々なフレームワークを使用することで、スマートフォンやデスクトップのアプリケーションとして利用することができる。ここからは、Webプラットフォームを利用したアプリの開発について紹介していきます。</p>

<p>ブラウザで動作するWebアプリケーションを、ハイブリッド・アプリケーション化するメリットは3つほどあります。</p>

<ul>
<li>オフライン</li>
<li>アプリストアのエコシステム</li>
<li>プラットフォーム/ハードウェアの機能</li>
</ul>

<p>もう少し待っているとEdgeでもService WokerがサポートされてWebアプリケーションでもオフラインの利用が可能になるので、実際にアプリケーション化するメリットというのはアプリストアのエコシステムを使用するとか、Webブラウザでは使用できないハードウェアの機能を使用するということぐらいに差が縮まる。</p>

<p>このハイブリッド・アプリケーションの形式には、Packageアプリケーションと、Hotedアプリケーションがある。Packageは、オフラインで利用可能。サーバサイドのリソースががならずしも必要でない。Hostedは常に最新のコンテンツで実行でき、開発の一元化が可能だがオフラインでの使用が前提となる。ざっくり言うとコンテンツの配置場所くらいしか違いはない。</p>

<h1>Universal Windows PlatformとCordovaを利用したHostedアプリケーション</h1>

<p>UWPとCordovaで、どのようにHostedアプリケーションを作るか、というのを紹介する。</p>

<h2>UWP</h2>

<p>これがWindow 10に用意されている、アプリから使用可能なOSリソースだ。プッシュ通知や、タイルへの情報表示、予定表、アドレス帳へのアクセス、Cortana連携とWindowsランタイムを使用し、さまざまなハードウェアにもアクセスできる。作成は</p>

<ol>
<li>package.appmanifestの[アプリケーション]タブで[スタート]を指定</li>
<li>[コンテンツURI]タブでWinRTへのアクセスを設定</li>
<li>使用しないファイルを削除</li>
</ol>

<h2>Cordova</h2>

<p>Tools for Apache Cordovaが提供する機能は</p>

<ul>
<li>ターゲット</li>
<li>ビルド</li>
<li>デバッグ</li>
<li>エミュレータ</li>
<li>コード補完</li>
</ul>

<p>がありiOSアプリケーションに対するビルドにはMacが必要ではあるが、ほとんどの環境(Android系/iOS系/Windows系)で実行可能だ。CordovaにおけるHostedアプリケーションの作成は以下の３つで行っていく。</p>

<ol>
<li>config.xmlの編集</li>
<li>www¥scripts¥index.jsの編集</li>
<li>index.htmlの編集</li>
</ol>

<p>尚、Apache Cordovaを使用したホスト型Webアプリケーションの作成については<a href="https://blogs.msdn.microsoft.com/visualstudio_jpn/2016/05/19/apache-cordova/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>の資料を見るとよい</p>

<h2>Visual Studioで提供されている検証環境</h2>

<ul>
<li>Ripple</li>
<li>Android</li>
<li>Monaca Debugger(iOS/Android)</li>
<li>Windows Phone</li>
</ul>

<p>その他、Mac OS用、リモートエージェント、Mac in Cloud(Mac OSのホスティング)などがある。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/DSC03862.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/DSC03862-640x480.jpg" alt="DSC03862" width="640" height="480" class="alignnone size-large wp-image-19177" srcset="/wp-content/uploads/2016/05/DSC03862.jpg 640w, /wp-content/uploads/2016/05/DSC03862-300x225.jpg 300w, /wp-content/uploads/2016/05/DSC03862-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>最後に、Webプラットフォームについてということと、この夏に向けていろいろなAPIが出てくる。そして、Webではできないことができるようになると物江氏は締めくくり、Microsoft Edgeのすぐそこにある未来について熱く語ってくれた。今最も熱いブラウザは「Microsoft Edge」ではないだろうか。</p>
]]></content:encoded>
		
		<series:name><![CDATA[de:code 2016 特集]]></series:name>
	</item>
		<item>
		<title>HTML5ハイブリッドアプリの濃いネタ満載！第1回Cordova勉強会まとめ</title>
		<link>/masahiro/11351/</link>
		<pubDate>Mon, 17 Nov 2014 00:00:52 +0000</pubDate>
		<dc:creator><![CDATA[田中 正裕]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">/?p=11351</guid>
		<description><![CDATA[連載： イベントレポート (28)先週の11月5日、Apache Cordova勉強会の第1回が開催されました。HTML5ハイブリッドアプリについて、実際の開発者によるプレゼンテーションが行われました。今回は、参加できな...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/eventarchives/" class="series-159" title="イベントレポート" data-wpel-link="internal">イベントレポート</a> (28)</div><p>先週の11月5日、Apache Cordova勉強会の第1回が開催されました。HTML5ハイブリッドアプリについて、実際の開発者によるプレゼンテーションが行われました。今回は、参加できなかった方のために、その勉強会のまとめを紹介したいと思います。</p>

<h3>Cordova勉強会とは？</h3>

<p>まず始めに、そもそも勉強会の目的から。<a href="http://cordova.apache.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apache Cordova</a>というのは、<a href="http://phonegap.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap</a>や<a href="http://ja.monaca.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>といった製品に組み込まれている、HTML5ハイブリッドアプリを開発するためのオープンソースなフレームワークです。このCordovaの技術情報を共有するために、「日本Cordovaユーザー会」として、月に1度のペースで勉強会を開く活動を行っています。今回は、その第1回となります（第1回の案内は<a href="https://atnd.org/events/57562" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>）。</p>

<ul>
<li>Twitterハッシュタグ: <a href="https://twitter.com/search?q=https%3A%2F%2Fhtml5experts.jp%23cordovajp&amp;src=typd" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">#cordovajp</a></li>
<li>YouTube公開録画: <a href="https://www.youtube.com/watch?v=Fn_6Soc2U10" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">第1回Apache Cordova勉強会</a></li>
</ul>

<h3>Cordovaの最近ホットな話題</h3>

<p><a href="http://www.slideshare.net/AsialCorp/cordova-41147919" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="http://image.slidesharecdn.com/cordova-141105044351-conversion-gate01/95/cordova-1-638.jpg?cb=1415185221" alt="Cordovaで業務アプリを作る" width="300" class="aligncenter size-medium wp-image-11421" /></a></p>

<h4>新しいbrowserプラットフォームは、ブラウザー上でデバイスAPIをエミュレーション動作</h4>

<p>これまで、iOSやAndroidアプリの開発を目的としていましたが、ブラウザー用のAPIも整備が進み出しました。現時点ではまだ対応APIも少ないものの、今後は充実していくことになりそうです。</p>

<p>browserプラットフォームを使うと、ブラウザー上でCordova APIのエミュレーションが実行されます。ビルドはzip形式で圧縮します。</p>

<h4>ChromeベースとGeckoベースの新しいWebViewエンジンを使えるように</h4>

<p>Cordova 4.0では、WebViewエンジンを選択することができるようになりました。それに伴い、Intelが主導する<a href="https://crosswalk-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Crosswalkプロジェクト</a>ではChromiumベースのWebViewエンジンが、MozillaはGeckoベースの<a href="https://github.com/infil00p/MozillaView" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MozillaViewエンジン</a>が登場しました。これにより、下記のようなメリットが挙げられます。</p>

<h5>1. ブレークポイントやプロファイリングなどの高度なデバッグ機能が利用可能に</h5>

<p>Crosswalkを組み込むと、Chrome Dev Toolsを用いたデバッグができるようになります。PCブラウザーとほぼ同じデバッグ機能を、Cordovaアプリでも使えるようになります。</p>

<h5>2. Androidのバージョン問題から解放される</h5>

<p>同一Androidバージョンにおいても、端末メーカーが独自にカスタマイズするWebViewでは、細かな実装レベルに違いがありました。WebViewをCordovaアプリに内包することで、すべてのAndroid端末で、同じブラウザーエンジンを使うことができます（その分アプリサイズは大きくなります）。フラグメンテーションが全く存在しないAndroidネイティブアプリ開発が可能になります。</p>

<h5>3. WebGLなどの最新機能が使える</h5>

<p>最新のブラウザーエンジンが持つHTML5機能を利用できます。CanvasやWebGLを使った3Dグラフィックスもスムーズに動きます！</p>

<h4>Cordova 3.5.0での脆弱性問題には速やかに対応を</h4>

<p>Cordova 3.5.0にて脆弱性が<a href="http://securityintelligence.com/apache-cordova-phonegap-vulnerability-android-banking-apps/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">発見されました</a>。そのため、Google Playストアでは、古いCordovaアプリを利用している場合に警告メッセージが表示されます。速やかに最新版にアップデートしましょう（Google Playストアで非公開扱いされるリスクがあります）。</p>

<h3>Cordova開発のベストプラクティスを学ぶ</h3>

<p><a href="https://speakerdeck.com/anatoo/cordovadezuo-ruhtml5haiburitudoapuri-kai-fa-besutopurakuteisuwoxue-bu" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="https://speakerd.s3.amazonaws.com/presentations/796fe7f0470c0132b5a75e86c61bf7eb/slide_0.jpg?1415242929" alt="Cordovaで業務アプリを作る" width="300" class="aligncenter size-medium wp-image-11421" /></a></p>

<h4>要件定義が重要</h4>

<p>下記のような内容について、クライアント（もしくは企画側）と話し合い、コンセンサスを得ることが重要です。</p>

<ul>
<li>OSバージョンはどこまで対応するか？</li>
<li>Androidの動作保障端末は？</li>
<li>Cordovaプラグインでどこまで実装するか？</li>
</ul>

<p>これはCordovaに限った話ではありませんが、特にCordovaでは後々の方針変更は大きな痛手になる可能性があります。</p>

<h4>UI設計はOSの違いを考慮する</h4>

<p>プラットフォームごとにUI規約は異なります。それを理解したうえで、UI設計を行いましょう。</p>

<h4>巨大なリスト構造はHTML5には不向き</h4>

<p>巨大な数のDOM要素が入るようなUIはHTML5では難しいです。ページ送りなどで代用することも検討しましょう。</p>

<h4>開発アーキテクチャーは「SPA」</h4>

<p>いわゆるSingle-Page Application形式で開発するのがおすすめです。<a href="http://ja.onsen.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen UI</a>や<a href="http://ionicframework.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ionic Framework</a>など、ハイブリッドアプリ用のUIを組み込んだSPAフレームワークが開発での候補になるでしょう。</p>

<h4>コーディングサイクルを最適化</h4>

<p>毎回コンパイルするのは時間の無駄です。browserプラットフォームを使ってPC上で確認したり、<a href="http://ja.monaca.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca Localkit</a>のような高速に実機に転送してくれるツールを利用しましょう。</p>

<h4>ボトルネック探しはインスペクターを使う</h4>

<p>JSの処理・CSSのマッチング処理・DOMリフロー・GPUへの転送・描画処理など、アプリのボトルネックの要因は様々です。<a href="https://speakerdeck.com/anatoo/html5deiosapuriandroidapuriwozuo-rou-html5haiburitudoapurikai-fa-ru-men" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらの資料</a>を参考にしてください。<a href="https://www.genuitec.com/products/gapdebug/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GapDebug</a>というツールも便利です。</p>

<h4>DOMリークをきちんと対処する</h4>

<p>DOMリークとは、解放されるべきDOM要素がJSから参照されたまま解放されない問題です。やっかいなのが、ドキュメントに含まれないDetatched DOMツリー自体がリークしてしまい、そこに含まれる画像などもメモリー上から解放されません。DOMリークを防ぐ方法として、必要に無くなったDOM要素の参照をきちんと切ったり、イベントリスナーをremoveすることが重要です。</p>

<h4>実機がない端末はクラウドでテスト</h4>

<p>たとえば<a href="http://appkitbox.com/testkit/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Remote Test Kit</a>というサービスでは、クラウドを通じて実端末を一定時間レンタルすることができます。自由にアプリをインストールすることができるため、機種問題で悩まされている場合は、こういったツールが非常に効果的です。</p>

<h3>開発事例 〜iPad向け業務アプリ（サービスマン支援システム）〜</h3>

<p><a href="http://artisanedge.jp/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">アルティザンエッジ合同会社</a>の井上さんより、実際の業務アプリの事例と、そのなかで苦労した点や工夫した点を紹介して頂きました。</p>

<p><a href="https://html5experts.jp//www.slideshare.net/inoccu" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/11/Untitled-300x168.png" alt="Cordovaで業務アプリを作る" width="300" height="168" class="aligncenter size-medium wp-image-11421" srcset="/wp-content/uploads/2014/11/Untitled-300x168.png 300w, /wp-content/uploads/2014/11/Untitled-1024x576.png 1024w, /wp-content/uploads/2014/11/Untitled-207x116.png 207w, /wp-content/uploads/2014/11/Untitled.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<ul>
  <li>Cordovaを採用した理由</li>
  <li>BackboneやjQuery Mobileを用いたアーキテクチャー</li>
  <li>ネイティブで開発した「Cordovaプラグイン」も数多い</li>
  <li>Cordovaアプリ開発でハマったこと</li>
  <li>メモリー消費量について</li>
</ul>

<p>ぜひ<a href="https://html5experts.jp//www.slideshare.net/inoccu" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">このリンク</a>より、スライドをご覧になってください。</p>

<h3>次回の勉強会について</h3>

<p>第2回Cordova勉強会は、12月2日午後7時より開始予定です。ご興味ある方は、ぜひ下記のリンクよりお申込みください。</p>

<p><a href="http://7b543bd41af4571f0bdafff1b5.doorkeeper.jp/events/17138" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">第2回Apache Cordova勉強会（DoorKeeper）</a></p>
]]></content:encoded>
		
		<series:name><![CDATA[イベントレポート]]></series:name>
	</item>
		<item>
		<title>PhoneGap/Cordovaの最新トピック満載！「PhoneGap Day US 2014」イベントレポート</title>
		<link>/masahiro/11178/</link>
		<pubDate>Tue, 28 Oct 2014 04:00:58 +0000</pubDate>
		<dc:creator><![CDATA[田中 正裕]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Monaca]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[海外]]></category>

		<guid isPermaLink="false">/?p=11178</guid>
		<description><![CDATA[連載： イベントレポート (25)2014年10月24日、米サンフランシスコにてPhoneGap Day US 2014が開催されました。3年前から始まった本イベントですが、これまでアメリカではオレゴン州ポートランドで開...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/eventarchives/" class="series-159" title="イベントレポート" data-wpel-link="internal">イベントレポート</a> (25)</div><p>2014年10月24日、米サンフランシスコにて<a href="http://pgday.phonegap.com/us2014/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">PhoneGap Day US 2014</a>が開催されました。3年前から始まった本イベントですが、これまでアメリカではオレゴン州ポートランドで開催されていて、残念ながら参加する機会がありませんでした。今年は同じくサンフランシスコで開催された<a href="http://html5devconf.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">HTML5 Dev Conf 2014</a>と同じ週となった関係で、両方のカンファレンスに参加することができました。</p>

<p>HTML5ハイブリッドアプリ開発として幅広く使われているPhoneGapは、またの名を「<a href="http://cordova.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Cordova</a>」と呼ばれます。CordovaはApache FoundationベースのOSSプロジェクトで、それをAdobeが製品として出している名称がPhoneGapとなります。そのため、PhoneGap Dayの内容も、主にCordovaに関するものがほとんどです。それもGoogleやMozilla、Microsoftなどに所属するCordova開発者のスピーチが多く、とてもオープンなカンファレンスとなっています。</p>

<p>司会は毎度ながらPhoneGap開発チームのリーダー的存在な<a href="http://brian.io/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Brian LeRoux</a>。<a href="http://app.phonegap.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">PhoneGap Desktop App</a>の紹介などが行われました。</p>

<blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/Adobe" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">@Adobe</a>&#039;s <a href="https://twitter.com/brianleroux" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">@brianleroux</a> kicks off PhoneGap Day 2014 <a href="http://t.co/PJqfunCgwE" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://t.co/PJqfunCgwE</a> <a href="https://twitter.com/hashtag/pgdayus14?src=hash" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">#pgdayus14</a> <a href="https://twitter.com/hashtag/pgday14?src=hash" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">#pgday14</a> <a href="http://t.co/cIiYBoSYPP" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">pic.twitter.com/cIiYBoSYPP</a></p>&mdash; Eric Oesterle (@erico) <a href="https://twitter.com/erico/status/525687388425945088" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">October 24, 2014</a></blockquote>

<h2>ハイライト紹介</h2>

<h3>CrosswalkエンジンでAndroid WearでもCordovaが動いた</h3>

<p>Joe Bowserの「Many Webviews on PhoneGap Android」より。Intelがオープンソースプロジェクトとして進めている<a href="https://crosswalk-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Crosswalk Project</a>。これは、Chromium互換WebViewエンジンをCordovaに組み込み、ハイブリッドアプリの大きな課題であるAndroidバージョン依存や実行パフォーマンス、JavaScriptデバッグ機能の強化などを解決してしまおうというものです。PhoneGap Dayに先立ち公開されたCordova 4.0では、WebViewをAndroid標準WebViewからサードパーティ製のものに切り替える仕組みが備わり、Crosswalkの導入も簡単になりました。これを使うと、WebViewを持たないAndroid Wearにおいても、Cordovaアプリを動作させることができるとのこと。メモリーの問題等で実用ではないらしいですが、面白い取り組みです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/10/20141024_115359-e1414397245495.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/10/20141024_115359-e1414397245495-300x165.jpg" alt="20141024_115359" width="300" height="165" class="aligncenter size-medium wp-image-11184" srcset="/wp-content/uploads/2014/10/20141024_115359-e1414397245495-300x165.jpg 300w, /wp-content/uploads/2014/10/20141024_115359-e1414397245495-1024x565.jpg 1024w, /wp-content/uploads/2014/10/20141024_115359-e1414397245495-207x114.jpg 207w, /wp-content/uploads/2014/10/20141024_115359-e1414397245495.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>Visual StudioでCordova開発。次バージョンでiOSにも対応</h3>

<p>現在プレビュー公開されている<a href="http://www.visualstudio.com/en-us/explore/cordova-vs.aspx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Multi-Device Hybrid Apps</a>ですが、近日中にアップデートが行われ、iOSのビルドができる機能が搭載されるとのこと。Windowsローカル環境で具体的にどうやって実現するのかなと思ってみていると、どうやらMac上にエージェントを起動し、Visual Studioはそのエージェントに対して、ネットワーク経由でリモートビルドをかけることで対応するようです。これで<del><a href="http://monaca.mobi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Monaca</a>を使わなくても</del>WindowsユーザーがCordovaでiOS開発ができるようになりますね！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/10/20141024_134936.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/10/20141024_134936-300x168.jpg" alt="20141024_134936" width="300" height="168" class="aligncenter size-medium wp-image-11185" srcset="/wp-content/uploads/2014/10/20141024_134936-300x168.jpg 300w, /wp-content/uploads/2014/10/20141024_134936-1024x576.jpg 1024w, /wp-content/uploads/2014/10/20141024_134936-207x116.jpg 207w, /wp-content/uploads/2014/10/20141024_134936.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>Ionic Frameworkの正式リリースは11月末か？</h3>

<p>モダンなUIフレームワークとして注目されている<a href="http://ionicframework.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Ionic Framework</a>ですが、11月末ごろに正式リリースされるという話がありました。これまで1年間ずっとベータ版のままでしたので、正式リリースでどのようになるのか楽しみです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/10/20141024_141039.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/10/20141024_141039-300x168.jpg" alt="20141024_141039" width="300" height="168" class="aligncenter size-medium wp-image-11186" srcset="/wp-content/uploads/2014/10/20141024_141039-300x168.jpg 300w, /wp-content/uploads/2014/10/20141024_141039-1024x576.jpg 1024w, /wp-content/uploads/2014/10/20141024_141039-207x116.jpg 207w, /wp-content/uploads/2014/10/20141024_141039.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>まとめ</h3>

<p>他にも、PhoneGapアプリのデバッグをするツールや、Mozillaが開発中の新しいWebViewエンジン、iOS 8で登場したWKWebViewの話など、PhoneGap/Cordovaデベロッパーにとって非常に面白いテーマが目白押しで、個人的にとても楽しむことができました。それと同時に、HTML5ハイブリッドアプリの世界は、CordovaというOSSフレームワークを通じて、メジャーどころが共同で開発を担っていることが実感されました。今後、PhoneGap Blogではセッションの録画ビデオを掲載していくと思いますので、ぜひチェックしてみてください。</p>

<h4>PR: Cordovaユーザー会で一緒に最前線を探索しませんか？</h4>

<p>PRとなりますが、このたびHTML5ハイブリッドアプリ全般の技術を扱うためのオープンソースコミュニティ「Cordovaユーザー会」を立ち上げました。この会では、HTML5ハイブリッドアプリ、とりわけCordovaの普及に向けて、実際にアプリ開発を実践されている方々が積極的に情報共有をしていくことを目的としています。キックオフ第1弾として<a href="https://atnd.org/events/57562" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">第1回Cordova勉強会</a>を11月5日、午後7時から開催する予定です。ぜひ興味ある方はご参加ください。</p>

<p>P.S. Google Chrome Apps Mobileの方に、Monacaの紹介をしてもらいました。Cordovaプラグインを開発しやすくするためのツールを作っていきます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/10/20141024_161004-e1414398586530.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/10/20141024_161004-e1414398586530-300x166.jpg" alt="20141024_161004" width="150" height="83" class="aligncenter size-medium wp-image-11188" srcset="/wp-content/uploads/2014/10/20141024_161004-e1414398586530-300x166.jpg 300w, /wp-content/uploads/2014/10/20141024_161004-e1414398586530-1024x567.jpg 1024w, /wp-content/uploads/2014/10/20141024_161004-e1414398586530-207x114.jpg 207w, /wp-content/uploads/2014/10/20141024_161004-e1414398586530.jpg 640w" sizes="(max-width: 150px) 100vw, 150px" /></a></p>
]]></content:encoded>
		
		<series:name><![CDATA[イベントレポート]]></series:name>
	</item>
		<item>
		<title>エンタープライズHTML5モバイルの開発手法─エンタープライズ×モバイルアプリ開発の最新動向(2)</title>
		<link>/masahiro/10470/</link>
		<pubDate>Mon, 08 Sep 2014 00:08:16 +0000</pubDate>
		<dc:creator><![CDATA[田中 正裕]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[システム開発]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[エンタープライズ]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=10470</guid>
		<description><![CDATA[連載： エンタープライズ開発特集 (6)エンタープライズモバイル開発で求められる要件については、前回の記事で概説しました。特に、BYODと相性の良いマルチプラットフォームの仕組みや、開発チームの統一、Webとネイティブア...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/enterprise/" class="series-197" title="エンタープライズ開発特集" data-wpel-link="internal">エンタープライズ開発特集</a> (6)</div><p>エンタープライズモバイル開発で求められる要件については、<a href="https://html5experts.jp/masahiro/10456/" title="前回の記事" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">前回の記事</a>で概説しました。特に、BYODと相性の良いマルチプラットフォームの仕組みや、開発チームの統一、Webとネイティブアプリの両刀対応など、業務で使うアプリならではの特有ニーズがあることが、エンタープライズの特徴です。</p>

<p>この分野では、B2CやPCの世界と比較しても、HTML5が大きな注目を受けています。その背景には、HTML5がモバイルアプリ開発、とりわけ業務アプリ開発との親和性が高いことが挙げられます。</p>

<h3>実行速度よりもコストメリットが優先</h3>

<p>「モバイルアプリ開発をHTML5で」というテーマで話をした際の反応として、HTML5だと速度が遅くて使いものにならないのでは、という懸念の声が挙がります。確かに、フルネイティブコードで書かれたアプリと比較すると、ブラウザーエンジン上で動作するHTML5アプリは、スピードのボトルネックが発生しやすのが事実です。とはいえ、「ネイティブかHTML5か」が中心テーマだった3年前と比較して、現在は端末の性能が、Android 2.3やiOS 4が主流だった当時と今では大きく状況が異なります。</p>

<p>参考のため、下記にAndroid端末の性能推移を紹介します。4年前の端末と比較して、10倍以上の性能向上が行われていることが理解できます。</p>

<div id="attachment_10462" style="width: 525px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/08/enpra2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/enpra2.png" alt="Android端末の性能推移" width="515" height="409" class="size-full wp-image-10462" srcset="/wp-content/uploads/2014/08/enpra2.png 515w, /wp-content/uploads/2014/08/enpra2-300x238.png 300w, /wp-content/uploads/2014/08/enpra2-207x164.png 207w" sizes="(max-width: 515px) 100vw, 515px" /></a><p class="wp-caption-text">Android端末の性能推移</p></div>

<p>出典: <a href="http://www.antutu.com/en/index.shtml" title="AnTuTuベンチマーク" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AnTuTuベンチマーク</a></p>

<table>
<caption>（参考：元資料－田中作成）</caption>
<tr>
<th>名称</th><th>モデル</th><th>発売日</th><th>ベンチマークスコア</th><th>Android OS</th><th>CPU</th>
</tr>
<tr>
<td>Samsung Galaxy Note 3</td><td>SM-N9006</td><td>11/1/2013</td><td>35165</td><td>4.4.2</td><td>2.3GHz Quad</td>
</tr>
<tr>
<td>Samsung Galaxy S4</td><td>GT-I9500</td><td>4/1/2013</td><td>28018</td><td>4.4.2</td><td>1.6GHz Quad</td>
</tr>
<tr>
<td>Samsung Galaxy S3</td><td>GT-I9300</td><td>5/1/2012</td><td>12098</td><td>4.3</td><td>1.4GHz Quad</td>
</tr>
<tr>
<td>Samsung Galaxy S2</td><td>GT-I9100</td><td>4/1/2011</td><td>6173</td><td>4.1</td><td>1.2GHz Dual</td>
</tr>
<tr>
<td>Samsung Galaxy S</td><td>GT-I9000</td><td>6/1/2010</td><td>3143</td><td>2.3</td><td>1GHz</td>
</tr>
</table>

<p>アプリの実行パフォーマンスの点では、App Storeでトップ10を狙うようなコンシューマーアプリとは異なり、業務アプリで求められる必要十分な速度を満たせば問題ありません。フレームワーク選定の際に、速度重視のJavaScriptライブラリー（<a href="http://ja.onsenui.io/" title="Onsen UI" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Onsen UI</a>など）の採用を考慮することで、HTML5でも満足できる実行速度が達成できます。</p>

<p>それ以上に、次節の通り、開発時には下記にあるようなメリットがネイティブに勝ります。</p>

<h2>HTML5が業務アプリに向いている理由</h2>

<p>HTML5のメリットを一言で表現するならば、「つぶしが効く」というのが最も近いかもしれません。対応するOSの種類や画面サイズの広さもさることながら、使用技術やハイブリッド化によるネイティブアプリ作成まで、アプリ開発エンジンとしてHTML5は高い汎用性を備えています。</p>

<h3>マルチプラットフォーム・スクリーンサイズに対応</h3>

<p>HTMLを使えば、モバイルやPCといった端末の種類を問わず、また、画面の大小を問わず、同じコンテンツを展開できます。もちろん、画面サイズに合わせてコンテンツの配置を変更したり、最適化したりすることはよく行われます。同じコンテンツでも表示端末に最適化するという考え方はレスポンシブデザインとも呼ばれ、具体的にはCSS3メディアクエリーがよく使われます。</p>

<h3>Web技術者がヨコ展開できる</h3>

<p>HTML5は既存のWeb技術の延長線上にあります。開発言語としてはJavaScriptが用いられますが、<a href="http://angularjs.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AngularJS</a>やjQueryなどのフレームワークやライブラリーもモバイルでそのまま利用可能です。非常に制約の大きかったiモード向けCHTMLなどと比較すると、スマートデバイスのHTML対応度はPCとほぼ同等の機能を備えています。ActiveXやFlashを用いたサイトを除き、スマートデバイスで閲覧できないWebサイトはありません。</p>

<h3>レンダリングエンジンの進化、今後はグラフィック性能向上が焦点</h3>

<p>端末性能だけでなく、ブラウザーも至る所で進化が進んでいます。その中でも性能強化が著しいのは、グラフィック描画の分野です。モバイルブラウザーが最新HTML5技術の1つであるWebGLに対応することで、2Dや3Dのグラフィックがさらに高速化され、より高い表現が求められるアプリへの適用範囲が広がります。</p>

<h3>HTML5ハイブリッドアプリでネイティブアプリ化</h3>

<p>ハイブリッドアプリとは、HTML5で作られたネイティブアプリです。具体的には、ネイティブコードとHTML5を組み合わせており、HTML5をベースとした開発でありながらも、プッシュ通知やデバイスAPIといったネイティブアプリでないと実現できない機能を組み込むことができます。</p>

<h2>モバイルアプリはHTML5ハイブリッドアプリの道へ</h2>

<p>HTML5の技術でネイティブなモバイルアプリ開発ができるハイブリッドアプリは、Web由来のクロスプラットフォーム性能を持ちながらも、端末機能やOS機能にアクセスできます。オフライン対応やパッケージ形式での配布と自動更新など、Webアプリでは実現が難しい課題にも対応できます。</p>

<div id="attachment_10463" style="width: 441px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/08/empra3.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/empra3.png" alt="Cordova/PhoneGap" width="431" height="230" class="size-full wp-image-10463" srcset="/wp-content/uploads/2014/08/empra3.png 431w, /wp-content/uploads/2014/08/empra3-300x160.png 300w, /wp-content/uploads/2014/08/empra3-207x110.png 207w" sizes="(max-width: 431px) 100vw, 431px" /></a><p class="wp-caption-text">CordovaとPhoneGap</p></div>

<p>現在、HTML5ハイブリッドアプリのライブラリとしては、アドビシステムズ社が提供する「<a href="http://phonegap.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">PhoneGap</a>」がデファクトスタンダードです。また、このPhoneGapの開発元となっているオープンソースプロジェクト「<a href="http://cordova.io/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Cordova</a>」は、PhoneGapだけでなく、様々な製品に組み込まれ、エンタープライズソリューションとして利用されています。</p>

<p><figure>
<div id="attachment_10464" style="width: 753px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/08/enpra4.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/enpra4.png" alt="Cordovaは様々なエンタープライズソリューションの基盤に" width="743" height="412" class="size-full wp-image-10464" srcset="/wp-content/uploads/2014/08/enpra4.png 640w, /wp-content/uploads/2014/08/enpra4-300x166.png 300w, /wp-content/uploads/2014/08/enpra4-207x114.png 207w" sizes="(max-width: 743px) 100vw, 743px" /></a><p class="wp-caption-text">Cordovaは様々なエンタープライズソリューションの基盤に</p></div>
<figcaption>図: Cordovaは様々なエンタープライズソリューションの基盤に</figcaption>
</figure></p>

<h2>HTML5ハイブリッドアプリ開発の課題</h2>

<p>HTML5ハイブリッドアプリにも課題があります。その最も大きなものは、ハイブリッドアプリに特化した開発環境がまだ少ないということです。Cordova/PhoneGapアプリ開発に対応したソリューションとしては、私たちが開発している<a href="http://monaca.mobi/ja/" title="Monaca" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Monaca</a>だけでなく、最近ではVisual Studioや<a href="sencha.com" data-wpel-link="internal">Sencha</a>などの製品でもサポートが開始されました。</p>

<p>MonacaはCordova/PhoneGapに対応した開発環境で、クラウドを活用したプラットフォームとなっています。好きなエディタやIDEと組み合わせてローカルで開発することもできますが、ブラウザーベースのIDEを備えていたり、開発中のアプリをすぐに実機でデバッグできるMonacaデバッガー等の仕組みを用意しています。また、ビルド機能が組み込まれているため、SDK等をインストールしなくてもiOSやAndroid、Windows 8向けの配布パッケージを作ることができます。</p>

<p>開発環境の整備だけでなく、開発ノウハウを蓄積する場所、いわゆるナレッジベースも必要です。同じHTMLと言えども、Webサイトとモバイルアプリでは、情報設計の観点や実装上のポイントが大きく異なります。そのために、HTML5ハイブリッドアプリに特化したフレームワークの活用が推奨されます。Onsen UIやjQuery Mobileなどが候補となるでしょう。これらの製品は、モバイルアプリとしてHTML5を活用するためのノウハウが詰め込まれており、ユーザーインターフェースの開発負担を大幅に減らすことができます。</p>

<p>さて、エンタープライズモバイルではフロントエンドだけでなく、バックエンド方式も非常に重要な観点です。セキュアな通信は当然として、どのように社内のシステムと連携するのか、ソリューション選定のポイントは何なのか、開発後の運用基盤をどう整えるのか、などのトピックについて、次回に説明したいと思います。</p>
]]></content:encoded>
		
		<series:name><![CDATA[エンタープライズ開発特集]]></series:name>
	</item>
		<item>
		<title>Visual Studio 2013 を使った楽ちんCordovaプログラミング</title>
		<link>/osamum_ms/7941/</link>
		<pubDate>Wed, 09 Jul 2014 01:00:14 +0000</pubDate>
		<dc:creator><![CDATA[物江 修]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7941</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (6)Visual Studioの開発機能は、これまでWindowsプラットフォーム向けのものでしたが、Visial Studio 2013 Update 2からは、Multi-De...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (6)</div><p>Visual Studioの開発機能は、これまでWindowsプラットフォーム向けのものでしたが、Visial Studio 2013 Update 2からは、<a title="Multi-Device Hybrid Apps" href="http://msdn.microsoft.com/ja-jp/vstudio/dn722381" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Multi-Device Hybrid Apps</a>というアドインをインストールすることにより <a title="Apache CORDOVA" href="http://cordova.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache CORDOVA</a> を使用したAndroid、iOS用アプリを開発することができます。 </p>

<p>今回は<a title="Visual Studio 2013 Update 2" href="http://www.microsoft.com/ja-JP/download/details.aspx?id=42666" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Visual Studio 2013 Update 2</a>用のアドイン <a title="Multi-Device Hybrid Apps" href="http://msdn.microsoft.com/ja-jp/vstudio/dn722381" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Multi-Device Hybrid Apps</a>について紹介します。</p>

<p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb69.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="430" height="206" title="image_thumb69" style="border: 0px currentcolor" alt="image_thumb69" src="/wp-content/uploads/2014/07/image_thumb69_thumb.png" border="0"></a> 

  <br>(Multi-Device Hybrid Appsの構成)</p>

<p><br></p>

<h1>Multi-Device Hybrid Appsとは</h1>

<p>Multi-Device Hybrid Appsは<a title="Professional" href="http://www.visualstudio.com/products/visual-studio-professional-with-msdn-vs" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Professional</a>以上のエディションのVisual Studio 2013でApache CORDOVAを使用してAndroid、iOSアプリの開発を可能とするためのアドインです。</p>

<p>Visual Studio 2013の提供する強力なコード補完機能、デバッグ機能を使用して、Android、iOS (およびWindows 8とWindows Phone 8.0) のアプリを開発することができます。</p>

<p>Multi-Device Hybrid Appsが提供する機能は以下の図のとおりです。</p>

<p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb72.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="500" height="217" title="image_thumb72" style="border: 0px currentcolor" alt="image_thumb72" src="/wp-content/uploads/2014/07/image_thumb72_thumb.png" border="0"></a> 

  <br>(Multi-Device Hybrid Appsが提供する機能) 

  <br>※Windows 8、Windows Phone 8.1については割愛</p>

<h3>開発のターゲットとなるプラットフォーム</h3>

<ul>
  <li>Android 4+ (4.4 にもっとも最適な開発エクスペリエンスが提供されます)</li>

  <li>iOS 6 &amp; 7</li>

  <li>Windows 8.0 (ストアアプリ)</li>

  <li>Windows Phone 8.0</li>
</ul>

<h3>ビルド</h3>

<ul>
  <li>Android : 〇</li>

  <li>iOS : × </li>

  <li>Windows 8 : 〇</li>

  <li>Windows Phone 8.0 : 〇</li>
</ul>

<dl><dt><strong>[Mac OS用アプリのビルドについて]</strong><br />現状、iOS用アプリはWindows上でビルドすることはできません。Multi-Device Hybrid Appsで開発したソースをビルドしてApp Storeに公開するには、Mac OS X Mavericks上のXcode 5.1でコンパイルするか、Mac OS上にインストールしたリモートビルド用のエージェントを使用してビルドを行う必要があります。iOSアプリのリモートビルドの詳細な方法については、以下のドキュメントを参照してください。 <dl><dt><strong>Documentation Multi-Device Hybrid Apps for Visual Studio</strong> 

  <br><a title="Documentation Multi-Device Hybrid Apps for Visual Studio" href="http://go.microsoft.com/fwlink/?LinkID=397716" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://go.microsoft.com/fwlink/?LinkID=397716</a></dt></dl>



</dt></dl>

<h3>デバッグ</h3>

<p>Cordovaアプリの開発にVisual Studioがもたらす利点のひとつは、アプリの種類およびデバイス、 プラットフォーム全体を横断するシームレスかつ共通化されたツール類です。しかしながら現リリース (CTP1.1) の Multi-Device Hybrid Appsでは、すべてのデバイス、プラットフォームで同じVisual Studioデバッガ機能を利用することができません。</p>

<p>現在のデバッガのサポート状況は以下の通りです。</p>

<p><strong>Visual Studio デバッガサポート</strong>

<ul>
  <li>Android 4.4 : 〇 </li>

  <li>Android &lt; 4.4 : ×</li>

  <li>iOS 6 &amp; 7 : ×</li>

  <li>Windows 8 (ストア アプリ) : 〇</li>

  <li>Windows Phone 8.0 : ×</li>
</ul></p>

<p>(※)Visual Studio&nbsp;デバッガーはRippleやAndroid 4.4 エミュレーターまたはデバイスでの最初のページの読み込み前に発生するブレークポイントでは停止されません。ただし、ブラウザー&nbsp; (Ripple)を更新またはJavaScriptコンソールから &#8220;window.location.reload()&#8221; を実行したあとではこれらのブレークポイントにヒットします。</p>

<p><strong>アウトプット ウインドウでのJS コンソール メッセージ</strong></p>

<ul>
  <li>Android 4.4 : 〇</li>

  <li>Android &lt; 4.4 : 〇</li>

  <li>iOS 6 &amp; 7 : ×</li>

  <li>Windows 8 (ストア アプリ) : 〇</li>

  <li>Windows Phone 8.0 : ×</li>
</ul>

<h3>エミュレーター</h3>

<p>Multi-Device Hybrid Appsには、エミュレーターとしてApache Rippleがインストールされます。<a title="Apache Ripple" href="http://ripple.incubator.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache Ripple</a> エミュレーターはChromeのようなWebKitブラウザー内部の Webアプリケーションとして実行されます。CORDOVA環境では、複数のデバイスとプラットフォームをシミュレートし、位置情報やデバイスの向きのような、CORDOVAプラグイン コアの基本的な機能をサポートします。</p>

<fieldset><legend><strong>Android OSのWeb viewについて</strong></legend>ご存じのとおり、WebkitはApple Safari、Google Chromeのレンダリングエンジンとして使用されていたので、iOS、Androidアプリのテストに使用するには理にかなっているのですが、現在ではChromeのレンダリングエンジンはBlinkに代わっています。BlinkはWebkitをフォームして作ったものなので、ある程度の挙動は同じかもしれませんが、完全に同じではないということを意識したほうがよいでしょう。 

  <br>ちなみにAndroid OSの既定のWebブラウザはChromeではなくてAndroidブラウザですが、4.3からはChromiumベースだそうですのでChrome と同じと考えよいと思います。 

 <br />&nbsp;<br /> <dl><dt>&lt;参考&gt; 
    <br>Migrating to WebView in Android 4.4 

    <br><a title="Migrating to WebView in Android 4.4" href="http://developer.android.com/guide/webapps/migrating.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://developer.android.com/guide/webapps/migrating.html</a></p>
</fieldset>

<p></dt></dl>Apache Rippleは、AndroidとiOS上で動作するアプリのオーサリングと検証の第一歩を簡単かつ迅速に提供しますが、Rippleは、iOS シミュレータのように、そのエミュレーションにおいて決して完全ではありません。「Web View (WebKit)での動作検証 + 基本的なCORDOVAコアAPIのテスト」くらいにとらえておくがよいでしょう。よって、完全な検証は実機で、少なくともネイティブのエミュレーターで行うことをお勧めします。</p></p>

<h1>Multi-Device Hybrid Appsのインストール</h1>

<p>Multi-Device Hybrid Appsを使用するメリットのもうひとつに、Cordova開発環境構築にかかる工数が圧倒的に少なくてすむということがあげられます。</p>

<p><a title="VisualStudio 2013 Update2" href="http://www.microsoft.com/ja-JP/download/details.aspx?id=42666" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">VisualStudio 2013 Update2</a> + Multi-Device Hybrid Appsを使用しない、従来の方法で Windows OSにCordoveの開発環境を構築するには、大まかに以下のステップが必要となります。</p>

<ol>
  <li><a title="Node.js" href="http://nodejs.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Node.js</a>のインストール</li>

  <li>Node.jsのnpmコマンドを使用した<a title="Apache Cordove" href="http://cordova.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache Cordove</a>のインストール</li>

  <li><a title="Apache Ant" href="http://ant.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache Ant</a>のインストール</li>

  <li><a title="Java SE Development Kit 7 Downloads" href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Java(JDK)</a>のインストール</li>

  <li>Android SDKのダウンロードと展開</li>

  <li>Android SDK&nbsp;のパスを通すための作業</li>

  <li>Androud SDKにあるSDK Managerを使用して必要なツールと拡張をインストールする</li>

  <li>ひな形となるCordoveプロジェクトの作成</li>

  <li>Cordoveプロジェクトから、目的のプラットフォーム用のプロジェクトを作成</li>
</ol>

<p>この手順は、インストールはもちろん、プロジェクトの作成まで、すべてコマンドラインで行う必要があります。</p>

<p>こう書くと、手順が多く操作も煩雑で、なんだかとても大変そうですが、実際のところとても大変です。Multi-Device Hybrid Appsを使用する場合は、Windows&nbsp; 8.1に&nbsp; Visual Studio 2013 Update 2がインストールされた環境で、Multi-Device Hybrid Appsのセットアップウィザードを実行するだけです。</p>

<p>また、Cordove開発環境が使用している各モジュールに更新が行われた場合には、VisualStudioが通知してくれるので、安心して使い続けることができます。</p>

<h1>インストールの前提条件</h1>

<p><a title="Multi-Device Hybrid Apps" href="http://msdn.microsoft.com/ja-jp/vstudio/dn722381" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Multi-Device Hybrid Apps</a>アドインをインストールする前に、以下のソフトウェアと各オプションをインストールし、正常に動作するようにしておく必要があります。   <ul>
  <li>Windows 8.1</li>

  <li>Visual Studio 2013のProfessional,、Ultimateもしくは、Premiumエディション<br />&nbsp;&nbsp;&nbsp;以下の機能がインストールされている必要があります。  <ul>  <li>Tools for Maintaining Store apps for Windows 8</li>   <li>Windows Phone 8.0 SDK (Windows Phone 8.0 アプリを開発するのであれば)</li>  </ul> </li>   <li><a title="Visual Studio 2013 Update 2" href="http://www.microsoft.com/ja-JP/download/details.aspx?id=42666" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Visual Studio 2013 Update 2</a> </li>
</ul> </p>

<h2>Multi-Device Hybrid Appsのインストール手順</h2>

<p>Muiti-Device Hybrid Appsアドインのインストールは。インストールをイメージを入手して実行し、セットアップウィザードのボタンをクリックしていくだけです。</p>

<p>具体的な手順は以下のとおりです。</p>

<ol>    <li><a title="Multi-Device Hybrid Apps (Preview)" href="http://msdn.microsoft.com/ja-jp/vstudio/dn722381" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Multi-Device Hybrid Apps (Preview)</a> の配布ページで「Download」リンクをクリックします。  <br /><br /> <dl style="margin-left:30px"><dt><strong>Multi-Device Hybrid Apps (Preview)</strong> 

    <br><a title="Multi-Device Hybrid Apps (Preview)" href="http://msdn.microsoft.com/ja-jp/vstudio/dn722381" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://msdn.microsoft.com/ja-jp/vstudio/dn722381</a></dt></dl>   </li>    <li>Download Center に遷移するので、ページ内の [Download] ボタンをクリックします。 
<br>&nbsp;</li>

  <li>「Choose the download you want」のパネルが表示されるので、vs2013mda_0.1.1.exe と Documentation for Multi-Device Hybrid Apps for Visual Studio CTP1.1.pdf&nbsp; にチェックをつけ [Next] ボタンをクリックします。 
<br />&nbsp;    <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb57.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"> <img width="502" height="194" title="image_thumb57" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb57" src="/wp-content/uploads/2014/07/image_thumb57_thumb.png" border="0"></a>

</p>  exeファイルは Multi-Device Hybrid Appsのインストールイメージ、pdf は Multi-Device Hybrid Appsの詳細なドキュメント(英語)です。このドキュメントは、Multi-Device Hybrid Appsについての非常に詳細な情報が書かれているので一読されるのをおすすめします。       <br>&nbsp;</li>

  <li>exe ファイルとpdfファイルは別々にダウンロードされるので、「download.microsoft.comからvs2013mda.exeを実行または保存しますか?」ダイアログで [実行] ボタンをクリックしします。<br />&nbsp;   <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb188.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="500" height="28" title="image_thumb188" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb188" src="/wp-content/uploads/2014/07/image_thumb188_thumb.png" border="0"></a>

    </p> </li>

  <li>インストールウィザードが起動してくるので、[Select All] にチェックが付いた状態で [INSTALL] ボタンをクリックし、インストールを行ってください。 
    <br />&nbsp;<p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb187.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="300" height="421" title="image_thumb187" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb187" src="/wp-content/uploads/2014/07/image_thumb187_thumb.png" border="0"></a></p> あとはウィザードの内容に従って作業を進めてください。 

    <br>なお、インストール作業は、必ずコンピューターをネットワークに接続した状態でインストールを行ってください。&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></li>

  <h2>Muiti-Device Hybrid Appsがインストールするもの</h2>

  <p>Muiti-Device Hybrid Appsアドインのセットアップウィザードは、以下のサードパーティー製のものも同時にインストールします。</p>

  <ul>      <li><a title="Joyent Node.js" href="http://go.microsoft.com/fwlink/?LinkID=396867" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Joyent Node.js</strong></a> &#8212; Apache CordovaのコマンドラインインターフェースとApache RipperエミュレーターをVisual Studioに統合します。</li>

    <li><a title="Git CLI" href="http://go.microsoft.com/fwlink/?LinkID=396870" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Git CLI</strong></a> &#8212; プラグイン用にgitのURLを手動で追加する場合にのみ必要です。</li>

    <li><strong>Google Chrome</strong> &#8212; Apache Ripperエミュレーターを動作させるのに必要です。</li>

    <li><a title="Apache Ant 1.8.0+" href="http://go.microsoft.com/fwlink/?LinkID=396869" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Apache Ant 1.8.0+</strong></a> &#8212; Android ビルドプロセスの依存関係として必要です。</li>

    <li><a title="Oracle Java JDK 7" href="http://go.microsoft.com/fwlink/?LinkID=396871" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Oracle Java JDK 7</strong></a><strong> </strong>&#8212; 〃</li>

    <li><a title="Android SDK" href="http://go.microsoft.com/fwlink/?LinkID=396873" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Android SDK</strong></a> &#8212; 〃</li>

    <li><a title="SQLLite for Windows Runtime" href="http://go.microsoft.com/fwlink/?LinkID=397310" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>SQLite for Windows Runtime</strong></a> &#8212; SQL接続をWindowsアプリに追加するのに必要です。(WebSQLのポリフィルプラグイン)</li>

    <li><a title="Apple iTunes" href="http://go.microsoft.com/fwlink/?LinkID=397715" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><strong>Apple iTunes</strong></a> &#8212; Windows PCに接続されたiOSデバイスにアプリを展開するのに必要</li>
  </ul>

  <p>アンインストールする際、Muiti-Device Hybrid Appsのインストーラーは、これれらのすべてを削除してはくれませんので、残ったものに関しては、それぞれ個別にアンインストールする必要がありますので、ご注意ください。</p>      <h1>Muiti-Device Hybrid Appsを使った Android、iOSアプリの開発</h1>   <p>Visual Studio 2013 で Cordoveを使用した開発を行うMuiti-Device Hybrid Appsプロジェクトを作成するには以下の手順を実行します。</p>     <ol>  <li>
Visual Studio 2013のメニュー [ファイル] – [新規作成] – [プロジェクト] を選択します。</li>       <li> [新しいプロジェクト] ダイアログボックスが表示されるので、同ダイアログボックス左のテンプレートツリーより[テンプレート] – [JavaScript] – [Muiti-Device Hybrid Apps ] を選択します。 <br />&nbsp; <p align="center">    <a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb60.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="450" height="274" title="image_thumb60" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb60" src="/wp-content/uploads/2014/07/image_thumb60_thumb.png" border="0"></a> <br />

(作成するプロジェクトを選択するダイアログボックス)</p>
 </li>    <li> 同ダイアログ中央のリストより、「Blank App(Apache Cordova)」を選択します。 <br />&nbsp; <p align="center"> <a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb68.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="430" height="57" title="image_thumb68" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb68" src="/wp-content/uploads/2014/07/image_thumb68_thumb.png" border="0"></a>

<br />(Apache Cordova用プロジェクト)</p>
</li>        <li>
ダイアログボックス下部の [参照] ボタンをクリックし、プロジェクトを保存する場所のパスをスペースや日本語を含まないものに変更し、[OK] ボタンをクリックします。</li>   <li> Visual Studio 2013 の IDEにプロジェクトがロードされるので、ウィンドウ右の [ソリューションエクスプローラー] からindex.htmlをダブルクリックします。   <br />&nbsp;       <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb73.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="384" height="198" title="image_thumb73" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb73" src="/wp-content/uploads/2014/07/image_thumb73_thumb.png" border="0">

</a><br />(ソリューションエクスプローラーでの index.html の選択)</p>
</li>    <li>
IDE のエディタにindex.htmlの内容が展開されるので、&lt;/body&gt;の上に一行あけます。 <br /> 「h1」とタイプし、[Tab] キーを押下するとdivタグが挿入されるので、同タグ内に 「Hello World」と記述します。 
<br /> <p align="center"> <a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb261.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="200" height="23" title="image_thumb261" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb261" src="/wp-content/uploads/2014/07/image_thumb261_thumb.png" border="0"></a></p> </li>   <li> ツールバーの実行ボタン横のリストから「Ripple – Nexus (Galaxy)」が選択されていることを確認し、クリックします。  <br />&nbsp; <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb83.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="240" height="158" title="image_thumb83" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb83" src="/wp-content/uploads/2014/07/image_thumb83_thumb.png" border="0"></a>

 

<br />(実行ボタンのデバイスリスト)</p>
</li>       <li>
Google Chromeが起動し、ウィンドウ内のRippleエミュレーターに実行結果が表示されます。 <br />&nbsp;  <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb141.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="504" height="312" title="image_thumb141" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb141" src="/wp-content/uploads/2014/07/image_thumb141_thumb.png" border="0">   </a><br />(アプリの実行結果)</p>
</li>    <li>
実行を終了するにはVisual Studio 2013のツールバー上の [デバッグの停止] ボタンをクリックします。 <p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb151.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="180" height="80" title="image_thumb151" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb151" src="/wp-content/uploads/2014/07/image_thumb151_thumb.png" border="0">

</a>
<br />([デバッグの停止]ボタン)</p>
</li> </ol>        <h2>対象プラットフォームの切り替え</h2>   <p>Muiti-Device Hybrid Apps プロジェクトの既定の対象プラットフォームは Android OS となっています。</p>   <p>ここでは、対象のプラットフォームをiOSに変更する手順を例に紹介します。</p>         <ol>  <li>
Visual Studio 2013 のメニュー [ビルド] – [構成マネージャー] をクリックします。</li>   <li>
[構成マネージャー]&nbsp; ダイアログボックスが表示されるので、[アクティブ ソリューション プラットフォーム]ドロップダウンリストから「iOS」を選択し、[閉じる] ボタンをクリックします。<br />&nbsp;<p align="center"><a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb204.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="350" height="174" title="image_thumb204" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb204" src="/wp-content/uploads/2014/07/image_thumb204_thumb.png" border="0"></a>

<br />(開発対象プラットフォームの一覧)</p>
</li>   <li>
設定が完了するとツールバーの実行ボタン横のリストにiOSデバイスが表示されるので、任意のデバイスをクリックして実行します。<p align="center"> <a href="https://html5experts.jp/wp-content/uploads/2014/07/image_thumb246.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img width="240" height="185" title="image_thumb246" style="border: 0px currentcolor;margin-right: auto;margin-left: auto;float: none" alt="image_thumb246" src="/wp-content/uploads/2014/07/image_thumb246_thumb.png" border="0">

</a>

<br />(テスト可能なiOSデバイス一覧) </p>   </li>  Google Chrome が起動し、ウィンドウ内の Rippleシミュレーターに実行結果が表示されます。           <br>なお、Rippleエミュレーターは、Mac OS上で動作する iOSシミュレーターほど正確ではありませんので、アプリを提出する前には必ずMac OS上のiOSエミュレーターか、できれば実機でテストすることをお勧めします。 

        <br>Visual Studio 2013から、Mac OS上の iOSシミュレーターにアプリを転送してリモート実行する方法については、以下のドキュメントの <strong>Remote Build &amp; Simulation Agent for iOS [Optional]</strong>をご覧ください。<br></ol>         <dl><dt><strong>Document for Multi-Device Hybrid Apps for Visual Studio</strong> 

        <br><a title="Document for Multi-Device Hybrid Apps for Visual Studio" href="http://go.microsoft.com/fwlink/?LinkID=39771" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://go.microsoft.com/fwlink/?LinkID=39771</a></dt></dl>         
  </ol>

<h1>まとめ</h1>

<p>Multi-Device Hybrid Appsアドインをインストールすると、Visual Studio 2013でCordovaを使用したAndroid、iOS、Windows 8、Windows Pnone 8.0のアプリを開発できるようになります。</p>

<p>Visual Studio 2013のエディションはProfessionalである必要がありますが、試してみたい、という方は<a title="Visual Studio 2013" href="https://app.vssps.visualstudio.com/profile/review?context=eyJwZSI6MSwicGMiOjEsImljIjoxLCJhbyI6MSwiYW0iOjAsIm9wIjpudWxsLCJhZCI6bnVsbCwiZmEiOjMsImF1IjpudWxsLCJjdiI6MTM5NjE5MDI3NywiZnMiOjAsInN1IjowLCJlciI6MH01&amp;download=true&amp;family=VisualStudio&amp;edition=Professional&amp;release=VisualStudio2013Upd2&amp;type=web&amp;slcid=0x411&amp;mkt=ja-JP" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">90日間有効の試用版</a>を使用してみるとよいでしょう。また、Macユーザーだけど Visual Studio 2013を使ってみたい、という方には<a title="Windows 8.1 - 無償ダウンロード、ISO、サポート、ガイド、ヘルプ | TechNet" href="http://technet.microsoft.com/ja-jp/windows/windows-8.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Windows 8.1 の試用版</a>とあわせ、以下のドキュメントをご参照ください。</p>

<dl><dt><strong>Mac に Windows 8と開発者ツールをインストールする</strong></dt><dt>
<a title="Macに Windows 8と開発者ツールをインストールする" href="http://msdn.microsoft.com/ja-jp/library/windows/apps/jj680133" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://msdn.microsoft.com/ja-jp/library/windows/apps/jj680133</a></dt></dl>

<dl> <dt>&lt;備考&gt;</dt> <dd>今回の記事は以下をHTML5 Experts用に再編集したものです。</dd> <br /> <dd><a title="Visual Studio 2013でAndroid、iOSのアプリを開発するためのアドイン" href="http://blogs.msdn.com/b/osamum/archive/2014/06/16/visual-studio-2013-android-ios.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Visual Studio 2013でAndroid、iOSのアプリを開発するためのアドイン</strong></a></dd><br />  <dd><a title="Visual Studio 2013 へのMulti-Device Hybrid Appsアドインのインストール" href="http://blogs.msdn.com/b/osamum/archive/2014/06/26/visual-studio-2013-multi-device-hybrid-apps.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Visual Studio 2013 へのMulti-Device Hybrid Appsアドインのインストール</strong></dd><br />  <dd>
<a title="Muiti-Device Hybrid Appsを使った Android、iOSアプリの開発" href="http://blogs.msdn.com/b/osamum/archive/2014/07/02/muiti-device-hybrid-apps-android-ios.aspx" target="_blank"><strong>Muiti-Device Hybrid Apps を使ったAndroid、iOSアプリの開発</strong></a></dd> <br /> <dd>現在最新のVisual Studio 2013のHTML5関連の開発機能全般に興味をお持ちの方は以下の記事をご参照ください。</dd><br /> <dd><a href="http://blogs.msdn.com/b/osamum/archive/2014/06/12/visual-studio-2013-update-2-html5.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Visual Studio 2013 Update 2でのHTML5関連の強化点</strong></a></dd> </dl>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>スマートデバイスに特化したSencha Touchでハイブリッド開発（PhoneGap/Cordovaの利用）</title>
		<link>/albatrosary/7298/</link>
		<pubDate>Tue, 08 Jul 2014 01:00:32 +0000</pubDate>
		<dc:creator><![CDATA[佐川 夫美雄]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7298</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (5)Sencha Touchは、スマートデバイス開発に特化したJavaScriptフレームワークです。米Sencha社によって開発されました。米Sencha社にはデスクトップ用のS...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (5)</div><p>Sencha Touchは、スマートデバイス開発に特化したJavaScriptフレームワークです。<a href="http://www.sencha.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">米Sencha社</a>によって開発されました。米Sencha社にはデスクトップ用のSencha Ext JSもありますが、それ以外にもHTML5（JavaScript/CSSを含む）を使ってWebアプリケーションを構築するための様々な開発ツール/サービスを展開しています。</p>

<p>開発環境はWindowsでもMacでも可能です。ここではMacでの開発手順を示しますが、Windowsでも代わりありません。Sencha Touchが動作するデバイスはiPad/iPhone/Windows Phone/BlackBerry/Android 2.3+等、そのほとんどをサポートしています（<a href="http://www.sencha.com/products/touch/features/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://www.sencha.com/products/touch/features/</a>）。</p>

<h2>Senchaについて</h2>

<p>Senchaは、単にJavaScriptフレームワークの一つというものではなく、アプリケーションフレームワークです。強力でかつ整理されていて、拡張も可能、メンテナンスも可能なアプリケーションを構築することができます。そのためエンタープライズ向きと言われるところでもあります。</p>

<h3>特徴</h3>

<ul>
    <li>レイアウトマネージャによるデザイン設計</li>
    <li>UIコンポーネントが豊富</li>
    <li>Sencha独自のクラスシステム</li>
</ul>

<p>Senchaには「Sencha Cmd」という<a href="http://yeoman.io/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Yeoman</a>と同じようなSCAFFOLDING TOOLがあります。プロジェクトを作成すると、動くアプリケーションがすぐにでき上がります。この動くアプリケーションからコーティングを開始します（画面のハードコピーとソースを添付します）。</p>

<p>画面の構成はJSONで行いますが、ビジネスロジックは当然JavaScriptで記載します。Senchaは画面構成は設定レベルですませ、エンジニアを業務アプリケーションにとって、最も重要なビジネスロジック部に注力させるよう仕組み作りを行っています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70-198x300.png" alt="スクリーンショット 2014-07-01 19.01.49" width="198" height="300" class="alignnone size-medium wp-image-7789" srcset="/wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70-198x300.png 198w, /wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70-676x1024.png 676w, /wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70-136x207.png 136w, /wp-content/uploads/2014/07/bb904cf5876c7a892bd9fc28156f5c70.png 423w" sizes="(max-width: 198px) 100vw, 198px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52-198x300.png" alt="スクリーンショット 2014-07-01 19.02.01" width="198" height="300" class="alignnone size-medium wp-image-7790" srcset="/wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52-198x300.png 198w, /wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52-676x1024.png 676w, /wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52-136x207.png 136w, /wp-content/uploads/2014/07/06aabe6359e9ab8a0af58b4eb992dc52.png 423w" sizes="(max-width: 198px) 100vw, 198px" /></a><a href="https://html5experts.jp/wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b-198x300.png" alt="スクリーンショット 2014-07-01 19.02.04" width="198" height="300" class="alignnone size-medium wp-image-7791" srcset="/wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b-198x300.png 198w, /wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b-676x1024.png 676w, /wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b-136x207.png 136w, /wp-content/uploads/2014/07/830864a9a2ab639d7007ea3225cb2c7b.png 423w" sizes="(max-width: 198px) 100vw, 198px" /></a></p>

<p></p><pre class="crayon-plain-tag">Ext.define('SampleApp.view.Main', {
    extend: 'Ext.tab.Panel',
    xtype: 'main',
    requires: [
        'Ext.TitleBar',
        'Ext.Video'
    ],
    config: {
        tabBarPosition: 'bottom',

        items: [
            {
                title: 'Welcome',
                iconCls: 'home',

                styleHtmlContent: true,
                scrollable: true,

                items: {
                    docked: 'top',
                    xtype: 'titlebar',
                    title: 'Welcome to Sencha Touch 2'
                },

                html: [
                    "You've just generated a new Sencha Touch 2 project. What you're looking at right now is the ",
                    "contents of &lt;a target='_blank' href="app/view/Main.js"&gt;app/view/Main.js&lt;/a&gt; - edit that file ",
                    "and refresh to change what's rendered here."
                ].join("")
            },
            {
                title: 'Get Started',
                iconCls: 'action',

                items: [
                    {
                        docked: 'top',
                        xtype: 'titlebar',
                        title: 'Getting Started'
                    },
                    {
                        xtype: 'video',
                        url: 'http://av.vimeo.com/64284/137/87347327.mp4?token=1330978144_f9b698fea38cd408d52a2393240c896c',
                        posterUrl: 'http://b.vimeocdn.com/ts/261/062/261062119_640.jpg'
                    }
                ]
            }
        ]
    }
});</pre><p></p>

<h3>ライセンス形態</h3>

<p>Sencha Ext JS/Sencha Touch共に3つのライセンス形態が存在しています。</p>

<ul>
    <li>オープンソースライセンス(GPL v3)</li>
    <li>商用ライセンス</li>
    <li>商用OEMライセンス</li>
</ul>

<p>GPL v3ライセンスのもと、自由に利用することが可能ですが、商用アプリにSenchaを利用する場合は、商用ライセンス（開発者ライセンス）を購入する場合がほとんどです。</p>

<p>では、具体的に開発手順を追って説明します。</p>

<h2>開発手順</h2>

<p>Sencha Touchは100% PureなHTML5アプリケーションですが、カメラなどのハードウェアリソースを利用する場合にはPhoneGapもしくはCordovaを利用します（PhoneGap/Cordovaについては、<a href="https://html5experts.jp/fenomas/7672/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらの記事</a>も参考にしてください）。開発手順の大まかな流れを以下に示します。</p>

<ul>
    <li>Sencha Touchアプリケーション開発の準備</li>
    <li>Sencha Touchプロジェクトの作成</li>
    <li>Sencha TouchとPhoneGapもしくはCordovaとの連携</li>
    <li>プラグインの追加およびコーティング</li>
    <li>エミュレータもしくは実機で実行</li>
</ul>

<h2>Sencha Touchアプリケーション開発の準備</h2>

<p>Sencha Touchでアプリケーション開発を行うための準備としては、以下の2つが必要です。</p>

<ul>
    <li><a href="http://www.sencha.com/products/sencha-cmd/download" title="Senchaコマンド" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Senchaコマンド</a>のインストール</li>
    <li><a href="https://www.sencha.com/products/touch/" title="Sencha Touch" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Sencha Touch Software Development Kit</a>のダウンロード</li>
</ul>

<p>Sencha Touch SDKをダウンロードしたら「~/Library/Sencha/」の中へ保存し展開します（習慣的に「~/Library/Sencha/」を利用しますが、どこでもかまいません）。SDKはZIP圧縮されていますので、unzipコマンド等で解凍します。</p>

<p>これに加え、Androidエミュレータ、iOSエミュレータ、PhoneGap、Cordovaなどの開発ツールも必要になりますので、必要なものをインストールしてください（それらのインストール手順については説明を割愛します）。</p>

<h2>Sencha Touchプロジェクトの作成</h2>

<p>Senchaでプロジェクト開発をする際、一番最初に実行するコマンドは以下の<code>sencha</code>コマンドです。</p>

<p><code>
$ sencha -sdk [使うsdkのディレクトリを指定] generate app [アプリケーション名] [アプリケーション開発ワークディレクトリ]
</code></p>

<p>今回は、以下のように実行しています（任意の空ディレクトリ上で実行してください）。</p>

<p><code>
$ sencha -sdk ~/Library/Sencha/touch-2.3.1 generate app SampleApp ./my_sencha_touch_app
</code></p>

<p>このコマンドを実行すると、以下の様なファイルやディレクトリが作成されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/34246d01797bbc7d955f1c3fe9bb01a1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/34246d01797bbc7d955f1c3fe9bb01a1-300x261.png" alt="スクリーンショット 2014-06-19 15.11.01" width="300" height="261" class="alignnone size-medium wp-image-7314" srcset="/wp-content/uploads/2014/06/34246d01797bbc7d955f1c3fe9bb01a1-300x261.png 300w, /wp-content/uploads/2014/06/34246d01797bbc7d955f1c3fe9bb01a1-207x180.png 207w, /wp-content/uploads/2014/06/34246d01797bbc7d955f1c3fe9bb01a1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>Sencha TouchとPhoneGapもしくはCordovaとの連携</h2>

<p>次に、Sencha TouchアプリケーションとPhoneGapを連携させます。そのために<code>sencha phonegap init</code>というコマンドを使います。</p>

<p><code></p>

<h1>PhoneGap環境の初期化</h1>

<p>$ sencha phonegap init com.albatrosary.SampleApp SampleApp
</code></p>

<p>Cordovaを利用する場合は<code>sencha cordova</code>を用います。</p>

<p><code>
$ sencha cordova init com.albatrosary.SampleApp SampleApp
</code></p>

<p><code>sencha phonegap</code>コマンドを実行することによりPhoneGap/Cordova用のセットアップが行われ、phonegapディレクトリ、phonegap.local.propertiesファイルが生成されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/0c9d85af6ce73561bc8162d34f5a60f7.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/0c9d85af6ce73561bc8162d34f5a60f7-283x300.png" alt="スクリーンショット 2014-06-19 15.09.33" width="283" height="300" class="alignnone size-medium wp-image-7315" srcset="/wp-content/uploads/2014/06/0c9d85af6ce73561bc8162d34f5a60f7-283x300.png 283w, /wp-content/uploads/2014/06/0c9d85af6ce73561bc8162d34f5a60f7-195x207.png 195w, /wp-content/uploads/2014/06/0c9d85af6ce73561bc8162d34f5a60f7.png 605w" sizes="(max-width: 283px) 100vw, 283px" /></a></p>

<h2>プラグインの追加およびコーティング</h2>

<p>作成するアプリケーションでは、モバイルデバイスが備えるカメラを使用するため、PhoneGapプラグインの導入を行います。プラグインを追加するには<code>phonegap</code>コマンドを使います。<br />
カメラ用のプラグインをインストールするには、プロジェクトディレクトリ内にあるphonegapディレクトリに移動し、プラグイン追加のコマンドを実行してください。</p>

<p><code>
$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
</code></p>

<p>次にカメラを利用するためのアプリケーションをコーディングします。下記サンプルコードをapp/view/Main.jsに記載します。</p>

<p></p><pre class="crayon-plain-tag">Ext.define('SampleApp.view.Main', {
    extend: 'Ext.Panel',
    xtype: 'main',
    requires: [
        'Ext.Button',
        'Ext.Img'
    ],
    config: {
        layout: {
            type:"vbox",
            pack:"center",
            align:"center"
        },
        items: [
            {
                xtype: "image",
                src: "http://peatix.com.new.s3.amazonaws.com/user/229914/logo-html5j_200w.png",
                width: 200,
                height: 200
            },
            {
                xtype: "button",
                text: "Photo",
                handler: function() {
                    function success(image_uri) {
                        var img = Ext.ComponentQuery.query("image")[0];
                        img.setSrc(image_uri);
                    }

                    function fail(message) {
                        alert("Failed: " + message);
                    }

                    navigator.camera.getPicture(success, fail, 
                        {
                            quality: 50,
                            destinationType: navigator.camera.DestinationType.FILE_URI
                        }
                    );
                }
            }
        ]
    }
});</pre><p></p>

<p>対象となるデバイスを選択するため設定ファイル「phonegap.local.properties」を変更します。今回はphonegap.platformとしてAndroidを指定しています。</p>

<p><code></p>

<h1>The following are supported platforms for local building (blackberry is version 10)</h1>

<h1>android, blackberry, ios, wp7, wp8</h1>

<p>#</p>

<h1>The following are supported platforms for remote building (blackberry is version 6)</h1>

<h1>android, blackberry, ios, symbian, webos, wp7</h1>

<h1>This property can be a single platform or a space delimited list</h1>

<p>phonegap.platform=android</p>

<h1>This determines if build is remote (phonegap build) or local</h1>

<p>phonegap.build.remote=false</p>

<h1>Username for PhoneGap Build</h1>

<p>phonegap.build.remote.username={username}</p>

<h1>Password for PhoneGap Build</h1>

<p>phonegap.build.remote.password={password}
</code></p>

<p>phonegap.build.remote以降の設定内容は<a href="https://build.phonegap.com/plans" title="Adobe PhoneGap Build" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">リモートビルド</a>する場合の指定です（リモートビルドはCordovaの場合には存在しません）。</p>

<p>html5jのロゴをamazonaws.comから取得していますので「my_sencha_touch_app/config.xml」にアクセス許可のためにaccessタグのoriginとして「http://peatix.com.new.s3.amazonaws.com/*」を追加します。</p>

<p><code>
   origin="http://peatix.com.new.s3.amazonaws.com/*"
</code></p>

<p><br /></p>

<h2>エミュレータもしくは実機で実行</h2>

<p><code>
$ sencha app build -run native
</code></p>

<p>このコマンドは、実機がUSB接続されている場合は実機にモジュールが転送されますが、実機が接続されていない場合にはエミュレータが起動します。実機を接続しないで動かしてみます。</p>

<p>起動中の画面<br />
<a href="https://html5experts.jp/wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9-300x172.png" alt="スクリーンショット 2014-06-19 14.42.22" width="300" height="172" class="alignnone size-medium wp-image-7304" srcset="/wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9-300x172.png 300w, /wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9-1024x590.png 1024w, /wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9-207x119.png 207w, /wp-content/uploads/2014/06/c99b6f834594a09276b3680cab825bf9.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>起動完了<br />
<a href="https://html5experts.jp/wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea-300x172.png" alt="スクリーンショット 2014-06-19 14.42.45" width="300" height="172" class="alignnone size-medium wp-image-7305" srcset="/wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea-300x172.png 300w, /wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea-1024x589.png 1024w, /wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea-207x119.png 207w, /wp-content/uploads/2014/06/5b8f7fd5ab6be4f09cc5e47de6ed5fea.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>続いて、実機をUSB接続しコマンドを実行します。アプリケーションが転送されますので実行確認を行いました。実機のスクリーンショットを添付します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44-168x300.png" alt="Screenshot_2014-07-01-21-14-44" width="168" height="300" class="alignnone size-medium wp-image-7810" srcset="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44-168x300.png 168w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44-576x1024.png 576w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44-116x207.png 116w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-44.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55-168x300.png" alt="Screenshot_2014-07-01-21-14-55" width="168" height="300" class="alignnone size-medium wp-image-7811" srcset="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55-168x300.png 168w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55-576x1024.png 576w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55-116x207.png 116w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-14-55.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01-168x300.png" alt="Screenshot_2014-07-01-21-16-01" width="168" height="300" class="alignnone size-medium wp-image-7812" srcset="/wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01-168x300.png 168w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01-576x1024.png 576w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01-116x207.png 116w, /wp-content/uploads/2014/07/Screenshot_2014-07-01-21-16-01.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a></p>

<h2>適用事例</h2>

<p>今回ご紹介させていただいたSencha Touch、Sencha Ext JSは様々なところで利用されています。ご参考までにわずかではありますが、いくつかの事例をご紹介します。</p>

<p><a href="http://www.sencha.com/apps/wacoal-thailand" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/wacoal-icon.jpg" alt="wacoal-icon" width="80" height="80" class="alignnone size-full wp-image-7843" srcset="/wp-content/uploads/2014/07/wacoal-icon.jpg 175w, /wp-content/uploads/2014/07/wacoal-icon-150x150.jpg 150w" sizes="(max-width: 80px) 100vw, 80px" /></a> <a href="http://www.sencha.com/apps/forbes-photos-videos" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/forbes-icon.jpg" alt="forbes-icon" width="80" height="80" class="alignnone size-full wp-image-7844" srcset="/wp-content/uploads/2014/07/forbes-icon.jpg 175w, /wp-content/uploads/2014/07/forbes-icon-150x150.jpg 150w" sizes="(max-width: 80px) 100vw, 80px" /></a> <a href="http://www.sencha.com/apps/loccitane-en-provence" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Loccitane-en-provence_icon.jpeg" alt="Loccitane-en-provence_icon" width="80" height="80" class="alignnone size-full wp-image-7862" srcset="/wp-content/uploads/2014/07/Loccitane-en-provence_icon.jpeg 175w, /wp-content/uploads/2014/07/Loccitane-en-provence_icon-150x150.jpeg 150w" sizes="(max-width: 80px) 100vw, 80px" /></a> <a href="http://www.sencha.com/apps/airport-car-rental/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/airport-car-rental-logo.png" alt="airport-car-rental-logo" width="80" height="80" class="alignnone size-full wp-image-7868" srcset="/wp-content/uploads/2014/07/airport-car-rental-logo.png 175w, /wp-content/uploads/2014/07/airport-car-rental-logo-150x150.png 150w" sizes="(max-width: 80px) 100vw, 80px" /></a> <a href="http://www.sencha.com/blog/sencha-touch-customer-spotlight-nervana-group/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/nervana-group-logo-300x240.jpg" alt="nervana-group-logo" width="100" height="80" class="alignnone size-medium wp-image-7951" srcset="/wp-content/uploads/2014/07/nervana-group-logo-300x240.jpg 300w, /wp-content/uploads/2014/07/nervana-group-logo-207x165.jpg 207w, /wp-content/uploads/2014/07/nervana-group-logo.jpg 500w" sizes="(max-width: 100px) 100vw, 100px" /></a> <a href="http://www.sencha.com/blog/sencha-touch-and-ext-js-customer-spotlight-decidokompetensor-the-impossible/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/20131007-Decido.jpg" alt="20131007-Decido" width="100" height="80" class="alignnone size-full wp-image-7953" /></a> <a href="http://www.sencha.com/blog/sencha-touch-customer-spotlight-harmon-ie/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/20130821-harmonie-spotlight.jpg" alt="20130821-harmonie-spotlight" width="100" height="80" class="alignnone size-full wp-image-7954" /></a></p>
]]></content:encoded>
	<enclosure url="http://av.vimeo.com/64284/137/87347327.mp4" length="295" type="video/mp4" />
	
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>ハイブリッドアプリ開発といえばこれ！PhoneGap/Cordova事始め</title>
		<link>/fenomas/7672/</link>
		<pubDate>Thu, 03 Jul 2014 01:00:09 +0000</pubDate>
		<dc:creator><![CDATA[Andy Hall]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[ハイブリッド]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=7672</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (2) PhoneGapの概要と歴史 PhoneGapとは、ハイブリッドアプリのフレームワークです。つまり、HTML5コンテンツをラッピングして、いろんなデバイスやOSでネイティブア...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (2)</div><p><img src="/wp-content/uploads/2014/06/phonegap-banner.png" alt="phonegap-banner" width="900" height="206" class="alignnone size-full wp-image-7704" srcset="/wp-content/uploads/2014/06/phonegap-banner.png 640w, /wp-content/uploads/2014/06/phonegap-banner-300x68.png 300w, /wp-content/uploads/2014/06/phonegap-banner-207x47.png 207w" sizes="(max-width: 900px) 100vw, 900px" /></p>

<h2>PhoneGapの概要と歴史</h2>

<p><a href="http://phonegap.com/" title="PhoneGap" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap</a>とは、ハイブリッドアプリのフレームワークです。つまり、HTML5コンテンツをラッピングして、いろんなデバイスやOSでネイティブアプリとしてインストール可能なアプリケーションを作成できる技術です。元々は2009年にiPhoneDevCamp（ハッカソンのようなイベント）で生まれ、Nitobiという会社によって開発されました。2011年にアドビがNitobiを買収し、同時にPhoneGapのソースコードをApache Foundationに寄付して、<a href="http://cordova.apache.org/" title="Apache Cordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apache Cordova</a>というオープンソースプロジェクトが作られました。</p>

<p>現在では、Cordovaという下層のフレームワークの上に、アドビのサービスに連携するPhoneGapのレイヤーが乗っています。しかし使い方はほぼ同じであるため、PhoneGapとCordovaは大体同じものという認識で問題ありません。</p>

<h2>ゼロ（環境設定）からHello Worldまで</h2>

<p>PhoneGap/Cordovaは、<a href="http://nodejs.org/download/" title="Node.js" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Node.js</a>で使うコマンドラインアプリケーションです。ゼロから始める手段は下記の通り：</p>

<h5>1. Node.jsを<a href="http://nodejs.org/download/" title="Node.js" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">インストール</a>して、ターミナルで使えることを確認します：</h5>

<p></p><pre class="crayon-plain-tag">&gt; node -v
v0.10.13
&gt;</pre><p></p>

<h5>2. Node.jsのパッケージマネージャー npm（上記ステップでインストールされます）を利用して<pre class="crayon-plain-tag">cordova</pre>をインストールします：</h5>

<p></p><pre class="crayon-plain-tag">&gt; npm install -g cordova
npm http GET https://registry.npmjs.org/cordova
npm http 200 https://registry.npmjs.org/cordova
...
&gt;</pre><p> 
※ Macでは、多くの場合には<pre class="crayon-plain-tag">sudo</pre>が必要です。エラーが出た場合は、次のコマンドを使ってください：
</p><pre class="crayon-plain-tag">&gt; sudo npm install -g cordova
Password: 
npm http GET https://registry.npmjs.org/cordova
npm http 200 https://registry.npmjs.org/cordova
...
&gt;</pre><p></p>

<h5>3. <pre class="crayon-plain-tag">cordova create</pre>のコマンドを使って、新規プロジェクトを作ります。コマンドのパラメータとして、フォルダ名、アプリID、アプリ名を渡します。</h5>

<p></p><pre class="crayon-plain-tag">&gt; cordova create testapp com.example.test "Test App"
Creating a new cordova project with name "Test App" 
and id "com.example.test" at location "~/testapp"
&gt;</pre><p></p>

<h5>4. 新規プロジェクトのフォルダに移動します：</h5>

<p></p><pre class="crayon-plain-tag">&gt; cd testapp/
&gt;</pre><p></p>

<h5>5. <pre class="crayon-plain-tag">cordova platform add</pre>のコマンドで、作りたいアプリのプラットフォームをプロジェクトに追加します。この例ではAndroidを使います：</h5>

<p></p><pre class="crayon-plain-tag">&gt; cordova platform add android
Creating android project...
...</pre><p></p>

<h5>6. デバイスをマシンに接続して、アプリのビルドと動作確認します。</h5>

<p></p><pre class="crayon-plain-tag">&gt; cordova run android
Generating config.xml from defaults for platform "android"
Preparing android project
...</pre><p></p>

<p><pre class="crayon-plain-tag">cordova run ...</pre>を実行するとアプリのビルドの後、接続されたデバイスにアプリがインストールされ、起動されます。デバイスが接続されていない場合、Cordovaがエミュレータを起動しようとします。また、<pre class="crayon-plain-tag">cordova build</pre><pre class="crayon-plain-tag">cordova emulate</pre>などのコマンドで、個別に各ステップを行えます。利用可能コマンドを確認するには、<pre class="crayon-plain-tag">cordova help</pre>を実行してください。</p>

<p><strong>注意：</strong>ビルドを行うためには、各プラットフォームの仕組みが必要となります。例えばAndroidの場合は<a href="http://developer.android.com/sdk/" title="Android SDK" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Android SDK</a>、iOSの場合は<a href="https://developer.apple.com/xcode/" title="Apple Developer Tools" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">XCode</a>のインストールが完了している必要があります。SDK不要のビルド方法については後ほど説明します。</p>

<h2>PhoneGapアプリの構成について</h2>

<p><pre class="crayon-plain-tag">cordova create</pre>コマンドによって作られるフォルダの中身を確認しましょう：
<img src="/wp-content/uploads/2014/06/pg-folder.png" alt="pg-folder" width="201" height="229" class="aligncenter size-full wp-image-7727" srcset="/wp-content/uploads/2014/06/pg-folder.png 201w, /wp-content/uploads/2014/06/pg-folder-181x207.png 181w" sizes="(max-width: 201px) 100vw, 201px" /></p>

<ol>
<li>ルートにある <pre class="crayon-plain-tag">config.xml</pre> は、アプリのメタデータ（アプリ名など）を定義します</li>
<li><pre class="crayon-plain-tag">/www</pre>フォルダはHTMLアプリのソースです。 <pre class="crayon-plain-tag">cordova create</pre> によって参考用のサンプルコードが作成されますが、編集・削除・上書きを自由にします。このフォルダの <pre class="crayon-plain-tag">index.html</pre> がアプリの初期画面になります。</li>
</ol>

<p>上記2点以外のコンテンツは、編集する必要は通常ありません。</p>

<p>ところで、新規プロジェクトに生成される参考用の<pre class="crayon-plain-tag">index.html</pre>を確認してみると、<pre class="crayon-plain-tag">cordova.js</pre>を指している<pre class="crayon-plain-tag">script</pre>タグがあります。<pre class="crayon-plain-tag">cordova.js</pre>は、フレームワークが動的に生成しますので、ソースにそのファイルを置く必要はありません。しかし、既存のHTMLをPhoneGapアプリに使う時は、<pre class="crayon-plain-tag">cordova.js</pre>を指すスクリプトタグを追加しましょう。</p>

<h2>プラグインについて</h2>

<p>標準のHTMLでは、デバイスの機能（カメラロール、ノーティフィケーションなど）にアクセスできない場合があります。その際は、PhoneGapプラグインを使います。基本的な手順は：</p>

<ol>
<li><a href="http://plugins.cordova.io/" title="Plugin レポジトリ" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Pluginレポジトリ</a>でプラグインを探します。この例では<a href="http://plugins.cordova.io/#/package/org.apache.cordova.dialogs" title="ノーティフィケーションのプラグイン" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ノーティフィケーションのプラグイン</a>を使います。</li>
<li>ターミナルで<pre class="crayon-plain-tag">cordova plugin add [ID]</pre>で追加します：
<pre class="crayon-plain-tag">&gt; cordova plugin add org.apache.cordova.dialogs
Fetching plugin "org.apache.cordova.dialogs" via plugin registry
...</pre></li>
<li>アプリソースのJSから、プラグインのAPIを呼びます：
<pre class="crayon-plain-tag">navigator.notification.prompt("hoge");</pre> </li>
</ol>

<p>JavaScriptで定義されたプラグインのAPIが呼ばれると、各OSの対応するネイティブコードが各デバイスの機能を呼び出す仕組みになっています。その際、デバイス機能がAndroid/iOSなどで仕組みが違っていても、プラグインのインターフェイスは共通なのでPhoneGapアプリのソースを別バージョンに分ける必要がありません。しかしデバイス側の機能がプラットフォームによって実装が変わる場合もあります。その場合は、アプリの動作を各OSの挙動に合わせる必要があったりしますので、各プラグインのドキュメンテーションにある「Quirks（方言）」セクションに目を通しましょう。</p>

<h2>クラウドで行うアプリ作成サービス「PhoneGap Build」</h2>

<p>
アプリのビルドを行う際に、各プラットフォームのSDKが必要と説明しましたが、それが難しい場合もあります。例えばiOSのSDKはMacでしか動きませんので、Windowsでは利用不可能です。</p>

<p>この場合、アドビのクラウドビルドサービス<a href="https://build.phonegap.com/" title="PhoneGap Build" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap Build</a>の利用をオススメします。Android、iOS、そしてWindows 8アプリをSDKの準備なしでビルドできます。PhoneGap Buildの使い方で前述の解説と異なるところは主に次の２点です。</p>

<ol>
<li><pre class="crayon-plain-tag">cordova</pre>ではなく<pre class="crayon-plain-tag">phonegap</pre>コマンドを使用</li>
<li>クラウド側で実行するコマンドに<pre class="crayon-plain-tag">remote</pre>というキーワードを追加</li>
</ol>

<p>具体的には次のような流れで利用できます：
</p><pre class="crayon-plain-tag">&gt; sudo npm install -g phonegap
...
&gt; phonegap create test com.example.test2 Test
...
&gt; cd test
&gt; phonegap remote build android</pre><p></p>

<p>初回はPhoneGap Buildのユーザ名、パスワードを要求されます。既存のAdobe IDでログインするか、アドビのWebサイトでAdobe IDを<a href="https://www.adobe.com/account.html" title="Adobe アカウント" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">新規作成</a>（無料）してください。その後、アプリがクラウド側でビルドされます。アプリの確認、インストールなどを<a href="https://build.phonegap.com/" title="PhoneGap Build" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap Build</a>サイトでできます。</p>

<h2>まとめ</h2>

<p>PhoneGap/Cordovaは非常に軽量なフレームワークです。HTML5コンテンツのアプリ化に特化しており、他フレームワークとの競合も少なく、比較的導入し易いフレームワークだと言えます。HTMLコンテンツからモバイルアプリまでの最短経路だと思いますので、ぜひお試しください！</p>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
	</channel>
</rss>
