<?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>Relay &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/relay/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>React及びその周辺技術、事例から見るReact最新情報！──HTML5とか勉強会イベントレポート</title>
		<link>/albatrosary/19288/</link>
		<pubDate>Mon, 13 Jun 2016 06:07:16 +0000</pubDate>
		<dc:creator><![CDATA[佐川 夫美雄]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Flux]]></category>
		<category><![CDATA[React.js]]></category>
		<category><![CDATA[Redux]]></category>
		<category><![CDATA[Relay]]></category>

		<guid isPermaLink="false">/?p=19288</guid>
		<description><![CDATA[5月31日、イベント＆コミュニティスペース dots.にて「第65回HTML5とか勉強会──React最新情報」が開催されました。React及びその周辺技術、事例からReactの最新情報をキャッチアップします。 Reac...]]></description>
				<content:encoded><![CDATA[<p>5月31日、イベント＆コミュニティスペース dots.にて「第65回HTML5とか勉強会──React最新情報」が開催されました。React及びその周辺技術、事例からReactの最新情報をキャッチアップします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0120.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0120.jpg" alt="IMG_0120" width="600" height="400" class="alignnone size-full wp-image-19291" srcset="/wp-content/uploads/2016/06/IMG_0120.jpg 600w, /wp-content/uploads/2016/06/IMG_0120-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0120-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<h2>React現状確認</h2>

<p>＠koba04氏は「React現状確認」というタイトルで、現在、Reactの取り巻く状況を様々まとめて語りました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0141.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0141.jpg" alt="IMG_0141" width="600" height="400" class="alignnone size-full wp-image-19290" srcset="/wp-content/uploads/2016/06/IMG_0141.jpg 600w, /wp-content/uploads/2016/06/IMG_0141-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0141-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>皆さんご存知の通り、React.jsはFacebookが開発しているJavaScriptライブラリです。まず、Reactはどのようなアプリで利用されているかということからお話します。具体的な例として、まず挙げられるのが<a href="https://ja-jp.facebook.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Facebook</a>です。ここではバリバリに利用されていますし、<a href="https://www.instagram.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Instagram</a>では、アプリケーション全体がすべてReact.jsで作られていますので、<a href="https://facebook.github.io/react/blog/2015/09/02/new-react-developer-tools.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Reactのdevtool</a>を使って中身を見てみるとなかなか面白いかもしれません。</p>

<p><a href="https://www.netflix.com/jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Netflix</a>ではヘビーに利用されていて、テレビのレンダリング部分でも使われています。Twitter(mobile)も、React+Redux+React Routerの構成で利用されています。<a href="https://www.uber.com/ja/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">uber</a>では最近サイトをリニューアルし、そこでは先の構成にサーバサイドレンダリングなども利用しています。</p>

<p>どのような人がReact.jsを利用しているかというと、パフォーマンスが速いから使っているという人はあまりいない。それよりも宣言的なコンポーネント、ピュアなコンポーネントを定義するためといったことや、メンテナブルなUIを作るために使っている人が多いです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0150.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0150.jpg" alt="IMG_0150" width="600" height="400" class="alignnone size-full wp-image-19299" srcset="/wp-content/uploads/2016/06/IMG_0150.jpg 600w, /wp-content/uploads/2016/06/IMG_0150-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0150-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>その他、新しく実装された機能、現状議論されている多くの機能についてコメント。盛りだくさんなので具体的な内容については省略します。詳細な話については、当日の資料をご参照ください。</p>

<ul>
<li>Stateless Function Component</li>
<li>ES2015 Classes &amp; ES2015 Classes Components</li>
<li>React.createClass</li>
<li>React.PureComponent</li>
<li>A pitfall of shouldComponentUpdate</li>
<li>react-addons-perf</li>
<li>why-did-you-update</li>
<li>unstable_batchedUpdates</li>
<li>ReactElement</li>
</ul>

<p>最後に、ミーティングが毎週行われていて、ミーティングノートが１週間ごとに出しています。今後のReact.jsはライブラリとしてもっと小さくしていくことや、レンダラー部分についてどう改善していくかなど議論しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0146.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0146.jpg" alt="IMG_0146" width="600" height="400" class="alignnone size-full wp-image-19300" srcset="/wp-content/uploads/2016/06/IMG_0146.jpg 600w, /wp-content/uploads/2016/06/IMG_0146-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0146-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p><a href="https://speakerdeck.com/koba04/the-state-of-react-dot-js-2016" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">the-state-of-react-dot-js-2016</a></p>

<h2>なぜReduxを使うのか</h2>

<p>＠kuy氏から、最近人気上昇中の<a href="https://github.com/reactjs/redux" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Redux</a>について、Reduxとはどういったものかを語りました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0174.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0174.jpg" alt="IMG_0174" width="600" height="400" class="alignnone size-full wp-image-19293" srcset="/wp-content/uploads/2016/06/IMG_0174.jpg 600w, /wp-content/uploads/2016/06/IMG_0174-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0174-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>Reduxが最近注目されている理由は、事例が多くなってきているのと、コミュニティが活発になってきているということが挙げられます。特に開発するための周辺ライブラリが充実し、機運が高まり、Reduxが注目され始めています。</p>

<p>反面、Twitter等でよく見かける投稿は、Reduxがつらい、Redux難しい、Reduxの良さがわからないという意見もあり、結果としてRedux大丈夫なのかと思わせてしまうようなことも起きています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0159.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0159.jpg" alt="IMG_0159" width="600" height="400" class="alignnone size-full wp-image-19305" srcset="/wp-content/uploads/2016/06/IMG_0159.jpg 600w, /wp-content/uploads/2016/06/IMG_0159-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0159-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>そこで、なぜReduxを使うのかということを整理してみます。特に、作者の<a href="https://twitter.com/dan_abramov" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Dan Abramov</a>さんいわく、「ライブラリの使い方に時間を費やすよりも背景にあるアイデアを学んで、他所に活用していこう」ということを訴えています。</p>

<h3>Fluxは何を解決したのか</h3>

<p>Fluxの考え方はご存知の方も多いとは思いますが、順番としてはまず、ViewからActionが投げられます。Dispatherはこの投げられたActionをStoreに投げるルーティングの役割をしています。StoreはActionを受け取ってStateを変更します。このStateの変更をViewが受け取って、Viewはその情報に従ってレンダリングを行うという流れです。</p>

<p>Fluxで解決したかったことは、基本的にはReact単体で構築したときに困ることを解決したかった、具体的には、バケツリレーという問題がありました。バケツリレーというのはコンポーネント階層が深くなったとき、例えば深い階層のコンポーネントへイベントを伝搬するときに、途中のコンポーネントには無関係にも関わらず、通過していくという問題がありました。</p>

<p>Stateをコンポーネントで持っている場合、他のコンポーネントへそのStateを渡したい場合、このコンポーネントの上位の親コンポーネントを作ねばならないという問題があった。何かするときに必ず親コンポーネントを作らないといけない。</p>

<h3>Reduxの何がいいのか</h3>

<p>FluxにはDispatcherが存在していましたが、ReduxではDispatcherがStoreの中に組み込まれていました。FluxでもStoreがあるが、ReduxではそのStoreを役割ごとに名前を変え、利便性を向上させたところがポイントです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_01681.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_01681.jpg" alt="IMG_0168" width="600" height="400" class="alignnone size-full wp-image-19306" srcset="/wp-content/uploads/2016/06/IMG_01681.jpg 600w, /wp-content/uploads/2016/06/IMG_01681-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_01681-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>では、より具体的にReduxのどこがいいのかというと、1つの大きなStateツリーを複数のReducerで構築しています。そして、状態管理だけに特化したところです。反面、それ以外は開発者に丸投げということになりますが、よく言えば開発者の状況に応じて開発できるということを意味します。</p>

<p>そして、状態管理に特化したということがあるので、Reduxを素の状態で利用するのはお勧めできないし、無理してReact, Action, Creator, Reducerで実装すると後で大変な思いをするということです。専用のMiddlewareを入れるといいとのことです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0172.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0172.jpg" alt="IMG_0172" width="600" height="400" class="alignnone size-full wp-image-19302" srcset="/wp-content/uploads/2016/06/IMG_0172.jpg 600w, /wp-content/uploads/2016/06/IMG_0172-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0172-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>※当日の資料は以下にアップされていますので、こちらも参照してください。</p>

<p><a href="https://speakerdeck.com/kuy/nazereduxwoshi-ufalseka" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">nazereduxwoshi-ufalseka</a></p>

<h2>Relay</h2>

<p>＠hokaccha氏による<a href="https://facebook.github.io/relay/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Relay</a>のお話です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0190.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0190.jpg" alt="IMG_0190" width="600" height="400" class="alignnone size-full wp-image-19294" srcset="/wp-content/uploads/2016/06/IMG_0190.jpg 600w, /wp-content/uploads/2016/06/IMG_0190-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0190-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>RelayはクライアントにReactを利用し、サーバにGraphQLを使ったものです。仕様としてまとめたものがGraphQL Relayで実装としては、react-relayとgraphgl-relayがあります。Relayをひと言で言えば、フルスタックなフレームワークです。Angularがよくフルスタックといわれますが、Angularはクライアントだけなので、Relayはサーバまでやっていますので、本当のフルスタックということになると思います。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0188.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0188.jpg" alt="IMG_0188" width="600" height="400" class="alignnone size-full wp-image-19307" srcset="/wp-content/uploads/2016/06/IMG_0188.jpg 600w, /wp-content/uploads/2016/06/IMG_0188-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0188-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>GraphQLとは、Facebookが開発したクエリ言語で、クライアント/サーバ間でデータのやり取りに利用されます。レイヤーとしてはREST/RPCと同じ位置付けになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0204.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0204.jpg" alt="IMG_0204" width="600" height="400" class="alignnone size-full wp-image-19310" srcset="/wp-content/uploads/2016/06/IMG_0204.jpg 600w, /wp-content/uploads/2016/06/IMG_0204-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0204-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>RESTと違って、リクエストに対するレスポンスのフィールドが1:1対応しているところです。そうすると、必要なフィールドだけを選択可能となり、ネスとしたデータを一発で抽出できることや、型定義が存在するなどメリットがあります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0207.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0207.jpg" alt="IMG_0207" width="600" height="400" class="alignnone size-full wp-image-19308" srcset="/wp-content/uploads/2016/06/IMG_0207.jpg 600w, /wp-content/uploads/2016/06/IMG_0207-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0207-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>Relayの特徴は、そのサイトにも書いてある通り3つあります。</p>

<ul>
<li>DECLARATIVE</li>
<li>COLOCATION</li>
<li>MUTATIONS</li>
</ul>

<p>しかし、Relayは敷居が高いと思います。例えば、GraphQLを覚えて、ちょっとしたアプリを作るにもGraphQLのサーバが必要になりいろいろと大変になる。そしてやっている人もあまりいないので、資料を探すとちょっと大変な思いをします。Relayの期待として、真のフルスタックなフレームワークになり、次世代のRailsになれる可能性があるかもしれないかもしれないです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0222.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0222.jpg" alt="IMG_0222" width="600" height="400" class="alignnone size-full wp-image-19309" srcset="/wp-content/uploads/2016/06/IMG_0222.jpg 600w, /wp-content/uploads/2016/06/IMG_0222-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0222-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>※当日の資料は以下にアップされていますので、こちらも参照してください。</p>

<p><a href="https://speakerdeck.com/hokaccha/relay-1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">relay-1</a></p>

<h2>How to style React components</h2>

<p>＠Quramy氏からは、コンポーネント内にあるCSSの話がありました。同氏はメインサービスとしてはAngularを使っているが、社内系ツールではReactを使っています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0229.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0229.jpg" alt="IMG_0229" width="600" height="400" class="alignnone size-full wp-image-19295" srcset="/wp-content/uploads/2016/06/IMG_0229.jpg 600w, /wp-content/uploads/2016/06/IMG_0229-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0229-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>UI Componentと呼ばれるものの特徴は、見た目と振る舞いがまとめて提供されていて、適度にカプセル化されているものです。そうなると再利用性が高くなり、保守しやすくなるところに期待があります。このコンポーネントは多くのJSフレームワークでサポートされています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0238.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0238.jpg" alt="IMG_0238" width="600" height="400" class="alignnone size-full wp-image-19311" srcset="/wp-content/uploads/2016/06/IMG_0238.jpg 600w, /wp-content/uploads/2016/06/IMG_0238-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0238-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>Style定義は、とても壊れやすいです。コンポーネントの外部から、CSSを破壊することが簡単にできるからです。つまり、React.Componentを使っただけでは、CSSが適切にカプセル化されているわけではないのです。この問題は、CSSセレクタがGlobalであることが最大の問題だと言えます。この問題解決のために、</p>

<ul>
<li>CSS命名規約</li>
<li>Web Component(Shadow DOM)</li>
<li>CSS in JS</li>
<li>CSS Modules</li>
</ul>

<p>ということが挙げられます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0244.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0244.jpg" alt="IMG_0244" width="600" height="400" class="alignnone size-full wp-image-19312" srcset="/wp-content/uploads/2016/06/IMG_0244.jpg 600w, /wp-content/uploads/2016/06/IMG_0244-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0244-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<h3>CSS in JS</h3>

<p>CSS in JSは、Christopher Chedeauが2014年に発表しました。ReactはJSXでテンプレートをJavaScriptに取り込むことに成功したので、CSSもJavaScriptに取り込めばいいのではということから始まりました。CSS class名を利用しないでinline-styleを利用することで、Styleをコンポーネントに閉じ込めることが可能になり、問題の発生がなくなります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0252.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0252.jpg" alt="IMG_0252" width="600" height="400" class="alignnone size-full wp-image-19314" srcset="/wp-content/uploads/2016/06/IMG_0252.jpg 600w, /wp-content/uploads/2016/06/IMG_0252-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0252-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>こうした考えは、他にもいくつかメリットがあります。デメリットとしては、擬似要素セレクタや擬似クラスセレクタなど、インラインスタイルで定義できないようなものは利用できません。</p>

<h3>CSS Modules</h3>

<p>Glen Maddernが2015年に定評しました。CSS in JSはJavaScriptでStyleを生成したのに対し、CSS ModulesはCSSをJavaScriptから利用するというアプローチを取っています。CSSでできることは、CSSでやろうと言ったところです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0257.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0257.jpg" alt="IMG_0257" width="600" height="400" class="alignnone size-full wp-image-19313" srcset="/wp-content/uploads/2016/06/IMG_0257.jpg 600w, /wp-content/uploads/2016/06/IMG_0257-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0257-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>CSSで定義された名前を論理名として扱い、JavaScriptでimportし、その定義を読み込みます。JavaScriptが実行されるときに内部的に付与した名前に書き換え、容易に破壊できないようにしています。</p>

<p>※当日の資料は以下にアップされていますので、こちらも参照してください。</p>

<p><a href="https://quramy.github.io/react-css-note/#/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">react-css-note</a></p>

<h2>Atomic Design powered by React @AbemaTV</h2>

<p>五藤佑典氏による＠AbemaTVの事例紹介です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0280.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0280.jpg" alt="IMG_0280" width="600" height="400" class="alignnone size-full wp-image-19296" srcset="/wp-content/uploads/2016/06/IMG_0280.jpg 600w, /wp-content/uploads/2016/06/IMG_0280-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0280-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>＠AbemaTVはサイバーエージントとテレビ朝日が共同で展開していて、多様なコンテンツがあります。AbemaTVでは、開発の初めスマホアプリで開発は進んでいましたが、Web版はなく仕様が決まっていませんでした。しかし、リリース日は決まっているという状態でした。</p>

<p>このような状況では、作っていくうちに画面変更が多々入るのがわかっていたので、わかるところから作るという方針でせめて行きました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0273.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0273.jpg" alt="IMG_0273" width="600" height="400" class="alignnone size-full wp-image-19315" srcset="/wp-content/uploads/2016/06/IMG_0273.jpg 600w, /wp-content/uploads/2016/06/IMG_0273-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0273-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>画面仕様の変更に強いコンポーネントの粒度を、チームで明確化したいという欲求が出てきました。ATOMIC DESIGNを参考にしました。ATOMIC DESIGNとは、UIコンポーネントの要素を化学の原子論的な要素に見立て、小さいシンプルなコンポーネントを組み合わせより大きなコンポーネントを構成するデザインシステムのことです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0282.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0282.jpg" alt="IMG_0282" width="600" height="400" class="alignnone size-full wp-image-19316" srcset="/wp-content/uploads/2016/06/IMG_0282.jpg 600w, /wp-content/uploads/2016/06/IMG_0282-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0282-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>ATOMIC DESIGNの考え方を適用しグローバルナビ、リモコン、スライダー、アイコンなどを作っていきました。こうして作ったAbemaTVの細かな画面変更に関し粒度がある程度細かったため、変更は割とスムーズにできたというところがこのシステムを採用した良い結果だったと考えています。チーム開発において個人の感覚に依存しない形で行えたことは、プロジェクトがうまくいった要素であります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0286.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0286.jpg" alt="IMG_0286" width="600" height="400" class="alignnone size-full wp-image-19317" srcset="/wp-content/uploads/2016/06/IMG_0286.jpg 600w, /wp-content/uploads/2016/06/IMG_0286-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0286-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>@AbemaTVはReact+Flux+Atomic Designですが、ViewでReactとAtomic Designを利用し、StoreでImmutable.js、DespatcherでRxJSを使っています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0287.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0287.jpg" alt="IMG_0287" width="600" height="400" class="alignnone size-full wp-image-19318" srcset="/wp-content/uploads/2016/06/IMG_0287.jpg 600w, /wp-content/uploads/2016/06/IMG_0287-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0287-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>当日の資料は以下にアップされていますので、こちらも参照してください。</p>

<p><a href="http://www.slideshare.net/ygoto3q/atomic-desigin-powered-by-react-abematv" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">atomic-desigin-powered-by-react-abematv</a></p>

<h2>最後に</h2>

<p>このレポートではイベントが盛りだくさんだったため、内容の細かなところまでは記載できませんでした。各登壇者の資料もアップされていますので、合わせて見ていただけると幸いです。また、<a href="https://www.youtube.com/watch?v=C8bMahvTkHA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">html5j配信班による動画</a>もありますので、参照してください。</p>

<p>本イベントとは関係ありませんが、2016年のHTML5カンファレンスが9月3日（土）東京電気大学に決まりました！乞うご期待！！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_0118.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_0118.jpg" alt="IMG_0118" width="600" height="400" class="alignnone size-full wp-image-19297" srcset="/wp-content/uploads/2016/06/IMG_0118.jpg 600w, /wp-content/uploads/2016/06/IMG_0118-300x200.jpg 300w, /wp-content/uploads/2016/06/IMG_0118-207x138.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
]]></content:encoded>
			</item>
	</channel>
</rss>
