2015年に引き続いて2016年も。
北千住もーちょっと近くならんかな・・w
なんだかんだずっとホールにいました。
基調講演
W3C/Keio 中村さん
- 画像とか動画でおなじみHDR
- HDRをWebから使えたら・・・?
- こういう視点がこれから必要なのでは
- BigData, AI, IoTなどIT業界のBuzzWord
- でもこれは、Internet・Webの上に成り立ってるもの
- WebはDistributed OSだ!(地球上の)
- なので我々がふだん作ってるのは、OS上の資源
- W3Cの活動範囲の広さそこにつながるもの
- TV(Hybridcast)、車、電子書籍
- 車のインパネもWebに!(なるかも
- e-PubとW3Cの統合
- 縦書きCSS
- Blockchain https://en.bitcoin.it/wiki/Block_chain のような分散システム
- IG (Interest Group)
- WoT Servientアーキテクチャ
Reactの最新動向とベストプラクティス
@koba04 せんせー!
会場のReactを業務で使ってる率はあんまいなかった。
- Reactの採用事例
- 大きいところはあんまり増えてない・・?
Reactでつくるアプリケーション
- State -> View -> Func -> State -> ...
- 宣言的に状態を定義するだけ
- 更新差分はVirtualDOMで吸収
コンポーネントの作り方
- SFC(StatelessFunctionalComponent)
- 基本的にはコレ
- stateやlifecycleフックがない
- React.Component
- Viewに関係ないならstateにいれなくていい
- インスタンスプロパティでいい
- React.PureComponent
- `shouldComponentUpdate`で`props/state`をShallowEqualで見てくれる
- SFCの子への最適化も入るかも?
- パフォーマンスチューニングの時に、計測した上で使えば
- createClass
- 非推奨ーー
- HOC(HigherOrderComponent)
- https://github.com/acdlite/recompose
- `props.children`に関数を渡して拡張するスタイルも
State管理
テスト
- `shallowRender`すればNode環境でもテストできる
- `refs`は使えない
- https://github.com/thejameskyle/react-test-renderer
- 最近できた
その他
Service Worker Deep Dive
Service Wokerとは
- `navigator.serviceWorker.register()`
- ページのリクエストを横取りしたり
- ページが開かれてなくても通知したり
Push Notification
- FCM(Firebase Cloud Messaging / 旧GCM)サーバーから
- C50から、Pushするpayloadにデータを載せられるように
- C52から、 Voluntary Application Server Identificationでサーバー認証が簡単に
Stream
- C52から対応
- でもコードはそこまで楽にはなってない印象
- むしろStreamを逐次返す処理の分だけコードは増える
Unified Media Pipeline
Background Sync
- オンラインになったら○○
- ブラウザ落としてる間にfetch -> pushとか
- UXとしては微妙なのでは・・
Foreign Fetch
- 他のサイトBから自サイトAへのリクエストを横取りできる
- `registerForeignFetch()`
- `origin`と`scope`も指定できる
- ただしレスポンスを差し替えると、CORSに引っかかる
- ただしC54以降でフラグが必要な実験機能
登録方法
- `navigator.serviceWorker.register()`だけでなく
- HTTPのLink headerでも
- link要素でも
- ただしC54以降でフラグが(ry
Origin Trails
- 実験機能を特定のオリジンで一定期間使ってもらおうという試み
- https://github.com/jpchase/OriginTrials
- フォームで申請するとトークンがもらえて、それを埋め込むと新機能が使えるように!
The First Step to Angular 2
Angular 2とは
らこパイセンのありがたいお話。
基本のAPIたち
アーキテクチャ
- Application
- Platform
- ブラウザなのか、サーバーなのか、Workerなのか
- Module
- compiler, injector
- Component
Router
- いろいろありましたが、Router v3
- RxjsでURLの変更がObservable
- ルートは`path: component`で宣言的に定義
- `
`と` `で使う
`tsc`も速くなったらしいし、さわってみてもいいかな・・?って一瞬思ったけど、やっぱり正式にリリースされて安定してからでいいかな・・w
Webパフォーマンス最前線
資料は見つけたら
ハイパフォーマンスWebUI
スクロール
- C41からスクロール最適化の取り組みがあった
- `img`要素の`lazyload`属性というのがIE11, Edgeでは使える
- `throttle()`で間引こうとしたりしてきた
- `IntersectionObserver`
Task最適化
- `requestIdleCallback()`
- 昔は`setImmediate()`というものもあってだな・・
結論、CPUよりGPU使え(ここ2、3年くらいずっと同じこと言ってる気がするけど
Progressive Web Apps の導入基礎
資料は見つけたら
ホームに追加
- Webはアプリより横流れしやすい
- 簡単3ステップ
- manifestファイルの用意
- `link rel="manifest"`
- `navigator.serviceWorker.register()`
- https://developer.mozilla.org/en-US/docs/Web/Manifest
- プロンプトの表示タイミングも調整可能
- `beforeinstallprompt`イベント
Push通知
- 便利だけどもOFFにする方法もわかりやすくすべき
- `registration.pushManager.getSubscription()`してトークンを
- `push`イベントで受ける
- 通知をクリックした = `notificationclick`イベント
- サーバーでそのトークンに向けてpush
- 通知のPayloadにデータが載せられるのはC50から
- それまでは都度内容をサーバーに確認する