<?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="/anatoo/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>HTML5ハイブリッドアプリ開発、最新動向はやわかり！</title>
		<link>/anatoo/7253/</link>
		<pubDate>Wed, 02 Jul 2014 01:00:51 +0000</pubDate>
		<dc:creator><![CDATA[久保田 光則]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Monaca]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7253</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (1)ここ数年、従来のJavaやObjective-Cでのモバイルアプリ開発以外に、HTML5を使ってモバイルアプリを開発する手法、HTML5ハイブリッドアプリ開発が注目を浴びていま...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (1)</div><p>ここ数年、従来のJavaやObjective-Cでのモバイルアプリ開発以外に、HTML5を使ってモバイルアプリを開発する手法、HTML5ハイブリッドアプリ開発が注目を浴びています。この記事では、第48回HTML5とか勉強会（ハイブリッドアプリ開発最新動向）で発表した「<a href="http://www.slideshare.net/monaca_mobi/html5-35122937" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">はやわかりHTML5ハイブリッドアプリ開発事情</a>」での内容を解説することで、HTML5モバイルアプリについての基本的な知識を簡単に紹介します。</p>

<h2>HTML5ハイブリッドアプリとは?</h2>

<p>それでは、まずHTML5ハイブリッドアプリの構造についてご紹介します。ハイブリッドアプリではアプリの画面としてWebViewというネイティブのコンポーネントを使います。このWebViewの中でHTMLの画面を表示するモバイルアプリがハイブリッドアプリです。図で表現すると、以下の画像でハイブリッドアプリの構造を表現することができます。</p>

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

<h2>なぜハイブリッドアプリなのか?</h2>

<p>従来の純粋なJavaやObjective-Cで開発するネイティブアプリとHTML5で開発するハイブリッドアプリがどのように異なるのか、ハイブリッドアプリを採用する際のメリットをご紹介します。</p>

<h3>1.クロスプラットフォーム</h3>

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

<p>従来のアプリ開発では、アプリ開発対象のOSの流儀に従わなくてはなりませんでした。JavaやObjective-Cといった開発言語も違えば、開発環境や必要とされる知識やノウハウも異なります。ハイブリッドアプリではWebViewという各OSに共通のコンポーネントを用いるので、HTMLやCSS、JavaScriptでどのOSでも共通に動作するアプリを記述することができます。</p>

<h3>2. Web標準の知識をモバイルアプリ開発に適用できます</h3>

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

<p>ハイブリッドアプリ開発ではHTMLやCSS、JavaScriptといったWeb開発では必須の言語でモバイルアプリを開発することができます。もちろんPCでのブラウザ向けの開発とは違い、モバイル端末のスペックやそれ上で動作するブラウザのことは考慮しなければいけませんが、もっぱらWeb開発に携わっていた方が、モバイルアプリを開発する際にも比較的、敷居は低くなります。</p>

<h3>3. JavaScriptから各OSのAPIを呼び出すことができます</h3>

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

<p>Cordovaなどのハイブリッドアプリ開発用のフレームワークを使うことで、カメラや、センサーなどのモバイル端末でのみ利用できるAPIをJavaScriptから呼び出すことができます。</p>

<h2>ハイブリッドアプリが向いていない場面</h2>

<p>ハイブリッドアプリを採用する際のメリットをご紹介しましたが、ここでは逆にハイブリッドアプリがあまり向いていない場面、不得意な分野もあります。</p>

<p>例えば、高速な描画処理が要求されるゲームなど、ネイティブでOpenGL等を使ってバリバリに高速描画させているゲームなどをハイブリッドアプリで実現しようとすると厳しいものがあります。モバイル端末でのWebGL実装の普及に伴って解決されていく問題かもしれませんが、今のところHTML5ハイブリッドアプリでは、こういった分野は苦手です。</p>

<p>また、HTMLのレンダリングエンジン上で動くという性質上、端末のスペックを最大限引き出すような処理もネイティブアプリと比べると苦手です。</p>

<h2>ハイブリッドアプリの作り方</h2>

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

<p>ハイブリッドアプリを開発するためのフレームワークがいくつかありますが、その中でも最も有名なものは「Cordova (PhoneGap)」です。ここでは「Cordova (PhoneGap)」について紹介します。</p>

<p>よく呼称の問題で「Cordova」か「PhoneGap」かということが議論になっていることがありますが、基本的にはどちらも同じものと考えて、ここでは差し支えありません。</p>

<h3>1. HTML5とネイティブ間のブリッジ</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/cordova_bridge.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/cordova_bridge.png" alt="cordova_bridge" width="265" height="299" class="aligncenter size-full wp-image-7257" srcset="/wp-content/uploads/2014/06/cordova_bridge.png 265w, /wp-content/uploads/2014/06/cordova_bridge-183x207.png 183w" sizes="(max-width: 265px) 100vw, 265px" /></a></p>

<p>Cordavaを使うことでJavaScriptからカメラ、コンパス、センサー、連絡先、ネットワークなどの本来JavaやObjective-CでしかアクセスできないネイティブのAPIを呼ぶことができます。また、Cordovaのプラグインを自分で作ってHTML5アプリに組み込むことで、JavaScriptから呼ぶことのできるネイティブのAPIを拡張することができます。</p>

<h3>2. HTML5をアプリとしてラッピングする</h3>

<p>CordovaにはデフォルトでモバイルアプリをWebViewで表示する機能が備わっています。CordovaがWebViewに関連するネイティブのコードを提供するので、ハイブリッドアプリ開発者は、HTMLアプリを用意するだけで、ネイティブのコードを記述することなしにアプリを開発できます。</p>

<h2>フレームワークを使わない選択肢</h2>

<p>ネイティブアプリ開発でも、アプリの一部分をWebViewで記述するということは、よく行なわれています。自前で用意したWebViewをアプリ内に組み込むこともできますが、ここは開発するアプリの要件に併せて検討が必要でしょう。</p>

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

<h2>ハイブリッドアプリの事例</h2>

<p>有名なところではWikipediaのモバイルアプリや、クックパッドのAndroid版はHTML5が用いられています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/cookpad.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/cookpad-300x229.png" alt="cookpad" width="300" height="229" class="aligncenter size-medium wp-image-7256" srcset="/wp-content/uploads/2014/06/cookpad-300x229.png 300w, /wp-content/uploads/2014/06/cookpad-207x158.png 207w, /wp-content/uploads/2014/06/cookpad.png 310w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

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

<p>ほかにもPhoneGapの<a href="http://phonegap.com/app/" title="公式サイトへアクセス" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">公式サイト</a>にたくさん事例が掲載されていますので、興味がある方は<a href="http://phonegap.com/app/" title="公式サイトへアクセス" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">アクセス</a>してみてください。</p>

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

<p>ここまで簡単にHTML5ハイブリッドアプリについて紹介しましたが、ハイブリッドアプリについてよく聞かれる疑問について答えていきたいと思います。</p>

<h3>1. ハイブリッドアプリは遅いのでは?</h3>

<p>普通にWebサイトのように作ると遅くなってしまいます。Android2.3等のWebViewだと特にパフォーマンスに問題が出ます。ここではHTML5アプリの描画や、パフォーマンスのチューニング方法を知っていることが重要になってきます。</p>

<h3>2. この機能はハイブリッドアプリで作れますか?</h3>

<p>実際に仕様策定段階に入る前に実現したい機能が本当にHTML5アプリで実現可能なのか、実現可能であるとしても意図した挙動になるのかというのを事前に検証しましょう。HTML5のAPIで実現できなくてもPhoneGapのプラグインが公開されている場合もあります。場合によってはPhoneGapプラグインを自作することで、対応可能である場合もあります。もちろん、ネイティブ部分をどんどん拡張していけば、HTML5でアプリを作るメリットも薄れてきますので、ハイブリッドアプリ以外の選択肢もあることを意識しておきましょう。</p>

<h2>ハイブリッドアプリ開発のテクニック•ノウハウ</h2>

<p>ハイブリッドアプリを実際に作っていくと、いろいろな問題に遭遇します。特によくあるのはレンダリングや反応が遅いという問題や、アプリっぽいUIを作るのが難しい問題でしょう。</p>

<p>過去に私が発表した<a href="http://www.slideshare.net/monaca_mobi/hybridapp-tips" title="スライド" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">スライド</a>の後半で、アプリの最適化のテクニックを紹介していますので、参考にしてください。また、私が執筆した<a href="http://www.amazon.co.jp/Android%E5%AF%BE%E5%BF%9C-HTML5-ハイブリッド%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA-Software-Design-ebook/dp/B00HEB6UFM/ref=sr_1_1?ie=UTF8&amp;qid=1402460687&amp;sr=8-1&amp;keywords=ハイブリッド%E3%82%A2%E3%83%97%E3%83%AA%E3%80%80%E5%AE%9F%E8%B7%B5" title="[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門</a>にもハイブリッドアプリ開発のノウハウや知識を網羅的に詰め込んでいます。よろしければ、ご覧ください。</p>

<h2>ハイブリッドアプリの開発環境</h2>

<p>ハイブリッドアプリを開発するためのツール群や開発環境も近年、豊富に出てきています。Adobe社が提供している<a href="https://build.phonegap.com/" title="PhoneGap Build" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGap Build</a>やTelerik社の<a href="http://www.telerik.com/appbuilder" title="AppBuilder" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AppBuilder</a>、<a href="http://www.appgyver.com/composer" title="AppGyver" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AppGyver</a>、また、ハイブリッドアプリのデバッグ環境としては<a href="http://people.apache.org/~pmuellr/weinre/docs/latest/Home.html" title="Weinre" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Weinre</a>や<a href="https://www.jshybugger.com/" title="jsHybugger" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">jsHybugger</a>などが出てきています。</p>

<p>最後にハイブリッドアプリ開発環境として、私も開発に携わっている<a href="http://monaca.mobi/ja/" title="Monaca" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>と<a href="http://onsenui.io/" title="Onsen UI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen UI</a>についてご紹介させていただきます。</p>

<p><a href="http://monaca.mobi/ja/" title="Monaca" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Monaca</a>はクラウド上でAndroidやiOSなどのモバイルアプリ開発を行なうためのツールです。登録するだけで、すぐに無料で使うことができます。Monacaにはクラウド上のIDEが備わっており、Webブラウザ上でコーディングからデバッグ、ビルドまでを一貫して行なうことが可能です。このMonacaを使って、既にGoogle PlayストアやApp Storeには、2000以上のアプリが公開されています。</p>

<p><a href="http://onsenui.io/" title="Onsen UI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Onsen UI</a>は、モバイルアプリらしいUIを手軽に作成することを目的として開発されているUIフレームワークです。フレームワークとして人気の高い<a href="https://angularjs.org/" title="AngularJS" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AngularJS</a>を組み込んでいます。Onsen UIのCSSを用いて作成されたモバイルアプリ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のHTML、CSSを自分好みのテーマに自由にカスタマイズしてダウンロードすることができます。</p>

<h2>終わりに</h2>

<p>ここまでこの記事では、HTML5ハイブリッドアプリ開発に関する諸事情をまとめて紹介しましたが、いかがだったでしょうか。</p>

<p>以前からハイブリッドアプリに関する動きを見てみると、開発者が実際にHTML5を使ったアプリを開発・公開する事例が増えてきました。また、モバイル端末のスペックが向上してきたおかげでHTML5でもそれなりの速度がでるようになり、だんだんとハイブリッドアプリ開発に関する開発者の認知が上がってきています。</p>

<p>それのおかげで開発者間での話題も、単に「WebViewを使ってみました」程度の話から、実際に「HTML5を使ってどうやって質の良いアプリを開発するか」というような現実的な話にシフトしてきている印象です。</p>

<p>また開発者の意識だけではなく、この記事で紹介したようなハイブリッドアプリ開発のためのツール、ライブラリや最適化のためのノウハウもだんだんと育ってきています。</p>

<p><a href="https://github.com/MobileChromeApps" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mobile Chrome Apps</a>や<a href="http://www.mozilla.org/ja/firefox/os/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox OS</a>など、最初からHTML5でモバイルアプリを書くことを前提とするプロダクトも出ていることを考えると、今後ますますモバイルアプリ開発でのHTML5の活躍する場所が広がっていくものと思われます。</p>

<p>読者の方もぜひHTML5ハイブリッドアプリ開発に挑戦していただければと思います。</p>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
	</channel>
</rss>
