SlideShare a Scribd company logo
1 of 27
Download to read offline
WebComponentsと 
Polymerを使ってみた 
中澤 祐一 
@y_nakazawa1220
自己紹介 
• Python + Djangoでスマホアプリのバックエンド 
開発 
• ぎーらぼ管理人 
• フロントが苦手(汗) 
• イングレスやりましょう!
WebComponentsと 
Polymer
Google I/O 2014 
報告会
これヤバイんじゃね!
WebComponents 
• 自分で好きなタグが作れる 
• UIのコンポーネント化をして再利用できる 
• なにより便利そう(楽できそう・・)
「購入ボタン」を同一サイト 
で使い回したい 
• 外観 HTML/CSSで書いて 
• ボタンクリック後の操作 をjsで書いて 
• 冗長なコードを書くことになる
解決!!
仕様 
1. HTML Template 
2. Shadow DOM 
3. Custom Elements 
4. HTML imports
それぞれの絡み 
1. HTML Template > コンポーネント化する処理 
2. Shadow DOM > 1.のカプセル化 
3. Custom Elements > 1.を使用する仕組み       (タグの定義) 
4. HTML imports > 1.を呼び出す仕組み
youtubeタグ 
を作ってみた 
(写経してみた・・)
HTML template 
x-youtube.htmlのようなTemplate用のHTMLファイルを作る 
<template id="x-youtube-template"> 
<style type="text/css" media="screen"> 
iframe { 
border: 0; 
} 
</style> 
<iframe width="" height="" src="http://www.youtube.com/embed/" frameborder="0" 
allowfullscreen></iframe> 
</template> 
<script type="text/javascript" src=“js/x-youtube.js"></script>
Shadow DOM 
styleの隠蔽化 
<template id="x-youtube-template"> 
<style type="text/css" media="screen"> 
iframe { 
border: 0; 
} 
</style> 
<iframe width="" height="" src="http://www.youtube.com/embed/" frameborder="0" 
allowfullscreen></iframe> 
</template> 
<script type="text/javascript" src=“js/x-youtube.js"></script>
Custom Elements 
// x-youtube タグを作る 
var XYoutubeProtoType = Object.create(HTMLElement.prototype, { 
createdCallback: { 
value: function() {} 
} 
} 
# registerElement()でCustom Elementを登録する 
var XYoutube = document.registerElement('x-youtube', {prototype: 
XYoutubeProtoType});
HTML imports 
<!DOCTYPE html> 
<html lang="ja"> 
<head> 
<link rel="import" href="/x-youtube.html"> 
</head> 
<body></body> 
! 
<x-youtube video-id="XXXXXXXX"></x-youtube> 
<x-youtube video-id="YYYYYYYY"></x-youtube> 
! 
</html>
こんな感じw
注意点 
• Chrome か Chrome Canaryで 
• chrome://flagsにアクセスして、「試験運用版の 
ウェブ プラットフォームの機能を有効にする。」 
を有効にする
Polymer
ああ、これか!!
What is a Polymer? 
• Web Conponentsを包んだライブラリ 
(Polymer.js) 
• Polyfillがブラウザの未サポートを補ってくれる 
• 既にCustom Elementsが用意されている 
• Templateが作れるDesignerツールがある
Custom Elements I/O 
http://customelements.io
Polymer Designer 
http://www.polymer-project.org/tools/designer/
こんなコードを吐いてくれる 
<link rel="import" href="../core-icon-button/core-icon-button.html"> 
<link rel="import" href="../core-toolbar/core-toolbar.html"> 
<polymer-element name="my-element"> 
<template> 
<style> 
:host { 
position: absolute; 
width: 100%; 
height: 100%; 
box-sizing: border-box; 
} 
・・・ 
</style> 
<core-toolbar id="core_toolbar"> 
<core-icon-button id="core_icon_button" icon="menu"></core-icon-button> 
<div id="div" flex>Toolbar</div> 
</core-toolbar> 
</template> 
<script> 
Polymer('my-element', { 
}); 
</script> 
!
感想・・
自分のフロント嫌い 
(もとい苦手)は直るのか!?
• 使えるコンポーネントが増えてくれば生産性上がり 
そう 
• 自分で作る分には、ちゃんと基本を抑えてないとやっ 
ぱ厳しい 
• まだリファレンス捨てちゃいけないw。
ご清聴ありがとう 
ございました!

More Related Content

What's hot

jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -Hayato Mizuno
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web PlatformMasataka Yakura
 
Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Yuuki Nara
 
「その他」のUI Framework 3選
「その他」のUI Framework 3選「その他」のUI Framework 3選
「その他」のUI Framework 3選Shumpei Shiraishi
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップNaoki Iwami
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話Nakazawa Yuichi
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Kentaro Iizuka
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線yoshikawa_t
 
HTML5 入門
HTML5 入門HTML5 入門
HTML5 入門NOAN
 
情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門Atsushi Tadokoro
 
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~ngi group.
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 
Polymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトPolymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトEiji Kitamura
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発 daisuke-a-matsui
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会Rin Yano
 
Chromeデベロッパーツール
ChromeデベロッパーツールChromeデベロッパーツール
ChromeデベロッパーツールKeiichi Kobayashi
 
初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミングKazuki Miyanishi
 
いちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマいちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマHideki MACHIDA
 

What's hot (20)

jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web Platform
 
Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善
 
「その他」のUI Framework 3選
「その他」のUI Framework 3選「その他」のUI Framework 3選
「その他」のUI Framework 3選
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線
 
HTML5, きちんと。
HTML5, きちんと。HTML5, きちんと。
HTML5, きちんと。
 
HTML5 入門
HTML5 入門HTML5 入門
HTML5 入門
 
情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門
 
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
Polymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトPolymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイト
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
 
Web Components
Web ComponentsWeb Components
Web Components
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会
 
Chromeデベロッパーツール
ChromeデベロッパーツールChromeデベロッパーツール
Chromeデベロッパーツール
 
初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング
 
いちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマいちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマ
 

Similar to WebComponentsとPolymerを使ってみた

20150729 polymer超入門
20150729 polymer超入門20150729 polymer超入門
20150729 polymer超入門Kazuyoshi Goto
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.nextyoshikawa_t
 
Polymerやってみた
PolymerやってみたPolymerやってみた
PolymerやってみたYosuke Onoue
 
Pythonで始めるtoC向けWebサービス入門
Pythonで始めるtoC向けWebサービス入門Pythonで始めるtoC向けWebサービス入門
Pythonで始めるtoC向けWebサービス入門創史 花村
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)Yoshiki Ushida
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Hideki Hashizume
 
GDG Women DevfestW
GDG Women DevfestWGDG Women DevfestW
GDG Women DevfestWTomoko Sato
 
How to django at first
How to django at firstHow to django at first
How to django at firstMaito Kuwahara
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテストTomonori Yamada
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTMLeiji sekiya
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方Yuki Takahashi
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール WeinerをつかってみたMasakazu Muraoka
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会Jumpei Ogawa
 
Angular の紹介
Angular の紹介Angular の紹介
Angular の紹介Neo Xrea
 

Similar to WebComponentsとPolymerを使ってみた (20)

20150729 polymer超入門
20150729 polymer超入門20150729 polymer超入門
20150729 polymer超入門
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
Java Script4
Java Script4Java Script4
Java Script4
 
Angular#Kanazawa
Angular#KanazawaAngular#Kanazawa
Angular#Kanazawa
 
Polymerやってみた
PolymerやってみたPolymerやってみた
Polymerやってみた
 
Firefoxosハンズオン
FirefoxosハンズオンFirefoxosハンズオン
Firefoxosハンズオン
 
Pythonで始めるtoC向けWebサービス入門
Pythonで始めるtoC向けWebサービス入門Pythonで始めるtoC向けWebサービス入門
Pythonで始めるtoC向けWebサービス入門
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
GDG Women DevfestW
GDG Women DevfestWGDG Women DevfestW
GDG Women DevfestW
 
How to django at first
How to django at firstHow to django at first
How to django at first
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTML
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
Client Side Cache
Client Side CacheClient Side Cache
Client Side Cache
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
Angular の紹介
Angular の紹介Angular の紹介
Angular の紹介
 

WebComponentsとPolymerを使ってみた