<?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="/yusuke-naka/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>2017年の年間読まれた記事ランキングTOP20</title>
		<link>/yusuke-naka/25098/</link>
		<pubDate>Thu, 28 Dec 2017 07:08:17 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[HTML5 Experts.jp]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">/?p=25098</guid>
		<description><![CDATA[HTML5 Experts.jp編集部の仲です。 HTML5 Experts.jpも開設から4年5カ月が経ちました。2017年もエキスパートやコントリビューターの皆様のご協力のお陰で、様々な技術トレンドをタイムリーに記事...]]></description>
				<content:encoded><![CDATA[<p>HTML5 Experts.jp編集部の仲です。</p>

<p>HTML5 Experts.jpも開設から4年5カ月が経ちました。2017年もエキスパートやコントリビューターの皆様のご協力のお陰で、様々な技術トレンドをタイムリーに記事として取り上げることができました。皆様、お楽しみいいただけましたでしょうか？</p>

<p>今年最後の記事は、恒例の「2017年の年間読まれた記事ランキングTOP20！」をお届けします。このランキングは、記事公開後１週間の閲覧数を元に作成しております。冬休みに気になる記事を読み返してみてはいかがでしょうか。</p>

<h2>年間読まれた記事ランキングTOP20</h2>

<p><strong>＜1位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24538/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2017/10/speakers.jpg" width="207" height=auto class="alignleft size-full">
<strong>Nintendo Switchの中ではReactが動いてる！Nintendo eShop開発秘話を聞いてきた</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜2位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/22626/" data-wpel-link="internal"><img alt="2" src="/wp-content/uploads/2017/03/DSC00344.jpg" width="207" height=auto class="alignleft size-full">
<strong>デイリーポータルZの林雄司さんと、ヨッピーさんに聞いた「コンテンツを作る・伝える・稼ぐコツは何ですか？」</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜3位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24439/" data-wpel-link="internal"><img alt="3" src="/wp-content/uploads/2017/10/42A5186.jpg" width="207" height=auto class="alignleft size-full">
<strong>これからのCSSはmargin禁止！？CSSグリッドレイアウトやコンポーネント指向なCSSについて、矢倉さんに聞いてきた！</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜4位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/22160/" data-wpel-link="internal"><img alt="4" src="/wp-content/uploads/2017/01/DSC09505.jpg" width="207" height=auto class="alignleft size-full">
<strong>フェイクニュース、キュレーションメディア、SEO…藤村厚夫、古田大輔、辻正浩がメディアとテクノロジーの未来を語る──Webの未来を語ろう 2017</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜5位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/23265/" data-wpel-link="internal"><img alt="5" src="/wp-content/uploads/2017/05/DSC01106.jpg" width="207" height=auto class="alignleft size-full">
<strong>ReactはなぜFiberで書き直されたのか？Reactの課題と将来像を探る　　　　　</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜6位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24156/" data-wpel-link="internal"><img alt="6" src="/wp-content/uploads/2017/09/6ed2d7e1dc76c5d83a54be2cc27ba479.jpg" width="207" height=auto class="alignleft size-full">
<strong>「最近のWebパフォーマンス改善について知っておきたいコト」についてあほむに聞いてきた</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜7位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/22820/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2017/04/DSC00139.jpg" width="207" height=auto class="alignleft size-full">
<strong>「Web Componentsが来る！CSS設計はどうなる？」―CSSのエキスパートに聞いてみた！</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜8位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24164/" data-wpel-link="internal"><img alt="8" src="/wp-content/uploads/2017/09/DSC04596.jpg" width="207" height=auto class="alignleft size-full">
<strong>日本最大級のHTTP/2移行、TLS 1.3、そしてQUICについてヤフーに聞いてみた！</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜9位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/23726/" data-wpel-link="internal"><img alt="9" src="/wp-content/uploads/2017/06/DSC01357.jpg" width="207" height=auto class="alignleft size-full">
<strong>de:codeで澤円さんが伝えたかった「エンジニアに必要なマネジメント」の真意とは？</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜10位＞</strong><br>
<a href="https://html5experts.jp/myakura/22818/" data-wpel-link="internal"><img alt="10" src="/wp-content/uploads/2017/04/hxgridlines.png" width="207" height=auto class="alignleft size-full">
<strong>
Firefox, Chrome, SafariがCSS Gridに一斉対応ほか──2017年2月と3月のブラウザ関連ニュース</a></strong><br>
── <a href="https://html5experts.jp/myakura/" data-wpel-link="internal">矢倉 眞隆</a></p>

<p><br><br></p>

<p><strong>＜11位＞</strong><br>
<a href="https://html5experts.jp/potato4d/24346/" data-wpel-link="internal"><img alt="11" src="/wp-content/uploads/2017/10/Screen-Shot-2017-10-09-at-19.12.30.png" width="207" height=auto class="alignleft size-full">
<strong>Vue.js製フレームワークNuxt.jsではじめるUniversalアプリケーション開発</a></strong><br>
── <a href="https://html5experts.jp/potato4d/" data-wpel-link="internal">花谷拓磨</a></p>

<p><br><br></p>

<p><strong>＜12位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/23666/" data-wpel-link="internal"><img alt="12" src="/wp-content/uploads/2017/06/IMG_0542.jpg" width="207" height=auto class="alignleft size-full">
<strong>ブラウザ戦争は終わった！Webの最先端と未来を、ブラウザエバンジェリストたちが語る </a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜13位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/22378/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2017/02/DSC08316-2.jpg" width="207" height=auto class="alignleft size-full">
<strong>毎週新しい機能をリリースしている、はてな「Mackerel」の開発環境やツールを聞いてきた </a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜14位＞</strong><br>
<a href="https://html5experts.jp/chikoski/22523/" data-wpel-link="internal"><img alt="14" src="/wp-content/uploads/2017/02/screenshot.jpeg" width="207" height=auto class="alignleft size-full">
<strong>Webブラウザで高速な演算を可能にする低水準言語asm.jsと、WebAssembly詳解ーasm.jsを高速に動作させる新しいコンパイラーターゲットWASMとは？</a></strong><br>
── <a href="https://html5experts.jp/chikoski/" data-wpel-link="internal">清水智公</a></p>

<p><br><br></p>

<p><strong>＜15位＞</strong><br>
<a href="https://html5experts.jp/yusuke-naka/22985/" data-wpel-link="internal"><img alt="15" src="/wp-content/uploads/2017/05/mastodon_event_2.png" width="207" height=auto class="alignleft size-full">
<strong>「マストドンを支える技術」をソーシャルウェブから探る（前編） 〜Mastodon Tech Night#1潜入レポート〜</a></strong><br>
── <a href="https://html5experts.jp/yusuke-naka/" data-wpel-link="internal">仲 裕介</a></p>

<p><br><br></p>

<p><strong>＜16位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24207/" data-wpel-link="internal"><img alt="16" src="/wp-content/uploads/2017/09/DSC04691.jpg" width="207" height=auto class="alignleft size-full">
<strong>フォント素人のWebエンジニアが、「フォントおじさん」に聞いてみた！Webフォントの最近の事情とか</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜17位＞</strong><br>
<a href="https://html5experts.jp/takazudo/21946/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2017/01/1_buildings.png" width="207" height=auto class="alignleft size-full">
<strong>抽象化を避けるCSS設計方法論「Enduring CSS」 第1回</a></strong><br>
── <a href="https://html5experts.jp/takazudo/" data-wpel-link="internal">高津戸壮</a></p>

<p><br><br></p>

<p><strong>＜18位＞</strong><br>
<a href="https://html5experts.jp/rdlabo/22596/" data-wpel-link="internal"><img alt="18" src="/wp-content/uploads/2017/03/what-is-pwa-img.png" width="207" height=auto class="alignleft size-full">
<strong>
「次のモバイルファースト」がやってくる！UIと機能設計をIonic 2を使って学んでみよう</a></strong><br>
── <a href="https://html5experts.jp/rdlabo/" data-wpel-link="internal">榊原昌彦</a></p>

<p><br><br></p>

<p><strong>＜19位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/24247/" data-wpel-link="internal"><img alt="19" src="/wp-content/uploads/2017/09/DSC04976.jpg" width="207" height=auto class="alignleft size-full">
<strong>マイクロサービスは万能薬ではない──マイクロサービスの生々しい話を聞いてきた</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜20位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/24432/" data-wpel-link="internal"><img alt="20" src="/wp-content/uploads/2017/10/DSC04297.jpg" width="207" height=auto class="alignleft size-full">
<strong>2020年末でサポート終了するFlash Playerを支えた、Flashテクノロジーの全盛期と衰退を振り返ってみた</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p>※集計対象期間：2017/1/1 &#8211; 2017/12/27<br>
※集計方法：集計対象期間中に公開された全ての記事の公開後1週間のPVをカウントしランキング付け</p>

<h1>来年もよろしくお願いします</h1>

<p>HTML5 Experts.jpは2017年も多くの方々にご愛読いただきまして、執筆陣・編集部共々感謝しています。ありがとうございました。来年も引き続き宜しくお願いします！</p>
]]></content:encoded>
			</item>
		<item>
		<title>「マストドンを支える技術」をソーシャルウェブから探る（後編） 〜Mastodon Tech Night#1潜入レポート〜</title>
		<link>/yusuke-naka/23094/</link>
		<pubDate>Tue, 02 May 2017 00:00:30 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Mastodon]]></category>
		<category><![CDATA[ソーシャルウェブ]]></category>
		<category><![CDATA[マストドン]]></category>

		<guid isPermaLink="false">/?p=23094</guid>
		<description><![CDATA[今回の記事は後編です。前編はこちら 今回は、エンジニア向けニュースアプリTechFeedの運営や当メディアの編集長も務める白石俊平さんが主催する、Mastodon Tech Night#1に潜入してきました（会場は株式会...]]></description>
				<content:encoded><![CDATA[<p><style>
b.speaker {
  font-weight: bold;
}
b.speaker::after {
  content: ": ";
}
.iframe-container {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 35px;
    height: 0;
    overflow: hidden;
}
.iframe-container iframe {
    position: absolute;
    top:0;
    left: 0;
    width: 100%;
    height: 100%;
}
</style></p>

<p><strong>今回の記事は後編です。前編は<a href="https://html5experts.jp/?p=22985" data-wpel-link="internal">こちら</a></strong></p>

<p>今回は、エンジニア向けニュースアプリ<a href="https://techfeed.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TechFeed</a>の運営や当メディアの編集長も務める白石俊平さんが主催する、<a href="https://techfeed.connpass.com/event/55660/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mastodon Tech Night#1</a>に潜入してきました（会場は<a href="http://www.rich.co.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">株式会社リッチメディアさん</a>）。主催の白石さんと、ソーシャルウェブに詳しく当メディアのエキスパートでもある<a href="https://html5experts.jp/agektmr/" data-wpel-link="internal">えーじ</a>さんお二人がメインスピーカーとして進行し、３名の方のライトニングトークで締めくくるという内容でした。</p>

<p>「マストドンを支える技術をソーシャルウェブから探る」という副題が付けられた当イベント、エンジニア（特にSNSやソーシャルアプリ開発者）であれば垂涎の「濃い」内容でした。では皆様お楽しみください。</p>

<div id="attachment_23022" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/mastodon_event_1-640x480.jpg" alt="株式会社リッチメディア" width="640" height="480" class="size-large wp-image-23022" srcset="/wp-content/uploads/2017/05/mastodon_event_1.jpg 640w, /wp-content/uploads/2017/05/mastodon_event_1-300x225.jpg 300w, /wp-content/uploads/2017/05/mastodon_event_1-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">本イベントの会場となった株式会社リッチメディアさん</p></div>

<p>今回の進行用スライドはこちらです。</p>

<div class="iframe-container">
<iframe src="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/embed?start=false&#038;loop=false&#038;delayms=3000" frameborder="0" width="100%" height="100%" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
</div>

<p><strong>今回の記事は後編です。前編は<a href="https://html5experts.jp/?p=22985" data-wpel-link="internal">こちら</a></strong></p>

<h2>ソーシャルウェブのプロトコルを探る</h2>

<p><b class="speaker">白石</b>
では次に、マストドン、というかソーシャルウェブを構成するプロトコルのお話に入りましょうか。</p>

<div id="attachment_23042" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/mastodon_event_4-1-640x356.png" alt="Mastodonを構成する３つのレイヤー" width="640" height="356" class="size-large wp-image-23042" srcset="/wp-content/uploads/2017/05/mastodon_event_4-1.png 640w, /wp-content/uploads/2017/05/mastodon_event_4-1-300x167.png 300w, /wp-content/uploads/2017/05/mastodon_event_4-1-207x115.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text"><a href="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.g216742f12f_2_151" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mastodonを構成する３つのレイヤー（再掲）</a></p></div>

<p><b class="speaker">えーじ</b>
OpenIDについては先ほど説明したので、次はやはり<strong>OAuth</strong>ですね。</p>

<p>サービスをまたいで情報のやり取りを行いたいというニーズに答えるためには、外部サービスのAPI呼び出しを安全に行える必要があります。また、ユーザーが自分に関する情報をどのサービスに、どこまで公開するかと言ったアクセス権を設定したいというニーズも出てきます。
そこで登場したのがOAuthです。OAuthは、Twitterクライアントを作りたいという人たちの間で急速に普及しましたね。</p>

<p>OAuthはもう一般的なので、今はもうそんなことも意識せずに、みなさん利用していますね。「Facebookでログイン」「Twitterでログイン」と言った機能を持つサイトは、みんなOAuthを利用しています。</p>

<p><b class="speaker">白石</b>
そうですね。最初期の頃、TwitterのAPIってBasic認証だったので、みんながTwitterのパスワードを外部のサービスに入力していたという(笑)
牧歌的な時代でしたね。</p>

<p><b class="speaker">えーじ</b>
そうですね(笑)</p>

<p>では次に紹介したいのは<strong>WebFinger</strong>という技術です。
この技術は、端的にいうと、<strong>ユーザーIDが分かれば、そのユーザーに紐付くプロフィールページやWeb APIなどの一覧を取得できる</strong>というものです。
「(API)ディスカバリ」の技術と言えますね。</p>

<p>例えば、以下のURLにアクセスしてみて下さい。</p>

<p><a href="https://don.techfeed.io/.well-known/webfinger?resource=shumpei@don.techfeed.io" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://don.techfeed.io/.well-known/webfinger?resource=shumpei@don.techfeed.io</a></p>

<p><small>
※ resource=より後には自分のIDを入力して下さい。ドメインはインスタンスに合わせて変えて下さい
</small></p>

<p><b class="speaker">えーじ</b>
結果はJSONで返ってきますが、色々と情報がここに詰め込まれています。</p>

<div id="attachment_23038" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_5.png" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_5.png" alt="WebFingerリプライ解析" width="640" height="332" class="size-full wp-image-23038" srcset="/wp-content/uploads/2017/05/mastodon_event_5.png 640w, /wp-content/uploads/2017/05/mastodon_event_5-300x156.png 300w, /wp-content/uploads/2017/05/mastodon_event_5-207x107.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">※ここに表示しているのは筆者のアカウント情報です</p></div>

<p><code>links</code>の中身を参照すると、APIのエンドポイントURLや、APIの種別などの情報が詰め込まれています。
ユーザーIDさえわかれば、サービス上でそのユーザーに関する情報にアクセスするための様々なエンドポイントが分かっちゃうんですね。これがWebFingerです。</p>

<p><small>
※筆者注: WebFingerは、様々なホストやホスト上のユーザーの情報を取得できる<a href="https://ja.wikipedia.org/wiki/Fingerプロトコル" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Fingerコマンド</a>になぞらえて命名されたと思われる。
</small></p>

<p><code>links.rel</code>の中に、<code>salmon</code>や<code>ostatus</code>と言った文字列が見え隠れしていますね。
これが、ソーシャルウェブを構成するプロトコルの名称ですね。</p>

<h2>マイクロブログ関連のプロトコルを探る</h2>

<p><b class="speaker">白石</b>
では次は、マイクロブログ関連の各種プロトコルの話に入りましょうか。
以下が、マストドンのドキュメントから引っ張ってきた、プロトコルの一覧です。
マストドンのコードを深く知るには、これらソーシャルウェブの技術に通じておく必要があります。</p>

<div id="attachment_23040" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_6.png" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_6.png" alt="ソーシャルウェブの構成要素" width="640" height="358" class="size-full wp-image-23040" srcset="/wp-content/uploads/2017/05/mastodon_event_6.png 640w, /wp-content/uploads/2017/05/mastodon_event_6-300x168.png 300w, /wp-content/uploads/2017/05/mastodon_event_6-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text"><a href="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.g216742f12f_2_160" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">マストドン Tech Night#1進行スライドより</a></p></div>

<p><b class="speaker">白石</b>
それは先程までえーじさんが語っていたソーシャルウェブの世界がその先にあるからなんですね。
そして行き着くところは、マストドンどころか、様々なSNSが自動でディスカバリーし情報連携できる世界。
そんな分散型SNSの世界を実現するための構成要素がこのプロトコルたち、という位置づけです。</p>

<p>じゃあえーじさん、一つ一つを簡単でいいので解説をお願いします。</p>

<h3>Atom、ActivityStreams、Atom Threading</h3>

<p><b class="speaker">えーじ</b>
まずは、<strong><a href="https://tools.ietf.org/html/rfc4287" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Atom</a></strong>ですね。これはご存じの方も沢山いらっしゃると思います。</p>

<p>これはRSSなどと同じく、フィード情報をXMLで表現する技術で、情報を時系列で発信する場合に適切なフォーマットであるといえます。
サイトの更新情報を発信するのによく使われています。</p>

<p><b class="speaker">白石</b>
Atom Publishing Protocolというのもありましたね。
Atom形式で情報をポストしたりできるようにする技術。<a href="http://developer.hatena.ne.jp/ja/documents/blog/apis/atom" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">はてなダイアリーのAPI</a>とかは、AtomPubで構築されていたはずです。</p>

<p><b class="speaker">えーじ</b>
このAtomを拡張して、サービス上のユーザーアクティビティを表せるようにしたものが<strong><a href="http://activitystrea.ms/specs/atom/1.0/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Activity Streams</a></strong>です。
Activity Streamsは、<a href="https://www.w3.org/TR/activitystreams-core/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JSON</a>版の仕様も用意されていて、JavaScriptとも相性が良いよう設計されています。</p>

<p><b class="speaker">白石</b>
あまり馴染みのない方も多そうですが、SNS上の行動の事を技術的には「アクティビティ」って呼ぶんですよね。
Facebookにも、自分のプロフィールページに「アクティビティログを見る」って機能があります。</p>

<p><b class="speaker">えーじ</b>
そう、なのでActivity Streamsはそのアクティビティをストリーム形式で参照できる仕様ということです。
一般的なAtomが持つ情報に加えて、写真を取りましたとか、物を買いましたとか、何らかのアクションに紐付いた情報発信ができるのがActivity Streamsの特徴です。</p>

<p><b class="speaker">白石</b>
ちなみに、ActivityStreamsといえば、<a href="http://activitystrea.ms/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">activitystrea.ms</a>というドメインだったのを覚えてます。
<strong>こういう風に名前とドメインをかぶせるやつ、昔流行りましたよね</strong>。</p>

<div id="attachment_23081" style="width: 455px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/3aca857fb3d16a117d9e538f30f392c1.png" alt="activitystrea.ms" width="445" height="460" class="size-full wp-image-23081" srcset="/wp-content/uploads/2017/05/3aca857fb3d16a117d9e538f30f392c1.png 445w, /wp-content/uploads/2017/05/3aca857fb3d16a117d9e538f30f392c1-290x300.png 290w, /wp-content/uploads/2017/05/3aca857fb3d16a117d9e538f30f392c1-200x207.png 200w" sizes="(max-width: 445px) 100vw, 445px" /><p class="wp-caption-text">activitystrea.ms</p></div>

<p><b class="speaker">えーじ</b>
Web2.0の時代に流行りましたねー(笑)</p>

<p>次は<strong><a href="https://tools.ietf.org/html/rfc4685" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Atom Threading</a></strong>ですが、これはあまり私も詳しくないです。
想像ですが、誰かがポストした時にそれをスレッド化するものなんじゃないかなと思います（※）。</p>

<p><small>
※<a href="https://tools.ietf.org/html/rfc4685" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RFC</a>によると、「Atom内でスレッド状のディスカッションを表現するためのメカニズムである」（This memo presents a mechanism that allows feeds publishers to express threaded discussions within the Atom Syndication Format）だそうです。
</small></p>

<h3>OStatus</h3>

<p><b class="speaker">えーじ</b>
次は、<a href="https://www.w3.org/community/ostatus/wiki/images/9/93/OStatus_1.0_Draft_2.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">OStatus</a>です。
例えばメンションやフォロー、リプライと言った機能がTwitterにはありますが、そういった機能を異なるサービス間で行えるようにする仕様です。</p>

<p><b class="speaker">白石</b>
さっきやったように、マストドン上で <code>@ID@ドメイン</code>の形式でメンションとかを行うと、OStatusのプロトコルが動作するというわけですね。</p>

<p><b class="speaker">えーじ</b>
はい、そうです。</p>

<p>他のユーザーに対してメンションを行うと、まず先ほどお話したWebFingerが動作して、他のインスタンスが持つAPIのエンドポイントを取得します。
その後、実際のAPI呼び出しが行われて処理が実行されるわけですね。</p>

<p>例えばこれは、<code>/api/v1/statuses</code>（<a href="https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md#statuses" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ドキュメントへのリンク</a>）というAPIを叩いて、パブリックトゥートの情報を表示したところです。</p>

<div id="attachment_23047" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_8.png" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_8.png" alt="OStatus解析" width="640" height="251" class="size-full wp-image-23047" srcset="/wp-content/uploads/2017/05/mastodon_event_8.png 640w, /wp-content/uploads/2017/05/mastodon_event_8-300x118.png 300w, /wp-content/uploads/2017/05/mastodon_event_8-207x81.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">※記事では適当なトゥートを題材にしています</p></div>

<p><b class="speaker">えーじ</b>
<code>mentions</code> や <code>inreply_to</code> 等のキー情報がありますよね。メンションやリプライがあるとここに情報が格納されますが、これがOStatusをはじめとする様々な仕様によって付与された情報なんです。
「プロトコル」と言われるとなんだか仰々しいもののように感じてしまうと思いますが、実際にはこういうシンプルな処理を定義しているだけなんですね。</p>

<h3>Salmon</h3>

<p><b class="speaker">えーじ</b>
次は<strong>Salmon</strong>です。Salmonは逆流するという意味合いで使われています。鮭なので川を遡上しますよね。別のインスタンスでコメントが付いた場合に、自分のインスタンス上に「戻ってくる」仕組みを提供しています。
ぼく、これ以上のことは知らないんですが、何かご存知ですか？</p>

<div id="attachment_23083" style="width: 541px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/43d526a7c140e5de6cee4a8c9212b92e.png" alt="Salmon Protocol" width="531" height="329" class="size-full wp-image-23083" srcset="/wp-content/uploads/2017/05/43d526a7c140e5de6cee4a8c9212b92e.png 531w, /wp-content/uploads/2017/05/43d526a7c140e5de6cee4a8c9212b92e-300x186.png 300w, /wp-content/uploads/2017/05/43d526a7c140e5de6cee4a8c9212b92e-207x128.png 207w" sizes="(max-width: 531px) 100vw, 531px" /><p class="wp-caption-text">Salmon Protocol</p></div>

<p><b class="speaker">白石</b>
いやー、知らないですね。
ただ、昔調べたのは覚えてます。2010年くらいに、<a href="http://d.hatena.ne.jp/Syunpei/20100723/1279866702" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DaVinciPad</a>っていうサービスを一人で作っていたんですが、このプロトコルを使いたかったんですよね。
メモ＋SNSへのマルチポスト機能があって、そのポストへのリプライをツール上でキャッチアップしたかったんですよ。まぁ、だれも知らないことなんですが(笑)</p>

<p><b class="speaker">えーじ</b>
あー、DaVinciPadって作ってらっしゃいましたね。なつかしい。</p>

<p>ちなみに、一つ懸念していることがあるんですが、Salmonをはじめ<strong>こういうプロトコルって基本的に思想が古い</strong>んですよね。
XMLベースの仕様が多いことも含め、今のWebに最適化されていないんです。登場から7年も経っているわけなので、大量のトラフィックを捌いていくには、仕様をアップデートしていく必要があるんじゃないかなと考えています。</p>

<h3>Portable Contacts</h3>

<p><b class="speaker">えーじ</b>
次は<strong><a href="https://web.archive.org/web/20160305010620/http://portablecontacts.net/draft-spec.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Portable Contacts</a></strong>ですね。これはIdentityに関係するものですが、友達リストを交換するためにフォーマットを合わせるための仕様です。
確か、GoogleにはPortable ContactsのAPIがあって、Gmailのアドレス帳のデータもPortable Contactsの形式で取得できます（残念ながら終了済み）。</p>

<p><b class="speaker">白石</b>
なるほど、フォロー／フォロアーのリストとかをやり取りするための汎用的な仕様ですね。
SNSが持つ様々な機能を細切れにして、それぞれ標準化したという感じを受けます。</p>

<p><b class="speaker">えーじ</b>
その解釈は正しいと思いますよ。汎用的になるように、そして一部だけでも利用できるように、あえて細かく仕様を分けていったという感じじゃないでしょうか。
一つ一つの仕様は小さいのですが、まとめて組み合わせると理路整然としている感じです。</p>

<p><b class="speaker">白石</b>
なるほどー。でも、よくこれだけバラバラな、策定している団体や企業も様々な仕様を、うまくつなげることが出来ましたね。
当時、ソーシャルウェブはそれだけのムーブメントだったということですね。</p>

<h3>PubSubHubbub、WebFinger、Link-based Resource Descriptor Discovery</h3>

<p><b class="speaker">えーじ</b>
次は、<strong><a href="https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PubSubHubbub</a></strong>です。
PubSubHubbubはいわゆるリアルタイム通知の仕組みです。サブスクライブしておくと、ハブを介してプッシュ型でメッセージを送ってもらえる。</p>

<p><b class="speaker">白石</b>
ちょっと補足すると、RSSなどのフィードって、基本的にはポーリングで取得します。15分に1回とか、30分に1回とか。
でも、更新がなくて空振りすることも多い。それじゃ効率が悪いということで、PubSubHubbubはサイト側からサブスクライバーに向けてプッシュで更新を通知するという仕組みでした。</p>

<p>こないだ、W3Cが急に標準化を進めて、<strong>「<a href="https://www.w3.org/TR/websub/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebSub</a>」と言う仕様でCandidate Recommendationにした</strong>のはびっくりしました(笑)</p>

<div id="attachment_23085" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/422b10f769ef33c9489e94ffbd358efa-640x395.png" alt="WebSub" width="640" height="395" class="size-large wp-image-23085" srcset="/wp-content/uploads/2017/05/422b10f769ef33c9489e94ffbd358efa.png 640w, /wp-content/uploads/2017/05/422b10f769ef33c9489e94ffbd358efa-300x185.png 300w, /wp-content/uploads/2017/05/422b10f769ef33c9489e94ffbd358efa-207x128.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">WebSub</p></div>

<p><b class="speaker">えーじ</b>
残るはWebFingerとLink-based Resource Descriptor Discoveryですが、<a href="https://tools.ietf.org/html/rfc7033" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebFinger</a>は先ほどご説明したように、ユーザーやサービスに関する様々な情報を参照するためのプロトコルです。
<a href="https://tools.ietf.org/html/rfc6415" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Link-based Resource Descriptor Discovery</a>は、サーバ上に置く <code>/.well-known/host-meta</code> というファイルのフォーマットに関する仕様で、WebFingerのURLもこのファイルを参照して取得することができます。</p>

<p><small>
※筆者注: 例えば don.techfeed.ioのhost-metaは <a href="https://don.techfeed.io/.well-known/host-meta" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://don.techfeed.io/.well-known/host-meta</a>にアクセスすると参照することができ、その中にWebFingerに関するURLも含まれている。以下がhost-metaファイルの内容。
</small></p>

<p></p><pre class="crayon-plain-tag">&lt;?xml version="1.0"?&gt;
&lt;XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"&gt;
  &lt;Link rel="lrdd" type="application/xrd+xml" template="https://don.techfeed.io/.well-known/webfinger?resource={uri}"/&gt;
&lt;/XRD&gt;</pre><p></p>

<h2>マストドンはソーシャルウェブの理想を実現するか？</h2>

<p><b class="speaker">白石</b>
ソーシャルウェブのプロトコルに関しても一通り眺めたところで、だいぶソーシャルウェブのスタックや、マストドンに関する理解も深まったように思います。
ではそろそろまとめに入りたいと思うんですが、昨今のマストドンブーム、そしてソーシャルウェブを振り返って、思うところがあればお聞かせください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_9.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_9.jpg" alt="PubSubHubbubの話" width="640" height="480" class="aligncenter size-full wp-image-23049" srcset="/wp-content/uploads/2017/05/mastodon_event_9.jpg 640w, /wp-content/uploads/2017/05/mastodon_event_9-300x225.jpg 300w, /wp-content/uploads/2017/05/mastodon_event_9-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><b class="speaker">えーじ</b>
そうですね、まずソーシャルウェブの目指すところは、ウェブ上にアイデンティティのレイヤーを築くということ、その上で、サービスをまたいだコミュニケーションを実現するということにあると思います。
マストドンの流行は、そういう世界の実現を後押しするかもしれないと期待しています。</p>

<p><b class="speaker">白石</b>
なるほど。ソーシャルウェブの時代はまだまだこれからだ、と。</p>

<p><b class="speaker">えーじ</b>
まあでも、ソーシャルウェブの理想が完全に実現するか…っていうと道は遠いだろうなあ、と思っているのが正直なところです。</p>

<p>今はとにかく、<strong>マストドンが流行ると良いなと思っています</strong>。熱狂していた頃から7年も経っているので多少は落ち着いたというか、あんまり純粋に理想を追い求めても、というか…何て言うんだろう。</p>

<p><b class="speaker">白石</b>
<strong>原理主義？</strong></p>

<p><b class="speaker">えーじ</b>
ああ、それだ。ソーシャルウェブ原理主義(笑)
そういう原理主義的な思想は今は少し収まっていて、とりあえずマストドン流行ればいいや、マストドンが流行れば結果的にソーシャルウェブが流行ることに繋がるし…と、そんな風に感じているというのが正直なところです。</p>

<h2>「マストドンの技術を応用して、既存サービスで何ができるか」を考えるのは面白い</h2>

<p><b class="speaker">白石</b>
ほか、「マストドンの技術を応用して、既存サービスで何ができるか」って話もしたいとおっしゃってましたが、こちらはどうですか？</p>

<p><b class="speaker">えーじ</b>
そうそう、ソーシャルウェブの技術って、ウェブをベースに考えられているので、既存のサイトとかに組み込むのは実はそれほど難しくないんですよ。
例えばメディアが吐いてるRSSフィードをAtomベースのActivity Streamsに変えたりするとか、そんなちょっとした変更を加えていくだけで、マストドンとコミュニケーションできるようになるかもしれないんです。</p>

<p><b class="speaker">白石</b>
なるほど。メディアが1マストドンインスタンス、もしくはマストドンユーザーにもなりうるということですね。</p>

<p><b class="speaker">えーじ</b>
そうです。白石さんがやってらっしゃる<a href="https://techfeed.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TechFeed</a>とかも、マストドンの技術を取り込む価値はあるんじゃないかと思いますよ。
この会場にいらっしゃる方々も、すでに何らかのサービス開発に取り組んでいらっしゃる方が多いと思いますが、そこにマストドンやソーシャルウェブを組み合わせるとどういうことになるか、ちょっと想像してみるのは面白いと思います。</p>

<p>ちなみに、前にフランスでもマストドンの流行の波が来ていたみたいなのですが、日本はそれの何倍もの大きな波がきているみたいです。
Twitterとかで、英語でこのことをつぶやくと、みんなその理由を知りたがるという状態です。
このままマストドンの活用でも一歩先んじて、マストドン先進国、もっと言えばソーシャルウェブの先進国になれたらいいな…なんてことを思ったりしています。</p>

<p><b class="speaker">白石</b>
なるほど、すごく夢のある話ですね…！えーじさん、今日はマストドンとソーシャルウェブについて、とことんまで深く付き合っていただき、ありがとうございました！</p>

<h2>ライトニングトーク</h2>

<p>えーじさんと白石さんの対談のあとは、ライトニングトークで締めくくりました。</p>

<h3>Meganedonやってみた。</h3>

<script async class="speakerdeck-embed" data-id="fd14c16c96254f35a02048b5b67858ed" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

<p><a href="http://meganedon.link/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">meganedon</a>という独自インスタンスを立ち上げてみた話でした。運用する上で重要となるティップスが５分間のLTに濃縮されています。</p>

<h3>ソース読む 今日のテーマは Mastodo</h3>

<p>マストドンのソースコードを読むためにFreeBSDでインスタンスを立てた話。マストドンのソースコードを追いかけるためノウハウがわかりやすく解説されました。</p>

<h3>マイ丼 ５分間　クッキング</h3>

<iframe src="//www.slideshare.net/slideshow/embed_code/key/yjXkC7WrHxbpqy" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>

<div style="margin-bottom:5px"> <strong> <a href="https://html5experts.jp//www.slideshare.net/dsuket/5-75473306" title="マイ丼5分クッキング" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">マイ丼5分クッキング</a> </strong> from <strong><a target="_blank" href="https://www.slideshare.net/dsuket" data-wpel-link="external" rel="follow external noopener noreferrer">dsuke Takaoka</a></strong> </div>

<p>TechFeedのCTOである、dsukeさんのLTで、AWS上でTechFeedonを立てた話が紹介されました。ソースコードもGithubで公開中とのこと。</p>

<p><a href="https://github.com/techfeed/techfeedon" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://github.com/techfeed/techfeedon</a></p>

<h1>最後に</h1>

<p>皆さん、いかがだったでしょうか？
今大人気の分散型SNSマストドンですが、マストドンの裏側に見え隠れしているソーシャルウェブの思想や各種プロトコルについて、垣間見ていただくことは出来たでしょうか？
マストドンは単に流行りのサービス…というわけではないことがご理解いただけたと思います。マストドンに触れる際は、マストドンが実現しようとしている古くて新しいソーシャルウェブの世界観について是非思いを巡らせてみて下さい。</p>

<p><strong>今回の記事は後編です。前編は<a href="https://html5experts.jp/?p=22985" data-wpel-link="internal">こちら</a></strong></p>
]]></content:encoded>
			</item>
		<item>
		<title>「マストドンを支える技術」をソーシャルウェブから探る（前編） 〜Mastodon Tech Night#1潜入レポート〜</title>
		<link>/yusuke-naka/22985/</link>
		<pubDate>Tue, 02 May 2017 00:00:13 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Mastodon]]></category>
		<category><![CDATA[ソーシャルウェブ]]></category>
		<category><![CDATA[マストドン]]></category>

		<guid isPermaLink="false">/?p=22985</guid>
		<description><![CDATA[今回の記事は前編です。後編はこちら 今回は、エンジニア向けニュースアプリTechFeedの運営や当メディアの編集長も務める白石俊平さんが主催する、Mastodon Tech Night#1に潜入してきました（会場は株式会...]]></description>
				<content:encoded><![CDATA[<p><style>
b.speaker {
  font-weight: bold;
}
b.speaker::after {
  content: ": ";
}
.iframe-container {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 35px;
    height: 0;
    overflow: hidden;
}
.iframe-container iframe {
    position: absolute;
    top:0;
    left: 0;
    width: 100%;
    height: 100%;
}
</style></p>

<p><strong>今回の記事は前編です。後編は<a href="https://html5experts.jp/?p=23094" data-wpel-link="internal">こちら</a></strong></p>

<p>今回は、エンジニア向けニュースアプリ<a href="https://techfeed.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TechFeed</a>の運営や当メディアの編集長も務める白石俊平さんが主催する、<a href="https://techfeed.connpass.com/event/55660/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mastodon Tech Night#1</a>に潜入してきました（会場は<a href="http://www.rich.co.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">株式会社リッチメディアさん</a>）。主催の白石さんと、ソーシャルウェブに詳しく当メディアのエキスパートでもある<a href="https://html5experts.jp/agektmr/" data-wpel-link="internal">えーじ</a>さんお二人がメインスピーカーとして進行し、３名の方のライトニングトークで締めくくるという内容でした。</p>

<p>「マストドンを支える技術をソーシャルウェブから探る」という副題が付けられた当イベント、エンジニア（特にSNSやソーシャルアプリ開発者）であれば垂涎の「濃い」内容でした。では皆様お楽しみください。</p>

<div id="attachment_23022" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/mastodon_event_1-640x480.jpg" alt="株式会社リッチメディア" width="640" height="480" class="size-large wp-image-23022" srcset="/wp-content/uploads/2017/05/mastodon_event_1.jpg 640w, /wp-content/uploads/2017/05/mastodon_event_1-300x225.jpg 300w, /wp-content/uploads/2017/05/mastodon_event_1-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">本イベントの会場となった株式会社リッチメディアさん</p></div>

<p>今回の進行用スライドはこちらです。</p>

<div class="iframe-container">
<iframe src="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/embed?start=false&#038;loop=false&#038;delayms=3000" frameborder="0" width="100%" height="100%" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
</div>

<p><strong>今回の記事は前編です。後編は<a href="https://html5experts.jp/?p=23094" data-wpel-link="internal">こちら</a></strong></p>

<h2>マストドンのおさらい</h2>

<p><b class="speaker">白石</b>
皆様こんにちは！本日は「Mastodon Tech Night#1 〜マストドンを支える技術をソーシャルウェブから探る〜」にお越しいただきまして、誠にありがとうございます。</p>

<p>まず最初にお聞きしたいのですが、マストドンのアカウント作った方ってどれくらいいらっしゃいますか？<br />
…ほとんどの方が作ってきてらっしゃいますね。さすが皆さん、予習バッチリですね。</p>

<p>では皆様には「釈迦に説法」になってしまいますが、まだ話題になって間もないサービスでもありますし、マストドンの主要な機能についての軽いおさらいから入りたいと思います。</p>

<div id="attachment_23030" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_2.png" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_2.png" alt="白石さん" width="640" height="430" class="size-full wp-image-23030" srcset="/wp-content/uploads/2017/05/mastodon_event_2.png 640w, /wp-content/uploads/2017/05/mastodon_event_2-300x202.png 300w, /wp-content/uploads/2017/05/mastodon_event_2-207x139.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">白石さん</p></div>

<p><b class="speaker">白石</b>
まずは、<a href="https://github.com/tootsuite/mastodon/blob/master/README.md" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">マストドンのREADME.md</a>より主要な機能のおさらいです。
開発者自身からすると、マストドンの特徴はこういうところにあるという主張が伺えます。
時間がない中で適当に訳したので、こなれてないのはどうかご容赦ください。</p>

<ul>
<li>GNU socialや、あらゆるOStatusプラットフォームと完全な相互運用性がある（Fully interoperable with GNU social and any OStatus platform）</li>
<li>リアルタイムなタイムライン更新（Real-time timeline updates）</li>
<li>連合したスレッド解決（Federated thread resolving）</li>
<li>画像やWebMなどのメディアを添付可能（Media attachments like images and WebM）</li>
<li>OAuth2と直感的なREST API（OAuth2 and a straightforward REST API）</li>
<li>長時間かかるタスクのバックグランド実行（Background processing for long-running tasks）</li>
<li>Dockerでデプロイ可能（Deployable via Docker）</li>
</ul>

<p>一方、ぼくらユーザーからすると、マストドンの主要な機能って、Twitterと比較するとわかりやすいんじゃないかと思います。
Twitterにも存在する機能としては以下の様なものがありますね。</p>

<ul>
<li>ユーザーフォロー</li>
<li>コミュニケーション（ステータス更新、リプライ、スレッド）</li>
<li>ハッシュタグ</li>
<li>タイムラインのリアルタイム更新</li>
<li>アカウント管理</li>
<li>OAuthプロバイダー</li>
<li>WebAPIを利用可能</li>
<li>&#8230;</li>
</ul>

<p>そして、マストドンならではの機能と言えるのは以下の様なものでしょうか。</p>

<ul>
<li>連合タイムライン</li>
<li>リモートフォロー</li>
<li>&#8230;</li>
</ul>

<p>連合タイムラインは、別のマストドンインスタンスからのタイムラインも合わせて表示するもの。リモートフォローは、他ののマストドンインスタンスのユーザーをフォローする機能です。このあたりは、分散型のSNSであるがゆえの機能ですね。</p>

<h3>マストドンのコードツリーを眺める</h3>

<p><b class="speaker">白石</b>
次に、マストドンの<a href="https://github.com/tootsuite/mastodon" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Githubリポジトリ</a>をざっくり眺めていくとしましょう。</p>

<p>実はぼく、RubyもRailsもほとんど知らないのですが、どうやら色んな人の話を聞く限り、割と素直なRailsアプリになっているみたいです。</p>

<p><div id="attachment_23063" style="width: 350px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/3625fdd9d8a3f82b95389381888d6895.png" alt="マストドンのソースツリー" width="340" height="387" class="size-full wp-image-23063" srcset="/wp-content/uploads/2017/05/3625fdd9d8a3f82b95389381888d6895.png 340w, /wp-content/uploads/2017/05/3625fdd9d8a3f82b95389381888d6895-264x300.png 264w, /wp-content/uploads/2017/05/3625fdd9d8a3f82b95389381888d6895-182x207.png 182w" sizes="(max-width: 340px) 100vw, 340px" /><p class="wp-caption-text">マストドンのソースツリー</p></div>
<a href="https://github.com/tootsuite/mastodon/tree/master/app" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>app</code>というディレクトリ</a>の下にWebアプリのコードが格納されていて、その下に、<a href="https://github.com/tootsuite/mastodon/tree/master/app/models" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DBに対応するモデル</a>、HTTPリクエストを処理する<a href="https://github.com/tootsuite/mastodon/tree/master/app/controllers" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">コントローラー</a>などがあると。で、<a href="https://github.com/tootsuite/mastodon/tree/master/app/controllers/api" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web API</a>をハンドリングするコントローラーのコードを中心に読み始めると、処理はほとんど<a href="https://github.com/tootsuite/mastodon/tree/master/app/services" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">サービス</a>と呼ばれるクラス群に委譲されているのがわかります。</p>

<p>そこでサービスのコードを読んでみると、すぐに「WebFinger」とか「PubSubHubub」とか、ソーシャルウェブを追いかけていた人にとっては懐かしい単語がたくさん出てくるわけですね。
例えば<a href="https://github.com/tootsuite/mastodon/blob/master/app/services/follow_remote_account_service.rb#L20" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">リモートフォローのコードを読む</a>と、webfingerという単語が出てくる。</p>

<p>どうやら、マストドンはソーシャルウェブと深いつながりがあるようだと。そこでぼく、すぐにえーじさんに連絡して、このイベントの企画を相談したわけです。
では、前置きはここまでにして、ここからはソーシャルウェブの専門家であるえーじさんを交えて、マストドンとソーシャルウェブのつながりを探っていきたいと思います。</p>

<h2>マストドンを構成する3つのレイヤー</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_3.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_3.jpg" alt="白石さんとえーじさん" width="640" height="480" class="aligncenter size-full wp-image-23033" srcset="/wp-content/uploads/2017/05/mastodon_event_3.jpg 640w, /wp-content/uploads/2017/05/mastodon_event_3-300x225.jpg 300w, /wp-content/uploads/2017/05/mastodon_event_3-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><b class="speaker">白石</b>
えーじさん、まずは自己紹介からお願いします。</p>

<p><b class="speaker">えーじ</b>
えーじです。8年ぐらい前、前職でOpenSocialをはじめとしたソーシャルウェブ技術全般に関わっていました。Social Web Japanというコミュニティも運営していて、ソーシャルウェブに関する勉強会も活発に開催していました。</p>

<p><b class="speaker">白石</b>
OpenSocial（※）って言葉を知っている方はどのくらいいますか？
この会場だと半分弱くらいですね。</p>

<p><small>
※OpenSocial…SNSのWeb APIを統一しようとする標準化の動き、及びその仕様。日本でもmixiやGREEを始めとした主要なプラットフォームが対応し、ソーシャルゲーム／ソーシャルアプリの流行に大きく寄与した。
</small></p>

<p><b class="speaker">えーじ</b>
マストドンって、実は2010年ぐらいに盛り上がったものがベースになっている面があるので、個人的にはタイムトリップしたような感覚ですね(笑)</p>

<p>まずこの図を見て下さい。私は、マストドンは3つのレイヤーから構成されていると捉えています。</p>

<div id="attachment_23042" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_4-1.png" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_4-1.png" alt="マストドンを構成する３つのレイヤー" width="640" height="356" class="size-full wp-image-23042" srcset="/wp-content/uploads/2017/05/mastodon_event_4-1.png 640w, /wp-content/uploads/2017/05/mastodon_event_4-1-300x167.png 300w, /wp-content/uploads/2017/05/mastodon_event_4-1-207x115.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text"><a href="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.g216742f12f_2_151" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">マストドン Tech Night#1進行スライドより</a></p></div>

<p>この図には出てきていませんが、一番下にはインターネットのレイヤーが存在します。</p>

<p>その上にIdentityというソーシャルウェブを構成するレイヤが重なり、その上にOStatus等のマイクロブログを構成するプロトコルがある。それらの上にマストドンがあるという図です。
逆に言えば、<strong>マストドンはOStatus、Identityというレイヤを取り除いてしまうと、ただのTwitterクローンになってしまう</strong>と思っています。</p>

<p><b class="speaker">白石</b>
なるほど。ソーシャルウェブの専門家から見ると、マストドンはむしろOStatusやIdentityなどの下位レイヤー、つまり<strong>ソーシャルウェブのスタック上に構成されていることが重要</strong>なわけですね。</p>

<h2>ソーシャルウェブとは何か？</h2>

<p><b class="speaker">白石</b>
じゃあ、その「ソーシャルウェブ」って何かということが大事になるわけですが、簡単にご説明願えますか？</p>

<p><b class="speaker">えーじ</b>
そうですね、じゃあちょっとSNSの歴史も振り返りつつ。</p>

<p>今では、SNSと言えばFacebookやTwitterを思い浮かべると思いますが、2004年くらいから始まった「Web 2.0」と呼ばれていた時代には、Myspaceや、Friendster、mixi、Google buzzなどの様々なサービスが存在していました。
今のような寡占状態じゃなかったんです。</p>

<p>その初期で登場した、当時としては画期的な機能があったんですが、なんだと思いますか？</p>

<p><b class="speaker">白石</b>
なんでしょう？SNSが出始めの頃ですよね…？とりあえずめっちゃ楽しかったですね(笑)</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2017/05/mastodon_event_7.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2017/05/mastodon_event_7.jpg" alt="" width="640" height="480" class="aligncenter size-full wp-image-23045" srcset="/wp-content/uploads/2017/05/mastodon_event_7.jpg 640w, /wp-content/uploads/2017/05/mastodon_event_7-300x225.jpg 300w, /wp-content/uploads/2017/05/mastodon_event_7-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><b class="speaker">えーじ</b>
それはそうですけども(笑) 画期的だったっていうのは、<strong>招待機能</strong>です。招待機能を使ってリアルの知り合いを招き入れる事ができました。</p>

<p><b class="speaker">白石</b>
ああそういえば、mixiなんかも最初招待じゃないと登録できませんでしたよね。</p>

<p><b class="speaker">えーじ</b>
招待機能っていうのは、リアルな人間同士の関係性をネットに持ち込むってことで、すごく画期的だったんですよね。それはつまり、ネットに人格や人間関係を持ち込むということなんです。</p>

<p>それまでのWebでも、もちろんユーザーはサービスごとにIDを持っていましたが、そのIDは他の人とデータを区別するためのものでしかなかった。SNSではそのIDに、実際のユーザーのプロフィールを紐づけさせた。つまり、リアルワールドの人間とSNS上のアカウントが紐付くことで、<strong>ネット上に人間のアイデンティティ（人格）を持ち込んだ</strong>んですね。</p>

<p><b class="speaker">白石</b>
なるほど。それが先ほどのレイヤー構成図で言うところの「Identity」に相当する部分ですね。</p>

<p><b class="speaker">えーじ</b>
はい、そこの課題意識が、OpenIDなどの認証技術の発展につながりました。ここらへんはあとでまた詳しく述べたいですね。</p>

<p>そして、更にSNSが発展してくると、今度はSNSをまたいで情報をやり取りしたい…というニーズも生まれてきました。
例えば、TwitterからFacebookにつぶやきを送りたいというような。
その象徴的なサービスが<a href="https://en.wikipedia.org/wiki/FriendFeed" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">FriendFeed</a>でした。</p>

<p><img src="https://upload.wikimedia.org/wikipedia/en/f/fb/FriendFeed.png" alt="FriendFeed" width="522" height="485" class="size-full" /></p>

<p><b class="speaker">白石</b>
懐かしいですねー。みなさん、FriendFeed覚えてますか？覚えてる人手を上げてください。
…あれ、ほとんどいない(笑)</p>

<p>FriendFeedは<a href="http://jp.techcrunch.com/2009/08/11/20090810facebook-acquires-friendfeed/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Facebookに買収されて</a>、静かに終わってしまったサービスですね。</p>

<p><b class="speaker">えーじ</b>
はい。これは複数のSNS上での情報を一つにまとめるサービスでした。こういうサービスの登場からもわかる通り、<strong>サービス間で情報をやり取りしたいというニーズは確実にあったし、今もある</strong>。
そこから発展したのが、先ほどのレイヤー図で言うところの下から二番目の層、「OStatus」などのプロトコルから成るレイヤーです。</p>

<p><b class="speaker">白石</b>
なるほど、SNSの発展の歴史とともに、Identityやプロトコルが発展してきて、それがソーシャルウェブと呼ばれるスタックを構成するようになったということですね。
そして、マストドンはそのスタック上に構築されたサービスであると。</p>

<h2>マストドン同士が情報をやり取りする世界は、ソーシャルウェブとしてはまだまだ序の口</h2>

<p><b class="speaker">白石</b>
では、マストドンはソーシャルウェブの一実装だとすると、実は他のサービスとも連携できたりするんでしょうか？</p>

<p><b class="speaker">えーじ</b>
はい、そのとおりです。その証拠に、マストドンは<a href="https://gnu.io/social/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GNU social</a>とも互換性があるんです。</p>

<p><b class="speaker">白石</b>
あ、それってさっき紹介した<a href="https://github.com/tootsuite/mastodon/blob/master/README.md" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">マストドンのREADME.md</a>にも「GNU socialと相互運用性がある」と記載されていましたね。
<strong>GNU socialってなんなんですか？</strong></p>

<div id="attachment_23066" style="width: 532px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/20a157111e1678e9ef135e8708853f7c.png" alt="GNU social" width="522" height="485" class="size-full wp-image-23066" srcset="/wp-content/uploads/2017/05/20a157111e1678e9ef135e8708853f7c.png 522w, /wp-content/uploads/2017/05/20a157111e1678e9ef135e8708853f7c-300x279.png 300w, /wp-content/uploads/2017/05/20a157111e1678e9ef135e8708853f7c-207x192.png 207w" sizes="(max-width: 522px) 100vw, 522px" /><p class="wp-caption-text">GNU social</p></div>

<p><b class="speaker">えーじ</b>
一言で言うと「ソーシャルウェブ関連仕様の参照実装」ですね。</p>

<p>具体的に言うと、ソーシャルウェブの標準化にあたっては、W3C（※）にある<a href="https://www.w3.org/Social/WG" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Social Web Working Group</a>というグループが中心となって進めています。
最初は、SNS間の相互運用性を議論する目的で、status.netというサイト上で進められていたんですけどね。</p>

<p>そこで策定が進められた様々な仕様の<strong>参照実装 (Reference Implementation)という位置づけのサービス、それがGNU social</strong>なんです。</p>

<p>GNU socialも、マストドンと同じく、自前でインスタンスを立てることもできる。それを使ったインスタンスもいっぱいありました。例えば、<a href="http://quitter.se/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">quitter</a>。
これ、一昔前のTwitterとUIもそっくりだし、やれることもほぼ一緒です。</p>

<div id="attachment_23065" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/d9658c9e3c73539824b87f77a410a8ad-640x467.png" alt="Quitter" width="640" height="467" class="size-large wp-image-23065" srcset="/wp-content/uploads/2017/05/d9658c9e3c73539824b87f77a410a8ad.png 640w, /wp-content/uploads/2017/05/d9658c9e3c73539824b87f77a410a8ad-300x219.png 300w, /wp-content/uploads/2017/05/d9658c9e3c73539824b87f77a410a8ad-207x151.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Quitter</p></div>

<p><small>
※ W3C（World Wide Web）…本誌の読者にはいわずもがなではあるが、ウェブの標準化と発展を促進するための標準化団体。
</small></p>

<p><b class="speaker">白石</b>
おお、こんなのあったんですね。思想的にはほとんどマストドンと変わらないじゃないですか。</p>

<p><b class="speaker">えーじ</b>
そうなんです。ただ、サービスとしては動作が遅くて、使うのはかなりストレスフルでしたけどね。
quitterと比較してマストドンが流行ったのは、誰でも簡単にデプロイできる、そして快適でストレスなく利用できることだと思います。</p>

<p>で、<strong>quitterはGNU socialのインスタンスなので、マストドンとも繋がります</strong>。マストドンのアカウントをフォローしたり、メッセージを送ったりもできるんですよ。</p>

<p><b class="speaker">白石</b>
おお、それはすごい。なるほど、マストドン同士がやり取りできるのは当たり前に思えますが、ほかのソーシャルウェブ実装ともやり取りできるのはすごいですね。</p>

<p><b class="speaker">えーじ</b>
ちなみに、ソーシャルウェブの実装と言えば想い出深いのはGoogle buzzです。Google buzzって覚えていますか？</p>

<p><img src="https://upload.wikimedia.org/wikipedia/en/9/95/Google_Buzz_logo_new.png" alt="FriendFeed" width="522" height="485" class="size-full" /></p>

<p><b class="speaker">白石</b>
ぼくは覚えてますが、皆さんどうでしょう？…7名ぐらいしか手が上がりませんね。みんな忘れちゃったんだなあ。</p>

<p><b class="speaker">えーじ</b>
Google buzzってGmailの一部として登場したし、皆さん一度は目にしたことあると思うんですけどね。
個人的には、Google buzzが出てきたときには大興奮でした。ソーシャルウェブの集大成をGoogleが出した！これはすごい！って。</p>

<p><b class="speaker">白石</b>
えーじさんが興奮してたのは、今でもはっきり覚えてます(笑)</p>

<p><b class="speaker">えーじ</b>
例えば今でもGoogle buzzが存在したなら、buzzからマストドン上の誰かをフォローしたりできていたかもしれないんです。
それだけじゃなくて、ソーシャルウェブのスタックを実装したどんなサービスとも連携できたはずなんです。</p>

<p>そういう世界を実現したいと思っている人は今でもいて、その人たちがW3C Social Web Working Groupを形作っているというわけです。</p>

<p><b class="speaker">白石</b>
じゃあ<strong>、今のマストドン同士が情報をやり取りする世界は、ソーシャルウェブとしてはまだまだ序の口</strong>で、ソーシャルウェブスタックを実装したサービス同士が自在に情報をやり取りできる世界というのが、ソーシャルウェブの目指す最終地点であり、実現したい世界観ということですね。</p>

<h2>アイデンティティ、OpenID、そしてNASCAR問題</h2>

<p><b class="speaker">白石</b>
では、マストドンで実現されているソーシャルウェブスタックについて、具体的なお話を伺っていきたいと思います。
まずは先ほどのスタックでいう一番下、アイデンティティのところからお聞きしたいです。</p>

<div id="attachment_23042" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/mastodon_event_4-1-640x356.png" alt="Mastodonを構成する３つのレイヤー" width="640" height="356" class="size-large wp-image-23042" srcset="/wp-content/uploads/2017/05/mastodon_event_4-1.png 640w, /wp-content/uploads/2017/05/mastodon_event_4-1-300x167.png 300w, /wp-content/uploads/2017/05/mastodon_event_4-1-207x115.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text"><a href="https://docs.google.com/presentation/d/1AuDdrrPKqRjnNJ3yzGS6vjAy8Vt1-vS4j6C4m49kFTI/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.g216742f12f_2_151" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mastodonを構成する３つのレイヤー（再掲）</a></p></div>

<p><b class="speaker">えーじ</b>
まず、ソーシャルウェブでアイデンティティのレイヤーを語るにあたっては、 <strong>OpenID</strong> 抜きには語れません。</p>

<p>SNSの登場により、Web上で人々がアイデンティティを持つようになりましたが、そのアイデンティティがサービスごとに分断されてしまっていることが問題でした。
例えば、今Twitterを使っているとしましょう。「私はえーじです。」とネット上で表したい時、皆さんはどうしますか？</p>

<p><b class="speaker">白石</b>
TwitterのIDをシェアするとか？</p>

<p><b class="speaker">えーじ</b>
そうですね。Twitterの◯◯、Facebookの◯◯、Google+の◯◯です。というように、各サービスに紐付けざるを得ません。</p>

<p><b class="speaker">白石</b>
<strong>サービスに関係なく、「私は私です」ということが言えない</strong>ってことですね。</p>

<p><b class="speaker">えーじ</b>
そうです。<strong>Web上でユニバーサルに「私は私です」と言えない</strong>んです。
また、サービスごとに認証情報を作成しなくてはならないのも問題でした。ユーザーとしては、一つのIDで様々なサービスにログインできるほうが便利です。</p>

<p>そこで<strong>OpenIDは、URLを利用してユーザーを識別できるようにした</strong>んです。そして、そのURLさえ入力すれば、どんなWebサービスにでもログインできるようにするのが、OpenIDの目標でした。</p>

<p><b class="speaker">白石</b>
でもその「URLを入力する」っていうのが、実際にはめんどくさくてあまり流行らなかった印象があります。
ぼくは、OpenIDを利用しているサービスと言えばリクルートさんの「<a href="https://atnd.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ATND</a>」を思い出すのですが、ATNDにアクセスするとOpenID（一部OAuth）に対応したサービスプロバイダの一覧が出てきて、それを押すといろんなサービスのIDでログインできるという仕組みでした。</p>

<div id="attachment_23071" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/04f17792dfe685b9b56e954b55959765-640x331.png" alt="ATNDのログイン画面（現在のものです）" width="640" height="331" class="size-large wp-image-23071" srcset="/wp-content/uploads/2017/05/04f17792dfe685b9b56e954b55959765.png 640w, /wp-content/uploads/2017/05/04f17792dfe685b9b56e954b55959765-300x155.png 300w, /wp-content/uploads/2017/05/04f17792dfe685b9b56e954b55959765-207x107.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">ATNDのログイン画面（現在のものです）</p></div>

<p>あれは、裏ではOpenIDのURLを生成してそこにアクセスしていましたよね。
ATNDにログインした人はたくさんいると思いますので、実際には皆さんOpenIDを使っていたという。</p>

<p><b class="speaker">えーじ</b>
ATNDはOpenIDの普及に貢献しましたね。
でも、ああやってサービスのロゴを並べるのは、OpenIDの思想からすると問題だったんですよね。
それって、<strong>NASCAR問題</strong>って言われていたんです。</p>

<p><b class="speaker">白石</b>
NASCAR（※）？</p>

<p><b class="speaker">えーじ</b>
ああやって企業やサービスのロゴを並べるのって、モータースポーツとかで、スポーツカーにべたべたと企業ロゴが貼られているのに似てるからそういう名前になったんです(笑)
今でもTwitterやFacebookのロゴを並べておくのは普通ですけどね。
ユーザーとしては、OpenIDのURLを入力するよりも便利なのですが、もともとのOpenIDの思想…サービスとアイデンティティの分離、からは後退してしまいました。</p>

<p><small>
※NASCAR…<a href="https://ja.wikipedia.org/wiki/NASCAR" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Wikipedia</a>によれば、「NASCAR（ナスカー、National Association for Stock Car Auto Racing, 全米自動車競争協会）は、アメリカ合衆国で最大のモータースポーツ統括団体であり（本部はノースカロライナ州シャーロット）、同団体が統括するストックカーレースの総称でもある。」とのこと。
</small></p>

<h2>マストドンの画期的なコンセプトの一つは、IDをメアド形式で指せるようにしたこと</h2>

<p><b class="speaker">えーじ</b>
<strong>一方マストドンの素晴らしいところは、IDをメールアドレス形式の <code>username@domain</code> の形にしたところ</strong>だと思います。
この、馴染み深くて簡潔な形式で、あらゆるマストドンインスタンス上のユーザーを指し示せるようにしたことが、サービス全体の使い勝手を大きく向上させている。</p>

<p><b class="speaker">白石</b>
そう言えばマストドンって、その形式のユーザーIDを使って、別のインスタンスのユーザーにメンションってできるんですよね？</p>

<p><b class="speaker">えーじ</b>
できます、できます。ちょっとやってみましょうか。マストドンはテキストボックスに<strong>@id@domain</strong>と入力用とすると候補が出てきます。他のインスタンスのユーザでも出てきますね。ちなみに、このオートコンプリートは、マストドンの機能ですね。こういうところが、マストドンの洗練されているところだと思います。</p>

<div id="attachment_23072" style="width: 285px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/05/fdd3a9dc26fff7d0ff9ea248ff5a61c3.png" alt="マストドンでは、リモートフォローしたユーザーのIDも自動補完される" width="275" height="330" class="size-full wp-image-23072" srcset="/wp-content/uploads/2017/05/fdd3a9dc26fff7d0ff9ea248ff5a61c3.png 275w, /wp-content/uploads/2017/05/fdd3a9dc26fff7d0ff9ea248ff5a61c3-250x300.png 250w, /wp-content/uploads/2017/05/fdd3a9dc26fff7d0ff9ea248ff5a61c3-173x207.png 173w" sizes="(max-width: 275px) 100vw, 275px" /><p class="wp-caption-text">マストドンでは、リモートフォローしたユーザーのIDも自動補完される</p></div>

<p><b class="speaker">白石</b>
なるほど。もしこれがOpenIDそのままだとしたらURL直打ちということになっていたかもしれないし、それだとオートコンプリートさせるっていうのもUI的に少し難しそうです。
IDをメアド形式で指せるようにしたことが、マストドンの画期的なコンセプトの一つということですね。</p>

<p><strong><a href="https://html5experts.jp/?p=23094" data-wpel-link="internal">後編</a>に続きます。</strong></p>
]]></content:encoded>
			</item>
		<item>
		<title>冬休みに読み返そう！2016年の年間読まれた記事ランキングTOP20</title>
		<link>/yusuke-naka/21867/</link>
		<pubDate>Wed, 28 Dec 2016 03:00:18 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[HTML5 Experts.jp]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">/?p=21867</guid>
		<description><![CDATA[HTML5 Experts.jp編集部の仲です。 HTML5 Experts.jpも開設から3年5カ月が経ちました。2016年もエキスパートやコントリビューターの皆様のご協力のお陰で、様々な技術トレンドをタイムリーに記事...]]></description>
				<content:encoded><![CDATA[<p>HTML5 Experts.jp編集部の仲です。</p>

<p>HTML5 Experts.jpも開設から3年5カ月が経ちました。2016年もエキスパートやコントリビューターの皆様のご協力のお陰で、様々な技術トレンドをタイムリーに記事として取り上げることができました。また、白石編集長と豪華なパネリストによる対談企画や、実際に企業にお邪魔し、開発スタイルについてエンジニアの方々に直接話を聞いちゃうインタビュー企画にも挑戦しました。皆様、お楽しみいいただけましたでしょうか？</p>

<p>今年最後の記事は、恒例の「2016年の年間読まれた記事ランキングTOP20！」をお届けします。このランキングは、記事公開後１週間の閲覧数を元に作成しております。冬休みに気になる記事を読み返してみてはいかがでしょうか。</p>

<h2>年間読まれた記事ランキングTOP20</h2>

<p><strong>＜1位＞</strong><br>
<a href="https://html5experts.jp/furoshiki/19276/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2016/05/31.jpg" width="207" height=auto class="alignleft size-full">
<strong>モバイルWebのUIを速くする基本テクニックがわかる──Google I/O 2016 High Performance Web UI</a></strong><br>
── <a href="https://html5experts.jp/furoshiki/" data-wpel-link="internal">川田寛</a></p>

<p><br><br></p>

<p><strong>＜2位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/20328/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2016/08/DSC05929.jpg" width="207" height=auto class="alignleft size-full">
<strong>Qiitaのスライドモードは、mizchiが勝手に作った！？─Incrementsの縛られない開発スタイルを聞いてみた</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜3位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/19195/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2016/05/IMG_5045.jpg" width="207" height=auto class="alignleft size-full">
<strong>もう、アルゴリズム自分で書いてる場合じゃない？機械学習が開発手法を変える─de:code 2016セッションレポート</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜4位＞</strong><br>
<a href="https://html5experts.jp/koba04/20839/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2016/10/DSC06341.jpg" width="207" height=auto class="alignleft size-full">
<strong>Reactの最新動向とベストプラクティス ── HTML5 Conference 2016セッションレポート</a></strong><br>
── <a href="https://html5experts.jp/koba04/" data-wpel-link="internal">小林徹</a></p>

<p><br><br></p>

<p><strong>＜5位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/21837/" data-wpel-link="internal"><img alt="5" src="/wp-content/uploads/2016/12/DSC08393.jpg" width="207" height=auto class="alignleft size-full">
<strong>Angular 2で10万行書いた人にナマの声を聞く─奥野賢太郎×白石俊平</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜6位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/21731/" data-wpel-link="internal"><img alt="6" src="/wp-content/uploads/2016/12/IMG_2396.jpg" width="207" height=auto class="alignleft size-full">
<strong>React vs Angular 2ガチ対決！エキスパートたちによるハイレベル対談 (1 / 2) ー TechFeed Live#2レポート</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜7位＞</strong><br>
<a href="https://html5experts.jp/komasshu/19704/" data-wpel-link="internal"><img alt="6" src="/wp-content/uploads/2016/06/1.png" width="207" height=auto class="alignleft size-full">
<strong>Googleが新たに提唱するProgressive Web Appsの新たな開発パターン「PRPL」とは？</a></strong><br>
── <a href="https://html5experts.jp/komasshu/" data-wpel-link="internal">小松 健作</a></p>

<p><br><br></p>

<p><strong>＜8位＞</strong><br>
<a href="https://html5experts.jp/agektmr/20527/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/09/hrml5ex.jpg" width="207" height=auto class="alignleft size-full">
<strong>プログレッシブウェブアプリ詳解 ─ 過去・現在・未来</a></strong><br>
── <a href="https://html5experts.jp/agektmr/" data-wpel-link="internal">えーじ</a></p>

<p><br><br></p>

<p><strong>＜9位＞</strong><br>
<a href="https://html5experts.jp/edo_m18/18552/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/03/oculus-image.png" width="207" height=auto class="alignleft size-full">
<strong>JSだけでVRできる！『WebVR』ことはじめ</a></strong><br>
── <a href="https://html5experts.jp/edo_m18/" data-wpel-link="internal">比留間 和也</a></p>

<p><br><br></p>

<p><strong>＜10位＞</strong><br>
<a href="https://html5experts.jp/furoshiki/21501/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/10/20151224013042.jpg" width="207" height=auto class="alignleft size-full">
<strong>この1年、Webのパフォーマンスで変わったことは？──HTML5 Conference 2016</a></strong><br>
── <a href="https://html5experts.jp/furoshiki/" data-wpel-link="internal">川田寛</a></p>

<p><br><br></p>

<p><strong>＜11位＞</strong><br>
<a href="https://html5experts.jp/djkato/21530/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/10/IMG_5335.jpg" width="207" height=auto class="alignleft size-full">
<strong>及川卓也さん、河合良哉さんに聞いた「地方で日本で働く・海外で働くの話」（その２）──HTML5 Conference 2016セッションレポート</a></strong><br>
── <a href="https://html5experts.jp/djkato/" data-wpel-link="internal">加藤拓明</a></p>

<p><br><br></p>

<p><strong>＜12位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/19232/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/06/da228ee35fa34d2ddd9421483b0d7cf6.jpg" width="207" height=auto class="alignleft size-full">
<strong>de:code参加者アンケートトップ！Microsoft澤円氏が語った「クラウド心配性な上司を説得するコツ」とは？</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜13位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/19013/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/05/IMG_4967.jpg" width="207" height=auto class="alignleft size-full">
<strong>MS変革の立役者ナデラCEOが日本に来た！なんかマイクロソフトカッコいいぞ！ – de:code 2016基調講演レポート
止まらないMicrosoftの変革：デベロッパーと共に 〜 de:code基調講演レポート 〜</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜14位＞</strong><br>
<a href="https://html5experts.jp/chikoski/18964/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/05/jit-diagram.png" width="207" height=auto class="alignleft size-full">
<strong>Webブラウザで高速な演算を可能にする低水準言語asm.jsと、WebAssembly詳解ーJavaScript が動く仕組み</a></strong><br>
── <a href="https://html5experts.jp/chikoski/" data-wpel-link="internal">清水智公</a></p>

<p><br><br></p>

<p><strong>＜15位＞</strong><br>
<a href="https://html5experts.jp/albatrosary/19288/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/06/IMG_0120.jpg" width="207" height=auto class="alignleft size-full">
<strong>React及びその周辺技術、事例から見るReact最新情報！──HTML5とか勉強会イベントレポート</a></strong><br>
── <a href="https://html5experts.jp/albatrosary/" data-wpel-link="internal">佐川 夫美雄</a></p>

<p><br><br></p>

<p><strong>＜16位＞</strong><br>
<a href="https://html5experts.jp/ryoyakawai/19461/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/06/GoogleLovetheWeb1.png" width="207" height=auto class="alignleft size-full">
<strong>Webの最先端では何が起こっているか、今Googleが取り組んでいることは？──Google I/O 2016セッションレポート【後編】</a></strong><br>
── <a href="https://html5experts.jp/ryoyakawai/" data-wpel-link="internal">河合良哉</a></p>

<p><br><br></p>

<p><strong>＜17位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/18411/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2016/03/DSC00720.jpg" width="207" height=auto class="alignleft size-full">
<strong>夏野剛・及川卓也・白石俊平が語る「WebRTCが切り拓く2020年のIoT」～リアルタイムコミュニケーションがもたらす破壊的イノベーション～</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜18位＞</strong><br>
<a href="https://html5experts.jp/ryoyakawai/19335/" data-wpel-link="internal"><img alt="18" src="/wp-content/uploads/2016/06/chris_francis.jpg" width="207" height=auto class="alignleft size-full">
<strong>今、Webの最先端では何が起こっているのか？──最新機能目白押し！Google I/O 2016セッションレポート【前編】</a></strong><br>
── <a href="https://html5experts.jp/ryoyakawai/" data-wpel-link="internal">河合良哉</a></p>

<p><br><br></p>

<p><strong>＜19位＞</strong><br>
<a href="https://html5experts.jp/albatrosary/19092/" data-wpel-link="internal"><img alt="19" src="/wp-content/uploads/2016/05/DSC03848.jpg" width="207" height=auto class="alignleft size-full">
<strong>モダンWeb：たった今と、ほんの少し未来のはなし～「de:code 2016」セッションレポート～</a></strong><br>
── <a href="https://html5experts.jp/albatrosary/" data-wpel-link="internal">佐川 夫美雄</a></p>

<p><br><br></p>

<p><strong>＜20位＞</strong><br>
<a href="https://html5experts.jp/yosuke_furukawa/20841/" data-wpel-link="internal"><img alt="19" src="/wp-content/uploads/2016/09/electron-eyecatch.png" width="207" height=auto class="alignleft size-full">
<strong>Electronプログラミング入門 — インストールからミニブラウザ構築まで</a></strong><br>
── <a href="https://html5experts.jp/yosuke_furukawa/" data-wpel-link="internal">古川陽介</a></p>

<p><br><br></p>

<p>※集計対象期間：2016/1/1 &#8211; 2016/12/27<br />
※集計方法：集計対象期間中に公開された全ての記事の公開後1週間のPVをカウントしランキング付け</p>

<h2>【番外編】HX今年の顔</h2>

<p>HTML5 Experts.jpには、<a href="https://html5experts.jp/author/" target="_blank" data-wpel-link="internal">エキスパート・コントリビューターの方々紹介ページ</a>があります。今年も、紹介ページの中で今年もっともアクセスされたエキスパート・コントリビュータートップ３を集計してみました。題して、<strong>HX今年の顔!</strong></p>

<p>今年は、昨年トップの白石編集長をおさえて、WebRTCの記事を執筆していただいたがねこまさしさんがトップでした。</p>

<p><strong>＜1位＞</strong><br>
<a href="https://html5experts.jp/mganeko/" data-wpel-link="internal"><img alt="2" src="/wp-content/uploads/2014/01/f6dde443617ce02b9c37bb46b2ccf3c9-66x66.png" width=auto height=auto class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/mganeko/" data-wpel-link="internal">エキスパート がねこまさし さん</a></strong><br></p>

<p><br><br></p>

<p><strong>＜2位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2015/01/bf985f8ff1bf6f607fcd1950db7ecac7-66x66.jpg" width=auto height=auto class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平 編集長</a></strong><br></p>

<p><br><br></p>

<p><strong>＜3位＞</strong><br>
<a href="https://html5experts.jp/takazudo/" data-wpel-link="internal"><img alt="2" src="https://secure.gravatar.com/avatar/13fb4600e942b31c69cfeaf4768c36cc?s=132&#038;d=mm&#038;r=g" width="66" height="66"class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/takazudo/" data-wpel-link="internal">エキスパート 高津戸壮 さん</a></strong><br></p>

<p><br><br></p>

<h2>来年もよろしくお願いします</h2>

<p>HTML5 Experts.jpは2016年も多くの方々にご愛読いただきまして、執筆陣・編集部共々感謝しています。ありがとうございました。来年も引き続き宜しくお願いいたします。</p>
]]></content:encoded>
			</item>
		<item>
		<title>Microsoft西脇資哲氏が語る、AI、ドローン、ロボティクスの未来 &#8211; de:code 2016セッションレポート</title>
		<link>/yusuke-naka/19062/</link>
		<pubDate>Thu, 26 May 2016 01:22:55 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[de:code]]></category>

		<guid isPermaLink="false">/?p=19062</guid>
		<description><![CDATA[連載： de:code 2016 特集 (4)こんにちは。編集部の仲です。de:code 2016はいかがでしたか？ この記事では、初日の最後に行われた、Microsoftのエバンジェリストであり「エバンジェリスト養成講...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/ms-decode2016/" class="series-371" title="de:code 2016 特集" data-wpel-link="internal">de:code 2016 特集</a> (4)</div><p>こんにちは。編集部の仲です。de:code 2016はいかがでしたか？</p>

<p>この記事では、初日の最後に行われた、Microsoftのエバンジェリストであり「エバンジェリスト養成講座」などで有名な、西脇資哲さんのセッションをご紹介します！
AI、ドローン、ロボティクス、そしてテスラ Model Sまで会場に登場した、盛りだくさんのセッションでした。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/1.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/1.jpg" alt="1" width="640" height="480" class="aligncenter size-full wp-image-19066" srcset="/wp-content/uploads/2016/05/1.jpg 640w, /wp-content/uploads/2016/05/1-300x225.jpg 300w, /wp-content/uploads/2016/05/1-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<h1>Twitterのライブ配信</h1>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/32.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/32.jpg" alt="Twitterのライブ配信" width="300" height="225" class="alignright size-medium wp-image-19069" srcset="/wp-content/uploads/2016/05/32.jpg 640w, /wp-content/uploads/2016/05/32-300x225.jpg 300w, /wp-content/uploads/2016/05/32-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
筆者が前回西脇さんのセッションを聴講した時も同じことをやっていたため、もはや恒例となっていると勝手に思ってますが、セッション中、Twitterにハッシュタグをつけてつぶやくと、前方スクリーンにその様子が表示されるという、イカした趣向が用意されていました。その日一番多くつぶやいた方には最後にプレゼントがあるとのこと。</p>

<p><BR><BR><BR></p>

<h1>ウェアラブルデバイス</h1>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/3.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/3.jpg" alt="Microsoft Band 2" width="300" height="225" class="alignright size-medium wp-image-19078" srcset="/wp-content/uploads/2016/05/3.jpg 640w, /wp-content/uploads/2016/05/3-300x225.jpg 300w, /wp-content/uploads/2016/05/3-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
最初のテーマはウェアラブルデバイスです。会場では、IoT☓医療現場での活用例として、Microsoft Band 2を利用したデモが披露されました。</p>

<p><BR><BR><BR><BR><BR><BR></p>

<p>このデモでは、Microsoft Band 2で西脇さんの皮膚の表面の汗の量や心拍数等を収集。BluetoothでRaspberry Pi（OSはWindows 10 IoT）に転送し、そこからSoracomのSIMでAzureにアップロードされます。アップロードされたセンサーデータは <a href="http://www.wingarc.com/cloud/mbc/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Motion Board Cloud</a> というサードパーティのサービス(Azure上で稼働)を利用して、活動量という形で表示しているそうです。活動量は100を超えるとちょっと落ち着きないな、というぐらいの指標になるんだとか。</p>

<div style="width:300px; float:left;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/6.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/6.jpg" alt="アーキテクチャ" width="300" height="225" class="aligncenter size-medium wp-image-19080" srcset="/wp-content/uploads/2016/05/6.jpg 640w, /wp-content/uploads/2016/05/6-300x225.jpg 300w, /wp-content/uploads/2016/05/6-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="width:300px; float:right;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/4.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/4.jpg" alt="活動量を表示" width="300" height="225" class="aligncenter size-medium wp-image-19083" srcset="/wp-content/uploads/2016/05/4.jpg 640w, /wp-content/uploads/2016/05/4-300x225.jpg 300w, /wp-content/uploads/2016/05/4-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="clear:both;">
</div>

<p><br></p>

<p>これが実際にどのようなシーンで活用されるのか、１つ例が紹介されました。</p>

<p>我々の国を含め、先進国は医療費の高騰が問題となっています。そのための対策として、患者さんに積極的に在宅医療をすすめるという試みが行われています。在宅医療をすすめるべきかどうかの判断について、今までは医者が個別に診察を行い、膨大な時間をかけて判断（トリアージュ）していました。</p>

<p>この活用例では、IoTデバイスからの生体情報や、過去の病歴、類似治療比較を基にマシンラーニングによって、各患者さんのシビリティレベル（治療が必要か否か）を自動判別しています。画面右側の上位に表示されている患者さんは緊急度が高い（すぐに治療が必要な）患者さんであると判断できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/5.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/5.jpg" alt="デモ：シビリティレベルの自動判別" width="640" height="480" class="aligncenter size-full wp-image-19090" srcset="/wp-content/uploads/2016/05/5.jpg 640w, /wp-content/uploads/2016/05/5-300x225.jpg 300w, /wp-content/uploads/2016/05/5-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>医療の現場ではIoTを活用して、このような自動化が行われているという事例の紹介でした。IoTデバイスとAzure、ソフトウェア・パッケージなどを開発者の皆さんが自由に組み合わせて、様々なソリューションを実現することができるため、是非チャレンジしてほしいとのこと。</p>

<h1>ロボティクス</h1>

<p>次の題材はロボティクス。今回のセッションでは基調講演でも出てきたPalmi（パルミ）君とPepper君が登場しました。</p>

<h3>Palmi君</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/8.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/8.jpg" alt="Palmi" width="640" height="480" class="aligncenter size-full wp-image-19107" srcset="/wp-content/uploads/2016/05/8.jpg 640w, /wp-content/uploads/2016/05/8-300x225.jpg 300w, /wp-content/uploads/2016/05/8-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>今回のデモは、西脇さんの予定を取り込み受付を行うデモでした。このデモはOfice365と連携しているそうです。その他、ドリンクオーダーのデモとして、パルミくんが音声認識しその結果をExcel Onlineのスプレッドシートに自動入力するデモや、音声認識したデータを、別のサービスで書かれた議事録に添付する等、ロボティクスとクラウドサービスを連携したデモが披露されました。</p>

<h3>Pepper君</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/7.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/7.jpg" alt="Pepper君" width="640" height="480" class="aligncenter size-full wp-image-19110" srcset="/wp-content/uploads/2016/05/7.jpg 640w, /wp-content/uploads/2016/05/7-300x225.jpg 300w, /wp-content/uploads/2016/05/7-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>次はPepper君を利用した見守りを行うデモです。ある空間の見守りをPepper君にお願いすると、音楽に合わせてるんるん踊る感じで見守り。見守り中に目の前で起きたことを画像認識等を活用して把握し、事後報告するというもの。写真では伝わりませんが、とても面白いデモでした。また、認識精度もかなり高いです。</p>

<h1>自動車</h1>

<p>次は自動車です。今回はなんと、会場内にあのテスラの実写が持ち込まれていました。西脇さんいわく、内燃機関を積んでいるクルマをイベント会場に入れるためには消防法の関係などで、いろいろな制約があるそうです。しかし、テスラは電気自動車で内燃機関がないため、大型のコンピュータを導入するのと手続き的には変わらなかったということ。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/9.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/9.jpg" alt="テスラ" width="640" height="480" class="aligncenter size-full wp-image-19112" srcset="/wp-content/uploads/2016/05/9.jpg 640w, /wp-content/uploads/2016/05/9-300x225.jpg 300w, /wp-content/uploads/2016/05/9-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>今回はテスラをMicrosoft Bandから操作するデモが披露されました。仕組みはテスラに持ち込まれているSurfacesがコンパニオンデバイスとして機能しており、そのデバイスに対して、様々なアクションを与えることでテスラを制御、また、テスラから得られた車両情報をデバイスを通して収集し、クラウドにアップしたりすることが可能ということです。</p>

<div style="width:300px; float:left;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/12.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/12.jpg" alt="テスラ車内" width="300" height="225" class="aligncenter size-medium wp-image-19115" srcset="/wp-content/uploads/2016/05/12.jpg 640w, /wp-content/uploads/2016/05/12-300x225.jpg 300w, /wp-content/uploads/2016/05/12-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="width:300px; float:right;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/13.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/13.jpg" alt="コンパニオンデバイス" width="300" height="225" class="aligncenter size-medium wp-image-19116" srcset="/wp-content/uploads/2016/05/13.jpg 640w, /wp-content/uploads/2016/05/13-300x225.jpg 300w, /wp-content/uploads/2016/05/13-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="clear:both;">
</div>

<p><br></p>

<p>このコンパニオンデバイス上のアプリは、C#やJavaでアプリケーションを書くことができるそうです。現在テスラは、安全性の面等から、サードパーティ制のアプリを認める（導入する）ことはやっていないそうですが、この取組には非常に大きな可能性があると、西脇さんは付け加えました。今まで、車両の制御等を自由にするということは難しかったが、Surfacesで.netやJavaを使いこの車両を自由にコントロールし、クラウド上から操ることが可能になる。非常に大きな可能性を秘めていると言っても過言ではないと付け加えました。</p>

<p>そして、もうひとつ、テスラに関するデモが行われました。テスラを持っている人が一番悩ましいのは、実は充電スポットを探すことだと西脇さんは言います。テスラは走行用バッテリーとしては、一般家庭1週間分の電気容量を蓄えているそうですが、実際に走行するとバッテリーの消費量は激しいのが事実。バッテリーを充電するための充電スポットを検索するアプリとして、EVSmartというものが出ているそうです。このアプリはXamarinで開発されているとのこと。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/14.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/14.jpg" alt="EVSmart" width="640" height="480" class="aligncenter size-full wp-image-19118" srcset="/wp-content/uploads/2016/05/14.jpg 640w, /wp-content/uploads/2016/05/14-300x225.jpg 300w, /wp-content/uploads/2016/05/14-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Xamarinを商用環境で積極的に活用してほしいと締めくくりました。</p>

<h1>鉄道</h1>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/18.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/18.jpg" alt="Nゲージ" width="300" height="225" class="alignright size-medium wp-image-19124" srcset="/wp-content/uploads/2016/05/18.jpg 640w, /wp-content/uploads/2016/05/18-300x225.jpg 300w, /wp-content/uploads/2016/05/18-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
次は、鉄道ということでNゲージが登場。鉄分が高まってきましたー。余談ですが、このジオラマは銚子電鉄をモデルにしているそうです。</p>

<p><BR><BR><BR><BR><BR><BR></p>

<p>このNゲージのデモでは、Windowsタブレット上のXamarinで開発されたアプリから電車を制御します。Nゲージをコンピュータから制御するというのはわりとありふれたことかもしれませんが、このデモで一番重要なのは、センサーを利用して在線検知（鉄分が高い言葉かもしれないがお分かりいただけるだろうか？）を行っているということでした。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/16.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/16.jpg" alt="制御アプリ" width="640" height="480" class="aligncenter size-full wp-image-19121" srcset="/wp-content/uploads/2016/05/16.jpg 640w, /wp-content/uploads/2016/05/16-300x225.jpg 300w, /wp-content/uploads/2016/05/16-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>仕組みは、線路上に電流を計測するセンサーを設置し、電車が通過すると電流が流れるため、その状態を検出して、電車が線路のどの部分に存在するのか判定するという。このデモでは、電流の情報はAzure IoT Suiteで収集し、タブレット上のアプリでそれを表示しているそうだ。（画面上部オレンジ色に変わっている部分が在線している位置）この仕組は、デモのために作ったわけではなく、今後実際の鉄道でも使われようとしている技術だという。</p>

<p>実際この技術を応用するとどんなことができるかといえば、速度・走行位置のリアルタイム表示も可能になるため、現在、人が電車の運行を集中管理しているところを、一部コンピュータに任せることができるかもしれないという。これに車両本体のセンサ情報（人がどれだけ載っているか等）を加えてマシンラーニングと組み合わせれば、実現できる可能性がある。可能性が広がっていると締めくくった。</p>

<h1>船舶</h1>

<p>次は、船舶について。まず最初にある動画が流されました。船舶の位置情報（AIS）は公開情報になっており、この情報を使って、Azure、マシンラーニング、PowerBIを組み合わせて、東京湾のすべての船舶位置の表示とすべての船舶の航行進路予測を行い、その結果から衝突予測を行い、必要な船舶に回避命令を出したり新しい航路を指示するというのを実現したそうです。この画像はその時の動画の一部です。</p>

<div style="width:300px; float:left;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/21.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/21.jpg" alt="21" width="300" height="225" class="aligncenter size-medium wp-image-19130" srcset="/wp-content/uploads/2016/05/21.jpg 640w, /wp-content/uploads/2016/05/21-300x225.jpg 300w, /wp-content/uploads/2016/05/21-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="width:300px; float:right;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/22.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/22.jpg" alt="22" width="300" height="225" class="aligncenter size-medium wp-image-19131" srcset="/wp-content/uploads/2016/05/22.jpg 640w, /wp-content/uploads/2016/05/22-300x225.jpg 300w, /wp-content/uploads/2016/05/22-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="clear:both;">
</div>

<p><br></p>

<p>（とても良く出来た動画でしたが、おそらく公開されてないと思われます）</p>

<p>東京湾は世界でも有数の過密航路区間となっており、衝突事故が発生しないように、通常は東京湾に入ってくる大型船舶にはタグボートが付くことになっているそうです。しかし、小型の船舶はそんなことが出来ないため、それを解決するために、マイクロソフトと中央省庁で一緒に行った取り組みが、この動画だという。</p>

<p>船舶の安全は古くは灯台の明かりと人間の判断によって守られてきました。それが、無線になり、レーダーになり、ITの技術革新によって、今ではマイクロソフトのクラウドと機械学習技術がお役に立てる時代になった、と締めくくりました。</p>

<h1>無線航空機</h1>

<p>次は、空、ドローンの話です。昨今、Windows 10 IoTで動くドローンが登場し始めたということ。実際会場では実物が披露されました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/33.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/33.png" alt="Drone" width="640" height="429" class="aligncenter size-full wp-image-19136" srcset="/wp-content/uploads/2016/05/33.png 640w, /wp-content/uploads/2016/05/33-300x201.png 300w, /wp-content/uploads/2016/05/33-207x139.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>このドローンを利用して実際に無人航行を行った際のフライト情報（バッテリー残量、電圧、高度等）をクラウドに蓄積し、PowerBIで可視化するというデモが紹介されました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/24.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/24.jpg" alt="フライト情報可視化" width="640" height="480" class="aligncenter size-full wp-image-19137" srcset="/wp-content/uploads/2016/05/24.jpg 640w, /wp-content/uploads/2016/05/24-300x225.jpg 300w, /wp-content/uploads/2016/05/24-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<h1>　人／人工知能</h1>

<p>最後は、基調講演にも登場した人工知能「りんな」の話題です。会場では画像認識のデモが行われました。</p>

<p>この画面は西脇さんのiphone上でLINEをつかってりんなと会話をしているところです。文章の代わりに柴犬のイメージをアップロードしています。
<a href="https://html5experts.jp/wp-content/uploads/2016/05/26.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/26.jpg" alt="りんなと柴犬" width="640" height="480" class="aligncenter size-full wp-image-19139" srcset="/wp-content/uploads/2016/05/26.jpg 640w, /wp-content/uploads/2016/05/26-300x225.jpg 300w, /wp-content/uploads/2016/05/26-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>西脇さんいわく、柴犬の画像を送って、「これは柴犬です」と返すのは、人工知能ではなくアシスタントであるということ。りんなは、人と楽しく会話をするにはどうすればいいかを考えて実践する事を目的とした人工知能なので、そうは返さないようです。上記例では、「超かわいい」と、それ以降話を繋げられるような返しができていることがわかると思います。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/27.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/27.jpg" alt="アシスタントと人工知能の違い" width="640" height="480" class="aligncenter size-full wp-image-19141" srcset="/wp-content/uploads/2016/05/27.jpg 640w, /wp-content/uploads/2016/05/27-300x225.jpg 300w, /wp-content/uploads/2016/05/27-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>次に、りんなにテレビの音声を聴かせるというデモが行われました。左の写真のように、テレビの横で音声認識機能を利用して音声を取り込み送信してあげます。時間にして５秒程度。そうすると、写真右のようにどのテレビ局のどういう番組名なのか、その番組に出演しているタレントさんの名前や関連する話題を喋ってくれるんです。</p>

<div style="width:300px; float:left;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/34.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/34.png" alt="テレビの音声を聴かせる" width="273" height="300" class="aligncenter size-medium wp-image-19142" srcset="/wp-content/uploads/2016/05/34.png 583w, /wp-content/uploads/2016/05/34-273x300.png 273w, /wp-content/uploads/2016/05/34-189x207.png 189w" sizes="(max-width: 273px) 100vw, 273px" /></a>
</div>

<div style="width:300px; float:right;">
<a href="https://html5experts.jp/wp-content/uploads/2016/05/35.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/35.jpg" alt="認識結果" width="300" height="225" class="aligncenter size-medium wp-image-19143" srcset="/wp-content/uploads/2016/05/35.jpg 640w, /wp-content/uploads/2016/05/35-300x225.jpg 300w, /wp-content/uploads/2016/05/35-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="clear:both;">
</div>

<p><br></p>

<p>このデモは、りんなとクラウド上の深層学習によるデモということです。マイクロソフトのデータセンタは地デジの映像をリアルタイムですべて蓄積しているそうです。今放送されている音声とアップロードした音声をクラウド上でリアルタイムにマッチングして、番組名を推測する。そこから、出演者の情報などを検索し、会話につなげていくということ。これはすごかった。</p>

<p>今日紹介した、りんなを使ったデモは皆さんも自分のスマホで試すことが出来るようなので、是非試してみてください！</p>

<h1>技術革新に付いていこう</h1>

<p>最後に昨今の技術革新について、こんな話がありました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/29.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/29-300x225.jpg" alt="技術革新 1925年マンハッタン" width="300" height="225" class="alignright size-medium wp-image-19146" srcset="/wp-content/uploads/2016/05/29-300x225.jpg 300w, /wp-content/uploads/2016/05/29.jpg 640w, /wp-content/uploads/2016/05/29-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
「技術革新が進むと今までの職業がなくなるのでは？」とよく言われます。最近では人工知能の話題が熱いですし、尚更。そこで登場したのがこの写真。</p>

<p>1905年のマンハッタンの写真と1925年のマンハッタンの写真。（写真は1925年の方）
両方の時代の写真を比較し、1905年は馬車が全盛。当然馬の世話をする職業があったはず。しかし、20年後の1925年の写真では馬車が姿を消し、すべて自動車に置き換わっています。では、1905年当時馬の世話をしていた人達は、1925年には職を失っているのでしょうか？</p>

<p>西脇さんはこう言いました。</p>

<p>「違うんです。1925年になったら、駐車場やガソリンスタンド、板金工場を運営してるんです。カーアクセサリを売ってるんです。技術革新についていった人は職業を変えるんです。技術革新についていった人は職業がなくなることはありません。プログラミングできる人は絶対に職業が無くなることはありません。」</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/05/36.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/05/36.png" alt="西脇さん" width="640" height="480" class="aligncenter size-full wp-image-19149" /></a></p>

<p>マイクロソフトのテクノロジーとそれを支えるエンジニアの皆さんのおかげで、将来は大きく変わって魅力あふれる未来になる。そんな未来を一緒に作っていきましょう。</p>

<p>最後にそう締めくくり、西脇さんのセッションは終わりました。</p>
]]></content:encoded>
		
		<series:name><![CDATA[de:code 2016 特集]]></series:name>
	</item>
		<item>
		<title>Angular2の失敗しない始め方〜「ng-japan 2016」セッションレポート〜</title>
		<link>/yusuke-naka/18590/</link>
		<pubDate>Fri, 01 Apr 2016 00:52:57 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Angular2]]></category>
		<category><![CDATA[ng-japan]]></category>

		<guid isPermaLink="false">/?p=18590</guid>
		<description><![CDATA[この記事は、「ng-japan 2016」のセッションレポートです。講演内容を再現していますが、ニュアンス等伝えきれない場合があるので、気になるところは、記事末尾に掲載の講演資料やYoutube動画でご確認ください。 A...]]></description>
				<content:encoded><![CDATA[<p>この記事は、「<a href="http://ngjapan.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ng-japan 2016</a>」のセッションレポートです。講演内容を再現していますが、ニュアンス等伝えきれない場合があるので、気になるところは、記事末尾に掲載の講演資料やYoutube動画でご確認ください。</p>

<h1>Angular2の失敗しない始め方 / 稲富駿氏</h1>

<p>株式会社トップゲートの<a href="https://twitter.com/laco0416" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">稲富 駿氏</a>によるセッションです。セッション資料や配信動画は記事末尾でご確認ください。このセッションでは、大きく3つの点について触れられました。それぞれのポイントを書き起こします。</p>

<ol>
<li>Angular2に関するよくある質問や誤解について</li>
<li>Angular2を構成する基礎技術について</li>
<li>Angular2を学ぶために必要なこと</li>
</ol>

<p><img src="/wp-content/uploads/2016/03/ina3.jpg" alt="" width="600" height="367" class="aligncenter size-full wp-image-18640" srcset="/wp-content/uploads/2016/03/ina3.jpg 600w, /wp-content/uploads/2016/03/ina3-300x184.jpg 300w, /wp-content/uploads/2016/03/ina3-207x127.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></p>

<h2>1. Angular2に関するよくある質問や誤解について</h2>

<p>Angular2について正しい知識を知ってもらうために、よくある質問とその回答について幾つか取り上げる。</p>

<h3>Q1. AngularJS2なのか？Angular2なのか？</h3>

<p>Angular2が正しい名称。ここが大事。Angularはただ単にJSフレームワークライブラリではない。JSフレームワークであると同時に、
ElectronやNativeアプリで動くライブラリでもあり、Serverサイドで動くためのライブラリでもある。つまり、Angularはアプリケーション開発のためのプラットフォームと認識するのが正しい。</p>

<h3>Q2. Angular2を学ぶためにTypeScriptを勉強する必要があるのか？</h3>

<p>必ず必要というわけではないが、勉強すべきである。Angular2はコードベースがTypeScriptベースになっている。勉強すべき理由はそれだけではなく、TypeScriptを利用することで、次の大きく3つのメリットを享受でき、安全で開発自体の生産性向上を図ることが可能になる。特にTypeScriptを採用できない理由がない場合は、TypeScriptで書くべきである。</p>

<h4>メリット１：静的型チェックが利用可能</h4>

<p>TSの一番大きな特徴である静的型チェック。静的型付けされたコードは常に正しいAPIドキュメントだと言える。型が付いている限り、常に正しいコードが書けるし、コンパイラでエラーを事前にチェックできる等のメリットがある。また、型があることで、エディタやIDEで入力補完の恩恵をうけることができる。</p>

<h4>メリット２：Decoratorsが利用可能</h4>

<p>デコレーター（＠Decorators）は次世代のWeb標準（ESnext）として提案されている機能。TypeScriptでもオプションを付けることで利用可能。Angular2ではこれを推奨している。デコレーターを利用することで、コンポーネント作成にあたっての属性設定はデコレーターで、コンポーネントの実装はclassでというふうに分けて書くことができる。それによってコードの視認性も向上する。</p>

<p></p><pre class="crayon-plain-tag">@Component({
    selector: "app-profile",
    template: "&lt;p&gt;Name: {{ name }}&lt;/p&gt;"
})
class ProfileComponent {
    name: string;
    constructor() {
        this.name = "laco";
    }
}</pre><p></p>

<h4>メリット３：Type-Base DIが利用可能</h4>

<p>Type-Base DI（Type-Safe DI）を利用すると、DIを型ベースで行うことが可能。例えば、コンストラクタに渡す変数名が間違っていたとしても、型を指定するため、エラーを未然に防ぐことが可能。誤字（typo）に強いDIができる。DIについての詳しい説明は省略する。</p>

<p></p><pre class="crayon-plain-tag">import {Http} from "angular2/http";

@Injectable()
class MyService {
    constructor(private anyNameForHttp: Http) {
    }
}</pre><p></p>

<h3>Q3. Angular１系はサポート終了になるのか？</h3>

<p>Angular1系は、1.4系と1.5系が今後もサポートされ続ける。これがステーブルとなり、基本的には破壊的変更は入らない。もし、破壊的変更が入る場合は、1.6、1.7とバージョンが上がっていく予定で、遅れてバックポートしたものが1.5にもマージされることになる。</p>

<p>Angular1.5ではComponent Helperが追加された。これは、Angular2への移行をサポートするためのもので、将来的に移行を検討している場合は、使っておくと良い。また、Angular2のRouterについては、Angular1用のライブラリが出ており、利用することでAngular2とほぼ同じAPI、書き方で実装することができる。</p>

<h3>Q4. 双方向バインディングはなくなったのか？</h3>

<p>存在する。しかし、Angular2は原則単方向バインディングを利用することになっている。双方向バインディングを実装したい場合は、二重カッコ[()]で記載する必要が出てくる。</p>

<p></p><pre class="crayon-plain-tag">&lt;input [(ngModel)]="myName"&gt;</pre><p></p>

<p>このように記載すると実行時に、以下のように単方向バインディング＋イベントハンドラが自動生成される。</p>

<p></p><pre class="crayon-plain-tag">&lt;input [ngModel]="myName" (ngModelChange)="myNameChanged($event)"&gt;</pre><p></p>

<h3>Q5. Dirty checkはなくなったのか？</h3>

<p>存在する。しかし、Angular1に比べて爆速で動作するようになった。理由は、Angular２は実行時に変更検知を行うためのコード生成を行う。具体的には、Angular2の各コンポーネントは、自分自身の変更検知のために、専用のChange Detectorという変更検知器を生成する。それぞれのコンポーネントに最適化された変更検知器のおかげで、Dirty checkのパフォーマンスが改善（10msで100000チェックが可能）された。watchの個数は基本的に気にしなくて良くなる。</p>

<h3>Q6. サーバサイドレンダリングはできるようになるのか？</h3>

<p>Angular Universalというnodejs上で実行されるAngular2が存在する。コアのコードはAngular2とまったく同じ。また、nodejsにかぎらず、今後は、Java/php/.net/python等の環境でも利用できるようになる予定。</p>

<h3>Q7. WebComponentを利用しているのか？</h3>

<p>利用していない。しかし、Angular2はWebComponentと併用可能である。例えば、ShadowDom。Angular２は独自の機能でShadowDomをエミュレート（CSSのスコーピング）を行うことが出来る。</p>

<p></p><pre class="crayon-plain-tag">@Component({
    selector: "my-component",
    encapsulation: ViewEncapsulation.Native
})
class MyComponent{}</pre><p></p>

<p>ディフォルトは<code>ViewEncapsulation.Emulated</code>である。もしブラウザにShadowDomの機能がついていれば、 <code>ViewEncapsulation.Native</code>を指定することで利用可能。パフォーマンス面では、ブラウザのShardDomを使うほうが早い。現時点ではChromeでしか動作しないが、対応ブラウザがChromeの場合や、Electron上で動作させる場合は、こちらを活用してパフォーマンス向上を狙ってほしい。</p>

<h2>2. Angular2を構成する基礎技術について</h2>

<p>次に、Angular２を構成する基礎技術について解説する。Angular２は様々な技術を利用して作られているので、個別の技術について理解すると、より効果的にAngular2を習得することが出来る。</p>

<h3>SystemJS</h3>

<p>SystemJSは動的なモジュールローダー（NodeJSの<code>require</code>と同じような役割をもつ）である。SystemJSはES.nextの<code>import</code>、<code>export</code>に対応するのが特徴で、将来ブラウザに実装されるモジュールローダーのポリフィル的存在。これを活用すると、遅延ローディングが可能になる。必要なコンポーネントのみを都度読み込む事が可能になり、よりパフォーマンスが向上する。</p>

<p>しかし、利用は必須ではない。JavaScriptのライブラリを静的に読み込みたい場合（npmなどでダウンロードしてくる場合）は、今までどおりBrowserifyやWebpackなどが利用可能。動的ロードしたい場合のみ、SystemJSを使えば良い。</p>

<h3>RxJS</h3>

<p>Angular2を利用するにあたって必須の機能。Observableのポリフィルとして利用されている。Observableはリアクティブプログラミングに基づいた考え方であり、Promise同様に非同期処理を実現する。Angular1はPromiseで、Angular2はObservableで非同期処理がそれぞれ実装されている。両者には様々な違いがあるが、Webの非同期処理についてObservableの利点を幾つか挙げる。</p>

<p>onkeyup等のDOM Eventに関しては、連続して発生した場合に、Promiseではその発生順序を知るすべはないが、Observableではイベントの順序どおりに処理が可能になる。DOMのAnimationについては、Promiseでは一度始まるとそれが完了するまで値は取れないが、Observableでは途中で処理をキャンセルすることが可能。WebSocketの通信についても、ストリームとして順序どおりに扱うことが可能になり、Ajaxに関しては処理途中でキャンセルが可能になる。</p>

<p>このように、Webにおける非同期ではObservableの方が適しているシーンが多々ある。そのため、Angular2では非同期処理の根幹はObservableで実装されている。そのため、RxJSとObservableの修得は、Angular2を学ぶためには必須とい言える。</p>

<h3>Zone.js</h3>

<p>ZonesというES.nextに提案されている機能のポリフィル。これを利用すると、非同期処理のコンテキストを開発者が自由に設定可能になる。具体的には、setTimeout等あらゆる非同期処理の前後にフック可能なポイントを挟むことができる。</p>

<p>Webにおける非同期処理の後にはかなりの確率で何らかの変更が行われる可能性がある。例えば、Ajaxでレスポンスを受け取った後はそれを受けてModelが変更されるなど。そのため、Angular２では、Zone.jsを利用し、全ての非同期処理の後に変更検知処理を行っている。処理速度も早い。</p>

<h3>reflect-metadata</h3>

<p>リフレクションのためのAPIを追加するためのポリフィル。reflect-metadataの機能もES.nextに提案されている。Angular2は内部的にTypeScriptのコンパイルに利用している。インストールは必要だが、開発者は覚えなくても問題はない。</p>

<h2>3. Angular2を学ぶうえで必要なもの</h2>

<p>次に、Angular2を学ぶ上で理解しておくことを幾つか取り上げる。</p>

<h3>Angular2はAngular１よりシンプルになった</h3>

<p>Angular1はAPIが多すぎたため、Angular２ではかなりシンプルになった。データバインディングと双方向バインディングの設定方法、イベントハンドラの設定方法はかなりシンプルになった。また、APIについても基本的には&#8217;@Component&#8217;を覚えれば良い。</p>

<h3>Angular2はパフォーマンスが改善されている</h3>

<p>Angular1は<code>dirty-checking</code>、<code>two-way bindings</code>、<code>$digest loop</code>が遅いと言われてきたが、Angular2でChange Detection（変更検知）が革命的に変わり、パフォーマンスが改善された。</p>

<h3>Change Detection</h3>

<p>Change Detectionは、例えば、Modelのここが変更になったらViewに描画するなどの処理を行う際に必要になる。重要なのは、どこでどんな変更が起きたかを素早く検知して、それを反映すること。Angular2の変更検知メカニズムはよく考えられている。全てのコンポーネントには個別のChange Detecter（変更検知メカニズム）が存在する。そして、Angular2の全てのコンポーネントはツリー構造になっており、変更検知が必ず一方向（親から子へ）に行われるようになっている。そして、各コンポーネントでは変更検知を行うかどうかを個別に設定可能になっており、親のレベルで変更検知を停止したり、子のレベルで変更検知を停止したり、非常に柔軟で戦略的な変更検知の設定が可能になっている。</p>

<h3>Angular2では静的解析ツールが利用可能</h3>

<p>Angular1では静的解析ツールが利用できなかった。例えば、バインディングの記述に[]を利用するようになったため、機械的にバインディングかどうかのチェックが可能になっている。</p>

<h2>まとめ</h2>

<p>Angular2を学ぶためには、ES.next、Decorators、Observables、Zones等、最新のWeb標準技術について学ぶことが大前提である。Angular1の登場（2009年）から、Angular2の登場までの間に、Web標準の世界は大きく変わった。最新のAngular2がAngular1とまったく異なっているのは必然であり、この世界で生きていくには、勉強し続ける必要がある。枯れた技術にしがみついてはダメ。何もかも最新のものを使う必要はないが、最新の技術に常に目を向けて置く必要はある。</p>

<p>最後に、Angular2を使うのは素晴らしいことだが、まだベータ版であることを忘れてはならない。今後BREAKING CHANGES（破壊的変更）が発生する可能性が十分にある。そのために、チェンジログは必ず読むようにする。どうにもならなければコミットログも読む。そして、それ以上深く関わりたければ、issueを出したりPullRequestを送りましょう。それがハードルが高いと考える方は、カンファレンスに参加したり記事を書いたりしよう。開発者にTwitterで質問するのも効果的。</p>

<h1>セッションをもっと詳しく知りたい方は？</h1>

<p>以上で、セッションの書き起こしは終了です。<br />
稲富駿氏のセッション資料はこちらで公開されています。</p>

<p><a href="http://laco0416.github.io/slides/a-way-for-happy-angular-days/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Angular2の失敗しない始め方</a></p>

<p>セッション動画もYoutubeで公開されているので、ぜひご覧ください！</p>


<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="560" height="315" src="https://www.youtube.com/embed/4QVMhM75XK8?start=270" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>

]]></content:encoded>
			</item>
		<item>
		<title>Angular2実践入門〜ng-japan 2016 セッションレポート〜</title>
		<link>/yusuke-naka/18596/</link>
		<pubDate>Tue, 22 Mar 2016 02:00:01 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Angular2]]></category>
		<category><![CDATA[ng-japan]]></category>

		<guid isPermaLink="false">/?p=18596</guid>
		<description><![CDATA[この記事は、「ng-japan 2016」のセッションレポート（速報）です。講演内容を忠実に再現していますが、ニュアンス等伝えきれない場合があるので、気になるところは、記事末尾に掲載の講演資料やYoutube動画でご確認...]]></description>
				<content:encoded><![CDATA[<p>この記事は、「<a href="http://ngjapan.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ng-japan 2016</a>」のセッションレポート（速報）です。講演内容を忠実に再現していますが、ニュアンス等伝えきれない場合があるので、気になるところは、記事末尾に掲載の講演資料やYoutube動画でご確認ください。</p>

<h1>Angular2実践入門 / 白石俊平氏</h1>

<p>当メディアの編集長であり、<a href="https://techfeed.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TechFeed</a>の開発者でもある白石俊平氏によるセッション。スライド40枚以上の大作でライブコーディングもあります。</p>

<p><img src="/wp-content/uploads/2016/03/shiraishi1.jpg" alt="" width="500" height="335" class="aligncenter size-full wp-image-18630" srcset="/wp-content/uploads/2016/03/shiraishi1.jpg 550w, /wp-content/uploads/2016/03/shiraishi1-300x201.jpg 300w, /wp-content/uploads/2016/03/shiraishi1-207x139.jpg 207w" sizes="(max-width: 500px) 100vw, 500px" /></p>

<h2>ライブコーディングで学ぶAngular2</h2>

<p>今日のライブコーディングを追体験できるスターターキットを作った。是非活用してほしい。
<a href="https://github.com/shumpei/angular2-webpack-starter-minimum" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">https://github.com/shumpei/angular2-webpack-starter-minimum</a><br />
  &#8211; Angular2をwebpackを利用してミニマムスタートできるプロジェクト<br />
  &#8211; 教育用途、もしくは開発環境を自作したい人向け</p>

<h3>Angular2の特徴（かなり主観）</h3>

<h4>特徴その１：TypeScriptを推奨</h4>

<p>TypeScriptを一言で言えば、ES.next全部＋型である。また、実験的なサポート扱いである「デコレーター」は、Angular2を使う上では必須となる。</p>

<h4>特徴その２：コンポーネント指向</h4>

<p>実際のコードは以下のとおり。JavaScriptとは大分変わった見た目になるのが第一印象。</p>

<p></p><pre class="crayon-plain-tag">import {Component} from 'angular2/core';

@Component({
  selector: 'my-app',
  templateUrl: '/src/components/app.component.html'
})
export class AppComponent {
}</pre><p></p>

<p><code>import</code>はモジュールをインポートする仕組み。<code>@Component</code>はデコレーターであり、これを取り付けたクラスがUIコンポーネントとなる。上記サンプルはAngular2における、UIコンポーネントの例である。UIコンポーネントは簡単にいえば、自作のタグだ。上記サンプルだと、<code>&lt;my-app&gt;</code>タグをHTMLに埋め込めるようになる。また、<code>templateUrl</code>は実際に出力するテンプレートを指定する。</p>

<p>次に、<code>my-alert-button</code>コンポーネントをライブコーディングする。</p>

<p></p><pre class="crayon-plain-tag">import {Component} from 'angular2/core';

@Component({
  selector: 'my-alert-button',
  templateUrl: '/src/components/alert-button.component.html',
})
export class AlertButtonComponent {
}</pre><p></p>

<p></p><pre class="crayon-plain-tag">&lt;button&gt;Click me!&lt;/button&gt;</pre><p></p>

<p>作成したコンポーネントdirectivesに指定し、実際に利用する。</p>

<p></p><pre class="crayon-plain-tag">import {Component} from 'angular2/core';
import {AlertButtonComponent} from './alert-button.component';

@Component({
  selector: 'my-app',
  templateUrl: '/src/components/app.component.html',
  directives: [AlertButtonComponent],
})
export class AppComponent {
}</pre><p></p>

<p></p><pre class="crayon-plain-tag">&lt;h1&gt;My first Angular2 app!&lt;/h1&gt;
&lt;my-alert-button&gt;&lt;/my-alert-button&gt;</pre><p></p>

<p>これは、ボタンを押すとアラートを発生させる処理をコンポーネントとして実装した例である。</p>

<h4>特徴その３：ちょっとキモい</h4>

<p>テンプレートのシンタックスがキモい。例えば、クリックイベントを補足する処理は、以下のように、<code>(click)="onClick()"</code>と記載し、対応するイベントハンドラは<code>onClick()</code>としてコンポーネント内に記述する。</p>

<p></p><pre class="crayon-plain-tag">&lt;button (click)="onClick()"&gt;Click me!&lt;/button&gt;</pre><p></p>

<p></p><pre class="crayon-plain-tag">import {Component} from 'angular2/core';

@Component({
  selector: 'my-alert-button',
  templateUrl: '/src/components/alert-button.component.html'
})
export class AlertButtonComponent {
  onClick(): void {
    window.alert('Hello!');
  }
}</pre><p></p>

<h4>特徴その４：Angularっぽさ</h4>

<p>Angular2とAngular1はかなり違うが、似通っているところもある。例えば、サービス/DI/ディレクティブなど用語や概念を引き継いでいる。例として、<code>loadData()</code>というstring型の配列を返すサービスを作る。</p>

<p></p><pre class="crayon-plain-tag">import {Injectable} from 'angular2/core';

@Injectable()
export class MyService {
  loadData(): string[] {
    return ['a', 'b', 'c'];
  }
}</pre><p></p>

<p>サービスをDIする場合は、事前準備として<code>providers</code>でサービスを指定する。実際にDIするためには、<code>AppComponent</code>クラスのコンストラクタに指定する必要がある。</p>

<p></p><pre class="crayon-plain-tag">import {Component} from 'angular2/core';
import {AlertButtonComponent} from './alert-button.component';
import {MyService} from '../services/my.service';

@Component({
  selector: 'my-app',
  templateUrl: '/src/components/app.component.html',
  directives: [AlertButtonComponent],
  providers: [MyService]
})
export class AppComponent {
  private data: string[];

  constructor(private myService: MyService) {
    this.data = myService.loadData();
  }
}</pre><p></p>

<h4>特徴その５：やっぱりキモい</h4>

<p>テンプレートでは、以下の様な記法を要素内に記述していく。</p>

<p><code>(),[],[()],#,*</code></p>

<p>全力を出すとこんな感じだ。だいぶキモい。</p>

<p><code>&lt;input *ngif="alive" [(ngMode)]="name" #name&gt;</code></p>

<p>例として、テンプレート内でループ処理を実装してみる。</p>

<p></p><pre class="crayon-plain-tag">&lt;h1&gt;My first Angular2 app!&lt;/h1&gt;
&lt;my-alert-button&gt;&lt;/my-alert-button&gt;

&lt;ul&gt;
  &lt;li *ngFor="#item of data"&gt;{{item}}&lt;/li&gt;
&lt;/ul&gt;</pre><p></p>

<p>テンプレートは外部ファイル指定するのではなく、バッククォートで囲み、Component定義内に直接HTMLやCSSを記載することも可能。また、コンポーネントはCSSをカプセル化（そのコンポーネント内に閉じる）するので、コンポーネントのスタイルは外部に影響を与えない。</p>

<h2>Angular2を始めたらあなたが出会うであろう１１のこと</h2>

<p>TechFeedのモバイルアプリ版を現在開発していて、その開発でAngular2を使っている。その開発経験を基に感じたことを時系列で取り上げる。</p>

<p><a href="https://techfeed.io/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">TechFeed -テクノロジー情報に特化した情報キュレーションサービス-</a></p>

<h3>その1:ハードル高くない？</h3>

<p>使うにあたっての前提技術が多い（TypeScriptやモジュールバンドラー、RxJS）ので、当初ハードルが高そうだと感じた。前提技術が多すぎるように感じるからだ。</p>

<ul>
<li>TypeScript</li>
<li>モジュールバンドラー</li>
<li>RxJS</li>
<li>もちろんAngular2</li>
</ul>

<p>でも、意外とそうでもなかった。なぜか？</p>

<ul>
<li>Angular1の文脈を引き継いでいる（1系やったことがある人は学習コスト低め）</li>
<li>TypeScriptはJavaっぽい（もともとJava屋の人は親しみやすい）</li>
<li>RxJSは最初から詳しく知っている必要なし</li>
<li>Webpackの調整が一番時間がかかった（でも、だれか一人がやればいいのであまり気にしない）</li>
</ul>

<h3>その2:言語はどれを選ぶ？</h3>

<p>個人的には、TypeScript一択ではないかと考える。ドキュメントが完備されていて、型があり、デコレーターが使えるのが嬉しい。JavaScriptやBabelも止めはしないが、きっとTypeScriptで書くほうが楽だ。</p>

<h3>その3:モジュールバンドラーは何にする？</h3>

<p>TypeScriptを選ぶとモジュールバンドラーが必須。TechFeedでは、実績豊富等の理由からWebpackを選択した。Angular2の公式ではSystem.jsというものが使われているが、後発であり情報が少なめだったため、採用しなかった。</p>

<h3>その4:エディタは何にする？</h3>

<p>TypeScript対応のエディタやIDEは、AtomやSublime、WebStormなどいくつかある。白石は今のところAtomを使っている。</p>

<h3>その5:テンプレートをどこに書く？</h3>

<p><code>@Component</code>に直接埋め込む方法、URLで外部ファイルにする方法のほか、Webpackを使えばrequireでHTMLファイルを埋めこむこともできる。３つの方法を比較するとWebpack利用が一番柔軟性があるが、個人的には、コンポーネントとテンプレートファイルがひとまとまりになるので、埋め込み方式もわかりやすいと思う。</p>

<h3>その6:テンプレートがキモい</h3>

<p>これは慣れるしかない。ただ、慣れるには順序がある。以下のように、Angular2が指定する新しいメンタルモデルを理解すれば、少しは楽になる。</p>

<ul>
<li>こいつはHTMLじゃない。HTML Plusだ</li>
<li>タグの属性とプロパティはそもそも似て非なるもの</li>
<li><code>[]</code>は属性ではなくプロパティを指している</li>
<li>属性ってやつは、プロパティの初期化にすぎない</li>
</ul>

<h3>その7:Sassを使いたい</h3>

<p>モジュールバンドラーの機能を駆使すれば、Sass/Less等もコンポーネントで利用することができる。Webpack側でSassのコンパイル設定を行っておけば、scssファイルをコンポーネントでrequireするだけで利用可能。</p>

<h3>その8:RxJSとのつきあい方</h3>

<p>RxJSはリアクティブプログラミング用ライブラリである。Angular2はHTTPやEventEmitterなどの頻出APIがRxJS前提（Observable利用前提）である。ObservableはES7にも提案されているため、この機会に勉強するのは良いかもしれない。なお、Angular2はRxJS５（beta）を利用している。</p>

<h3>その9:ページネーションしたい</h3>

<p>よくあるユースケースだが世界中が現在実装方法を模索中。TechFeedでは、Observableの簡単なラッパーを作った。もう少し使い勝手を良くしてOSSで公開したいと考えている。</p>

<h3>その10:UIフレームワークを使いたい</h3>

<p>TechFeedでは、Ionic2を採用した。Ionic2はAngular2で完全にリライトされているので、Angular2開発の参考にもなる。その他にも、Angular2対応のUIフレームワークとして、Onsen UI2.0や、angular-material2、ng2-bootstrap等がある。</p>

<h3>その11:コンポーネント設計</h3>

<p>コンポーネントの粒度や振る舞い、状態をどこに配置するかは、現在熱い話題。<a href="https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.wsd00zwq4" target="-blank" data-wpel-link="external" rel="follow external noopener noreferrer">Presentational and Container Component</a>という議論の土台があるが、これがあるからといって全て解決するわけではないので、やはり悩ましい。（全て外部に移譲するのか？面倒くさくない？…等） 個人的に唯一の正解は、「必要になるまで分割するな」だと考えている。</p>

<h1>セッションをもっと詳しく知りたい方は？</h1>

<p>以上で、セッションの書き起こしは終了です。<br />
白石俊平氏のセッション資料はこちらで公開されています。</p>

<iframe src="//www.slideshare.net/slideshow/embed_code/key/sqJvihresqQt7F" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>

<div style="margin-bottom:5px"> <strong> <a href="https://html5experts.jp//www.slideshare.net/shumpei/angular2-59809652" title="Angular2実践入門" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Angular2実践入門</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/shumpei" data-wpel-link="external" rel="follow external noopener noreferrer">Shumpei Shiraishi</a></strong> </div>

<p><BR>セッション動画もYoutubeで公開されているので、ぜひご覧ください！</p>


<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="560" height="315" src="https://www.youtube.com/embed/4QVMhM75XK8?start=7410" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>


<p>※白石俊平氏の講演開始時間から再生されます</p>
]]></content:encoded>
			</item>
		<item>
		<title>HTML5 Experts.jp 2015年の年間読まれた記事ランキングTOP20！</title>
		<link>/yusuke-naka/18015/</link>
		<pubDate>Mon, 28 Dec 2015 07:47:33 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[HTML5 Experts.jp]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">/?p=18015</guid>
		<description><![CDATA[日本初のHTML5技術専門サイト「HTML5 Experts.jp」も開設から2年5カ月が経ちました。2015年も2014年に引き続き、エキスパート・コントリビューターの方々に、ホットな技術トレントをタイムリーに、記事と...]]></description>
				<content:encoded><![CDATA[<p>日本初のHTML5技術専門サイト「HTML5 Experts.jp」も開設から2年5カ月が経ちました。2015年も2014年に引き続き、エキスパート・コントリビューターの方々に、ホットな技術トレントをタイムリーに、記事として取り上げていただきました。また、白石編集長と豪華なパネリストによる様々な対談企画や、当メディアをネタにしたパフォーマンス改善企画等、新しい試みにも挑戦してきました。皆様、お楽しみいただけましたでしょうか？</p>

<p>今年最後の記事は、記事公開後１週間の閲覧数（PV）をもとに、2015年の年間読まれた記事ランキングTOP20！をお届けします。</p>

<h2>年間読まれた記事ランキングTOP20！</h2>

<p><strong>＜1位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/15147/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2015/06/DSC04137-207x133.jpg" width="207" height="133" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/15147/" data-wpel-link="internal"> 【及川卓也・清水亮・羽田野太巳・藤村厚夫】すごい人達呼んで「Webは死ぬか？」をマジメに語り合ってもらった（前編）</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜2位＞</strong><br>
<a href="https://html5experts.jp/hokaccha/13301/" data-wpel-link="internal"><img alt="2" src="/wp-content/uploads/2015/03/unnamed-207x148.jpg" width="207" height="148" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/hokaccha/13301/" data-wpel-link="internal">今話題のReact.jsはどのようなWebアプリケーションに適しているか？ Introduction To React─ Frontrend Conference</a></strong><br>
── <a href="https://html5experts.jp/hokaccha/" data-wpel-link="internal">外村 和仁</a></p>

<p><br><br></p>

<p><strong>＜3位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/15207/" data-wpel-link="internal"><img alt="3" src="/wp-content/uploads/2015/06/DSC040331-207x114.jpg" width="207" height="114" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/15147/" data-wpel-link="internal">【及川卓也・清水亮・羽田野太巳・藤村厚夫】すごい人達呼んで「Webは死ぬか？」をマジメに語り合ってもらった（後編）</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜4位＞</strong><br>
<a href="https://html5experts.jp/takazudo/14096/" data-wpel-link="internal"><img alt="4" src="/wp-content/uploads/2015/03/il-floatReplace-207x207.png" width="207" height="207" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/takazudo/14096/" data-wpel-link="internal">理解しておきたい、CSSによるインラインレイアウトの仕組み（inline-block編）Inline Layout─Frontrend Conference</a></strong><br>
── <a href="https://html5experts.jp/takazudo/" data-wpel-link="internal">高津戸壮</a></p>

<p><br><br><br><br><br><br></p>

<p><strong>＜5位＞</strong><br>
<a href="https://html5experts.jp/hiloki/14372/" data-wpel-link="internal"><img alt="5" src="/wp-content/uploads/2015/04/beyondcssarchitecture-207x154.jpg" width="207" height="154" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/hiloki/14372/" data-wpel-link="internal">昨今のCSS設計事情からみるCSS設計のあり方とは</a></strong><br>
── <a href="https://html5experts.jp/hiloki/" data-wpel-link="internal">谷拓樹</a></p>

<p><br><br><br><br></p>

<p><strong>＜6位＞</strong><br>
<a href="https://html5experts.jp/yusuke-naka/15067/" data-wpel-link="internal"><img alt="6" src="/wp-content/uploads/2015/05/DSC03798-207x155.jpg" width="207" height="155" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/yusuke-naka/15067/" data-wpel-link="internal">Microsoftの本気をみた！新しいWebブラウザ「Microsoft Edge」にかける思いとは？</a></strong><br>
── <a href="https://html5experts.jp/yusuke-naka/" data-wpel-link="internal">仲 裕介</a></p>

<p><br><br></p>

<p><strong>＜7位＞</strong><br>
<a href="ht/albatrosary/16824/" data-wpel-link="internal"><img alt="7" src="/wp-content/uploads/2015/08/79686793859202b9371ec01cdd197c6e-207x120.png" width="207" height="120" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/albatrosary/16824/" data-wpel-link="internal">【速攻レビュー】よりモバイルフレンドリーになった「Twitter Bootstrap v4」</a></strong><br>
── <a href="https://html5experts.jp/albatrosary/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">佐川 夫美雄</a></p>

<p><br><br></p>

<p><strong>＜8位＞</strong><br>
<a href="https://html5experts.jp/yoshikawa_t/14459/" data-wpel-link="internal"><img alt="8" src="/wp-content/uploads/2015/04/avr-9-207x134.jpg" width="207" height="134" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/yoshikawa_t/14459/" data-wpel-link="internal">フレームワーク対決！Angular VS React仮想パネルディスカッション</a></strong><br>
── <a href="https://html5experts.jp/yoshikawa_t/" data-wpel-link="internal">吉川 徹</a></p>

<p><br><br></p>

<p><strong>＜9位＞</strong><br>
<a href="https://html5experts.jp/t32k/13504/" data-wpel-link="internal"><img alt="9" src="/wp-content/uploads/2015/03/01-207x155.png" width="207" height="155" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/t32k/13504/" data-wpel-link="internal">「StyleStats」を活用してCSSを評価する、Evaluating CSS─Frontrend Conference</a></strong><br>
── <a href="https://html5experts.jp/t32k/" data-wpel-link="internal">石本 光司</a></p>

<p><br><br></p>

<p><strong>＜10位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/15034/" data-wpel-link="internal"><img alt="10" src="/wp-content/uploads/2015/05/28-207x155.jpg" width="207" height="155" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/15034/" data-wpel-link="internal">スクエニのデモすごかった！HoroLensも、Edgeも！見どころ多すぎで長文失礼！- Microsoft de:code基調講演後半レポート</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜11位＞</strong><br>
<a href="https://html5experts.jp/miyuki-baba/12239/" data-wpel-link="internal"><img alt="11" src="/wp-content/uploads/2015/01/IMG_5837-207x140.jpg" width="207" height="140" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/miyuki-baba/12239/" data-wpel-link="internal">【UIデザイナー不要説は本当か】現役クリエイターが「UI Crunch」で語った本音とは？</a></strong><br>
── <a href="https://html5experts.jp/miyuki-baba/" data-wpel-link="internal">馬場 美由紀</a></p>

<p><br><br></p>

<p><strong>＜12位＞</strong><br>
<a href="https://html5experts.jp/yusuke-naka/13671/" data-wpel-link="internal"><img alt="12" src="/wp-content/uploads/2015/03/sc1-207x207.png" width="207" height="207" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/yusuke-naka/13671/" data-wpel-link="internal">HTML5 Experts.jpはなぜこんなにパフォーマンスが悪いのか…全てお見せします！ーWebパフォーマンス改善企画（解析編）</a></strong><br>
── <a href="https://html5experts.jp/yusuke-naka/" data-wpel-link="internal">仲 裕介</a></p>

<p><br><br><br><br><br><br></p>

<p><strong>＜13位＞</strong><br>
<a href="https://html5experts.jp/takazudo/17355/" data-wpel-link="internal"><img alt="13" src="/wp-content/uploads/2015/10/Ecma_RVB-003-207x81.jpg" width="207" height="81" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/takazudo/17355/" data-wpel-link="internal"> JavaScriptにもクラスがやってきた！JavaScriptの新しいclass構文をマスターしよう </a></strong><br>
── <a href="https://html5experts.jp/takazudo/" data-wpel-link="internal">高津戸壮</a></p>

<p><br><br></p>

<p><strong>＜14位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/12913/" data-wpel-link="internal"><img alt="14" src="/wp-content/uploads/2015/02/cerebo2-207x150.jpg" width="207" height="150" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/12913/" data-wpel-link="internal">Webエンジニアが、量産品のハードウェアを作るようになるまで─Cerevoの中の人に聞いてみた！</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜15位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/14895/" data-wpel-link="internal"><img alt="15" src="/wp-content/uploads/2015/05/01_isomorphic-207x155.jpg" width="207" height="155" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/14895/" data-wpel-link="internal">乗るしかない！Reactのビッグウェーブに！─isomorphic tokyo meetupに参加してきた </a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜16位＞</strong><br>
<a href="https://html5experts.jp/girlie_mac/12359/" data-wpel-link="internal"><img alt="16" src="/wp-content/uploads/2015/01/paper-chat-cover-207x91.png" width="207" height="91" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/girlie_mac/12359/" data-wpel-link="internal">PolymerでMaterial Designなチャットアプリを作ろう</a></strong><br>
── <a href="https://html5experts.jp/girlie_mac/" data-wpel-link="internal">Tomomi ❤ Imura</a></p>

<p><br><br></p>

<p><strong>＜17位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/16263/" data-wpel-link="internal"><img alt="17" src="/wp-content/uploads/2015/07/27ef4f814378a843865955cfcae59cb5-207x79.png" width="207" height="79" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/16263/" data-wpel-link="internal">『現実世界をWeb化する』「Physical Web」そして「Eddystone」について詳しく聞いてきた！</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal"> 白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜18位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/12370/" data-wpel-link="internal"><img alt="18" src="/wp-content/uploads/2015/01/DSC08246-207x137.jpg" width="207" height="137" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/12370/" data-wpel-link="internal">【Webデザイナー必読】IoT時代のデザイン思考を探る─久下玄×秋葉秀樹 デザイナー対談</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">白石 俊平</a></p>

<p><br><br></p>

<p><strong>＜19位＞</strong><br>
<a href="https://html5experts.jp/yusuke-naka/14364/" data-wpel-link="internal"><img alt="19" src="/wp-content/uploads/2015/04/sc17-207x154.png" width="207" height="154" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/yusuke-naka/14364/" data-wpel-link="internal">ユーザーの期待に応えるクックパッドのUI/UXーWDF Vol.17 with HTML5 Experts.jp「アクセシビリティとUX」</a></strong><br>
── <a href="https://html5experts.jp/yusuke-naka/" data-wpel-link="internal">仲 裕介</a></p>

<p><br><br><br></p>

<p><strong>＜20位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/15016/" data-wpel-link="internal"><img alt="20" src="/wp-content/uploads/2015/05/02-207x155.jpg" width="207" height="155" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/15016/" data-wpel-link="internal">トヨタCIOが来たりて熱く語る！Microsoft de:code基調講演前半レポート</a></strong><br>
── <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">白石 俊平</a></p>

<p><br><br><br><br></p>

<p>※集計対象期間：2015/1/1 &#8211; 2015/12/28<br />
※集計方法：集計対象期間中に公開された全ての記事の公開後1週間のPVをカウントしランキング付け</p>

<h2>【番外編】HX今年の顔</h2>

<p>HTML5 Experts.jpには、<a href="https://html5experts.jp/author/" target="_blank" data-wpel-link="internal">エキスパート・コントリビューターの方々紹介ページ</a>があります。筆者の思いつきですが、紹介ページの中で今年もっともアクセスされたエキスパート・コントリビュータートップ３を集計してみました。</p>

<p>題して、<strong>HX今年の顔!</strong>
結果は以下のとおりです。
編集長である白石を筆頭に、よく記事を書いてくださる人気ライターである、佐川さん、泉水さんが続きます。</p>

<p><strong>＜1位＞</strong><br>
<a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal"><img alt="1" src="/wp-content/uploads/2015/01/bf985f8ff1bf6f607fcd1950db7ecac7-66x66.jpg" width="66" height="66" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="internal">白石 俊平 編集長</a></strong><br></p>

<p><br><br></p>

<p><strong>＜2位＞</strong><br>
<a href="https://html5experts.jp/albatrosary/" data-wpel-link="internal"><img alt="2" src="/wp-content/uploads/2014/04/1ad3ae5f63906ed3847d1e23fc18bc10-66x66.png" width="66" height="66" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/albatrosary/" data-wpel-link="internal">エキスパート 佐川 夫美雄 さん</a></strong><br></p>

<p><br><br></p>

<p><strong>＜3位＞</strong><br>
<a href="https://html5experts.jp/1000ch/" data-wpel-link="internal"><img alt="3" src="/wp-content/uploads/2015/01/11e7cb5ca578e9237ed3f46e625536c0-66x66.jpg" width="66" height="66" class="alignleft size-full"></a>
<strong><a href="https://html5experts.jp/1000ch/" data-wpel-link="internal">エキスパート 泉水 翔吾 さん</a></strong><br></p>

<p><br><br><br><br></p>

<h2>来年もよろしくお願いします！</h2>

<p>HTML5 Experts.jpは2015年も多くの方々にご愛読いただきまして、執筆陣・編集部共々感謝しています。ありがとうございました。来年も引き続き宜しくお願いいたします。</p>
]]></content:encoded>
			</item>
		<item>
		<title>Web技術の最新動向と未来を知る！〜Leading the way to W3C TPAC 2015〜【TPAC紹介編】</title>
		<link>/yusuke-naka/16710/</link>
		<pubDate>Wed, 21 Oct 2015 08:00:15 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Eddystone]]></category>
		<category><![CDATA[Physical Web]]></category>
		<category><![CDATA[TPAC2015]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">/?p=16710</guid>
		<description><![CDATA[皆さん、来週2015年10月26日〜30日の5日間、W3C Technical Plenary / Advisory Committee Meetings Week(TPAC)というイベントが開催されるのをご存知ですか？...]]></description>
				<content:encoded><![CDATA[<p>皆さん、来週2015年10月26日〜30日の5日間、<a href="http://www.w3.org/2015/10/TPAC/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">W3C Technical Plenary / Advisory Committee Meetings Week(TPAC)</a>というイベントが開催されるのをご存知ですか？</p>

<p>TPACはWebの標準化団体である<a href="http://www.w3.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">W3C</a>が年一回開催する全体会合です。今年はその会合がなんと、札幌で開催されます。最先端のWeb標準に関する様々な議論が日本で交わされること記念して、TPACの魅力を伝えるとともに、Web標準の今をわかりやすく紹介するイベント「Leading the way to W3C TPAC 2015」が、8月終わりに開催されました。テーマは「Webの未来の肌触りを感じよう」。</p>

<p>来週TPACに参加される方もそうでない方も、全ての方に改めてWeb標準に興味関心を持っていただきたいと考え、そのイベントの模様をレポートします！</p>

<h2>はじめに</h2>

<p>イベントはW3C Keioサイトマネージャーの中村修氏の挨拶から始まりました。
<a href="https://html5experts.jp/wp-content/uploads/2015/08/nakamura_sensei.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/08/nakamura_sensei-300x225.jpg" alt="中村修氏" width="300" height="225" class="alignright size-medium wp-image-16810" srcset="/wp-content/uploads/2015/08/nakamura_sensei-300x225.jpg 300w, /wp-content/uploads/2015/08/nakamura_sensei.jpg 640w, /wp-content/uploads/2015/08/nakamura_sensei-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h4>W3CとIETFの関わり</h4>

<p>今年は、Web標準を作るW3CのTPACと、インターネットプロトコルの標準を作るIETFが、それぞれ10月と11月に日本で開催される。この2つの会議が同じ時期に同じ国で行われることは歴史的にみても初めての試みだ。例えば、Webブラウザ上でP2Pによる通信を実現するWebRTCを例にとると、関連するプロトコルの議論はIETF、APIやアーキテクチャの議論はW3Cで議論が進められており、今や両者は密接に関わっている。そのため、今回のような取り組みは非常に重要な意味を持つ。また、IETFとW3Cが作る標準は「オープン標準」であることが最も重要なこと。みんなが自由にソフトウェアを書いて、その上で同じく自由に新しいサービスを作っていけるように、そのための基盤作っていく作業をIETFとW3Cは日々やっている。そこを理解してほしい。</p>

<h2>TPAC2015の歩き方</h2>

<p>最初のセッションはHTML5 Experts.jpのエキスパートでもある<a href="https://html5experts.jp/myakura/" target="_blank" data-wpel-link="internal">矢倉眞隆氏</a>による「W3Cの歩き方」です。矢倉氏は以前、W3Cメンバーであるミツエーリンクスに所属しており、そこで標準活動を積極的に行っていた経歴を持ち、2007年からほぼ毎年TPACに参加しているそうです。
<a href="https://html5experts.jp/wp-content/uploads/2015/08/yakura_san.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/08/yakura_san-300x225.jpg" alt="矢倉氏" width="300" height="225" class="alignright size-medium wp-image-16812" srcset="/wp-content/uploads/2015/08/yakura_san-300x225.jpg 300w, /wp-content/uploads/2015/08/yakura_san.jpg 640w, /wp-content/uploads/2015/08/yakura_san-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h4>W3Cの情報ってどうやって収集するの</h4>

<p>W3Cの標準化に関する活動の様子を知る手段としては、<a href="https://lists.w3.org.Achives/Public/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">「メーリングリスト」</a>、<a href="https://github.com/w3c" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">「GitHub」</a>、「F2Fミーティング」の3種類がある。中でも今はGitHubでの議論が活発。Issuesを活用し様々なトピックについて議論がなされているため、議論に加わりたい方にはオススメ。気軽にコメントやPRができる。F2Fミーティングは、各ワーキング・グループ毎にTPAC以外で、年2回以上は開催されており（グループごとに差がある）、コミュニケーションが密に取れるという意味では大変重要な役割を担っている。例えば、CSSのワーキング・グループでは、図形に関する議論が多いため、F2Fでプロジェクターを見ながら議論することで、より捗る傾向にある。</p>

<h4>TPAC2015ではどのようなことが行われるのか</h4>

<p>TPACはW3Cの全体会合（TECHNICAL PLENARY）、運営会議（ACミーティング）、F2Fミーティング（グループミーティング）で構成されており、年に1回実開催される。スケジュールやどのようなグループが議論を行うかは、<a href="http://www.w3.org/2015/10/TPAC/schedule.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">公式サイト</a>に掲載されている。</p>

<p>中でも注目は、水曜日に開催される「TECHNICAL PLENARY DAY」だ。これは、アンカンファレンス形式で進められる。TPACの参加者自身が喋りたい内容をその日の朝に出し合い、早い者勝ちで予め用意されているミニセッション枠を確保する。他の参加者たちは好きなセッションに参加可能である。これは、各グループの垣根を超えたコミュニケーションを促進することで、イノベーションを促進する狙いがある。</p>

<h4>なぜTPACに参加するのか</h4>

<p>標準化に関する内容は、Webで簡単に手に入る時代になった。この時代に、あえてTPACに行く理由はなにか？開発者目線のTPACは、ブラウザベンダにこのようなAPIを実装してほしい、ここの部分が使いにくいので変えてほしい等、開発者の声を積極にアピールする場になっている。また、直接あって話がしたい、発表したい、他の開発者と差を付けたいなど、野心的な想いを持った開発者も多い。</p>

<h4>これからの標準化と開発者の関わり方</h4>

<p>最近では、ブラウザベンダも標準をかなり意識し始めている。標準じゃないと実装しないという風潮になりつつある。そして、標準化の現場も変わりつつある。これまで標準化の場で作り出されるAPIは、開発者からの要望に基づいたハイレベル（高機能）なものが多かった。そのため、新しく出てくる様々なユースケースに対応できなかった。（対応に時間がかかっていた）今後は、様々なユースケースに短期間で対応できるように、ブラウザで扱える範囲にはなるが、比較的ローレベル（低機能）なAPIの標準化が主流になる。それを組み合わせることで、開発者は様々なユースケースに迅速に対応できる。（いわゆるExtensible Webの流れ）また、JQueryのように、ローレベルなAPIを開発者自らがラッパーしてわかりやすいAPIを定義するということが、増えてくるだろうと期待もされている。</p>

<h2>Developer Meetup in Sapporoが開催されます！</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/dev_meetup_1.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/dev_meetup_1-300x225.jpg" alt="Developer Meetup in Sapporoの紹介" width="300" height="225" class="alignright size-medium wp-image-17066" srcset="/wp-content/uploads/2015/09/dev_meetup_1-300x225.jpg 300w, /wp-content/uploads/2015/09/dev_meetup_1.jpg 640w, /wp-content/uploads/2015/09/dev_meetup_1-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>次のセッションは、TPAC2015の開催に合わせて札幌で開催される「Developer Meetup in Sapporo」の紹介です。登壇は、このイベントをホストするNTTコミュニケーションズの本間咲来（さっくる）氏。</p>

<p>TPAC2015は参加条件があるため、一般の開発者が参加するにはちょっとハードルが高いイベント。そこで、TPAC2015の為に来日する海外のエキスパートと日本のエンジニアの交流の場として、TPAC2015初日（10/26）に<a href="http://www.w3.org/Consortium/Hosts/Keio/meetup-sapporo" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">「Developer Meetup in Sapporo」</a>が開催されます。会場はW3Cと同じ会場。展示やトークセッション、懇親会が企画されていて通訳も用意されるそうです。まだ<a href="https://www.eventbrite.com/e/w3c-developer-meetup-in-sapporo-tickets-18509843440" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">参加登録</a>を受け付けているようなので、興味がある方は是非参加してみては？（参加は無料です）</p>

<p>また、イベント開催に合わせて、クリプトン・フューチャー・メディア株式会社主催の<a href="https://opendata.doorkeeper.jp/events/30873" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">北海道オープンデータハッカソン</a>が10/17に開催されました。ハッカソンの優秀者の作品はDevelopers Meetupで展示されるそうです。</p>

<div style="width:300px; float:left;">
<a href="https://html5experts.jp/wp-content/uploads/2015/09/dev_meetup_3.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/dev_meetup_3-300x225.jpg" alt="Developer Meetup in Sapporo" width="300" height="225" class="aligncenter size-medium wp-image-17075" srcset="/wp-content/uploads/2015/09/dev_meetup_3-300x225.jpg 300w, /wp-content/uploads/2015/09/dev_meetup_3.jpg 640w, /wp-content/uploads/2015/09/dev_meetup_3-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="width:300px; float:right;">
<a href="https://html5experts.jp/wp-content/uploads/2015/09/dev_meetup_4.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/dev_meetup_4-300x225.jpg" alt="アイディアソン・ハッカソン" width="300" height="225" class="alignright size-medium wp-image-17078" srcset="/wp-content/uploads/2015/09/dev_meetup_4-300x225.jpg 300w, /wp-content/uploads/2015/09/dev_meetup_4.jpg 640w, /wp-content/uploads/2015/09/dev_meetup_4-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a>
</div>

<div style="clear:both;">
</div>

<p>※写真はイベント開催時（8月末）のものです
<br></p>

<h2>Eddystoneで始まるPhysical Webの世界</h2>

<p>ここからは、ゲストスピーカーによる最新のWeb技術に関する、テクニカルセッションが続きます。</p>

<p>最初のセッションはリクルートテクノロジーズの加藤亮氏。加藤氏は<a href="https://html5experts.jp/shumpei-shiraishi/16263/" target="_blank" data-wpel-link="internal">以前当メディアで取材したPhysical Webのエキスパート</a>です。このセッションでは、Physical Webをテーマに、Googleが7月に発表したばかりの標準規格である、Eddystoneについて解説していただきました。
<a href="https://html5experts.jp/wp-content/uploads/2015/09/kato_san.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/kato_san-300x225.jpg" alt="加藤亮氏" width="300" height="225" class="alignright size-medium wp-image-17095" srcset="/wp-content/uploads/2015/09/kato_san-300x225.jpg 300w, /wp-content/uploads/2015/09/kato_san.jpg 640w, /wp-content/uploads/2015/09/kato_san-207x155.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h4>Eddystoneとはなにか？</h4>

<p>EddystoneはGoogleが7月に発表したBeacon Platformを構成するもので、ビーコンの規格。ビーコンは、フレームと呼ばれるデータを定期的にブロードキャストするもので、この規格では、ビーコンデバイスの振る舞いや、発信するパケットのフォーマットを規定している。Googleはオープン・スタンダードを提唱している。</p>

<p>Eddystoneには3つのフレーム（Eddystone-TLM、Eddystone-UID、Eddystone-URL）がある。Eddystone-TLMは、ビーコンの管理情報を送信するもので、バッテリ電圧や温度、起動後の経過時間、パケット送信料などを送る。重要なのは、Eddystone-UIDとEddystone-URLの方。</p>

<h4>Eddystone-UID</h4>

<p>Eddystone-UIDは、NamespaceとInstanceIDと呼ばれる固有IDを送信します。ビーコン受信側では、Namespaceを見て自分のサービスのビーコンかどうかを判断し、InstanceIDを利用して複数のビーコンをまたがった移動などを検知することができる。iBeacon的な用途をカバーするする、洗練されたオープン・スタンダードな仕様だといえる。</p>

<h4>Eddystone-URL</h4>

<p>Eddystone-URLは、Physical WebのおけるURIBeaconのことであり、NamespaceとInstanceIDの代わりにURLを送信する。小さいパケットの中にURLを載せるための工夫がなされているほか、長いURLは短縮URLを使うといった配慮が必要。これは、いわゆるPhysical Webの世界を現実のモノにするためのモノで、実験フェーズから実践フェーズへの移行を象徴付ける存在である。</p>

<h4>Eddystone-URLはビーコンの新たなエコシステムを作る</h4>

<p>一番の醍醐味は近接通信をサービスに活用できること。Eddystone-URLを使えば、ビーコンからBluetooth Low Energy（以下、BLE）でURLをブロードキャストできる。近くにいるスマホは、複数のビーコンから受信したURLを元にOGPなどを収集、リスト表示してユーザに提示することができる。</p>

<p>URLが必ずしも必要かといえばそうではなく、UIDとURLの変換テーブルをもったスマホアプリを独自に作れば同じようなことができる。これは今までのBeacon（iBeaconやEddystone-UID）のエコシステムで、独自に設置したビーコンとそれ専用のスマホアプリを配布し使ってもらうというもので、開発費もかかり、ユーザにビーコン毎に別のスマホアプリを導入してもらう必要があり、ハードルが高かった。</p>

<p>Eddystone-URLを利用すれば、URLという共通のフォーマットでデータのやり取りができるため、スマホには標準準拠アプリ（例えばWebブラウザ）を1つ入れておけばよく、コンテンツ提供側はビーコンとWebコンテンツを用意すればよい。これは、標準規格の上で様々なコンテンツが充実したWebのエコシステムによく似ており、ビーコンにおける新たなエコシステムと言ってもいい。今後周辺ビジネス含めて新たな競争が生まれる可能性を秘めている。つまり、Eddystone-URLはただの機能的なイノベーションの話ではなく、プラットフォームとしての意味合いが強いと言える。</p>

<h4>すぐに使えるのか</h4>

<p>もともとPhysical Webと言われていたこの技術であるが、7月にGoogleがBeacon Platformを正式発表したことで、実験フェーズから実践フェーズに移行したといってもいい。Eddystone-URL対応ビーコンデバイスも出始めており、既存のiBeaconでもファームウェアのアップデートで対応できるものもある。（例：<a href="http://estimote.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Estimote</a>）</p>

<p>また、Beacon Platform発表のすぐ後にChrome（最新iOS）がPhysical Webに対応した。Physical Webの機能をONにすれば受信したURLをウィジェットにリストアップすることが可能で、もちろんEddystone-URLからの情報を受けることもできる。まだ実験的な対応であることは否めないが、普及に向けた第一歩であることは間違いない。尚、本命はGoogle Nowで活用したいのではないかと考える。キラーアプリの登場が普及の鍵を握っている。</p>

<h4>Web開発者が考えなければならないこと</h4>

<p>サービス提供側としては、ビーコンを活用する関係でリアル・ワールドを考慮したサービス設計（UI/UXデザイン）が必要になる。例えば、スマホは基本的にはインポケットデバイスである。ビーコンの情報を受信してもユーザがスマホを見てくれなければ意味がない。ユーザが自然にスマホを見るような環境に上手くビーコンを配置したり（バス停やレストラン等）、サイネージなどと組み合わせて、歩いているユーザを立ち止まらせるような仕掛けを合わせて考えなければならない。</p>

<h4>今後の展望</h4>

<p>近接通信を活用したPhysical Webの普及で、WebブラウザからIoTデバイスへのダイレクトアクセスという需要が出てくる可能性がある。今でもWebBluetoothやWebNFCの議論があるが、FirefoxOSなどのWebOSで使えるようにすることが主目的となっている。今後、近接通信を前提とするWebサービスを作りたいという要望が出てくれば、純粋なWebブラウザ上のWebアプリケーションからもこれらの機能が必要となってくる。そして、これらの機能が整備されると、ビーコンにかぎらず、他の様々なIoTデバイスや近接通信機器とのIFとなり得るため、デバイスが普及した暁には、Webの大きなアドバンテージになっているはずである。</p>

<h4>発表資料</h4>

<p>加藤氏の発表資料はこちらで公開されているので、ぜひご覧ください。</p>

<div class="aligncenter">
<iframe src="//www.slideshare.net/slideshow/embed_code/key/2VfFCFngpKNWti" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://html5experts.jp//www.slideshare.net/recruitcojp/eddystonephysical-web" title="Eddystoneで始まるPhysical Webの世界" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Eddystoneで始まるPhysical Webの世界</a> </strong> from <strong><a href="https://html5experts.jp//www.slideshare.net/recruitcojp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Recruit Technologies</a></strong> </div></div>

<h3>終わりに＆次回予告</h3>

<p>次回は加藤氏に続く3人のゲストスピーカーによるセッションの模様をお伝えします。そして、来週からはじまるTPACでの熱い議論、参加される方は現地で、参加されない方もインターネット等を通して、ぜひウォッチしてみてください！新しい発見があるかもしれません。</p>
]]></content:encoded>
			</item>
		<item>
		<title>SkyWay ScreenShareを使ってWebRTCの画面共有機能を実装しよう</title>
		<link>/yusuke-naka/16445/</link>
		<pubDate>Fri, 28 Aug 2015 00:00:15 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[SkyWay]]></category>
		<category><![CDATA[WebRTC]]></category>
		<category><![CDATA[Webアプリ]]></category>

		<guid isPermaLink="false">/?p=16445</guid>
		<description><![CDATA[連載： WebRTCプラットフォーム ”SkyWay” 入門 (4)連載4回目の今回は、7月28日にリリースされた、SkyWay ScreenShareのチュートリアルをお届けします。 SkyWay ScreenShar...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/skyway-tutorial/" class="series-314" title="WebRTCプラットフォーム ”SkyWay” 入門" data-wpel-link="internal">WebRTCプラットフォーム ”SkyWay” 入門</a> (4)</div><p>連載4回目の今回は、7月28日にリリースされた、<a href="https://github.com/nttcom/SkyWay-ScreenShare" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">SkyWay ScreenShare</a>のチュートリアルをお届けします。</p>

<p>SkyWay ScreenShareは、WebRTCのWebアプリケーションで画面共有を簡単に実装できるライブラリ、画面共有に必要なChrome・Firefox向けのExtensionが簡単に実装できるソースコードが含まれています。</p>

<h1>画面共有機能の概要</h1>

<p>WebRTCの画面共有機能は、ブラウザ画面やPCのデスクトップ画面をリアルタイムで相手に配信できる機能です。</p>

<div id="attachment_16475" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/08/skyway_ss_sc1.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/08/skyway_ss_sc1-640x262.png" alt="Chromeでの画面共有の様子" width="640" height="262" class="size-large wp-image-16475" srcset="/wp-content/uploads/2015/08/skyway_ss_sc1.png 640w, /wp-content/uploads/2015/08/skyway_ss_sc1-300x123.png 300w, /wp-content/uploads/2015/08/skyway_ss_sc1-207x85.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Chromeでの画面共有の様子</p></div>

<p>WebRTCの画面共有機能はChrome 34以上または、Firefox 33以上で利用可能です。</p>

<h4>Chromeでの実装</h4>

<p>画面共有機能は、Chrome 26で初めてブラウザに実装されました。当初は、Chromeの<code>chrome://flags</code>から<code>Enable screen capture support in getUserMedia()</code>というフラグをONにし、<code>getUserMedia()</code>のオプションを指定することで、実現できていました。しかし、セキュリティ上の問題からChrome 34でそのフラグが削除され、代わりにChrome Extensionをインストールするか、Chrome Appsからしか利用できなくなりました。</p>

<h4>Firefoxでの実装</h4>

<p>Firefoxについては、Firefox 33から画面共有機能が実装されています。Firefoxの場合は、Chromeとは方式が異なり、<code>about:config</code>の<code>media.getusermedia.screensharing.enabled</code>という設定を<code>true</code>に設定し、<code>media.getusermedia.screensharing.allowed_domains</code>という設定項目に、画面共有機能を許可するWebサイトのドメインを追加することで利用できるようになります。また、<code>media.getusermedia.screensharing.allowed_domains</code>には、Mozillaが許可したサービスのドメインが予め設定されています。こちらにドメインを追加してもらいたい場合は、<a href="https://wiki.mozilla.org/Screensharing" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">このサイト</a>の下部に掲載されているフォームから申請が可能です。（筆者は申請したことはありませんが、恐らく審査があると思われます）</p>

<h4>標準化の状況</h4>

<p>WebRTCのJavaScriptAPIの標準化はW3Cで行われています。この画面共有機能についても、今年の２月に仕様書が作られて標準化が進められています。仕様書は<a href="http://w3c.github.io/mediacapture-screen-share/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「Screen Capture」</a>です。仕様書についての詳細な解説は割愛しますが、現在、ChromeとFirefoxで実装されている画面共有機能はブラウザベンダごとの独自実装であり、今後実装が変更になる可能性は高いと考えられます。</p>

<h1>SkyWay ScreenShareの使い方〜ビルド編〜</h1>

<p>ここからSkyWay ScreenShareの使い方を説明します。はじめに、<a href="https://github.com/nttcom/SkyWay-ScreenShare/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">github.com/nttcom/SkyWay-ScreenShare</a>からファイル一式をローカル環境にcloneして下さい。また、ここに書いている内容の詳細は<a href="https://github.com/nttcom/SkyWay-ScreenShare/blob/master/README_ja.md" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">README</a>にも掲載していますので、合わせてご覧ください。</p>

<h4>Chrome Extensionの作成</h4>

<p>まずはマニフェストファイルを修正します。JSONファイルのひな形にそって必要な項目を入力して下さい。アイコンファイルも必要です。</p>

<p></p><pre class="crayon-plain-tag">{
  "name": "Your extension name here",
  "short_name": "Your extension short_name here",
  "version": "Your extension version number here",
  "manifest_version": 2,
  "description": "Your extension description here",
  "icons": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  },
  "permissions": [
    "desktopCapture",
    "tabs"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "content_scripts": [{
    "matches": [""],
    "js": ["content.js"],
    "all_frames": true,
    "run_at": "document_end"
  }]
}</pre><p></p>

<p>尚、ここで重要なのは <code>matches</code>です。ここには、このExtensionのりようを許可するWebサイトのURLを記載します。必ずご自身のWebサイトのURLを指定して下さい。ワイルドカードを利用して複数のURLにマッチさせることも可能ですが、その場合は、あなたのExntensionを他のWebサイトで利用される可能性があります。セキュリティ上もよろしくありません。</p>

<p></p><pre class="crayon-plain-tag">例："matches": ["https://*.skyway.io/*"]</pre><p></p>

<p>次にビルドしましょう。SkyWay-ScreenShareではビルド用のgulpタスクとnpm-scriptでエイリアスコマンドを用意しています。SkyWay-ScreenShareディレクトリの直下で、次の２行のコマンドを実行します。npmコマンドは事前に使えるようにしておいて下さい。</p>

<p></p><pre class="crayon-plain-tag">npm install
npm run build-chrome</pre><p></p>

<p>ビルドが完了したら、出来上がったファイルをChromeに読み込ませましょう。<code>chrome://extensions/</code> にアクセスし、<code>デベロッパーモード</code>を有効にします。そして、<code>パッケージ化されていない拡張機能を読み込む</code>をクリックし、以下のディレクトリを指定します。</p>

<p></p><pre class="crayon-plain-tag">SkyWay-ScreenShare/chrome-extension/screenshare_chrome_extension/</pre><p></p>

<p>読み込むと以下のようになります。（この画像はChromeウェブストアからダウンロードしたものが写っています）</p>

<div id="attachment_16513" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/08/skyway_ss_sc2.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/08/skyway_ss_sc2-640x386.png" alt="Chrome Extensionを読み込みます" width="640" height="386" class="size-large wp-image-16513" srcset="/wp-content/uploads/2015/08/skyway_ss_sc2.png 640w, /wp-content/uploads/2015/08/skyway_ss_sc2-300x181.png 300w, /wp-content/uploads/2015/08/skyway_ss_sc2-207x125.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Chrome Extensionを読み込みます</p></div>

<p>また、ディレクトリと同一フォルダにある<code>screenshare_chrome_extension.zip</code>は、Chromeウェブストアにアップロードする際に利用できます。</p>

<p>これでChrome Extensionの作成は完了です。</p>

<h4>Firefox Extensionの作成</h4>

<p><small>（注意）SkyWay-ScreenShareのリポジトリには、「Firefox Add-On」という表記で記載しておりますが、画面共有機能を利用するために作成するモノは、Firefox Extension（拡張機能）となります。Add-OnはFirefoxの拡張機能やテーマ等全ての総称となるため、リポジトリの表記とは異なりますが、本記事中では、Firefox Extensionと表記を統一させて頂きます。</small></p>

<p>Firefox Extensionでは、メインプログラムとパッケージファイルの二つを修正します。まずは、メインプログラムです。</p>

<p></p><pre class="crayon-plain-tag">var pageMod = require('sdk/page-mod');
var self = require('sdk/self');
var __temp = require('chrome');
var Cc = __temp.Cc;
var Ci = __temp.Ci;

var domains_to_add = [''];
var addon_domains = [];
var allowed_domains_pref = 'media.getusermedia.screensharing.allowed_domains';
var enable_screensharing_pref = 'media.getusermedia.screensharing.enabled';

 ~~ 省略 ~~</pre><p></p>

<p>ここでは<code>domains_to_add = [''];</code>に、画面共有機能を有効にするWebサイトのドメインを指定して下さい。指定方法は以下のようになります。</p>

<p></p><pre class="crayon-plain-tag">例：domains_to_add = ['*.skyway.io']</pre><p></p>

<p>次にパッケージファイルを修正します。ここではExtensionの基本情報を入力していきます。ひな形にそって必要な情報を入力して下さい。アイコンファイルも必要です。</p>

<p></p><pre class="crayon-plain-tag">{
    "name": "your_add-on_name_here",
    "title": "Your add-on title here",
    "description": "Your add-on description here",
    "author": "Your add-on author here",
    "version": "Your add-on version number here",
    "license": "Your add-on license here",
    "homepage": "Your add-on homepage url here",
    "icon64": "icon64.png",
    "icon": "icon48.png"
}</pre><p></p>

<p>次にFirefox Extensionのビルドに必要なツール「cfx」をインストールします。インストール方法は<a href="https://dev.mozilla.jp/addon-sdk-docs/dev-guide/tutorials/installation.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">この</a>サイトを参考にして下さい。</p>

<p>ツールのインストールが完了したら、まずはプレビルド（pre build）を行います。ExtensionをビルドするためにはランダムなIDを予めパッケージファイルに記載しておく必要があるため、初回のプレビルドで、パッケージファイルにIDを挿入しています。</p>

<p></p><pre class="crayon-plain-tag">npm install
npm run pre-build-firefox</pre><p></p>

<p>初回のプレビルドでIDが挿入された場合、以下の様なエラーが発生します。これは問題ありません。</p>

<p></p><pre class="crayon-plain-tag">No 'id' in package.json: creating a new ID for you.
package.json modified: please re-run 'cfx xpi'</pre><p></p>

<p>再度以下の通り、ビルドを行って下さい。</p>

<p></p><pre class="crayon-plain-tag">npm run build-firefox</pre><p></p>

<p>ビルドが完了したら、Firefoxに読み込ませて動作確認を行いましょう。<code>about://addons</code>にアクセスし、作成したExtension本体である、<code>SkyWay-ScreenShare/firefox-addon/screenshare_firefox_addon.xpi</code>をドラッグ・アンド・ドロップさせます。</p>

<div id="attachment_16512" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/08/skyway_ss_sc3.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/08/skyway_ss_sc3-640x484.png" alt="Firefox Extensionを読み込みます" width="640" height="484" class="size-large wp-image-16512" srcset="/wp-content/uploads/2015/08/skyway_ss_sc3.png 640w, /wp-content/uploads/2015/08/skyway_ss_sc3-300x227.png 300w, /wp-content/uploads/2015/08/skyway_ss_sc3-207x157.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Firefox Extensionを読み込みます</p></div>

<p>Firefox Extensionの配布は、通常のWebサーバ上に上記xpiファイルを設置し行って下さい。</p>

<p>これでFirefox Extensionの作成は完了です。</p>

<h4>JavaScriptライブラリの作成</h4>

<p>SkyWay-ScreenShareには今まで作成したExtensionを利用するためのJavaScriptライブラリ「screenshare.js」が同梱されています。自分でビルドする場合は、以下のように行って下さい。</p>

<p></p><pre class="crayon-plain-tag">npm install
npm run build-library</pre><p></p>

<p>ビルドに成功すると、以下の通りライブラリが生成されます。</p>

<p></p><pre class="crayon-plain-tag">SkyWay-ScreenShare/dist/screenshare.js
SkyWay-ScreenShare/dist/screenshare.min.js</pre><p></p>

<p>また、ライブラリはCDNでも提供しています。</p>

<p></p><pre class="crayon-plain-tag">&lt;script src="https://skyway.io/dist/screenshare.js"&gt;&lt;/script&gt;
&lt;script src="https://skyway.io/dist/screenshare.min.js"&gt;&lt;/script&gt;</pre><p></p>

<p>最後に、ライブラリの修正や機能追加などは大歓迎です。TypeScriptのソースファイルを同梱していますので、その際はご利用下さい。Pull Reqestもお待ちしています！</p>

<h1>SkyWay ScreenShareの使い方〜アプリ開発編〜</h1>

<p>ExtensionとJavaScriptライブラリの準備ができたところで、同梱している<a href="https://github.com/nttcom/SkyWay-ScreenShare/blob/master/sample" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">サンプルアプリケーション</a>を例に、画面共有機能を使ったアプリの開発方法をご紹介します。</p>

<p>まず、newでオブジェクトを作成します。debugオプションを指定するとコンソールログにデバッグログが出力されます。</p>

<p></p><pre class="crayon-plain-tag">// スクリーンキャプチャの準備
var screen = new SkyWay.ScreenShare({debug: true});</pre><p></p>

<p>次に、<code>startScreenShare()メソッド</code>を利用して、画面共有機能を開始するためのコードを実装していきます。このメソッドの第一引数には、取得する映像の縦横サイズとフレームレートを指定します。第二引数のコールバック関数は、正しく取得できた場合に呼ばれ引数として<code>Stream Object</code>が返ってきます。これをVideo要素に入れてあげれば画面が表示されます。</p>

<p>また、第四引数についてはChromeのみ利用できるオプショナルなコールバック関数で、画面共有が何らかの方法で終了した場合に呼ばれます。Firefoxでは現状終了検知が出来ないため、Chrome限定です。</p>

<p><code>screen.isEnabledExtension()</code> はExtensionが利用しているブラウザで有効かどうか（インストール済みかどうかも含めて）を判定します。</p>

<p></p><pre class="crayon-plain-tag">// スクリーンシェアを開始
$('#start-screen').click(function () {
	if(screen.isEnabledExtension()){
			screen.startScreenShare({
					Width: $('#Width').val(),
					Height: $('#Height').val(),
					FrameRate: $('#FrameRate').val()
			},function (stream){
					$('#my-video').prop('src', URL.createObjectURL(stream));
					if(existingCall != null){
							var _peerid = existingCall.peer;
							existingCall.close();
							var call = peer.call(_peerid, stream);
							step3(call);
					}
					localStream = stream;

			},function(error){
					console.log(error);
			},function(){
					alert('ScreenShareを終了しました');
			});
	}else{
			alert('ExtensionまたはAddonをインストールして下さい');
	}

});</pre><p></p>

<p>次に、画面共有をプログラム側で終了させる場合のコードを実装していきます。現在は終了のための専用メソッドは用意していません。先ほど取得した<code>Stream Object</code>を保持しておき、終了したいタイミングで<code>stop()メソッド</code>を読んで下さい。これで、画面共有が止まります。いずれ、<code>Stream Object</code>の管理機能を実装する予定なので、その時には専用のメソッドを用意します。</p>

<p></p><pre class="crayon-plain-tag">// スクリーンシェアを終了
$('#stop-screen').click(function () {
	localStream.stop();
});</pre><p></p>

<p>アプリ開発方法の紹介は以上です。</p>

<h1>おわりに</h1>

<p>今回は、SkyWay-ScreenShareを使った、WebRTCの画面共有機能の実装方法をご紹介しました。画面共有機能は様々なユースケースで活用できる機能ですので、是非ご自身のアプリケーションに組み込んでみてください！</p>

<p>次回は、同じく7月28日にリリースされたSkyWay-DrivingVehicleについてのチュートリアルをお届けいたします。</p>
]]></content:encoded>
		
		<series:name><![CDATA[WebRTCプラットフォーム ”SkyWay” 入門]]></series:name>
	</item>
	</channel>
</rss>
