#HTML5 Conference
スピーカー ブライアン・バートルズ Mozilla Japan
- マークアップ
- 構文解析
- DOMツリー
- スタイル
- スタイル決定
- レンダーツリー(フレームツリー)
- レイアウト(リフロー)
上記はDevTools(Chromeの場合)のタイムラインで見れる。 Firefoxにはリフローログ?があるらしい。
ブラウザごとに挙動が違う
margin-leftはどのブラウザでもリフローが発生。 transformはどのブラウザっでもリフローが発生しない。
リフローを避けよう
_人人人人人人人人人_
> ブラウザは怠け者 <
 ̄YYYYYYYYY ̄
getComputeStyleよりElement.styleを使う DevToolsで「Show paint rectangle」にチェック GPUレンダリング(レイヤー調査)は、DevToolsで「Show composited layer borders」にチェック
描画を早くするには?
- 領域を狭める
- 描画を軽く(ブラーアニメさせるよりブラー画像をスケールアニメさせる等)
- 描画を飛ばす(?)
要素がアニメしたらブラウザがレイヤー化してくれるが、たまにレイヤー化されない場合がある。 レイヤー化の作業をコストカットするために「will-changeプロパティ」を使用すると手動でレイヤー化できる!
ずっとアニメさせてるとアニメが重くなる(主要スレッドとは別に動かしたい)。 JSによるアニメよりCSSアニメを使おう(コンポジットアニメーション)! Web Animation APIだとJS経由でもコンポジットアニメーションを使用できる!(Chromeのみ。。。)
velocity.jsはjQueryのアニメーションより速いらしい。
スピーカー 黒澤 剛志 株式会社ミツエーリンクス
- セマンティクス(セ↑マンティクス)
- 様々なデバイス・環境でのインタラクション
- 代替コンテンツ
コンポーネント単位でカプセル化(コンポーネントの組み合わせでページを構成)
Polymer、Gaia Components(Firefox OS)等。
Componentsのアクセシビリティが高ければ
- Components利用時に頑張る必要がない
- 使うだけでアクセシビリティが担保される
音で進捗状況を伝える。
- HTML5ネイティブ
- Polymer
- Gaia Components
- 既存要素の拡張(基本的に開発者が何かする必要はない)
- 独自要素の定義(Shadow DOM) 適切なHTML要素を使えるのであればその要素を利用、使えなければWAI-ARIA(ロール:role属性、aria-*属性)を利用する。
※ステートに応じて値も更新すること
<div role="progressbar"
aria-volumemax="100"
aria-volumemin="0"
aria-volumenow="50" >
スピーカーいっぱい
※立ち見が出るほど混んでいた ※他にいいセッションがなかったかみんなパフォーマンスの問題にぶち当たっている?
日本はモバイルのEコマースサイトのパフォーマンス(ダウンロード時間)がアメリカに比べて悪い(遅い)。 アメリカではパフォーマンスのイベント、Velocityなるものがある。
パフォーマンスに関してのマニュアルが標準化しておらず各社で秘伝のタレ化している?
オライリーの某パフォーマンス本(無印)はもはや意味が無い(´・ω・`) 状況は常に変化している。 受託だとJS、CSSの圧縮は無理なところもあるよね。
パフォーマンスは継続して監視する必要がある。 パフォーマンスとは結局のところネットワークに依存してしまうよね。
パフォーマンス管理 === 品質管理
パフォーマンス計測するならアクセスが最も多い午後21時以降で計測する。
- イメージファイルの最適化
- JS、CSSの最適化(圧縮等)
- ネットワークの最適化
- マルチバイトとWebフォント
- レイアウトのデザイン
- モバイル向けWeb
- アニメーション
ちなみに、
- 情報を鵜呑みにせず、必ず計測する
- モバイルだと外部化せずにインラインで埋め込まないと劇的な変化は望めなかったらしい
- アメリカではそもそも画像を使用するサイトが減っているらしい
- ってかアニメーションいる?
- 機能を削ろう(レゴは10,000パーツ→7,000パーツに減らして復活した)
- モバイルはLTEより早くなる可能性は少ないので指定の容量内(デスクトップは1MB、モバイルは100KB)で機能を実装する。
_人人人人人人人人人人人人人人人人人人人人人人人_
> 制限することでクリエイティビティが発揮される <
 ̄YYYYYYYYYYYYYYYYYYYYYYY ̄
スピーカー 河合 良哉 ヤマハ株式会社
- JSで音そのものを作成、加工出来る
- APIについてはPlatform依存がない(ブラウザベンダーで違いは出るかも)
- モジュール(Node)思考(オシレーター、フィルター、ディレイ、コンプレッサー、アナライザー、ゲイン等)
- WebブラウザとMIDI機器を直接接続するためのAPI
- Chromeのみで動作(Platform依存はないのでMac、Windows、Android、Chromebookでも動作する)
- ブラウザ、テキストエディタのみで使用できるハードルの低さ
- 開発言語はHTML、CSS、JS
- コンパイルの必要なし
- 知識、ノウハウを得やすい
- 音楽以外の分野との親和性が高まる
Web Music Developers JPに相談!
スピーカー 谷 拓樹 株式会社Cyber Agent
FB Repo https://t.co/0Et1mBXvBZ
- プロパティの挙動がブラウザごとに違ってキモい(経験でなんとかなる)
- セレクタ名が実はむずい(似たようなモジュールが氾濫する)
- OOCSS
- BEM
- AMCSS(属性セレクタを使用したアプローチ)
さらにSass等のCSSプリプロセッサーでセマンティクスを担保できる ※@extendを使用すれば良いというものでは無いのでCAではあまり使用していないらしい
*** ページをデザインするのではなく、コンポーネント(構成のシステム)をデザインする ***
- ITCSS(逆三角形CSS?)
- コーディングガイド
- スタイルガイド駆動開発
- デザイナとのコミュニケーション
- テストツール
- hologram ← NEW!!
- kss
- styledocco
CSSの中の詳細度を計測するツール? 右肩上がりになるべき。 ヘルスチェックのような位置づけ。 NodeモジュールにあるのでGruntやGulpに取り入れてみてもいいかも。
プロパティ数を調査するツール?
CSSもレンダリングをブロックする。 https://developers.google.com/web/fundamentals/performance/critical-rendering-path/?hl=ja
- クリティカルリソース数最小化
- クリティカルバイト数最小化
- クリティカルパス長の最小化(Google Pagespeedで調査可能)
Above the foldのみインラインに埋め込むとパフォーマンスが上がった実例あり(表示速度が早くなった)
- Web Components
*** すべてのCSSは、提案として書かれるべきだ ***