<?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>ハイブリッド &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/ハイブリッド/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>PCからIoTまで! Web技術を使ったユニバーサルWindowsプラットフォーム (UWP) アプリの開発</title>
		<link>/osamum_ms/20545/</link>
		<pubDate>Thu, 08 Sep 2016 01:00:45 +0000</pubDate>
		<dc:creator><![CDATA[物江 修]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows 10]]></category>
		<category><![CDATA[Windows Store]]></category>
		<category><![CDATA[uwp]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=20545</guid>
		<description><![CDATA[連載： Web技術でアプリ開発2016 (3)「Web技術でアプリ開発2016」ということで、この記事ではPCからIoT機器まで、Windows 10プラットフォームであればデバイスを問わず動作する ユニバーサルWind...]]></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> (3)</div><p>「Web技術でアプリ開発2016」ということで、この記事ではPCからIoT機器まで、Windows 10プラットフォームであればデバイスを問わず動作する ユニバーサルWindowsプラットフォーム (以下、UWPと記述) 上で動作するアプリについて紹介します。</p>

<p>このアプリはもちろんHTML、CSS + JavaScriptといったWeb開発者が慣れ親しんだ技術で開発することができます。また、インターネットでホストされているWebページをラップしてアプリ化することができます。</p>

<p>UWPをターゲットとしたアプリ開発では、新規開発はもちろん、既存のWeb資産を利用してアプリを開発し、さまざまな Windows 10デバイスに横断的に機能を提供することができます。</p>

<p>この記事では、UWPがどのようものであるか、UWP上で動作するアプリの開発方法と公開方法について紹介します。</p>

<h1>ユニバーサルWindowsプラットフォーム (UWP)アプリ とは</h1>

<p>Windows 10では、<a title="最新のWindows PC、ノートPC、タブレットのご紹介 | Microsoft Windows 10" href="https://www.microsoft.com/ja-jp/windows/view-all" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>PC</strong></a>、<a title="Windows 10 Mobileにアップグレードする方法 - マイクロソフト" href="https://www.microsoft.com/ja-jp/windows/windows-10-mobile-upgrade" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>モバイル</strong></a>、<a title="Xbox | Official Site" href="http://www.xbox.com/ja-JP/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>XBOX</strong></a>、<a title="Microsoft Surface Hub | コラボレーション デバイス" href="https://www.microsoft.com/microsoft-surface-hub/ja-jp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Surface Hub</strong></a>、<a title="Microsoft HoloLens | Official Site" href="https://www.microsoft.com/microsoft-surface-hub/ja-jp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>HoloLens</strong></a>、<a title="Raspberry Pi 3とArduinoでのWindows 10 IoTアプリの開発 - Windows IoT" href="https://developer.microsoft.com/ja-jp/windows/iot" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>IoT</strong></a> 機器といったデバイスファミリーで共通のカーネルを採用しており、これによりアプリケーションのプラットフォームが統合されました。</p>

<div style="width: 400px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/08/image7.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="/wp-content/uploads/2016/08/image_thumb7.png"
      width="450" height="174"></a>
</div>

<p><br /></p>

<p>このWindows 10デバイスファミリーで統合されたプラットフォームをユニバーサルWindowsプラットフォーム (Universal Windows Platform : UWP)と呼びます。</p>

<div style="width: 500px;margin: 0px auto">
  <br>
  <a href="https://html5experts.jp/wp-content/uploads/2016/08/image8.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto" border="0" alt="image" src="/wp-content/uploads/2016/08/image_thumb8.png"
      width="500" height="273">
    <br>
  </a>
  <br>
</div>

<p>UWP用のアプリは、OSのバージョンではなくデバイスファミリーを対象としますが、UWPのコアAPIはすべてのWindowsデバイス ファミリーに共通であり、アプリにコアAPIのみを使う場合は、そのアプリはいずれのWindows 10デバイスでも動作します。</p>

<p>つまり、固有のデバイスに縛られることなく、目的のデバイスファミリーをターゲットして再コンパイルすることでPCから IOT基板まで、さまざまな機器に配置し、動作させることができるのです。</p>

<p>Webの開発者からみればハードルが高そうなIoT機器用のアプリもHTML、CSS + JavaScriptで開発することができます。</p>

<p>たとえば、以下の記事では、Raspberry Piとディスプレイをマジックミラーの裏に配置し、洗面台の鏡の中に情報を表示するアプリを紹介していますが、この上表を表示するアプリはHTML、CSS + JavaScriptを使用したUWPアプリです。</p>

<ul>
  <li><a href="https://blogs.windows.com/msedgedev/2016/05/31/magic-mirror-hosted-web-app/#ZA4Bz3egXpR7RBJS.99" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Building an IoT Magic Mirror with Hosted Web Apps and Windows 10</strong></a> </li>
</ul>

<p>また逆に、拡張機能SDKにより特殊なデバイス用のアプリも開発することもできます。</p>

<h1>UWPアプリのメリット</h1>

<p>UWPアプリのメリットは、前述したようにデバイスファミリーを横断したアプリの開発が容易であるということもありますが、それ以外でも、複数の言語で開発することができることや、UWPが公開する豊富なAPIを直接使用できるということがあるでしょう。</p>

<p>UWPアプリのロジック部分はC#、Visual Basic、C、C++、JavaScriptといった開発言語で記述することができ、UI部分は XAML (C#、VB、C、C++)、DirectX (C、C++)と、HTML/CSS (JavaScript)で記述することができます。</p>

<div style="width: 600px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/09/image1.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="/wp-content/uploads/2016/09/image_thumb1.png"
      width="600" height="338"></a>
</div>

<p><br /></p>

<p>UWPのリソースにアクセスするためのWindowsランタイム(WinRT) APIには、各言語ともWindows名前空間を空間を介して接続することができます。</p>

<p>WinRT APIは Windows 10の予定表や連絡先、タイルといったOSが持つソフト的なリソースからBluetoothやWi-Fi、USBといったハード的リソースへのアクセスなど、幅広く機能を提供します。そしてこれらのAPIはUWPでサポートされている言語であれば、言語を問わず利用することができます。</p>

<p>Windowsランタイムがアプリ向けに公開しているAPIのついての詳細は以下のドキュメントをご参照ください。</p>

<ul>
  <li><a title="WindowsランタイムアプリのWindows APIリファレンス - Windows app development" href="https://msdn.microsoft.com/ja-jp/library/windows/apps/br211377.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Windows ランタイム アプリのWindows APIリファレンス</strong></a> </li>
</ul>

<h1>開発環境</h1>

<p>UWPアプリの開発はWindows 10と<a title="Visual Studio - Microsoft Developer Tools" href="https://www.visualstudio.com/ja-jp/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Visual Studio 2015</a>もしくは、<a title="Apache Cordova" href="https://cordova.apache.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache Cordova</a>を使用して行うことができます。</p>

<h2>Visual Studio 2015とApache Cordovaの使い分け</h2>

<p>Visual Studio 2015では、それ単体によるUWPアプリの開発はもちろん、<a title="Visual Studio Tools for Apache Cordova" href="https://www.visualstudio.com/ja-jp/features/cordova-vs.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Visual Studio Tools for Apache Cordova</strong></a> を使用してiOS、Android、UWPアプリの開発が行えます。</p>

<p>つまり、Visual Studio 2015ではそれ単体とApache Cordovaのどちらかを使用してUWPアプリを開発することができますが、これは単に機能が重複しているということではなく、以下のように状況や目的に合わせて使い分けるためにあります。</p>

<div style="width: 600px;margin: 0px auto">
  <table cellspacing="0" cellpadding="2" width="600" border="1">
    <tbody>
      <tr>
        <td style="text-align: center;background-color: lightskyblue" valign="middle" width="200">開発環境</td>
        <td style="text-align: center;background-color: lightskyblue" valign="middle">用途</td>
      </tr>
      <tr>
        <td valign="middle" width="200">Visual Studio 単体</td>
        <td valign="middle">特殊デバイス向けの開発など、UWP固有の機能を使用した実装を行う場合</td>
      </tr>
      <tr>
        <td valign="middle" width="200">Apache Cordova</td>
        <td valign="middle">共通のソースで、UWP以外のiOSやAndroidにもアプリを提供する場合</td>
      </tr>
    </tbody>
  </table>
</div>

<p>なお、Visual Studio 2015は有償製品ですが、非営利目的やオープンソースソフトウェアの開発であれば、無償の<strong> </strong><a title="Visual Studio Community - Visual Studio" href="https://www.microsoft.com/ja-jp/dev/products/community.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Visual Studio Community</strong></a><strong>　</strong>を使用することができます。</p>

<p>Visual Studio Communityは、機能的にはVisual Studio Professionalと同等であり、クロスプラットフォーム開発をサポートしています。</p>

<h1>開発できるアプリの形式</h1>

<p>HTML、CSS + JavaScriptで開発できるUWPアプリの形式は、大まかにUI部分をクライアントサイドにインストールするパッケージ型と、ネットワークにホストされているコンテンツをラップしたホスト型の2つのタイプに大別されます。</p>

<div style="width: 500px;margin: 0px auto">
  <table cellspacing="0" cellpadding="2" width="500" border="1">
    <tbody>
      <tr>
        <td style="text-align: center;background-color: lightskyblue" valign="middle" width="150">アプリの型式</td>
        <td style="text-align: center;background-color: lightskyblue" valign="middle">状態</td>
      </tr>
      <tr>
        <td valign="middle" width="150">パッケージ型</td>
        <td valign="middle">UI部分をクライアントサイドにインストールするもの
          <br>一部 WebViewコントロールで覆ったものもプロジェクトテンプレート上はこれにあたる</td>
      </tr>
      <tr>
        <td valign="middle" width="150">ホスト型</td>
        <td valign="middle">ネットワークにホストされている
          <br>Webコンテンツをラップしたもの</td>
      </tr>
    </tbody>
  </table>
</div>

<p>一部をWebViewコントロールで覆ったものもVisual Studioのプロジェクトテンプレート上はパッケージ型に含まれます。</p>

<div style="width: 500px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/08/image9.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="/wp-content/uploads/2016/08/image_thumb9.png"
      width="500" height="331"></a>
</div>

<p>パッケージ型、ホスト型アプリにはそれぞれ特徴とメリットがあります。</p>

<p>パッケージ型アプリは、動作に必要なリソースをクライアントサイドにインストールできるので、アプリの作りによっては、動作にサーバーサイドのリソースを必要としない完全にオフラインのアプリを作ることも可能です。</p>

<p>ホスト型のアプリの場合は、ネットワーク上に公開されているコンテンツを表示しているので、画面や機能を変更する際でも再インストールの必要はなく、常に最新の情報を提供することができます。また、Webサイト向けのコンテンツの開発と作業が一元化できます。
  <br>ホスト型のアプリはその性質上オンラインでの使用が大前提となりますが <a href="https://developers.google.com/web/progressive-web-apps/" target="_brank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Progressive Web Apps</strong> </a>の実装が可能になればこういった制限も大幅に緩和され、パッケージ型よりもホスト型が選択されるケースが増えることでしょう。</p>

<div style="width: 300px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/08/image10.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="/wp-content/uploads/2016/08/image_thumb10.png"
      width="400" height="302"></a>
</div>

<p><br />&nbsp;</p>

<p>パッケージ型のアプリはもちろん、ホスト型のアプリも、適切なセキュリティ設定を行うことにより、Windowsランタイム API にアクセスできます。</p>

<p>たとえば、以下の記事では、Webサイトに公開されているページに記述されているJavaScirptからNFCデバイスにアクセスする方法について紹介しています。</p>

<ul>
  <li><a title="UWPのHosted WebアプリからのNFCデバイスへのアクセス" href="https://blogs.msdn.microsoft.com/osamum/2016/06/02/uwp-%e3%81%ae-hosted-web-%e3%82%a2%e3%83%97%e3%83%aa%e3%81%8b%e3%82%89%e3%81%ae-nfc-デバイス%e3%81%b8%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>UWPのHosted WebアプリからのNFCデバイスへのアクセス</strong></a></li>
</ul>

<h1>開発方法</h1>

<p>Visual Studio 2015に用意されたプロジェクトテンプレートを使用してプロジェクトを作成し、コーディングしていきます。</p>

<p>HTML、CSS + JavaScriptで開発するUWPアプリに用意されているプロジェクトテンプレートの種類は以下のとおりです。(2016年9月現在)</p>

<div style="width: 600px;margin: 0px auto">
  <table cellspacing="0" cellpadding="2" width="600" border="1">
    <tbody>
      <tr>
        <td style="text-align: center;background-color: lightskyblue" valign="middle" width="230">プロジェクトテンプレートの種類</td>
        <td style="text-align: center;background-color: lightskyblue" valign="middle">説明</td>
      </tr>
      <tr>
        <td valign="middle" width="230">空白のアプリ</td>
        <td valign="middle">事前定義されたコントロールやレイアウトのないユニバーサルWindowsアプリのためのプロジェクト。コンテンツセキュリティポリシー(CSP)を適用します。すべてのユニバーサルWindows APIに直接アクセスします。</td>
      </tr>
      <tr>
        <td valign="middle" width="230">WinJSアプリ</td>
        <td valign="middle">WinJS を使用しているユニバーサルWindowsアプリのプロジェクトです。すべてのユニバーサルWindows APIに直接アクセスできます。</td>
      </tr>
      <tr>
        <td valign="middle" width="230">ホストされるWebアプリ</td>
        <td valign="middle">リモートの開始ページを含むユニバーサルWindowsアプリのプロジェクトです。すべてのユニバーサル Windows APIにアクセスするには、URLをアプリケーション コンテンツURI規則に追加する必要があります。</td>
      </tr>
      <tr>
        <td valign="middle" width="230">空のアプリ-Webコンテキスト</td>
        <td valign="middle">ローカルコンテンツをWebからのものとして処理します。既定のアプリケーションコンテンツポリシー(CSP)はありません。ユニバーサルWindows APIにアクセスするには、URIがアプリケーション コンテンツURI規則で宣言されている必要があります。</td>
      </tr>
    </tbody>
  </table>
</div>

<p>開発を開始するための具体的な手順について、以下のチュートリアルを参照してください。</p>

<ul>
  <li><a title="Hello, worldアプリを作成する (JS)" href="https://msdn.microsoft.com/windows/uwp/get-started/create-a-hello-world-app-js-universal" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>JavaScript とHTMLのチュートリアル</strong></a>
    <li><a title="Hello, worldアプリを作成する (XAML)" href="https://msdn.microsoft.com/windows/uwp/get-started/create-a-hello-world-app-xaml-universal" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>C#とXAMLのチュートリアル</strong></a>
      <li><a title="C++ を使った&quot;hello world&quot;アプリの作成(Windows 10)" href="https://msdn.microsoft.com//windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>C++とXAMLのチュートリアル</strong></a></li>
</ul>

<h1>配布方法</h1>

<p>UWPアプリの公開は、一般的にはWindowsストアを介して行われます。</p>

<div style="width: 200px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/09/image2.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="/wp-content/uploads/2016/09/image_thumb2.png"
      width="200"></a>
</div>

<p><br /></p>

<p>Windowsストアにアプリを公開するには、Windowsデベロッパーセンターのダッシュボードから、<a title="UWPアプリのパッケージ化" href="https://msdn.microsoft.com/ja-jp/windows/uwp/packaging/packaging-uwp-apps" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">appx形式にパッケージングした</a>アプリを提出します。Windowsストア側で安全性を含め様々な審査が実施され、合格すると公開されます。</p>

<p>UWPアプリをWindowsストアに公開するまでの、開発者アカウントの作成からパッケージの提出、支払いの受け取り (販売した場合) までの具体的な方法については以下のドキュメントを参照してください。</p>

<ul>
  <li><a title="Windowsアプリの公開 | MSDN" href="https://msdn.microsoft.com/ja-jp/windows/uwp/publish/index" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>Windowsアプリの公開</strong></a></li>
</ul>

<p>会社組織のみの利用を想定した場合など、Windowsストアで公開を希望しない場合にはサイドローディングという方法を使用して、管理化にあるデバイスにUWPアプリを直接インストールすることができます。</p>

<p>サイドローディングの具体的な方法については以下のドキュメントを参照してください。</p>

<ul>
  <li><a title="DISMを使ったアプリのサイドローディング" href="https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn938326(v=vs.85).aspx#UnderstandingConcepts" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>DISM を使ったアプリのサイドローディング</strong></a></li>
</ul>

<h1>収益モデル</h1>

<p>Windowsストアでは提出したアプリを販売することができます。また、アプリ内の課金も可能です。開発者Windowsストアが用意するさまざまな仕組を利用して収益を上げることができます。</p>

<p>現在Windowsストアで収益を上げるには、以下の3つの方法があります。</p>

<ol>
  <li><strong>アプリそのものの販売</strong>
    <li><strong>アプリ内課金(In-App purchase : IAP)</strong>
      <li><strong>アプリ内広告</strong></li>
</ol>

<p>これら収益に関する詳しい内容は、以下のドキュメントを参照してください。</p>

<ul>
  <li><a title="アプリの価格と使用可能状況の設定" href="https://msdn.microsoft.com/ja-jp/windows/uwp/publish/set-app-pricing-and-availability" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>アプリの価格と使用可能状況の設定</strong></a>
    <li><a title="IAPの申請" href="https://msdn.microsoft.com/ja-jp/windows/uwp/publish/iap-submissions" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>IAPの申請</strong></a>
      <li><a title="広告による収益獲得" href="https://msdn.microsoft.com/ja-jp/windows/uwp/publish/monetize-with-ads" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>広告による収益獲得</strong></a></li>
</ul>

<h1>まとめ</h1>

<p>この記事ではWindows 10から採用されたユニバーサルWindowsプラットフォーム用のアプリ(UWPアプリ) について紹介しました。</p>

<p>UWPアプリは Window 10デバイスファミリーに対し横断的にアプリを開発できます。そのためPC、スマートフォンはもちろん、Web開発者からは技術的に遠いIoTデバイス向けのアプリも使い慣れた HTML,CSS + JavaScriptで開発することができます。</p>

<p>Continuumにも対応しているため、対応スマートフォンをテレビやディスプレイに接続した際にユーザーにデスクトップエクスペリエンスを提供することもできます。</p>

<div style="width: 500px;margin: 0px auto">
  <a href="https://html5experts.jp/wp-content/uploads/2016/09/image3.png" data-wpel-link="internal"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto" border="0" alt="image" src="/wp-content/uploads/2016/09/image_thumb3.png"
      width="500" height="250"></a>
</div>

<p>Webブラウザー上で動作するアプリはもちろん、他のハイブリット アプリ用フレームワーク向けのコンテンツでも、HTML、CSS + JavaScriptを使用して作られているのであれば、特別なことをしていない限りはUWPアプリへの移植はそれほど難しくはありません。</p>

<p>新規での開発はもちろん、既存のアプリの新たな市場獲得のための移植先としても検討してもいいかもしれません。</p>

<p>UWP開発についてのより詳しい情報は以下をぜひご覧ください。</p>

<ul>
  <li><a title="ユニバーサルWindowsプラットフォーム (UWP) 向けアプリの開発" href="https://msdn.microsoft.com/ja-jp/library/dn975273.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>ユニバーサル Windowsプラットフォーム(UWP)向けアプリの開発</strong></a></li>
  <li><a title="ユニバーサルWindowsアプリの開発 - Windowsアプリの開発" href="https://developer.microsoft.com/ja-jp/windows/develop" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>ユニバーサル Windowsアプリの開発 &#8211; Windowsアプリの開発</strong></a></li>
  <li><a title="ユニバーサルWindowsプラットフォーム アプリ(UWP)のデザイン - Windowsアプリ開発" href="https://developer.microsoft.com/ja-jp/windows/design" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><strong>ユニバーサルWindows プラットフォームアプリ(UWP)のデザイン &#8211; Windowsアプリ開発</strong></a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[Web技術でアプリ開発2016]]></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>エキスパートがぶっちゃけトークで語る「ハイブリッドアプリ開発、ホントのトコロ」</title>
		<link>/miyuki-baba/7643/</link>
		<pubDate>Mon, 04 Aug 2014 00:00:11 +0000</pubDate>
		<dc:creator><![CDATA[馬場 美由紀]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[html5j]]></category>
		<category><![CDATA[デバイス]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7643</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (9)HTML5を活用したハイブリッドアプリ開発について、Web業界を代表するエキスパート陣が様々な観点からレポートをお届けした「ハイブリットアプリ開発最前線」特集。 最後のレポート...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (9)</div><p>HTML5を活用したハイブリッドアプリ開発について、Web業界を代表するエキスパート陣が様々な観点からレポートをお届けした「<a href="https://html5experts.jp/series/hybrid-special/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ハイブリットアプリ開発最前線</a>」特集。</p>

<p>最後のレポートは「ハイブリッドアプリ開発、ホントのトコロ」と題し、第48回HTML5とか勉強会「ハイブリッドアプリ開発最新動向」の懇親会で行われたぶっちゃけトーク対談を再現レポートします。</p>

<p><img src="/wp-content/uploads/2014/07/main3.jpg" alt="" width="640" height="200" class="alignnone size-full wp-image-8045" srcset="/wp-content/uploads/2014/07/main3.jpg 640w, /wp-content/uploads/2014/07/main3-300x93.jpg 300w, /wp-content/uploads/2014/07/main3-207x64.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 95%;">▲登壇者（左から）：株式会社ニューフォリア <a href="https://html5experts.jp/htpboost/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">畠田喜丈</a>さん、アシアル株式会社 <a href="https://html5experts.jp/anatoo/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">久保田光則</a>さん、AngularJS Japan User Group管理人 <a href="https://html5experts.jp/canidoweb/ " data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">金井健一</a>さん、Google Developer Expert（Chrome）<a href="https://html5experts.jp/yoshikawa_t/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">吉川徹</a>さん<br>モデレーター：HTML5 Experts.jp編集長 <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">白石俊平</a></span></p>

<h2>ハイブリッドアプリ開発にしてよかったことは？</h2>

<p><br>
<strong>白石：</strong>ハイブリッドアプリ開発が注目され出してもう数年が経つんですが、まだくすぶってる感があると思うんです。今日は本音でいろいろ聞けたらと。まず、ハイブリッドアプリ開発にしてよかったと思うことを聞かせてください。<br><br>
<strong>久保田：</strong>僕はハイ・フィデリティ（忠実度の高い）なプロトタイプをさくっと作れることですね。アプリの機能は動かないけど、アプリのユーザーインターフェイスやインタラクションがわかる。動きやさわった感じが確かめられるし、アプリケーションの見た目の“ガワ”を作るのが断然早くなります。<br><br>
これがいいアプリなのか判断に迷うフェーズでも、実際のUIの“ガワ”をがっちり作ることで、高い確度で確かめることができる。それに、クロスデバイス,クロスプラットフォームでがしがし動くので、アプリのUIを確かめるのに役立っています。サービスの受託でやってたときに、お客様にもそんなに早くできるのかって驚かれたこともありますね。</p>

<p><div id="attachment_8051" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/anatoo/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/kubota3.jpg" alt="アシアル株式会社　久保田 光則さん" width="640" height="321" class="size-full wp-image-8051" srcset="/wp-content/uploads/2014/07/kubota3.jpg 640w, /wp-content/uploads/2014/07/kubota3-300x150.jpg 300w, /wp-content/uploads/2014/07/kubota3-207x103.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">アシアル株式会社　久保田 光則さん</p></div>
<br>
<strong>白石：</strong>ちなみにそのプロトタイプって、PCのWebブラウザでも動くんですか？<br><br>
<strong>久保田：</strong>動きますよ。開発スタイルにもよりますが、モバイルでいちいち確認するより、Webブラウザでも確認できたほうが早かったりします。お客さんにもすぐ触ってもらえるし、開発の後半で「ここのUIがいけてない」と指摘されるのを最初からつぶせるので便利です。<br><br>
<strong>畠田：</strong>そんな高品質なプロトタイプを無料で作っちゃうと、受注先のシステムインテグレーション企業とかに、「こんなに簡単にできるんなら安くして」って言われたりすることがありそう。なんかすごく頑張って作ったのに、損した気分にならない？<br><br>
<strong>久保田：</strong>もちろんハイブリッドアプリの利便性を理解してくれる、リテラシーが高いお客さんであることは条件になるかなと思います。<br><br>
<strong>畠田：</strong>やっぱり（笑）。<br><br>
<strong>畠田：</strong>私がハイブリッド開発で良いと思える点は、デザイナーとエンジニアの分担作業がしやすいところですね。モバイルアプリの案件って、だいたいUI上の要件は似たようなものが多いし、そういう繰り返し作業ってエンジニアにはつらいんですよね。同じことをずっとやり続けるのって技術力の向上も期待できないし。<br><br>
その点、ハイブリッドアプリはUIのデザインはコーディングも含めてデザイナーにお任せしやすいので、エンジニアはロジックに集中できる。早い・安いだけではない、エンジニアのモチベーションの根っこの部分に寄与することも多いような気がします。<br><br>
<strong>白石：</strong>HTML5を書けるデザイナーさんは増えてますもんね。<br><br>
<strong>金井：</strong>僕はある程度動くものがサクッと作れるので、早い段階からアプリのイメージをお客さんと共有できることですね。コストをかけずにハイブリッドアプリでまずリリースして、人気が出たらネイティブにしてもいいし、ダメならそのままで、みたいな選択肢がある。はじめからAndroidとiPhone用のネイティブアプリを両方開発するより、リスクが少ない。</p>

<p><img src="/wp-content/uploads/2014/07/photo.jpg" alt="" width="640" height="367" class="alignnone size-full wp-image-8067" srcset="/wp-content/uploads/2014/07/photo.jpg 640w, /wp-content/uploads/2014/07/photo-300x172.jpg 300w, /wp-content/uploads/2014/07/photo-207x118.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><br>
<strong>白石：</strong>ところで、ここまでクロスプラットフォームでの移植性の話があまり出てきていませんね。ハイブリッドの利点といえばそこだと思っていたので、意外。<br><br>
<strong>畠田：</strong>ああ、移植性については、まずありきのつもりで話してました。<br><br>
<strong>久保田：</strong>そうですね。ちなみに私はAndroid版は動作が遅いので、先に作るようにしています。前にiOSから作ってAndroidに移植したら遅くて大変な目に合ったことがあって…。<br><br>
<strong>白石：</strong>ちなみに最近は、Androidは2.3以上をターゲットにして開発しているんですか？まだ2.2もスコープに入ってるのかな。<br><br>
<strong>畠田：</strong>2.2が要求仕様書に入ってるところはまだ多いですね。ただ「端末買い換えが2年だからそこは切り捨てましょう」って、そこは削ってもらうように説得しようと試みますけどね（笑）。<br><br>
<strong>吉川：</strong>私は一エンジニアとしての視点から、ハイブリッドアプリでよかった点をお話すると、やはりWebエンジニアがJavaやObjective-Cが書けなくても、AndoroidやiOSアプリの仕事が受けられることですね。最近はWebのコードで書いて、Cordovaでコンパイルすればアプリが作れる。仕事の幅が広がって楽しいです。<br><br>
<strong>──ここで会場から質問が寄せられた</strong><br><br>
<strong>Q.</strong>ハイブリッドアプリというと移植性の話もあるけど、クックパッドの事例が成功として挙げられます。ユーザーを絞り込んだABテストが容易にできるだけではなく、デブロイの早さなどを考慮してハイブリッドアプリにしていると聞いたことがあるのですが、そのほかにハイブリッドアプリにしかできないことってありますか？<br><br>
<strong>畠田：</strong>ハイブリッドアプリって遅いんじゃないか？というハイブリッドアプリに否定的な声に対抗できるので、クックパッドさんの成功事例は我々にとってありがたいですね。<br><br>
詳しくは存じ上げないのですが、クックパッドさんにとっては、新機能のデプロイまでの時間を短くするための、現時点での最善策がハイブリッドアプリなのではないでしょうか。</p>

<p><div id="attachment_8046" style="width: 650px" class="wp-caption alignnone"><img src="/wp-content/uploads/2014/07/hatada.jpg" alt="株式会社ニューフォリア　畠田喜丈さん" width="640" height="351" class="size-full wp-image-8046" srcset="/wp-content/uploads/2014/07/hatada.jpg 640w, /wp-content/uploads/2014/07/hatada-300x164.jpg 300w, /wp-content/uploads/2014/07/hatada-207x113.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">株式会社ニューフォリア　畠田喜丈さん</p></div>
<br>
<strong>久保田：</strong>機能面やUXの観点からいうと、なんだかんだ言っても“ネイティブが最高！”だと思ってます。だって、FacebookやTwitterはプラットフォームに合わせて書き換えてるじゃないですか。結局、それが一番いい体験だからなんですよね。ハイブリッドの利点は、機能やUXとは別の側面から語られるべきかな、と思います。<br><br>
<strong>──さらに会場からの質問が飛ぶ</strong><br><br>
<strong>Q.</strong>最近、ハイブリッドアプリを開発するときに、（PhoneGap）プラグインを使わないでできることが少なくて苦戦しています。時には、ネイティブコードでプラグインを書く必要が生じたりとか。これって、Web技術で全部書くという理想から言うと残念なのですが、どうお考えですか？<br><br>
<strong>久保田：</strong>さっき“ネイティブが最高！”と言ったのは、アプリの要件と環境によります。FacebookやTwitterみたいに開発予算があって、エンジニアが揃えられればなんでもできると思いますが、全部のプロジェクトがそんなことができるかというとできない。プラットフォームごとに最高のUXを提供することよりも、リリースのスピードや限られた予算と言った事情が優先されることもあるということです。<br><br>
だから絶対HTML5で書かなければいけないと思い込む事自体、ナンセンスかなと。例えばリリースのスピードが優先されている場合に、ネイティブで書いたほうが早ければ、ネイティブで書けばいいと思います。<br><br>
<strong>吉川：</strong>ネイティブでしか書けないものはネイティブアプリで作ればよいので、私は基本的にはハイブリッドアプリで“ネイティブコードで書いたら負け”と思ってます。ただ、お客さんはモバイルアプリ大好きなので、何でもかんでもモバイルで作ってくださいと言ってくることが多いのも現実としてあります。その時は機能面で妥協できるのかとか、それなりのコストがかかることを提示して、なるべくプラグインで書かなくていいようにしています。それくらいプラグインを書くのはつらい（笑）。</p>

<h2>ハイブリッドアプリで開発してドはまりしたことある？</h2>

<p><br>
<strong>白石：</strong>ところで、ハイブリッドアプリでドはまりした経験はありますか？デバックが全然できなかったとか、移植したら動作が違うとか。<br><br>
<strong>金井：</strong>端末によって同じCSSなのに見た目が全然違うのもそうですが、JavaScriptの挙動も違うところ。一方の端末は滑らかに動くのに、別の端末だとカクカクだったり、もっさりしたり。とにかく端末ごとに挙動が違うのは予想できないので、トライ＆エラーを繰り返すことになりましたね。</p>

<p><div id="attachment_8060" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/canidoweb/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/kanai11.jpg" alt="html5j Web先端技術味見部部長　AngularJS Japan User Group 管理人　金井 健一さん" width="640" height="350" class="size-full wp-image-8060" srcset="/wp-content/uploads/2014/07/kanai11.jpg 640w, /wp-content/uploads/2014/07/kanai11-300x164.jpg 300w, /wp-content/uploads/2014/07/kanai11-207x113.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">html5j Web先端技術味見部部長　AngularJS Japan User Group 管理人　金井 健一さん</p></div>
<br>
<strong>──会場からも同様の経験談が寄せられる</strong><br><br>
<strong>Q.</strong>2年前くらいにハイブリッドアプリを開発したとき、Android2.2と2.3の全盛期だったんですが、同じCSSを適用しているのにデバイスによって見た目が違うのが困りました。最近はどうなんでしょうか？<br><br>
<strong>吉川：</strong>最近のAndroidだと4.1以降は標準ブラウザがChromeになっていますし、4.4からは、内部のWebViewもBlink(Chromeのレンダリングエンジン)が利用されるようになっているので、2.x時代に比べると大分改善されていると思います。<br><br>
<strong>──ここで、当時のひどい開発事例の話が盛り上がり</strong><br><br>
<strong>畠田：</strong>昔は見た目のスピードを上げるために、ひどいハックをする端末メーカーもありました。ここにいるメンバーはハイブリッドアプリを推進する立場の人間だけど、なんでもかんでもハイブリッドアプリがいいですよと万能の薬のように言っていけないと思うんです。<br><br>
ハイブリッドアプリに向いてないものは全力で羽交い絞めして、止めるべきなんですよね。そうでないとハイブリッドアプリ自体が間違った方向で捉えられてしまう。ネイティブで開発したほうがいいものは、ちゃんとジャッジして伝えてあげるのも重要ですね。</p>

<h2>標準化の動きはどうなってる？</h2>

<p><br>
<strong>白石：</strong>CordovaやニューフォリアのAPI、Chrome AppsのAPIなど、モバイルデバイス向けのWeb APIは細分化しつつありますが、これって標準化できないものなんでしょうか。<br><br>
<strong>──ここで、白石さんが突然会場の<a href="https://html5experts.jp/futomi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">羽田野太巳</a>さんを指名</strong><br><br>
羽田野さん、現状ってどんなかんじなんですか？<br><br>
<strong>羽田野：</strong>最新情報はあまりよく知らないんだけど、統一はしばらくないんじゃないかと思います。もちろんいつかは一緒にするために施策を立てているとは思いますが、現在はFirefox OS/Windows 8/Chrome Appsなど、各ベンダーが独自にAPIを作り込んでるのが現状です。<br><br>
でも、いつか標準化してくれるからそれまで開発を待とうなんてベンダーはないわけで。いろいろAPIが出てきて、いろんな事例を経験して、みんなが試していいものが残っていくし、ある意味健全です。だからまだまだ時間がかかる。個人的にはベンダーがそれぞれ独自のAPIで作っていくのは大歓迎ですね。<br><br>
これまではネイティブでしかできなかったことが、JavaScriptで何でも開発できるようになってきました。今はばらばらだけど、一つのプログラム言語だけでできるようになりつつあると思います。これはまだデファクトではないけど、コンソーシアム標準的には前向きに捉えていいのではないでしょうか。</p>

<p><div id="attachment_8032" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/futomi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/hatano.jpg" alt="羽田野 太巳さん" width="640" height="327" class="size-full wp-image-8032" srcset="/wp-content/uploads/2014/07/hatano.jpg 640w, /wp-content/uploads/2014/07/hatano-300x153.jpg 300w, /wp-content/uploads/2014/07/hatano-207x105.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">有限会社futomi 代表取締役、株式会社ニューフォリア　取締役　最高技術責任者 羽田野 太巳さん</p></div>
<br>
<strong>吉川：</strong>ちなみに、Chrome AppsのAPIはまだ標準化するつもりはないと思います。将来的にはW3Cの議題にのせるという話も出ていますが、今は各プラットフォームが独自に作ってて、そのフィードバックを収集している段階じゃないかと。<br><br></p>

<h2>HTML5でデバイスごとの互換性や移植性がとれてない？</h2>

<p><br>
<strong>白石：</strong>ところで、HTML5ならデバイスごとの互換性や移植性がとれると言われていたのに、結局選ぶプラットフォームに依存していて、互換性がとれてないですよね？その辺はいかがでしょうか。</p>

<p><div id="attachment_8062" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/shumpei-shiraishi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/shiraishi.jpg" alt="HTML5 Experts.jp編集長 　白石 俊平さん" width="640" height="305" class="size-full wp-image-8062" srcset="/wp-content/uploads/2014/07/shiraishi.jpg 640w, /wp-content/uploads/2014/07/shiraishi-300x142.jpg 300w, /wp-content/uploads/2014/07/shiraishi-207x98.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">HTML5 Experts.jp編集長　白石 俊平</p></div>
<br>
<strong>久保田：</strong>ネイティブの機能を呼び出すCordovaプラグインのAPIインターフェイスは、なるべく全部W3Cが出した仕様に従ってポリフィルを作っています。<br><br>
<strong>羽田野：</strong>そもそもHTML5に関わらずプラットフォームに対する互換性がないとか、Web標準やHTML5に期待しすぎな面があるよう気がします。Web標準ってキャッチアップにしかすぎなくて、最先端のものがいきなり標準化されるわけではありません。これまで標準化されたのはHTML5というのはWebの延長であって、アプリプラットフォームはあとから出てきたものなんですよね。<br><br>
OSが提供するAPIの数からすれば、WebのAPIなんてまだまだ足りない。はじめからHTML5が何でもできると思ってしまうこと自体ナンセンスで、足りないものは独自実装に頼るしかない。WebとOSの差分はどうしても出てしまうけど、それはしょうがないし、期待しすぎてはいけない。それでもこのトレンドでWebの技術しかなかった人がアプリを作れるようになってきたのだから、十分価値があると思います。<br><br>
<strong>畠田：</strong>Web技術の応用範囲はすごい勢いで広がっています。標準化のスピードと比較しても圧倒的に早いわけです。例えばクルマに使おうかとか、今まで思ってもみなかったところに拡大していて、私たちWeb業界の人間からすると、すごく面白いわけです。だから今は標準化はまだ先でもいいんじゃないかと思います。<br><br>
<strong>羽田野：</strong>もう一つ、標準化に対してブラックな話をすると、皆さんの仕事の単価が下がることにもつながるんです。だって誰が作っても同じクオリティのアプリがプラットフォームに上がってくるんですから、お金を取る理由がなくなってくるんです。<br><br>
今みたいにプラットフォームごとにばらばらのカオスな状況だからこそ、コストも請求できるといういい面もある。だから誰が作っても同じというものだけが標準化されていけばいい。価値が下がって単価が下がってもいいものだけが、標準化されればいいと考えたほうがいいと思いますよ。</p>

<h2>さまざまなデバイスでWeb技術が果たす役割</h2>

<p><br>
<strong>白石：</strong>これからさらに様々なデバイスが登場し、Web技術が果たす役割も増えていくと思います。皆さんはどのようにお考えですか？</p>

<p><img src="/wp-content/uploads/2014/07/photo3.jpg" alt="" width="640" height="341" class="alignnone size-full wp-image-8070" srcset="/wp-content/uploads/2014/07/photo3.jpg 640w, /wp-content/uploads/2014/07/photo3-300x159.jpg 300w, /wp-content/uploads/2014/07/photo3-207x110.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><br>
<strong>吉川：</strong>いろんなデバイスにWebの技術が広がっていくのはうれしいですね。Webの進化のスピードに合わせて、デジタル家電のUIやデザインの進化も加速するはず。期待したいです。<br><br>
<strong>畠田：</strong>ユーザーインターフェイスもだんだんWebに準じたものになり、今まで古くさかったデザインやUIが洗練されたものになっていくはずです。Webで活躍しているエンジニアやデザイナーたちによって使いにくいインターフェイスやマニュアルなどが革新されていく。誰でも使えるようになる世界が早く来てほしい。<br><br>
<strong>白石：</strong>ただ僕が心配しているのは、ウェアラブルなデバイスなど、デバイスの小型化がどんどん進んでいる現状では、デバイスの「非力化」も進んでいるんじゃないかと思うのです。そうなると、比較的高いCPUパワーを必要とするWeb技術は敬遠されて、ネイティブが当たり前になっちゃうんじゃないかと。Webブラウザを搭載しないデバイスも増えてきそうです。<br><br>
<strong>吉川：</strong>それは心配ないんじゃないでしょうか。ハードウェアの進化があったからこそ、ウェアラブルが出てきたはず。今後もハードウェアの進化は続くでしょう。<br><br>
例えば、昔のインターネット回線が遅かった時代は動画なんてありえませんでしたが、回線が早くなったからこそ品質が良くなって動画サービスがブレイクした。要は、環境次第で変わるということです。今は、ハードウェアの性能が上がってきているからこそ、Webを組み込んでも大丈夫じゃないかという流れですね。未来はそんなに暗くはないんじゃないかな。</p>

<div id="attachment_8054" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/yoshikawa_t/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/yoshikawa2.jpg" alt="Google Developer Expert（Chrome）　吉川 徹さん" width="640" height="295" class="size-full wp-image-8054" srcset="/wp-content/uploads/2014/07/yoshikawa2.jpg 640w, /wp-content/uploads/2014/07/yoshikawa2-300x138.jpg 300w, /wp-content/uploads/2014/07/yoshikawa2-207x95.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Google Developer Expert（Chrome）　吉川 徹さん</p></div>

<p>さらに会場からは、HTMLとJavaScriptとCSSで書くから重くなるのではないかという声も。JavaScriptだけにすれば軽くなるのではという意見や、3つ以外の言語や新たなレンダリングエンジンが生まれる可能性、WebGLやFamo.usなどに対する期待の声も多く聞かれました。</p>

<p>未来のデバイスとWeb技術にも夢を馳せながら語り合った対談もここで終了。Webとネイティブのメリット、デメリットを合わせ持つハイブリッドアプリが、今後デバイスやWeb技術の進化とともにどう技術的課題をクリアしていくのか。編集部では今後も最新事情をお伝えしていきたいと思います。</p>

<h4>★今回の登壇者が執筆したハイブリッドアプリ特集記事もぜひ合わせてご覧ください。</h4>

<ul>
<li>久保田光則さん執筆：<a href="https://html5experts.jp/anatoo/7253/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5ハイブリッドアプリ開発、最新動向はやわかり！</a></li>
<li>金井健一さん執筆：<a href="https://html5experts.jp/canidoweb/7359/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">キミはionicを知っているか？AngularJS+PhoneGap+美麗コンポーネント群！</a></li>
<li>畠田喜丈さん執筆：<a href="https://html5experts.jp/htpboost/8318/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGapとは一味違う！純国産ハイブリッドアプリフレームワーク、「アプリカン」事始め</a></li>
<li>吉川徹さん執筆：<a href="https://html5experts.jp/yoshikawa_t/9240/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chrome AppsをモバイルでもーChrome Apps on mobileー</a></li>
<li>ハイブリッドアプリ開発最前線：特集レポート一覧は<a href="https://html5experts.jp/series/hybrid-special/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>Chrome AppsをモバイルでもーChrome Apps on mobileー</title>
		<link>/yoshikawa_t/9240/</link>
		<pubDate>Fri, 01 Aug 2014 00:00:37 +0000</pubDate>
		<dc:creator><![CDATA[吉川 徹]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Chrome Apps]]></category>
		<category><![CDATA[ハイブリッド]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=9240</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (8) ハイブリッドアプリ開発の手法のひとつして、Chrome Appsをモバイルアプリに変換するApache CordovaベースのChrome Apps on mobileについ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (8)</div><p><style>.codecolorer-container.text.default { max-width: 95%; margin-left: 1em; margin-top: -1em; margin-bottom: 2em;}</style>
ハイブリッドアプリ開発の手法のひとつして、Chrome Appsをモバイルアプリに変換するApache CordovaベースのChrome Apps on mobileについて解説します。これによって、Chrome Appsとして作成したWebアプリがAndroidやiOS向けのネイティブアプリとして公開、インストールすることができるようになります。</p>

<!-- more -->

<p><a href="https://github.com/MobileChromeApps/mobile-chrome-apps" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Chrome Apps on mobile</a>は、まだデベロッパープレビュー版で、GitHub上でプロジェクトが公開されています。まだデベロッパープレビュー版ということで、Chrome AppsのすべてのAPIを利用できるわけではありませんが、順次対応される予定です。本記事では、そもそも「Chrome Appsとは何なのか？」というところから、Chrome Apps on mobileの開発環境の構築やビルド、実行までひと通り見ていきます。</p>

<h2>Chrome Appsとは？</h2>

<p>Chrome Appsとは、単にChromeで動作するWebアプリというわけではなく、<a href="https://chrome.google.com/webstore/category/apps?hl=ja" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Chromeウェブストア</a>上で配布・販売できるアプリケーションプラットフォームです。通常のWebアプリをChrome Appsとしてそのまま公開することもできますし（若干のマニフェストファイルを書く必要はあります）、Chromeに実装されている高機能なAPIを利用して、よりリッチなWebアプリを作ることもできます。</p>

<div id="attachment_9249" style="width: 310px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/chromeapps1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/chromeapps1-300x214.png" alt="Chromeウェブストア" width="300" height="214" class="size-medium wp-image-9249" srcset="/wp-content/uploads/2014/07/chromeapps1-300x214.png 300w, /wp-content/uploads/2014/07/chromeapps1-207x148.png 207w, /wp-content/uploads/2014/07/chromeapps1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Chromeウェブストア</p></div>

<p>例えば、通常のWebアプリをChrome Appsとして公開する場合（Chrome独自のAPIを利用しないケース）、次のようにマニフェストファイル「manifest.json」とバックグラウンドで動作するJavaScriptファイル「background.js」を記述し、Webアプリのファイル一式と同梱することによって簡単にChrome Appsとして動作させることができます。</p>

<p>ChromeAppSample （任意のフォルダ）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├── index.html （Webアプリ本体一式を同梱する）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├── manifest.json<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└── background.js<br></p>

<p></p><pre class="crayon-plain-tag">{
  "name": "Chrome App Sample",
  "version": "0.1",
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  }
}</pre><p></p>

<p></p><pre class="crayon-plain-tag">chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('index.html', {
    'bounds': {
      'width': 400, 'height': 500
    }
  });
});</pre><p></p>

<p>また、Chrome Apps上では、独自の<a href="https://developer.chrome.com/apps/api_index" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Chrome API</a>を使って、さらにリッチなWebアプリを作ることも可能になっています。Chrome Appsの作成方法についてのより詳細な情報は、公式ページの「<a href="https://developer.chrome.com/apps/about_apps" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">What Are Chrome Apps?</a>」にまとまっていますので、参考にしてください。簡単に試してみたいという場合は、「<a href="https://developer.chrome.com/apps/first_app" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Create Your First App</a>」を試してください。</p>

<h2>開発環境の構築</h2>

<p>まずは、Chrome Apps on mobileの開発環境を構築します。Chrome Apps on mobileは、iOSのバージョン6以降、Androidのバージョン4.0以降を対象にしています。どちらを対象にするかによって必要なツール・ライブラリが異なりますので、対象に合わせて準備しましょう。いずれの環境でも必要なのは、Node.js (バージョン0.10.0以降)です。既にインストールされている場合は必要ありませんが、まだの場合はWindows、Mac（またはLinux）いずれでも、<a href="http://nodejs.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちら</a>からダウンロードしてインストールしておきましょう。さらに環境によって次のようなツール・ライブラリが必要になります。</p>

<h3>Androidの場合</h3>

<ul>
<li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Java JDK7 以降</a></li>
<li><a href="http://developer.android.com/sdk/index.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Android SDK 4.4.2 以降</a>（ <code>sdk/tools</code> と <code>sdk/platform-tools</code> をPATHに追加する）</li>
<li><a href="http://ant.apache.org/bindownload.cgi" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Apache Ant</a>（ <code>apache-ant-x.x.x/bin</code> をPATHに追加する）</li>
</ul>

<h3>iOSの場合</h3>

<ul>
<li><a href="https://developer.apple.com/xcode/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Xcode 5 以降</a></li>
<li><a href="https://github.com/phonegap/ios-deploy" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ios-deploy</a>（iOSデバイスにデプロイする際に必要です）<br>
<code>> npm install -g ios-deploy</code></li>
<li><a href="https://github.com/phonegap/ios-sim" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ios-sim</a>（iOSシミュレーターにデプロイする際に必要です）<br>
<code>> npm install -g ios-sim`</code></li>
</ul>

<p>※ Appleストアに公開する場合は、iOSデベロッパー登録が必要です</p>

<h3>ccaコマンドラインツールのインストール</h3>

<p>最後に、Chrome Apps on mobileのツールとしてccaコマンドラインツールをインストールします。</p>

<p><code>> npm install -g cca</code></p>

<p>既に、ccaがインストール済みでアップデートをする場合は、<code>npm update -g cca</code>を実行しましょう。ccaのインストール後に、次のコマンドでAndroidおよびiOSの開発環境が揃っているか確認できます。</p>

<p><code></p>

<blockquote>
  <p>cca checkenv
  cca v0.2.2</p>
</blockquote>

<h2>Checking that tools are installed</h2>

<p>Android SDK detected.
Xcode detected.
</code></p>

<p>「Android SDK detected.」と「Xcode detected.」という結果が表示されればOKです。片方のみの環境であれば、いずれか片方だけが表示されます。例えば、Android環境のみの場合は、「Android SDK detected.」だけが表示されます。</p>

<h2>プロジェクトの作成とビルド、実行</h2>

<p>開発環境の構築が終わったら、実際にプロジェクトを作成してビルド、実行してみましょう。ccaコマンドツールを使って次の手順で行います。</p>

<h3>プロジェクトの作成</h3>

<ul>
<li><p>新規にプロジェクトを作成する場合
<code>> cca create ChromeSampleApp</code>
カレントディレクトに <code>ChromeSmapleApp</code> というフォルダが作成され、プロジェクトが作られます。</p></li>
<li><p>既にあるChrome Appsを元にプロジェクトを作成する場合</p></li>
</ul>

<p>既にChrome Appsを作成済みであれば、オプションでそれを指定します。指定方法には、次の2種類があります。</p>

<p><code>> cca create ChromeSampleApp --link-to=path/to/manifest.json</code></p>

<p>作成済みのChrome Appsのマニフェストファイルの場所を指定します。 <code>path/to/</code>を皆さんの環境に合わせて置き換えてください。<code>--link-to</code>オプションでは、指定したフォルダへのシンボリックリンクでプロジェクトが作成されます。</p>

<p><code>> cca create ChromeSampleApp --copy-from=path/to/manifest.json</code></p>

<p><code>--copy-from</code> オプションでは、指定先のフォルダをコピーしてプロジェクトが作成されます。</p>

<h3>ビルド、実行</h3>

<p>プロジェクトの作成が終わったら、いよいよビルドし、実行してみます。こちらも非常に簡単で、プロジェクトのルートフォルダ上で、次のようにccaコマンドを実行するだけで済みます。</p>

<ul>
<li>Androidのエミュレータで実行</li>
</ul>

<p><code>> cca emulate android </code></p>

<p>※ Androidのエミュレータが設定されていない場合、<code>android avd</code>コマンドでセットアップする必要があります</p>

<ul>
<li>Androidの実機で実行（デバイスをUSBデバッグモードで接続します）</li>
</ul>

<p><code>> cca run android </code></p>

<ul>
<li>iOSのシミュレーターで実行</li>
</ul>

<p><code>> cca emulate ios </code></p>

<ul>
<li>iOSの実機で実行（デバイスをUSBで接続します）
<code>> cca run ios </code></li>
</ul>

<p>それぞれの環境に合わせて、<code>cca emulate</code> または、<code>cca run</code>で簡単にビルド、実行することできます。単純にビルドするだけであれば、 <code>cca build</code>で可能です。是非試してみてください！</p>

<div id="attachment_9403" style="width: 169px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/chromeapps2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/chromeapps2-159x300.png" alt="iOSシミュレーターで実行" width="159" height="300" class="size-medium wp-image-9403" srcset="/wp-content/uploads/2014/07/chromeapps2-159x300.png 159w, /wp-content/uploads/2014/07/chromeapps2-545x1024.png 545w, /wp-content/uploads/2014/07/chromeapps2-109x207.png 109w, /wp-content/uploads/2014/07/chromeapps2.png 340w" sizes="(max-width: 159px) 100vw, 159px" /></a><p class="wp-caption-text">iOSシミュレーターで実行</p></div>

<h2>Chrome App Developer Tool</h2>

<p>Chrome Apps on mobileには、実際のデバイス上でChrome Appsを動作させつつ、開発（修正）＞ビルド＞実行のイテレートを高速に回すことができる開発ツール「<a href="https://github.com/MobileChromeApps/chrome-app-developer-tool/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Chrome App Developer Tool</a>」が用意されています。</p>

<p>Chrome App Developer Toolは、モバイルアプリですので、実機にインストールする必要があります。Androidの場合は、<a href="https://github.com/MobileChromeApps/chrome-app-developer-tool/releases" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちら</a>からapkファイルをインストールして使用することができます。（iOSの場合は、ソースコードからビルドする必要がありますので、公式サイトの「<a href="https://github.com/MobileChromeApps/chrome-app-developer-tool/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Building from Source (iOS or Android)</a>」を参考にインストールしてください）</p>

<p>Androidの場合、Chrome App Developer ToolをインストールしたデバイスをUSBデバッグモードで接続し、次のようにコマンドを実行します。</p>

<p><code>> adb forward tcp:2424 tcp:2424</p>

<blockquote>
  <p>cca push</code></p>
</blockquote>

<p><code>adb forward</code>コマンドは、デバイスを接続後に1回だけ実行します。その後<code>cca push</code>コマンドで、Chrome App Developer Tool上でChrome Appsが動作します。これは、ビルドせずにChrome AppsをそのままChrome App Developer Toolに転送して動作するため非常に高速です。</p>

<div id="attachment_9414" style="width: 178px" class="wp-caption alignleft"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35-168x300.png" alt="Chrome App DeveTool 1" width="168" height="300" class="size-medium wp-image-9414" srcset="/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35-168x300.png 168w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35-576x1024.png 576w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35-116x207.png 116w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-50-35.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a><p class="wp-caption-text">Chrome App DevTool起動</p></div>

<div id="attachment_9415" style="width: 178px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54-168x300.png" alt="Chrome App DevTool 2" width="168" height="300" class="size-medium wp-image-9415" srcset="/wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54-168x300.png 168w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54-576x1024.png 576w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54-116x207.png 116w, /wp-content/uploads/2014/07/Screenshot_2014-07-30-17-51-54.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a><p class="wp-caption-text">cca push後</p></div>

<p><br>
Chrome App Developer Toolで動作しているChrome Appsを終了するには、2本指で同時にダブルタップします。</p>

<p>また、<code>cca push --watch</code>コマンドでプロジェクトに変更があれば自動的にpushするということも可能です。ソースコードを修正しながら実機で逐次、動作確認できるのでおすすめです。</p>

<h2>まとめ</h2>

<p>Chrome Apps on mobileは、デベロッパープレビュー版ということで、まだまだこなれていない面もありますが、Chrome Appsがそのままモバイルで動作するということで非常に楽しみなプラットフォームです。単なるWebアプリをモバイルアプリにするのであればPhoneGapなどの方が簡単ですが、Chrome APIを利用したパワフルなChrome Appsを作って、Chrome Apps on mobileにチャレンジしてみてください！</p>

<p>現在対応している・今後対応するChrome APIのステータスは、<a href="https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/docs/APIStatus.md" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちら</a>から確認することができます。高機能なAPIの多くは、これからの対応に期待ですが、ぜひ楽しみにしていただきたいと思います。</p>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>PhoneGapとは一味違う！純国産ハイブリッドアプリフレームワーク、「アプリカン」事始め</title>
		<link>/htpboost/8318/</link>
		<pubDate>Fri, 25 Jul 2014 00:00:15 +0000</pubDate>
		<dc:creator><![CDATA[畠田 喜丈]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[ハイブリッド]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=8318</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (7)アプリカンは、純国産のハイブリッドアプリフレームワークです。いつも使っているエディタだけでアプリが作れるので、開発環境のOSも選びません。 アプリカンは2013年末に公開され、...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (7)</div><p>アプリカンは、純国産のハイブリッドアプリフレームワークです。いつも使っているエディタだけでアプリが作れるので、開発環境のOSも選びません。</p>

<p>アプリカンは2013年末に公開され、ハイブリッドアプリフレームワークとしては後発ですが、他のフレームワークとは異なるアプローチとして、様々なパートナー企業のサービスのSDKを組み込み、AR機能や、位置情報連動サービスなど複雑なサービスオプション機能を JavaScriptから簡単に呼び出せるようになっています。</p>

<p>基本は無料で利用できますが、前述の高機能なオプションを使ったり、無料ビルドしたアプリに表示される広告バナーを外す場合には有料となります。</p>

<h2>アプリカンの開発に必要なもの</h2>

<ul>
<li>エディタ</li>
<li>好奇心</li>
</ul>

<p>アプリカンの開発には、IDEを用意する必要はありません。
テンプレートとなる <code>web.zip</code> をアプリカンのサイトからダウンロードして開発マシン上で解凍し、そのフォルダの中に HTML5、JavaScript、CSSを作り込んでいき、できあがったものを zipで圧縮して、サーバーにアップロードするだけです。</p>

<p>デバッグは、iOS、Androidそれぞれのアプリマーケットからダウンロードできる アプリカンシミュレータで行います。</p>

<h2>Hello アプリカン World</h2>

<p>それでは実際にアプリカンでお約束のHello Worldを作ってみましょう。</p>

<p>アプリカンでのアプリ作成は3ステップ</p>

<ol>
<li>アプリカンサイトにユーザ登録</li>
<li>HTML5、CSS、JavaScriptでコンテンツを作成</li>
<li>ZIP圧縮して、アプリカンサイトにアップロード</li>
</ol>

<p>この3ステップで、iOSアプリとAndroidアプリを同時に開発することが可能です。</p>

<h3>1. アプリカンにユーザ登録を行う。</h3>

<p>アプリカンサイトにユーザ登録します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/Capture_1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Capture_1-300x178.png" alt="Capture_1" width="300" height="178" class="aligncenter size-medium wp-image-8319" srcset="/wp-content/uploads/2014/07/Capture_1-300x178.png 300w, /wp-content/uploads/2014/07/Capture_1-1024x609.png 1024w, /wp-content/uploads/2014/07/Capture_1-207x122.png 207w, /wp-content/uploads/2014/07/Capture_1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>ユーザー登録、ログインが完了したら、基本になるテンプレートをダウンロードしましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_2-300x214.png" alt="capture_2" width="300" height="214" class="aligncenter size-medium wp-image-8320" srcset="/wp-content/uploads/2014/07/capture_2-300x214.png 300w, /wp-content/uploads/2014/07/capture_2-1024x733.png 1024w, /wp-content/uploads/2014/07/capture_2-207x148.png 207w, /wp-content/uploads/2014/07/capture_2.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>ユーザー画面の左サイドバーのメニューから各種ライブラリをクリックし、新しく開いたウィンドウから【シンプル】をダウンロードしましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_3.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_3-300x200.png" alt="capture_3" width="300" height="200" class="aligncenter size-medium wp-image-8321" srcset="/wp-content/uploads/2014/07/capture_3-300x200.png 300w, /wp-content/uploads/2014/07/capture_3-207x137.png 207w, /wp-content/uploads/2014/07/capture_3.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>2.HTML5、CSS、JavaScriptでコンテンツを作成</h3>

<p>ダウンロードした<code>web.zip</code>を解凍すると、<code>index.html</code>、<code>applican-config.xml</code>、jsフォルダの中には <code>applican-1.5.js</code>が出てきます。</p>

<p>今回はHello Worldを表示するだけなので、 <code>index.html</code>を編集します。いつもお使いのエディタで <code>index.html</code>を開き、&#8220;タグの中の&#8221;SAMPLE&#8221;を &#8220;Hello World&#8221;に書き換え保存して終了します。</p>

<h3>3.ZIP圧縮して、アプリカンサイトにアップロード</h3>

<p>webディレクトリごと ZIPファイルに圧縮できたら、それをサイトにアップロードします。先ほどのアプリカンサイトにログインした状態から、プロジェクトを作成します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_4.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_4-300x185.png" alt="capture_4" width="300" height="185" class="aligncenter size-medium wp-image-8322" srcset="/wp-content/uploads/2014/07/capture_4-300x185.png 300w, /wp-content/uploads/2014/07/capture_4-1024x632.png 1024w, /wp-content/uploads/2014/07/capture_4-207x127.png 207w, /wp-content/uploads/2014/07/capture_4.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>[新しいプロジェクトを作成]をクリックし、プロジェクト名、対象デバイス、プロジェクトの説明を入力し、作成ボタンをクリックします。</p>

<p>プロジェクト一覧に先ほど作成したプロジェクトができているので【選択】ボタンをクリックします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_5.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_5-300x235.png" alt="capture_5" width="300" height="235" class="aligncenter size-medium wp-image-8323" srcset="/wp-content/uploads/2014/07/capture_5-300x235.png 300w, /wp-content/uploads/2014/07/capture_5-1024x802.png 1024w, /wp-content/uploads/2014/07/capture_5-207x162.png 207w, /wp-content/uploads/2014/07/capture_5.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>プロジェクト画面で【アップロードへ】を選択し、画面の指示に従って先ほど作成した ZIPファイルをサーバにアップロードします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_6.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_6-300x216.png" alt="capture_6" width="300" height="216" class="aligncenter size-medium wp-image-8324" srcset="/wp-content/uploads/2014/07/capture_6-300x216.png 300w, /wp-content/uploads/2014/07/capture_6-1024x738.png 1024w, /wp-content/uploads/2014/07/capture_6-207x149.png 207w, /wp-content/uploads/2014/07/capture_6.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>アプリカンで作成したアプリは、本番ビルドをかける前に、シミュレータ上で動作確認を行うことができます。iOS端末、Android端末でそれぞれのストアを開き、「アプリカンシミュレータ」を検索しインストールしてください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/capture_sim.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/capture_sim-300x127.png" alt="capture_sim" width="300" height="127" class="aligncenter size-medium wp-image-8325" srcset="/wp-content/uploads/2014/07/capture_sim-300x127.png 300w, /wp-content/uploads/2014/07/capture_sim-207x87.png 207w, /wp-content/uploads/2014/07/capture_sim.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>アプリカンサイトに登録したユーザー名、パスワードを入力すると、先ほど作成したプロジェクト名が表示されるのでそれをタップし、Hello Worldが表示されることを確認してください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/ss_1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/ss_1-168x300.png" alt="ss_1" width="168" height="300" class="aligncenter size-medium wp-image-8326" srcset="/wp-content/uploads/2014/07/ss_1-168x300.png 168w, /wp-content/uploads/2014/07/ss_1-576x1024.png 576w, /wp-content/uploads/2014/07/ss_1-116x207.png 116w, /wp-content/uploads/2014/07/ss_1.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/ss_2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/ss_2-168x300.png" alt="ss_2" width="168" height="300" class="aligncenter size-medium wp-image-8327" srcset="/wp-content/uploads/2014/07/ss_2-168x300.png 168w, /wp-content/uploads/2014/07/ss_2-576x1024.png 576w, /wp-content/uploads/2014/07/ss_2-116x207.png 116w, /wp-content/uploads/2014/07/ss_2.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/ss_3.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/ss_3-168x300.png" alt="ss_3" width="168" height="300" class="aligncenter size-medium wp-image-8328" srcset="/wp-content/uploads/2014/07/ss_3-168x300.png 168w, /wp-content/uploads/2014/07/ss_3-576x1024.png 576w, /wp-content/uploads/2014/07/ss_3-116x207.png 116w, /wp-content/uploads/2014/07/ss_3.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a></p>

<h2>アプリカンならではの魅力</h2>

<p>アプリカンには、オプションサービス（有料）として、パートナー企業の提供するサービスのSDKを組み込んだベースアプリが用意されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/applican_options.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/applican_options-300x73.png" alt="applican_options" width="300" height="73" class="alignnone size-medium wp-image-9105" srcset="/wp-content/uploads/2014/07/applican_options-300x73.png 300w, /wp-content/uploads/2014/07/applican_options-207x50.png 207w, /wp-content/uploads/2014/07/applican_options.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>現在用意されているサービスには、
&#8211; Remote TestKit (アプリ検証サービス)
&#8211; app C cloud (CPI広告)
&#8211; ARAPPLI PLUS (ARアプリ開発)
&#8211; popinfo (PUSH通知サービス)
があります。
これ以外にも、高速なデータ転送を実現するプロトコルスタックオプションや、OCR機能を実現するオプションなどが順次リリースされる予定です。</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>キミはionicを知っているか？AngularJS+PhoneGap+美麗コンポーネント群！</title>
		<link>/canidoweb/7359/</link>
		<pubDate>Mon, 07 Jul 2014 01:00:05 +0000</pubDate>
		<dc:creator><![CDATA[金井 健一]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[ionic]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7359</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (4) ionic 概要 ionicはそのサイトのデザインからも見てわかるとおり、シンプルかつ美しいUIを取り揃えたコンポーネント群で、Apache Cordova を拡張して作られ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (4)</div><p><a href="https://html5experts.jp/wp-content/uploads/2014/06/ionic1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/ionic1.png" alt="ionic" width="2000" height="1120" class="aligncenter size-full wp-image-7618" srcset="/wp-content/uploads/2014/06/ionic1.png 640w, /wp-content/uploads/2014/06/ionic1-300x168.png 300w, /wp-content/uploads/2014/06/ionic1-1024x573.png 1024w, /wp-content/uploads/2014/06/ionic1-207x115.png 207w" sizes="(max-width: 2000px) 100vw, 2000px" /></a></p>

<h2>ionic 概要</h2>

<p>ionicはそのサイトのデザインからも見てわかるとおり、シンプルかつ美しいUIを取り揃えたコンポーネント群で、<a href="http://cordova.apache.org/" title="Apache Cordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apache Cordova</a> を拡張して作られているフレームワークです。<br>
また、動的なUIコンポーネントを実装するために、 <a href="https://angularjs.org/" title="AngularJS" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AngularJS</a> を採用してる点もその特徴の1つです。</p>

<p>ionicがサポートしているプラットフォームは、iOS 6+とAndroid 4+です。（ただしAndroidについては、2.3+でもいくつかの機能を提供してるとのこと）<br>
現状ではこの2つのプラットフォームのみですが、Windows PhoneとFirefoxOSについても今後対応を進めていくようです。</p>

<h3>特徴</h3>

<ul>
<li><a href="http://cordova.apache.org/" title="Apache Cordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apache Cordova</a>を拡張して作られている、モバイルUIフレームワーク＆開発ツール</li>
<li>UIがシンプル、かつ美しい</li>
<li><a href="https://angularjs.org/" title="AngularJS" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AngularJS</a> を採用している</li>
<li>現状はiOS 6+とAndroid 4+のサポートのみで、Windows PhoneとFirefox OSについては今後対応予定</li>
</ul>

<h2>ionicでHello, World</h2>

<h3>事前準備</h3>

<p>ionicでアプリケーションを開発するためには、 <a href="http://nodejs.org/" title="Node.js" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Node.js</a> がインストールされている必要があります。
インストールされていない場合は、上記のリンクからダウンロードしてインストールしておきましょう。<br>
また、各プラットフォーム（Android、iOS）ごとに必要なSDKのインストールも必要です。<br>
こちらについては本稿では触れませんのでご了承ください。</p>

<h3>1. cordova-cliとionic-cliのインストール</h3>

<p>Node.jsのnpm-cliを利用して、cordova-cliとionic-cliをインストールします。<br>
今回はiOSを対象に解説していくため、ios-sim-cliもインストールしておきます。<br>
これは後述するiOSのエミュレータでの確認をするために必要となります。</p>

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

<h3>2. ionicプロジェクトの作成</h3>

<p>ionicのプロジェクトを作成します。</p>

<p></p><pre class="crayon-plain-tag">$ ionic start myApp tabs</pre><p></p>

<p>実行すると&#8221;myApp&#8221;という名前のプロジェクトが作成されます。<br>
&#8220;tabs&#8221;という引数はデフォルトのテンプレートの指定になります。<br>
&#8220;blank&#8221;、&#8221;tabs&#8221;、&#8221;sidemenu&#8221;の3種類がテンプレートとして用意されていますので、ご自身で作成するアプリケーションの要件に応じて使い分けるとよいでしょう。<br>
各テンプレートのレイアウトは以下の画像を参照してください。
<a href="https://html5experts.jp/wp-content/uploads/2014/06/project.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/project.png" alt="project" width="1820" height="682" class="aligncenter size-full wp-image-7613" srcset="/wp-content/uploads/2014/06/project.png 640w, /wp-content/uploads/2014/06/project-300x112.png 300w, /wp-content/uploads/2014/06/project-1024x383.png 1024w, /wp-content/uploads/2014/06/project-207x77.png 207w" sizes="(max-width: 1820px) 100vw, 1820px" /></a></p>

<h3>3. 対象のプラットフォームを設定</h3>

<p>次に、作成したプロジェクト内に移動して作成するプラットフォームを指定します。<br>
iOS 向けの設定を追加します。</p>

<p></p><pre class="crayon-plain-tag">$ cd myApp
  $ ionic platform add ios</pre><p></p>

<h3>4. Hello, Worldを書く</h3>

<p>今回のケースでは、アプリケーション起動時に表示されるhtmlはmyApp/www/templates/tab-dash.htmlなので、このhtmlファイルを編集します。<br>
以下のように、h1要素のテキストを&#8221;Hello, World&#8221;に書き換えます。</p>

<p></p><pre class="crayon-plain-tag">&lt;ion-view title="Dashboard"&gt;
      &lt;ion-content class="has-header padding"&gt;
          <h1>Hello, World</h1>
      &lt;/ion-content&gt;
  &lt;/ion-view&gt;</pre><p></p>

<h3>5. 変更を確認する</h3>

<p>アプリケーションの動作確認をおこなうためには2つの方法があります。<br>
主にデザインやレイアウトの確認を行なう場合であればWebサーバを起動して確認するとよいでしょう。</p>

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

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/serve1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/serve1-300x245.png" alt="serve" width="300" height="245" class="aligncenter size-medium wp-image-7620" srcset="/wp-content/uploads/2014/06/serve1-300x245.png 300w, /wp-content/uploads/2014/06/serve1-1024x838.png 1024w, /wp-content/uploads/2014/06/serve1-207x169.png 207w, /wp-content/uploads/2014/06/serve1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p></p><pre class="crayon-plain-tag">$ ionic build ios
  $ ionic emulate ios</pre><p></p>

<p>ネイティブのAPIを利用している箇所は、エミュレータを起動して確認しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/emu1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/emu1-200x300.png" alt="emu" width="200" height="300" class="aligncenter size-medium wp-image-7617" srcset="/wp-content/uploads/2014/06/emu1-200x300.png 200w, /wp-content/uploads/2014/06/emu1-137x207.png 137w, /wp-content/uploads/2014/06/emu1.png 426w" sizes="(max-width: 200px) 100vw, 200px" /></a></p>

<h3>6. 実機での動作確認</h3>

<p>Androidであれば、実機と開発環境をUSBケーブルで接続してから</p>

<p></p><pre class="crayon-plain-tag">$ ionic run android</pre><p></p>

<p>で実機にインストールすることができます。</p>

<p>iOSの場合は、ionicコマンドから実機にインストールすることができません。<br>
iOSでの実機確認を行なうには、XcodeからmyApp/platforms/iosを開いて実機にインストールすることができます。<br>
これ以降はXcodeでの作業になります。</p>

<h3>ionic の機能</h3>

<p>ionicコマンドで作成されたプロジェクトには、以下のディレクトリが配置されます。<br>
これらがionic独自のディレクトリで、Apache Cordovaとは大きく異なる点です。<br>
Apache Cordovaで作られたプロジェクトにはこれらのディレクトリは存在しません。</p>

<p></p><pre class="crayon-plain-tag">myApp/www/lib/ionic
  myApp/scss/</pre><p></p>

<p>myApp/www/lib/ionic配下のファイル群がionicが提供するUIコンポーネント群の実体です。<br>
またionicはSassを採用しているので、myApp/scss/やmyApp/www/lib/ionic/scss配下のファイルを編集することで、UIコンポーネントをカスタマイズすることも可能です。<br>
もちろん、myApp/www/lib/ionic/css配下のcssファイルを直接編集することも可能ですが、7000ステップ以上ありますので現実的ではありません。<br>
カスタマイズを前提とするならば、Sassの導入は必須となります。</p>

<h3>Optional</h3>

<p>ionicは、タスクランナーとしてgulp.jsを採用しています。<br>
gulp-cliを利用することで、Sassを自動コンパイルさせたりすることもできます。<br>
設定方法について詳しく知りたい方は<a href="http://ionicframework.com/docs/guide/installation.html" title="install gulp" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>を参照してください。</p>

<h2>ngCordovaモジュール</h2>

<p>2014/6/3に公式ブログから <a href="http://ngcordova.com/" title="ngCordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ngCordova</a> のαリリースが発表されました。<br>
cordova.js（ネイティブの機能を呼び出すためのApache Cordovaのライブラリ）をAngularJSでラップしたモジュールです。<br>
ionicにとっては、cordova.jsを直接呼び出して使用するよりも、ngCordovaというAngularJSのモジュールとして扱うことで親和性が高くなり、これまで以上に機能拡張が容易になります。</p>

<h2>最後に</h2>

<p>以下のProductsのページには、&#8221;Coming mid-2014: Powerful mobile development tools and services for Ionic.&#8221;と記述されていて、近々大きなリリースを予定しているのが伺えます。<br>
注目されているフレームワークの1つですので、今のうちから試してみてはいかがでしょうか。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/products1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/products1.png" alt="products" width="2000" height="884" class="aligncenter size-full wp-image-7619" srcset="/wp-content/uploads/2014/06/products1.png 640w, /wp-content/uploads/2014/06/products1-300x132.png 300w, /wp-content/uploads/2014/06/products1-1024x452.png 1024w, /wp-content/uploads/2014/06/products1-207x91.png 207w" sizes="(max-width: 2000px) 100vw, 2000px" /></a></p>

<h2>参照リソース</h2>

<ul>
<li><a href="http://ionicframework.com/" title="ionic" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ionic http://ionicframework.com/</a></li>
<li><a href="http://ngcordova.com/" title="ngCordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ngCordovaモジュール http://ngcordova.com/</a></li>
<li><a href="http://ionicons.com/" title="ionicons" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ionicons</a></li>
<li><a href="http://cordova.apache.org/" title="Apache Cordova" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apache Cordova</a></li>
<li><a href="https://angularjs.org/" title="AngularJS" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AngularJS https://angularjs.org/</a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>IDE完備！日本語の情報豊富！MonacaとOnsen UIで楽々ハイブリッドアプリ開発！</title>
		<link>/ataruohto/7274/</link>
		<pubDate>Fri, 04 Jul 2014 01:00:16 +0000</pubDate>
		<dc:creator><![CDATA[大塔 中]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Monaca]]></category>
		<category><![CDATA[Onsen UI]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7274</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (3)はじめに HTML5でのモバイルアプリ開発という手法が登場して以来、HTML5でモバイルアプリを開発する様々なツールやプラットフォームが登場しています。この記事ではそうしたHT...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (3)</div><h2>はじめに</h2>

<p>HTML5でのモバイルアプリ開発という手法が登場して以来、HTML5でモバイルアプリを開発する様々なツールやプラットフォームが登場しています。この記事ではそうしたHTML5でのモバイルアプリ開発ツールとして、Monacaおよび、Onsen UIを紹介させていただきます。</p>

<p>必要なもの</p>

<ul>
    <li>WindowsもしくはMac</li>
    <li>最新版のGoogle ChromeもしくはSafari</li>
</ul>

<h2>Monacaとは?</h2>

<p><br /></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/monaca.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/monaca.png" alt="monaca" width="300" height="272" class="alignnone size-full wp-image-7275" srcset="/wp-content/uploads/2014/06/monaca.png 300w, /wp-content/uploads/2014/06/monaca-207x187.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p><a href="http://monaca.mobi/ja/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>はHTML5でモバイルアプリを開発するためのツールです。このMonacaを使って開発されたアプリがGoogle PlayやApp Storeに2000以上登録されています。Monacaの<a href="http://monaca.mobi/ja/showcase" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">事例ページ</a>にはMonacaで開発されたいろいろなアプリが掲載されています。登録 (無料) するだけですぐにモバイルアプリの開発をスタートできます。</p>

<ul>
<li>Monacaで作るアプリはPhoneGapベースのため、PhoneGapの利点(クロスプラットフォームやネイティブにアクセスできるAPIなど)をそのまま享受できます。</li>
<li>Monacaには、Webブラウザ上で動作するIDEが付属しています。</li>
<li>ほかのプラットフォームと比較して、日本で開発されているので比較的日本語の情報が豊富です。</li>
<li>また、Monacaには<a href="https://play.google.com/store/apps/details?id=mobi.monaca.debugger&amp;hl=ja" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"> Google Play</a>や<a href="https://html5experts.jp//itunes.apple.com/ja/app/monaca/id550941371?mt=8&quot;" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">App Store</a>で専用のデバッグツール (Monaca Debugger) が公開されており、IDE上でコードを変更すると、即座にその変更をデバッグツールが反映するため、ビルドしなくてもアプリの実行結果を素早く確認することができます。</li>
</ul>

<h2>Onsen UIとは?</h2>

<p><br></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/onsen.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/onsen-290x300.png" alt="onsen" width="290" height="300" class="alignnone size-medium wp-image-7279" srcset="/wp-content/uploads/2014/06/onsen-290x300.png 290w, /wp-content/uploads/2014/06/onsen-200x207.png 200w, /wp-content/uploads/2014/06/onsen.png 300w" sizes="(max-width: 290px) 100vw, 290px" /></a></p>

<p>HTML5で実際にアプリを開発していくと、様々な壁にぶつかります。例えば、モバイルアプリでのアニメーションを伴うページ遷移などです。まだ、HTML5でアプリを開発するノウハウが十分に浸透しているとは言い難く、ネイティブアプリでは当たり前のことをHTML5で実現しようとした時にいろいろな課題が実際には存在します。<a href="http://onsenui.io/" title="Onsen UI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen UI</a>はスマホのトランジションやリッチなUIなどをHTML5で簡単に作成するためのフレームワークです。</p>

<ul>
<li>Onsen UIは<a href="https://angularjs.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AngularJS</a>ベースのフレームワークです。AngularJSの<a href="https://docs.angularjs.org/api/ng/directive/ngRepeat" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ngRepeat</a>などの通常の<a href="https://docs.angularjs.org/guide/directive" target="_balnk" data-wpel-link="external" rel="follow external noopener noreferrer">ディレクティブ</a>に加えて、Onsen UIで独自に拡張したディレクティブを使うことができます。</li>
<li>Onsen UIは、AngularJSのディレクティブを拡張したWebコンポーネントライクに開発を行なうことができます。</li>
</ul>

<h2>MonacaとOnsen UIでHello World</h2>

<p><br /></p>

<p>それでは、実際にMonacaでOnsen UIを使ってみましょう。Onsen UIとMonacaはともに兄弟製品であり、MonacaからはOnsen UIを手軽に使うことができます。</p>

<h3>1.Monacaにサインアップする</h3>

<p><a href="http://monaca.mobi/ja/" title="Monaca" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>にアクセスして、ユーザー登録します。および基本的な使用は無料です。登録が完了すれば、すぐに開発を始められます。Google ChromeとSafariが推奨ブラウザなので、2つのどちらかでアクセスしてください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/monaca-1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/monaca-1-300x211.png" alt="monaca-1" width="300" height="211" class="alignnone size-medium wp-image-7875" srcset="/wp-content/uploads/2014/07/monaca-1-300x211.png 300w, /wp-content/uploads/2014/07/monaca-1-207x145.png 207w, /wp-content/uploads/2014/07/monaca-1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Monacaに登録したら、登録したメールアドレスに確認メールが届いていますので、そのメール内の確認用URLをクリックして本登録を済ませましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/verify.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/verify-300x103.png" alt="verify" width="300" height="103" class="alignnone size-medium wp-image-7282" srcset="/wp-content/uploads/2014/06/verify-300x103.png 300w, /wp-content/uploads/2014/06/verify-207x71.png 207w, /wp-content/uploads/2014/06/verify.png 599w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>2. ダッシュボードにログインする</h3>

<p><a href="http://monaca.mobi/ja/" title="Monaca" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>にサインアップすると、最初にダッシュボードと呼ばれる画面に遷移します。このダッシュボードはプロジェクト (アプリ) を管理するための画面です。既に「はじめてのMonacaアプリ」というプロジェクト (アプリ) がありますが、今回はOnsen UIを使うプロジェクトを作成したいので、「+ 新しいプロジェクト」ボタンをクリックして、新しくプロジェクトを作成しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/dashboard.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/dashboard-300x164.png" alt="dashboard" width="300" height="164" class="alignnone size-medium wp-image-7876" srcset="/wp-content/uploads/2014/07/dashboard-300x164.png 300w, /wp-content/uploads/2014/07/dashboard-1024x560.png 1024w, /wp-content/uploads/2014/07/dashboard-207x113.png 207w, /wp-content/uploads/2014/07/dashboard.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>3. Onsen UI 最小限プロジェクトを作成する</h3>

<p>「+ 新しいプロジェクト」ボタンをクリックするとプロジェクト作成の画面に遷移します。下の方に遷移して「Onsen UI 最小限のテンプレート」をクリックします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/onsen_ui_minimum_template.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/onsen_ui_minimum_template-300x195.png" alt="onsen_ui_minimum_template" width="300" height="195" class="alignnone size-medium wp-image-7882" srcset="/wp-content/uploads/2014/07/onsen_ui_minimum_template-300x195.png 300w, /wp-content/uploads/2014/07/onsen_ui_minimum_template-207x134.png 207w, /wp-content/uploads/2014/07/onsen_ui_minimum_template.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>そして、「プロジェクトの作成」をクリックしてプロジェクトを作成します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/onsen_minimum.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/onsen_minimum-281x300.png" alt="onsen_minimum" width="281" height="300" class="alignnone size-medium wp-image-7878" srcset="/wp-content/uploads/2014/07/onsen_minimum-281x300.png 281w, /wp-content/uploads/2014/07/onsen_minimum-194x207.png 194w, /wp-content/uploads/2014/07/onsen_minimum.png 417w" sizes="(max-width: 281px) 100vw, 281px" /></a></p>

<h3>4. Monaca IDEでOnsen UI 最小限のプロジェクトを開く</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/launch_ide.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/launch_ide-300x192.png" alt="launch_ide" width="300" height="192" class="alignnone size-medium wp-image-7879" srcset="/wp-content/uploads/2014/07/launch_ide-300x192.png 300w, /wp-content/uploads/2014/07/launch_ide-1024x657.png 1024w, /wp-content/uploads/2014/07/launch_ide-207x132.png 207w, /wp-content/uploads/2014/07/launch_ide.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>「Onsen UI 最小限のテンプレート」が作成されました。「開く」ボタンをクリックして、このプロジェクトを開きます。</p>

<h3>5. 「page2.html」を編集する</h3>

<p>Monaca IDEを起動したら、アプリのコードが表示されます。最初は「index.html」のコードが表示されているはずです。ここでは左側の「page2.html」をクリックして、「page2.html」を開きましょう。「page2.html」を開いたら、&lt;h2&gt;Page 2&lt;/h2&gt;の箇所を&lt;h2&gt;Hello World!&lt;/h2&gt;に変更します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/edit_page2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/edit_page2-300x174.png" alt="edit_page2" width="300" height="174" class="alignnone size-medium wp-image-7288" srcset="/wp-content/uploads/2014/06/edit_page2-300x174.png 300w, /wp-content/uploads/2014/06/edit_page2-207x120.png 207w, /wp-content/uploads/2014/06/edit_page2.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>6. Monaca IDEのライブプレビューで簡単に結果を確認する</h3>

<p>Monaca IDEのライブプレビューで簡単にアプリの動作を確認してみましょう。Monaca IDE上部のプレビューをクリックして、ライブプレビューを開きます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/preview1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/preview1-300x90.png" alt="preview1" width="300" height="90" class="alignnone size-medium wp-image-7680" srcset="/wp-content/uploads/2014/06/preview1-300x90.png 300w, /wp-content/uploads/2014/06/preview1-1024x309.png 1024w, /wp-content/uploads/2014/06/preview1-207x62.png 207w, /wp-content/uploads/2014/06/preview1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>すると、ライブプレビューが開きます。画面内の「pushPage」と記述してあるボタンをクリックしましょう。次の画面に遷移できて、「Hello World」という文字列が表示されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/preview2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/preview2-300x251.png" alt="preview2" width="300" height="251" class="alignnone size-medium wp-image-7681" srcset="/wp-content/uploads/2014/06/preview2-300x251.png 300w, /wp-content/uploads/2014/06/preview2-207x173.png 207w, /wp-content/uploads/2014/06/preview2.png 639w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>簡単にpage1.htmlのコードを見てみましょう。</p>

<p>page1.html</p>

<div style="color:#5A9BCF;background: #000000;padding: 16px">
&lt;ons-page class=&#8221;center&#8221;&gt;<br /><br />

    &lt;ons-navigator-toolbar<br />
        title=&#8221;Welcome&#8221;&gt;<br />   
    &lt;/ons-navigator-toolbar&gt;<br /><br />

    &lt;h1&gt;Hello World!&lt;/h1&gt;<br /><br />

    &lt;ons-button ng-click=&#8221;ons.navigator.pushPage(&#8216;page2.html&#8217;)&#8221;&gt;Push Page 2&lt;/ons-button&gt;<br /><br />
    
&lt;/ons-page&gt;
</div>

<p>&lt;ons-button&gt;というディレクティブのng-clickとして設定されているons.navigator.pushPage()で別のページへの遷移を簡単に実現することができます。遷移した先のページから元のページに戻ってくる場合にはons.navigator.popPage()で戻ってくることができます。このようにOnsen UIを使えば簡単に画面遷移を実現することができます。</p>

<h3>7. Monacaデバッガーでプロジェクトを動かす</h3>

<p>実機を持っている人はMonacaデバッガーで確認してみましょう。Android端末もしくはiOS端末でストアを開き、「Monaca」と検索してMonacaデバッガーを検索してインストールします。MonacaデバッガーはMonacaのアプリを起動してシミュレーションするためのアプリです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/store.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/store-198x300.png" alt="store" width="198" height="300" class="alignnone size-medium wp-image-7290" srcset="/wp-content/uploads/2014/06/store-198x300.png 198w, /wp-content/uploads/2014/06/store-137x207.png 137w, /wp-content/uploads/2014/06/store.png 424w" sizes="(max-width: 198px) 100vw, 198px" /></a></p>

<p>Monacaデバッガーを起動するとログインを求められますので、Monacaに登録したアドレスとパスワードでログインします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/debugger_login.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/debugger_login-201x300.png" alt="debugger_login" width="201" height="300" class="alignnone size-medium wp-image-7291" srcset="/wp-content/uploads/2014/06/debugger_login-201x300.png 201w, /wp-content/uploads/2014/06/debugger_login-138x207.png 138w, /wp-content/uploads/2014/06/debugger_login.png 428w" sizes="(max-width: 201px) 100vw, 201px" /></a></p>

<p>そして、「Onsen UI 最小限のプロジェクト」をクリックしてアプリを起動します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/select_project.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/select_project-223x300.png" alt="select_project" width="223" height="300" class="alignnone size-medium wp-image-7292" srcset="/wp-content/uploads/2014/06/select_project-223x300.png 223w, /wp-content/uploads/2014/06/select_project-153x207.png 153w, /wp-content/uploads/2014/06/select_project.png 476w" sizes="(max-width: 223px) 100vw, 223px" /></a></p>

<p>同期が完了したら、「Onsen UI 最小限のプロジェクト」アプリが起動します。アプリが起動したら、「Push Page2」ボタンを押して、「page2.html」に遷移しましょう。モバイルアプリでよく見られるスライドアニメーションで遷移することができます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/page1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/page1-199x300.png" alt="page1" width="199" height="300" class="alignnone size-medium wp-image-7293" srcset="/wp-content/uploads/2014/06/page1-199x300.png 199w, /wp-content/uploads/2014/06/page1-137x207.png 137w, /wp-content/uploads/2014/06/page1.png 425w" sizes="(max-width: 199px) 100vw, 199px" /></a></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/page2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/page2-198x300.png" alt="page2" width="198" height="300" class="alignnone size-medium wp-image-7294" srcset="/wp-content/uploads/2014/06/page2-198x300.png 198w, /wp-content/uploads/2014/06/page2-136x207.png 136w, /wp-content/uploads/2014/06/page2.png 423w" sizes="(max-width: 198px) 100vw, 198px" /></a></p>

<p>「page2.html」に遷移したら、先ほど記述した「Hello World」が表示されていることを確認しましょう。これで、MonacaでOnsen UIを使って、Hello Worldを行うことができました。</p>

<h2>外部リンク</h2>

<p>このアプリではOnsen UIのシンプルなアニメーションを伴ったトランジションを見ることができますが、Onsen UIにはほかにもスライド式のメニューやSplit ViewなどモバイルのUIには欠かせない様々な機能が用意してあります。Onsen UIの<a href="http://onsenui.io/guide/components.html" title="Components" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Components</a>のページでいろいろなUIの部品が紹介してありますので、詳細はそちらをご覧ください。また<a href="http://components.onsenui.io/" title="Onsen CSS Components" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen CSS Components</a>にはOnsen UIのCSSで作成した　UIパターンが掲載されており、CSSとHTMLをダウンロードすることができます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/Onsen-CSS-Components.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/Onsen-CSS-Components-300x215.png" alt="Onsen CSS Components" width="300" height="215" class="alignnone size-medium wp-image-7295" srcset="/wp-content/uploads/2014/06/Onsen-CSS-Components-300x215.png 300w, /wp-content/uploads/2014/06/Onsen-CSS-Components-1024x736.png 1024w, /wp-content/uploads/2014/06/Onsen-CSS-Components-207x148.png 207w, /wp-content/uploads/2014/06/Onsen-CSS-Components.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
]]></content:encoded>
		
		<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>
