<?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>Paper Elements &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/paper-elements/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>話題のMaterial DesignをWebで実現！Polymerで「Paper Elements」を試そう</title>
		<link>/ahomu/9307/</link>
		<pubDate>Tue, 05 Aug 2014 00:00:12 +0000</pubDate>
		<dc:creator><![CDATA[佐藤歩]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[Material Design]]></category>
		<category><![CDATA[Paper Elements]]></category>
		<category><![CDATA[Polymer]]></category>

		<guid isPermaLink="false">/?p=9307</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (9)この記事では2014年7月にGoogle I/Oで発表されたMaterial Designについて、どのようなコンセプトなのか、これまでのデザインガイドラインと何が違う...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (9)</div><p>この記事では2014年7月にGoogle I/Oで発表されたMaterial Designについて、どのようなコンセプトなのか、これまでのデザインガイドラインと何が違うのか、ポイントをおさえて紹介します。記事の後半では、Material DesignをWebで実現するためのPolymerとPaper Elementsに関しても説明します。</p>

<h2>Material Designという視覚的言語</h2>

<p><a href="http://www.google.com/design/spec/material-design/introduction.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Material Design</a>の目的は、ひとつの視覚的な言語（Visual Language）によって、あらゆるプラットフォーム、あらゆるスクリーンサイズのデバイスで、一貫性のある体験を提供することです。</p>

<p>それを実現するため、伝統的なグラフィックデザインとテクノロジーによる可能性を引き出して開発に取り組み、ガイドラインは生きたドキュメントとして更新され続けるとしています。</p>

<h3>フラットな中に、自然な影や動きを取り入れた</h3>

<p>Material Designは、フラットデザインを取り入れた他のデザインガイドラインと同様に、伝統的なグラフィックデザイン、たとえばタイポグラフィーやレイアウトの原則を取り込んでいます。文字やグラフィックを中心に構成された現在のアプリやWebに、はるか昔から積み重ねられてきたノウハウを融和させることで、優れたビジュアルが得られます。</p>

<p>しかし、単なるビジュアルのルールだけでは、スクリーンサイズの多様性の中で、UIや体験の一貫性を保つのはどこかで限界があるのかもしれません。そこでMaterial Designは、「Material is the Metaphor」というコンセプトを取り込んでいます。</p>

<div id="attachment_9352" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/layering.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/layering.png" alt="Layering" width="640" height="360" class="size-full wp-image-9352" srcset="/wp-content/uploads/2014/07/layering.png 640w, /wp-content/uploads/2014/07/layering-300x168.png 300w, /wp-content/uploads/2014/07/layering-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">http://googledevelopers.blogspot.jp/2014/06/this-is-material-design.html</p></div>

<p>規則性のある影や、連続性のあるモーションなどを、現実世界のメタファとして細部に取り込むことで、深いレベルで一貫性をもった世界を構築しようとしています。これらの表現に、現実の物質世界と同じ物理的性質をもたせることで、認知的な負担を少なくし、より自然にアフォーダンスを受け取れるようにしています。</p>

<p>例えば、フラットな面に影の表現を加えることで、オブジェクトの重なりやヒエラルキーが表現できます。強く影をつけた大きなボタンは、ユーザーの目にひときわ浮き立つプライマリなアクションとして認識されます。</p>

<p>このような影について、Android Lではリアルタイムソフトシャドウとして、現実世界のメタファを通して、より自然な振る舞いになるようエンジニアリングが発揮されています。モーションについても、直線的な動きではなく、現実世界の慣性に従った動きになるようにガイドラインで定められています。</p>

<div id="attachment_9356" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg" alt="Material Design Paper" width="640" height="360" class="size-full wp-image-9356" srcset="/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg 640w, /wp-content/uploads/2014/07/14803538523_b7b20a90bd_z-300x168.jpg 300w, /wp-content/uploads/2014/07/14803538523_b7b20a90bd_z-207x116.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Material Design Paper</p></div>

<p>Material Designのコンセプトについて詳しくは、<a href="https://www.google.com/design/material-design.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PDF</a>で9つの特徴にまとまっています。Google I/Oのデザインブースでは、このPDFの図画が、実際の紙にインクで印刷されたものが頒布されていました。</p>

<h3>「具体的な」デザインガイドライン</h3>

<p>Material Designの<a href="http://www.google.com/design/spec/animation/authentic-motion.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ガイドライン</a>として、具体的にどのようなデザインを実現すれば良いかのドキュメントは、プレビュー版としてすでに公開されています。</p>

<p>以前の<a href="https://developer.android.com/design/index.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Android Design</a>においても詳細な項目が用意されていましたが、今回のガイドラインでは、そこにアニメーションや陰影の深度に関する項目をはじめとして、多岐にわたり詳細な情報が掲載されています。特徴的なのは、文字のレイアウト、アニメーション、陰影の表現、画像のフェード効果など細部に至るまで、具体的な数値とサンプルをもって表現していることです。</p>

<div id="attachment_9350" style="width: 1290px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png" alt="ガイドラインの一例" width="1280" height="728" class="size-full wp-image-9350" srcset="/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png 640w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-300x170.png 300w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-1024x582.png 1024w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-207x117.png 207w" sizes="(max-width: 1280px) 100vw, 1280px" /></a><p class="wp-caption-text">ガイドラインの一例</p></div>

<p>さらにAndroidの開発ライブラリはもちろん、後半で紹介するPaper Elementsが、ガイドラインを体現した実装として存在しています。具体的なガイドラインと、それを反映した実装の2つが揃うことによって、Material Designのガイドラインは、他のデザインガイドラインよりも確かで、強固なものになっています。</p>

<h3>Google I/O でのセッション</h3>

<ul>
<li><a href="https://www.youtube.com/watch?v=isYZXwaP3Q4" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design principles &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=dZqzz5lZFvo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Structure and components &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=ctzWKRlTYHQ" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Visual style and imagery &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=FBD0VlcVS1E" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Motion &#8211; YouTube</a></li>
</ul>

<p>キーノートの中で紹介されたMaterial Designですが、その後のセッションでもテーマごとに、詳細な内容の紹介がありました。より深く理解したい方は、これらの動画もチェックしてみると面白い話が聞けるはずです。（YouTubeでは英語字幕が表示されるので、聞きやすいです）</p>

<h2>Webで実現するためのPolymerとPaper Elements</h2>

<p>ここまでMaterial Designについて紹介しましたが、いよいよこのデザイン原則をWebの世界に取り込むため、PolymerとPaper Elementsについて説明します。</p>

<p>はじめに<a href="http://www.polymer-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer</a>とは、<a href="https://html5experts.jp/1000ch/8906/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Componentsが変えるWeb開発の未来</a>で説明されたWeb Componentsをより強力に、より柔軟に使えるようにGoogleで開発されているラッパーライブラリです。Web Componentsが注目を集め始めたのと同時に、Polymerの話題も多く目にするようになっています。</p>

<p>Polymerには、そのラッパーとしての機能を活かして作成された、汎用コンポーネント群があります。それが<a href="http://www.polymer-project.org/docs/elements/core-elements.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Core Elements</a>と<a href="http://www.polymer-project.org/docs/elements/paper-elements.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paper Elements</a>です。このうち、Paper ElementsがMaterial DesignをWebで表現するための鍵になりますが、実際に開発するにはPolymer本体に、これらCore ElementsとPaper Elementsを組み合わせて利用します。</p>

<p>ここでは、Rob Dodsonによる<a href="https://www.youtube.com/watch?v=HKrYfrAzqFA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Unlock the next era of UI development with Polymer</a>というセッション（<a href="http://www.slideshare.net/rob_dodson/unlock-the-next-era-of-ui-design-with-polymer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SlideShare</a>）の内容を参考に紹介していきます。</p>

<h3>レイアウトを構築する</h3>

<p>はじめにCore Elementsを使ったアプリケーションのレイアウトについて紹介します。Core Elementsには、一般的なナビゲーションパターンのレイアウトを、手軽に制御できるコンポーネントが用意されています。</p>

<p>たとえば<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-header-panel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-header-panel</code></a>を利用すると、よくある固定ヘッダーとコンテンツ部分の管理ができます。これまで、普通にHTMLとCSSでレイアウトして、インナースクロール用のJavaScriptライブラリを組み込んで実現していたUIが、ひとつのコンポーネントをHTML内に取り込むだけで作れるようになります。</p>

<div id="attachment_9347" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg" alt="core-drawer-panel (参考スライドP27から引用)" width="638" height="359" class="size-full wp-image-9347" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">core-drawer-panel (参考スライドP27から引用)</p></div>

<p>上図のようなドロワーメニューを内包したレスポンシブなレイアウトも、<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-drawer-panel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-drawer-panel</code></a>を利用すると、<code>drawer</code>と<code>main</code>という属性をそれぞれ持った要素を、子要素として追加すれば容易に制御できます。</p>

<p>もうひとつレイアウトするための強力な機能が存在します。それが<a href="http://www.polymer-project.org/docs/polymer/layout-attrs.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Layout attributes</a>です。これはPolymer本体に備えられた機能です。</p>

<div id="attachment_9348" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg" alt="layout属性 (参考スライドP35から引用)" width="638" height="359" class="size-full wp-image-9348" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">layout属性 (参考スライドP35から引用)</p></div>

<p>このように、<code>layout</code>属性を付与して、要素を並べる方向（<code>vertical</code>, <code>horizontal</code>）や、子要素に<code>flex</code>などの指定を行うことで、CSSを使わずにHTML側で基本的なレイアウトを制御できます。ここでは一例を紹介しましたが、詳細はPolymerのドキュメントを確認してみてください。</p>

<h3>Material Designを使う</h3>

<p>いよいよPaper Elementsが登場します。Core Elementsが基本的な機能と素朴な見た目しか持たない汎用コンポーネント群であるのに対して、Paper Elementsは<a href="http://www.google.com/design/spec/components/bottom-sheets.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Material Designのガイドライン</a>におけるUIコンポーネントを、ビジュアルとインタラクションの両面において実装しています。</p>

<p>たとえば<code>paper-tabs</code>は、次の画像のようなマークアップでMaterial Designで表現されたタブのUIを組み込むことができます。</p>

<div id="attachment_9346" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg" alt="paper-tabs (参考スライドP44から引用)" width="638" height="359" class="size-full wp-image-9346" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-tabs (参考スライドP44から引用)</p></div>

<p>このようなPaper ElementsのUIコンポーネントは<a href="http://www.polymer-project.org/components/paper-elements/demo.html#paper-checkbox" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paper Elements Sampler</a>で動作デモを確認できます。</p>

<p>Material Designは影や波紋のようなエフェクトといったインタラクションも重要です。Paper Elementsの中にはそのような、特定のUIを表現するものではなく、エフェクトを適用するための要素も用意されています。</p>

<div id="attachment_9345" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg" alt="paper-shadow (参考スライドP47から引用)" width="638" height="359" class="size-full wp-image-9345" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-shadow (参考スライドP47から引用)</p></div>

<p><a href="http://www.polymer-project.org/docs/elements/paper-elements.html#paper-shadow" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>paper-shadow</code></a>は親要素に、<code>z</code>属性で指定されたコンテンツの深度に応じて、適切な影の表現をつけられます。Material Designでは、影を表現するために、深さを表現するKey Shadowと、オブジェクトの形態を示すAmbient Shadowの2つが使われています。この<code>paper-shadow</code>もCSSの<code>box-shadow</code>で2種類の影をかさねて表現しています。</p>

<p>前半で説明したとおり、Material Designにおける影は、ただの装飾ではなく、オブジェクトの階層やユーザーのフォーカスを得るための、意図的な表現です。多くのオブジェクトに、このようなエフェクトを積極的に使っていくことになります。</p>

<div id="attachment_9344" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg" alt="paper-ripple (参考スライドP46から引用)" width="638" height="359" class="size-full wp-image-9344" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-ripple (参考スライドP46から引用)</p></div>

<p><a href="http://www.polymer-project.org/docs/elements/paper-elements.html#paper-ripple" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>paper-ripple</code></a>は親要素に、clickやtouchしたときのエフェクトを適用できます。<a href="http://www.polymer-project.org/components/paper-ripple/demo.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">デモ</a>を見ると、それがどのような効果か分かりやすいはずです。このエフェクトは、親の要素と同じサイズの<code>canvas</code>を展開して、その上で波紋のようなエフェクトを表現しています。</p>

<h3>スタイルを適用する</h3>

<p>Polymerの要素は、Shadow DOMが使われているため、従来どおりのCSSセレクタでは、内側の要素にスタイルを適用できません。ここでは<a href="http://dev.w3.org/csswg/css-scoping/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Scoping Module</a>として定義されている、<code>::shadow</code>と<code>/deep/</code>セレクタを紹介します。</p>

<p><code>::shadow</code>は、疑似要素としてShadow DOMのルートにアクセスできます。次の例では、Polymerで作られた<code>x-foo</code>が持つShadow DOM内の<code>span</code>にアクセスして、<code>color: red</code>を指定しています。</p>

<p></p><pre class="crayon-plain-tag">&lt;style&gt;
x-foo::shadow span {
  color: red;
}
&lt;/style&gt;

&lt;polymer-element name="x-foo" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;Hi!&lt;/span&gt; &lt;!-- color: red --&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;x-foo&gt;&lt;/x-foo&gt;</pre><p></p>

<p><code>/deep/</code>は、<code>::shadow</code>と同じくShadow DOM内へのアクセスを可能にしますが、より強力にネストしたShadow DOMの奥深くまで適用できます。次の例では、<code>x-hello</code>の中にあるすべての<code>span</code>に<code>color:blue</code>を適用しています。<code>::shadow</code>の場合だと、<code>x-world</code>の中の<code>span</code>にはネストしたShadow DOMの境界を越えられず適用されません。</p>

<p></p><pre class="crayon-plain-tag">&lt;style&gt;
x-hello /deep/ span {
  color: blue;
}
&lt;/style&gt;

&lt;polymer-element name="x-hello" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;Hello&lt;/span&gt; &lt;!-- color: blue --&gt;
    &lt;x-world&gt;&lt;/x-world&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;polymer-element name="x-world" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;World&lt;/span&gt;  &lt;!-- color:blue --&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;x-hello&gt;&lt;/x-hello&gt;</pre><p></p>

<p>一方、Core ElementsにはPolymerの要素間でスタイルを共有するために、<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-style" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-style</code></a>というコンポーネントが用意されています。</p>

<div id="attachment_9341" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg" alt="core-style (参考スライドP58から引用)" width="638" height="359" class="size-full wp-image-9341" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">core-style (参考スライドP58から引用)</p></div>

<p><code>core-style</code>を使って<code>id</code>属性が指定されたStyle Producerで定義されたスタイルを、<code>ref</code>属性を指定してStyle Consumerから参照することで、コンポーネントをまたいで特定のスタイルを共有できます。</p>

<h3>トランジションを利用する</h3>

<p><a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-animated-pages" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-animated-pages</code></a>を利用すると、Single Page Applicationのように、ひとつのHTMLで複数のコンテンツを切り替えて表示するときに、トランジションを適用できます。<code>core-animated-pages</code>も、対象の要素に属性を付与するだけで、トランジション効果を得られます。</p>

<p></p><pre class="crayon-plain-tag">&lt;polymer-element name="animated-sample" noscript&gt;
  &lt;template&gt;
    &lt;style&gt;
      section &gt; div { color:white; height: 500px; }
    &lt;/style&gt;

    &lt;!-- コンテンツ切り替え用のタブ --&gt;
    &lt;paper-tabs id="tabs" selected="0"&gt;
      &lt;paper-tab&gt;ONE&lt;/paper-tab&gt;
      &lt;paper-tab&gt;TWO&lt;/paper-tab&gt;
      &lt;paper-tab&gt;THREE&lt;/paper-tab&gt;
    &lt;/paper-tabs&gt;

    &lt;!-- コンテンツとトランジション付与 --&gt;
    &lt;core-animated-pages
      selected="{{$.tabs.selected}}"
      transitions="cross-fade-all"&gt;
      &lt;section&gt;
        &lt;div style="background:red"&gt;
          &lt;h1&gt;ONE&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
      &lt;section&gt;
        &lt;div style="background:blue"&gt;
          &lt;h1&gt;TWO&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
      &lt;section&gt;
        &lt;div style="background:orange"&gt;
          &lt;h1&gt;THREE&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/core-animated-pages&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;animated-sample&gt;&lt;/animated-sample&gt;</pre><p></p>

<p><code>core-aniamted-pages</code>の<code>transitions</code>属性で、使いたいトランジションの種類を宣言すると、中のコンテンツが切り替わるときにトランジションが適用されます。</p>

<h3>Paper Elementsのサンプルアプリ</h3>

<p>Paper Elementsを駆使することで、Material DesignがWebでどのように表現されるのかは、<a href="http://www.polymer-project.org/apps/topeka/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Topeka</a>というサンプルのクイズアプリが用意されています。スマートフォンにも対応しているので、モバイルデバイスでどの程度動いてくれるのかも、自分でさわって確かめてみると面白いはずです。</p>

<div id="attachment_9363" style="width: 1290px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Quiz-App.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Quiz-App.png" alt="http://www.polymer-project.org/apps/topeka/" width="1280" height="728" class="size-full wp-image-9363" srcset="/wp-content/uploads/2014/07/Quiz-App.png 640w, /wp-content/uploads/2014/07/Quiz-App-300x170.png 300w, /wp-content/uploads/2014/07/Quiz-App-1024x582.png 1024w, /wp-content/uploads/2014/07/Quiz-App-207x117.png 207w" sizes="(max-width: 1280px) 100vw, 1280px" /></a><p class="wp-caption-text">http://www.polymer-project.org/apps/topeka/</p></div>

<h2>さいごに</h2>

<p>今回はMaterial Designとそれを実現するPolymerとPaper Elementsについて、Google I/O 2014での情報をもとにご紹介しました。Material DesignもPolymerも、Preview版というステータスであり、まだ始まったばかりのプロジェクトです。これらが、今後どのように普及し、Webの世界にも影響を与えていくのか楽しみに思います。</p>

<p>先日開催された第49回HTML5とか勉強会でも「Material Design with Polymer」と題して、同じようなテーマについてご紹介しました。<a href="http://youtu.be/G7hIDm4aK5g?t=1h25m43s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">YouTube</a>と<a href="https://speakerdeck.com/ahomu/material-design-with-polymer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SpeakerDeck</a>でそれぞれ当日の録画とスライドが公開されているので、こちらも合わせてご覧いただけると理解が深まるはずです。Material Designについて詳しく説明していたり、Paper Elementsを利用したオリジナルのデモを行っていたりもしますので、ぜひご覧ください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
	</channel>
</rss>
