<?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>グラフィカルWeb &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/グラフィカルWeb/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>Chromeの次期バージョンはアグレッシブ！ついにAndroid版でWebGLが動く！Web Speech APIやVibration APIも！（フラグ必要だけど）</title>
		<link>/shumpei-shiraishi/1717/</link>
		<pubDate>Fri, 23 Aug 2013 02:26:58 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[グラフィカルWeb]]></category>

		<guid isPermaLink="false">/?p=1717</guid>
		<description><![CDATA[Google Chromeの次期バージョン30では、特にAnrdoid版で、ワクワクするような変更が数多く入るようです。 ソースはChromium Blogです。 ちなみに、次期バージョンはベータ版として現在でも触ること...]]></description>
				<content:encoded><![CDATA[<p>Google Chromeの次期バージョン30では、特にAnrdoid版で、ワクワクするような変更が数多く入るようです。
<a href="http://blog.chromium.org/2013/08/chrome-30-beta-richer-web-on-android.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ソースはChromium Blog</a>です。</p>

<p>ちなみに、次期バージョンはベータ版として現在でも触ることが可能です。<a href="https://play.google.com/store/apps/details?id=com.chrome.beta&amp;hl=ja" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google Chrome Beta for Androidはこちら</a></p>

<p>次期バージョンでの変更点は以下のとおり。かいつまんで書きますので、詳しく知りたい方は<a href="http://blog.chromium.org/2013/08/chrome-30-beta-richer-web-on-android.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chromium Blog</a>を参照してください。</p>

<ul>
<li>WebGLがAndroid版でもデフォルトでオンになります！IE11もサポートすることですし、だんだんWebGLの使える領域が広がってきました。これは来年あたり、Web+3Dの大波がきそうな予感です。</li>
<li>デバイスの「動き」を検知することができる<a href="http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Device Motion Event</a> APIに対応。</li>
<li><a href="https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Media Source Extensions</a>がAndroid版でも利用できるように。このAPIを用いれば、メディアデータを動的にvideo要素/audio要素で再生できるようになります。WebSocketで受け取ったメディアデータの断片を再生する……ということも可能でしょう。</li>
<li>いくつかの新しいChrome Apps APIをサポート。特に、<a href="https://developers.google.com/chrome/web-store/docs/money" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">アプリ内課金 (In-app payments)</a>が可能になるのが大きいのではないでしょうか。</li>
<li>[WebRTC Device Enumeration API] をサポート。MediaStreamTrack.getSources()というAPIを用いて、デバイス上のマイクやカメラの一覧を取得することができます。このAPIを使用すると、WebRTCコールを再起動することなく、マイクやカメラを切り替えることができます。</li>
<li>開発者ツールが、CSSのソースマップに対応しました。これで、SassやLessなどのプリプロセッサが出力するCSSをよりデバッグしやすくなります。</li>
<li>Android版が、Web Speech APIとVibration APIをサポートしました。フラグの設定が必要です。</li>
</ul>

<p>Chromeの今後について気になる方は、<a href="http://www.chromestatus.com/features" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">chromestatus.com</a>が必見です。
ぼくも久しぶりにこのサイトを見たのですが、昔に比べてめちゃくちゃ見やすく、綺麗になっています。Chrome以外のブラウザの実装状況や、実装を検討している機能についての（Googleが見た）Web開発者からの反応などもまとめられており、まさにWebの最新状況がわかるサイトと言っても過言ではありません。</p>
]]></content:encoded>
			</item>
		<item>
		<title>RAIZIN Coolで学ぶ、イマドキのWebサイトの作りかた</title>
		<link>/edo_m18/991/</link>
		<pubDate>Wed, 24 Jul 2013 20:00:01 +0000</pubDate>
		<dc:creator><![CDATA[比留間 和也]]></dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[グラフィカルWeb]]></category>

		<guid isPermaLink="false">/?p=991</guid>
		<description><![CDATA[連載： イマドキのWebアプリの作りかた (3)HTML5 Canvasを利用した冷気の演出が話題となった「RAIZIN JAPAN」のデモサイト。エキスパートが手がけたプロダクトを題材に技術的な解説を行っていくシリーズ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/app-lobo/" class="series-150" title="イマドキのWebアプリの作りかた" data-wpel-link="internal">イマドキのWebアプリの作りかた</a> (3)</div><p>HTML5 Canvasを利用した冷気の演出が話題となった<a href="http://raizin-japan.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「RAIZIN JAPAN」</a>のデモサイト。エキスパートが手がけたプロダクトを題材に技術的な解説を行っていくシリーズ第二弾は、RAIZIN Coolの実装を徹底解説します。</p>

<!-- more -->

<h1>HTML5 Canvasを利用した簡易的な冷気の演出</h1>

<p>最近の仕事で実装したものが海外の、しかも<a href="http://techwave.jp/archives/raizin_cool_use_canvas_viporeffect.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">米シリコンバレーで話題</a>になりました。<br />
社内でもそうした簡単にできる（けど簡単そうに見えない）簡易的な実装に注目が集まり、ちょっとした話題になったので解説しつつ紹介したいと思います。</p>

<p>※今回の解説用に、jsdo.itに実際に動くサンプルをアップしました。<br />
さらに今回の解説用に特別に動作が分かりやすくなるオプションも追加しています。↓
(invalid jsdo.it code)</p>

<p>今回紹介するのは<a href="http://raizin-japan.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RAIZIN</a>というエナジードリンクの新バージョン<a href="http://raizin-japan.com/cool/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「Cool」のLP</a>です。<br />
当初はとても時間がタイトで限られた予算での実施ということもあり、まったく動きのないペライチにしようという話になっていました。</p>

<p>しかしそれだとどうしてもインパクトが出ない。<br />
<strong>「時間と予算が限られた中で、それでも少しでもインパクトのあるものが作りたい」</strong><br />
とエンジニアとデザイナーで話し合いました。</p>

<p>あ、ちなみにこの記事を書いているのは私ですが、方向性、実装方法などおおまかに話したあとは<strong>実装は社内の別のエンジニアが行なっています</strong>。</p>

<h2>どこに人はリアリティを感じるか</h2>

<p>話し合いは、まずはどうしたらリアリティが出るか、という話をメインに行いました。<br />
話し合い時点である程度デザインはでき上がっていたので、それを元にどうしたらリアリティが出るか、どういう演出が考えられるかを話し合いました。</p>

<p>最初に着目したのは冷気。まぁここは当然ですね。なにはなくとも冷気がなければ冷えている感、Cool感は出ません。問題はこれをどう動かすか、でした。<br />
当然、高度な物理演算を用いて冷気をリアルに動かす、ということも考えましたが、当然時間が足りない。（それこそ、1～2日くらいしか時間が残されていなかった）</p>

<p>みんなであれこれ話していて、冷気の動きは実は3種類くらいしかないのでは、とひらめきました。</p>

<ul>
<li>缶から出て下に落ちる縦の動き</li>
<li>それが地面に到達してわだかまり、渦を巻いている状態</li>
<li>たまった冷気が缶から離れていく横の動き</li>
</ul>

<p>おおまかに動きを分解すると、この3つの動きだけで実装できそうだと気づきました。<br />
閃いてからは話は早く、あとはそれをどう実装するか、という話になります。</p>

<h2>Canvas要素を使って冷気表現</h2>

<p>今回選択したのはHTML5から定義されたCanvas要素。<br />
冷気の動きには回転を含んでいたのと、冷気同士の色みを合成することを考えて選択しました。</p>

<p>実際に実装を始めてみるといくつか問題がありました。</p>

<ul>
<li><strong>冷気の画像は左右で対象なので同じタイミングで出すとバレる</strong><br />違う画像をデザイナーに頼もうかと思いましたが、時間も素材を用意できるか微妙だったので、左右で煙の出るタイミングをずらしたらほとんど目立たなくなりました。</li>
<li><strong>回転する冷気は縦横に比べて速度を落とす</strong><br />回転する冷気は、縦と横で動いている冷気よりも目立ってしまったので、回転速度をだいぶ遅くしたら違和感がなくなりました。</li>
<li><strong>冷気の最初はグラデーションマスク</strong><br />縦に動く画像の出始めの部分は、缶から冷気が出ているというより空中から出ているようになるので、上からグラデーションで透明にしたマスクを置きました。</li>
</ul>

<p><img src="/wp-content/uploads/2013/07/mask.png" alt="マスク画像" /></p>

<p>最終的には冷気の出現の仕方・速度を調整することでだいぶリアリティのあるものができました。<br />
やはり、予算や時間がタイトな案件は多くあるもの。その中でどうしたら表現したいものに最大限近づけることができるか。<br />
本当に計算をして表現する以外に方法がないか模索してみるといいと思います。</p>

<h2>構造を分解</h2>

<p>今回作成したものは上記で書いた通り比較的簡易な表現になっています。<br />
そのため、レイヤー構造もとてもシンプル。<br />
おおまかに構造を分解したものが以下の画像です。</p>

<p><img src="/wp-content/uploads/2013/07/explanation.jpg" alt="仕組みの分解解説" /></p>

<h3>全体は3つのレイヤーのみ</h3>

<p>見てもらうと分かる通り、メインとなる缶の画像を含めても3つのレイヤーしかありません。<br />
構造は</p>

<ul>
<li>メインの缶画像レイヤー</li>
<li>冷気を表現するCanvasレイヤー</li>
<li>マスクレイヤー</li>
</ul>

<p>の3つです。</p>

<p>DOM要素的にはもっとありますが、レイヤーとしては3つです。</p>

<h3>Canvas内のレイヤーも3つ</h3>

<p>さらに演出のメインとなるのはCanvas要素のみです。<br />
そのCanvas要素内で動いているものも3つのレイヤーからなっています。</p>

<p>冒頭に書いた<strong>「気付き」</strong>を元に構成したものです。つまり、「縦・横・回転」の3レイヤーです。　　
これをそれぞれ個別にアニメーションさせながら今回の演出を表現しています。</p>

<p>アニメーション自体は実にシンプルで、縦・横ともにひとつのPNG画像をうまくループするように配置しアニメーションさせるだけです。<br />
回転に関してはさらにシンプルで、移動はせず、単純に配置された場所でゆっくりと回転させるだけです。Canvasアニメーションを実装したことがある人ならそれこそものの数分で作れる演出です。</p>

<p>それぞれのアニメーションで使用した画像は以下の3つだけです。</p>

<p><img src="/wp-content/uploads/2013/07/sample-raizin-side.png" alt="縦演出用冷気画像" /><br />
縦にループさせている画像</p>

<p><img src="/wp-content/uploads/2013/07/sample-raizin-under.png" alt="横演出用冷気画像" /><br />
横にループさせている画像</p>

<p><img src="/wp-content/uploads/2013/07/sample-raizin-corner.png" alt="回転演出用冷気画像" /><br />
回転させている画像</p>

<h2>jsdo.itのサンプルを動かして理解しよう</h2>

<p>冒頭でも書きましたが、今回制作したものがどういう仕組で動いているのか確認できるものを<a href="http://jsdo.it/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">jsdo.it</a>にアップしました。<br />
各項目をOn/Offすることで動作がどういうものか理解できるかと思います。参考にしてみてください。</p>

<p>ちなみに3Dをオンにしたあとはさらに<strong>ドラッグで回転</strong>することができます。<br />
どういう構造になっているのかを理解するのに役立つと思うのでそちらも参考にしてみてください。<br />
<strong>※jsdo.it上にアップしたサンプルは、実際のサイトに公開されているものとは別物です。<br />
動作確認がしやすいように、処理を最適化しています。</strong></p>

<p>(invalid jsdo.it code)</p>

<h2>話題にされた記事</h2>

<ul>
<li><a href="http://techwave.jp/archives/raizin_cool_use_canvas_viporeffect.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「RAIZIN JAPAN」HTML5 CANVASを使用した冷気の表現が話題に 【@maskin】</a></li>
<li><a href="http://www.ideaxidea.com/archives/2013/07/canvas_frozen.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5で冷気を表現したサイトがすごいな</a></li>
<li><a href="http://squeeze.jp/blog/web-design/making-of-canvas-frozen/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「HTML5で冷気を表現したサイトがすごいな」を分解してみた！</a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[イマドキのWebアプリの作りかた]]></series:name>
	</item>
	</channel>
</rss>
