<?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>Onsen UI &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/onsen-ui/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>誰でもハイパフォーマンス！OnsenUIが変えるハイブリッドアプリ開発の常識ーng-japan 2015</title>
		<link>/albatrosary/13896/</link>
		<pubDate>Tue, 31 Mar 2015 00:00:45 +0000</pubDate>
		<dc:creator><![CDATA[佐川 夫美雄]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Onsen UI]]></category>

		<guid isPermaLink="false">/?p=13896</guid>
		<description><![CDATA[連載： ng-japan 2015 特集 (2)この記事は、Angularをテーマとした日本初のカンファレンス 「ng-japan」のイベントレポート（第2回目）です。 はじめに HTML5ハイブリッドアプリケーションと...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/ngjapa2015/" class="series-258" title="ng-japan 2015 特集" data-wpel-link="internal">ng-japan 2015 特集</a> (2)</div><p>この記事は、Angularをテーマとした日本初のカンファレンス 「<a href="http://ngjapan.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ng-japan</a>」のイベントレポート（第2回目）です。</p>

<h1>はじめに</h1>

<p>HTML5ハイブリッドアプリケーションとは、内部の実装にHTML5が利用されているモバイルアプリケーションです。アプリの内部実装にHTML5を使うことでクロスプラットフォーム対応が可能になりますが、その代わり問題となるのがUIとパフォーマンスです。このセッションでは、Angularの上に構築されたUIフレームワークであるOnsen UIを紹介しながら、Angularでどうすれば高速かつ快適なUIを持つモバイルアプリを作れるかについて話します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/16856094836_48127e4cbd_z.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/16856094836_48127e4cbd_z.jpg" alt="16856094836_48127e4cbd_z" width="640" height="427" class="aligncenter size-full wp-image-13911" srcset="/wp-content/uploads/2015/03/16856094836_48127e4cbd_z.jpg 640w, /wp-content/uploads/2015/03/16856094836_48127e4cbd_z-300x200.jpg 300w, /wp-content/uploads/2015/03/16856094836_48127e4cbd_z-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<h1>AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ &#8211; 久保田 光則</h1>

<p>久保田光則氏は、アシアル株式会社でUI/UXデザイナー兼ソフトウェアエンジニアとして活動されています。今回お話するOnsen UIのリード開発者としても活動していて、専門でハイブリットアプリを開発しています。本日お話する内容はAngularの上に作られたOnsen UIというライブラリの内容になります。Onsen UIはonsen.ioというドメインで日本語版/英語版が公開されているオープンソースです。</p>

<p>特徴としては</p>

<ul>
<li>HTML5ハイブリットアプリ用のUIフレームワーク</li>
<li>Angularをベースにしている</li>
<li>iOS, Androidをサポートしている</li>
<li>高速な動作</li>
</ul>

<p>今回は次のことに焦点を当てて、お話します。</p>

<ul>
<li>HTML5ハイブリットアプリとは</li>
<li>ハイブリッドアプリ開発にどんな問題があるか？</li>
<li>なぜAngularとOnsen UIが必要なのか？</li>
<li>少しだけOnsen UIの紹介</li>
</ul>

<p>HTML5ハイブリットとはどのようなものか、ハイブリットアプリケーションを開発するときにどのような問題があるのか、AngularやOnsen UIがハイブリットアプリケーションを作成するためになぜ必要なのか、そして最後にOnsen UIのお話をしたいと思います。</p>

<h1>HTML5ハイブリットアプリとは</h1>

<p>HTML5ハイブリットアプリとは、ネイティブアプリとWebアプリの両方を書き合わせたアプリケーションになっています。実装の中身はHTML5で書かれています。WebViewというものがありその部分でHTMLを利用します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/e642ef4b19593f79e4dd24fb4d9e6eb4.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/e642ef4b19593f79e4dd24fb4d9e6eb4.png" alt="スクリーンショット 2015-03-23 18.07.15" width="640" height="427" class="alignnone size-full wp-image-13930" /></a></p>

<p>HTML5ハイブリットアプリの何がよいのかというと、</p>

<ul>
<li>クロスプラットフォーム制</li>
<li>Webの知識が活かせる</li>
<li>ストアで配布できる</li>
<li>ネイティブの呼び出しがJavaScriptから機能を呼び出しできる</li>
</ul>

<p>ネイティブアプリケーションではそのプラットフォームの流儀に合わせて作る必要がありますが、HTML5の部分はプラットフォームには依存しないので、クロスプラットフォーム化しやすいというメリットがあります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/74a1d8a046713952a91ae2c360ac54d9.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/74a1d8a046713952a91ae2c360ac54d9.png" alt="スクリーンショット 2015-03-23 18.07.22" width="640" height="427" class="alignnone size-full wp-image-13931" /></a></p>

<p>そして、Webの知識がそのままモバイル開発に活かせるということも、メリットの一つです。ネイティブ機能の呼び出しがなぜできるかというと、通常のWebViewではできず、セキュリティ的にも難しいところがありますが、Cordovaを使うことによってHTML5をアプリケーション内部でパッケージ化し、OSとのやり取りもAPIを通じて一本化できJavaScriptを通じて利用することが可能になります。</p>

<p>具体的には</p>

<ul>
<li>ファイルストレージ</li>
<li>カメラ</li>
<li>コンパス</li>
<li>加速度センサー</li>
<li>コンタクトリスト</li>
<li>ネットワーク</li>
<li>Bluetooth通信</li>
<li>などなど</li>
</ul>

<p>さらにCordovaプラグインを作ることで、幅が広がっていきます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/3a15bf31804567cd5abdd4a13beeced3.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/3a15bf31804567cd5abdd4a13beeced3.png" alt="スクリーンショット 2015-03-23 18.09.42" width="640" height="427" class="alignnone size-full wp-image-13932" /></a></p>

<p>「HTML5でモバイル・アプリが作れる」ということで、多くのフロント・エンジニアがHTML5ハイブリットアプリケーションに取り組んできました。あまりうまくいかなかったのが現実だったと思います。三年程前になりますが、Facebookは一部分の機能をHTML5で構築しましたが、結果として「HTML5に賭けたのは失敗だった」とし、ネイティブで書きなおすということが発生しました。しかし数年前に比べ、現在状況は改善してきています。</p>

<ul>
<li>端末スペックの向上</li>
<li>AndroidでのWebViewのChromiumの採用</li>
<li>利用できるHTML5 APIの増加</li>
<li>Android2.3系のシェア低下</li>
<li>CrossWalkの登場</li>
<li>Android5からAndroid System WebViewの登場</li>
<li>HTML5ハイブリットアプリケーションの事例増加</li>
<li>BYODの一般化</li>
</ul>

<p>最近だとRailsの作成なども昔はスペックが低かったのですが、最近はだいぶよくなってきたという認識があるようです。しかし、ネイティブに比べあまりよくないという印象があります。ではよくないというのは、何が問題なのかを考えます。</p>

<ul>
<li>パフォーマンスや安定性がよくない</li>
<li>UIコンポーネントをいちいち作らないといけない</li>
</ul>

<p>パフォーマンスに関しては、チューニングすればいいという話ですが。実際にはチューニングの方法に関しては、あまり興味ないという人が多いようです。特にフロントエンド開発者の多くが、HTML, CSS, JavaScriptの書き方は理解しているが、チューニング方法に関してはあまり関心がないということがあるようです。</p>

<p>そこでチューニングのやり方について、少しお話しようと思います。</p>

<h1>効率的なチューニング</h1>

<p>まず、どこがボトルネックになっているのかを調べる必要があります。これはハイブリットアプリケーションを開発する人だけではなく、一般のWebアプリケーション開発者に取っても必要になる事柄です。</p>

<ul>
<li>インスペクタのTimelineタブで計測</li>
<li>AndroidではChrome</li>
<li>iOSではSafari</li>
</ul>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/5bdf8b82fbba661f9347af1ce83d9e58.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/5bdf8b82fbba661f9347af1ce83d9e58.png" alt="スクリーンショット 2015-03-23 18.11.05" width="640" height="427" class="alignnone size-full wp-image-13933" /></a></p>

<p>実機で開発しているときにも、このインスペクタを使って測定することが可能です。インスペクタのTimelineで取れるカテゴリは4つあります。</p>

<ul>
<li>Loading</li>
<li>Scripting</li>
<li>Rendering</li>
<li>Painting</li>
</ul>

<p>このLoading, Scripting, Rendering, Paintingという流れがありますが、これを1frameと呼びます。描画が始まってから終わるまでが1frameで、この1frameを16ms以下に抑えればよいということになります。Timelineを使って測定した後、どこにボトルネックがあるかでチューニングが変わります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/25d51172d0c1dff81468020af3b585ad.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/25d51172d0c1dff81468020af3b585ad.png" alt="スクリーンショット 2015-03-23 18.11.16" width="640" height="427" class="alignnone size-full wp-image-13934" /></a></p>

<h3>Loading</h3>

<p>Loadingは、リソースの読み込みやパースが行われます。ハイブリッドでは、Webアプリケーションよりも消費する時間は短いです。理由としては、リソースがローカルにあるからです。通常のWebアプリケーションは、リソースの取得もこのLoadingに含まれます。</p>

<h3>Scripting</h3>

<p>次に、Scriptingになります。これは、JavaScriptの実行時間になります。</p>

<p>今のJavaScriptの実行時間としては、純粋な計算は速いと考えてよく、基本的には問題ならないです。ただし、canvasへの描画などは遅くなる場合があります。チューニングに関しては、簡単で単純にでき、Profilesタブでどのコードが遅いかを確認すればよいということになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/9b3fc6b11cd7e706620d7a32d033e0a9.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/9b3fc6b11cd7e706620d7a32d033e0a9.png" alt="スクリーンショット 2015-03-23 18.13.08" width="640" height="427" class="alignnone size-full wp-image-13935" /></a></p>

<h3>Rendering</h3>

<p>ここから話が少しややこしくなります。Renderingであるレイアウト処理は、大きく2つの処理があります。</p>

<ul>
<li>Recalculate Style &#8211; 要素に当たるCSSルールの計算</li>
<li>Layout &#8211; Render Treeの生成</li>
</ul>

<p>Recalculate Styleがどのような計算をするかというと、個別のDOM要素に対して該当するスタイル（プロパティ）を計算します。CSSがレンダリング内部でパースされるとCSS OMという形になり参照して</p>

<p>DOM要素の数 × CSSルール</p>

<p>数分のマッチング処理が行われます。チューニングの一つとしてCSSの使ってないルールは削除するというものがありますが、この数式に由来しています。ルールが一つ減るだけでも、DOM要素の数分処理が減るということになるためです。さらに、重たいCSSの書き方を減らすということを行うと、より効果的です。</p>

<p>その次のLayoutというフェーズでは、すべてのDOM要素のレイアウト情報を計算します。計算された結果として、視覚的なオブジェクトツリーのことをRenderTreeと言います。そして、CSSの書き方やDOM要素の数を工夫することで、レスポンス改善することができます。</p>

<h3>Painting</h3>

<p>4つのうちの最後の処理ですが、さらに3つの工程があります。</p>

<ul>
<li>Paint &#8211; Display Listの生成</li>
<li>Rasterize &#8211; Display Listを実行してピクセル化</li>
<li>Composite Layers &#8211; レイヤの合成</li>
</ul>

<h1>雑多なチューニングテクニック小話</h1>

<h3>translate3d(0, 0, 0)が速いのはなぜ？</h3>

<p>これは、GPUで描画されるので速いという話がありますが、実は半分正解で、半分は間違っています。GPUで描画され、transform CSSプロパティを変更しても、Composite Layersのみが起こるためです。同時に別処理でLayoutを引き起こしたりすると、効果が薄れます。</p>

<p>どのCSSプロパティを変更すると、何が起こるのかというところは不明瞭な部分が多い。ある程度パターンはあり次の区分けで分類できます。</p>

<ul>
<li>要素の大きさが変わるような場合</li>
<li>Layoutから処理が始まる</li>
<li>transformやopacityたとComposite Layersのみ実行</li>
<li>CSSプロパティによる変更では事象が異なる</li>
</ul>

<p>CSS Triggersというサイトがあるので、ぜひ参考にして欲しいと思います。CSSプロパティを変更すると、インスペクタのTimelineで取れるカテゴリの何が実行されるかを示した表になっています。</p>

<p>http://csstriggers.com/ の紹介</p>

<h3>DOMリークを防ぐ</h3>

<p>DOM要素が誤って参照されたまま、開放されないという現象です。見た目よりも深刻で、DOM要素の参照は親要素への参照も子要素への参照も持っているので、DOMリークが起こるとすべてリークになります。detached DOMツリーとそれに参照されているリソースが、すべてリークするということがあります。その中に画像が入っているとそういった部分もリークします。</p>

<p>ディスクトップではあまり意識しなくてもよかったのですが、iOS, Androidだとメモリスワッピングが弱く設計されていて、アプリケーションの利用を破棄するといったことが起こります。そのためにモバイルだと、メモリーの管理を余計にしないといけなくなります。</p>

<h3>reflowを起こさないようにする</h3>

<p>Reflowを起こさないためには</p>

<ul>
<li>画像のサイズは必ず指定</li>
<li>DOMツリーから切り離して操作</li>
</ul>

<p>画像がまだ読み込まれていない時に、サイズとして仮指定する場合があります。画像を描画し、本当のサイズにレンダリングすることになりますが、DOM要素の大きさが変わるため、Layoutの処理が再度はじめから行われるということになります。</p>

<h3>GPUバウンド</h3>

<p>CPUよりもGPUの方で時間がかかっている状態のことを、GPUバウンドと言います。先ほどtranslate3d(0, 0, 0)が速いという話がありましたが、これはComposite Layersだけが走っているためです。しかしこれを使いすぎると、GPUバウンドが発生します。</p>

<p>GPUバウンドなページを作ることは簡単で、多くな領域を持つ要素にtransform: translate3d(0, 0, 0)を当てて多く生成し、アニメーションさせれば作られます。</p>

<h1>チューニングの罠</h1>

<p>こういったチューニングの大部分のところは、レンダリングエンジンに依存しています。どうしてもわからないときは、レンダリングエンジンのソースを読んだりします。ただ、なぜHTML5のコードを書くのに、ここまでやる必要があるのか。なぜ単にCSS書いているだけなのに、GPUのVRAMへの転送速度を気にしなければならないのか、という疑問があります。実際にアプリケーション開発中にここまでチューニングする余裕はないはずだし、こういったチューニングをすべて把握することを、開発者に求めてよいのかということもあります。</p>

<p>ごく一部の人間でないと、高速なHTML5ハイブリットアプリケーションは開発できないのでしょうか。今のHTML5アプリケーションの課題としては、アプリケーションアーキテクチャの構築方法の不在ということや、チューニングされて高速に動作するUI基盤がないということが言えると思います。ネイティブだとUIフレームワークがあるが、HTML5ハイブリットアプリケーションだとUIフレームワークがないというのが現実です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/71d029abf7baad9ed581d790f49f0905.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/71d029abf7baad9ed581d790f49f0905.png" alt="スクリーンショット 2015-03-23 18.14.19" width="640" height="427" class="alignnone size-full wp-image-13936" /></a></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/9f5b8ba38d69b948ae12e154e84fbff7.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/9f5b8ba38d69b948ae12e154e84fbff7.png" alt="スクリーンショット 2015-03-23 18.14.28" width="640" height="427" class="alignnone size-full wp-image-13937" /></a></p>

<h1>Onsen UI</h1>

<p>そこでOnsen UIです。この目的は、開発者がアプリの開発そのものに注力できるようにすることです。</p>

<p><a href="http://ja.onsen.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/03/bfc8f88e2bd478e15c29970ef366bc61-300x216.png" alt="スクリーンショット 2015-03-23 18.04.07" width="300" height="216" class="alignnone size-medium wp-image-13928" srcset="/wp-content/uploads/2015/03/bfc8f88e2bd478e15c29970ef366bc61-300x216.png 300w, /wp-content/uploads/2015/03/bfc8f88e2bd478e15c29970ef366bc61.png 640w, /wp-content/uploads/2015/03/bfc8f88e2bd478e15c29970ef366bc61-207x149.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Angularをベースにして構築しています。Angularの持つ機能を利用しHTMLを拡張することで、アプリケーションを記述することができ、大規模なアプリケーションでも耐えられるアーキテクチャを作ることができます。Angularの持っているディレクティブを使うことで、UIを構築することもできる。Onsen UIでは「ons-」を使っています。そして、Adobeの超高速CSSフレームワークtopcoteを利用しテーマを開発しています。またOnsen UIでは多くのコンポーネントを用意しています。</p>

<p>Onsen UIが目指すものとして、誰でもHTML5で高速に動作するモバイル・アプリケーションを作ることができる世界を提供したいと考えています。さらに、UIをどうチューニングするかではなく、アプリケーションの本質的な機能の開発にフォーカスすることができる基盤も提供したい。今後は、Onsen UIはMaterial Designs、Angular2のサポートを行っていくつもりです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/16880985411_03e74f1dd3_z.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/16880985411_03e74f1dd3_z.jpg" alt="16880985411_03e74f1dd3_z" width="640" height="427" class="alignnone size-medium wp-image-13912" srcset="/wp-content/uploads/2015/03/16880985411_03e74f1dd3_z.jpg 640w, /wp-content/uploads/2015/03/16880985411_03e74f1dd3_z-300x200.jpg 300w, /wp-content/uploads/2015/03/16880985411_03e74f1dd3_z-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<div style="border: 1px solid gray; margin: 1em; padding: 1em;">
<article>
<h1>CodeIQとの連動企画！</h1>
AngularJS雑学、豆知識を問う問題です。<br>腕試しに、もしくは理解度チェックに是非ご活用ください！<a href="https://codeiq.jp/q/1384" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>から問題にチャレンジ！<br><a href="https://codeiq.jp/q/1384" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">問題：知ってる？AngularJS雑学</a>
</article>
</div>

<h1>プレゼンテーション資料</h1>

<p>このセッションのプレゼンテーション資料は下記になります。合わせてご覧ください。</p>

<p><a href="http://www.slideshare.net/AsialCorp/angularonsen-uihtml5" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/03/574548450afbb6e5bbf3c81d200e782d.png" alt="スクリーンショット 2015-03-23 18.02.45" width="640" height="427" class="alignnone size-full wp-image-13927" /></a></p>

<h1>セッション動画</h1>

<p>当日のセッションはYouTubeで公開されています。ぜひご覧ください！</p>

<div class="aligncenter">
<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="560" height="315" src="https://www.youtube.com/embed/EEOKVlEaIDY?start=4980" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>
</div>
]]></content:encoded>
		
		<series:name><![CDATA[ng-japan 2015 特集]]></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>
	</channel>
</rss>
