次世代 Web カンファレンスのメモ

次世代 Web カンファレンス についてのメモ。
メモ書き&知見に乏しいため発言の内容が正しくない可能性あります。

11:10-12:30(80) js_next

JSはなんで書いてる?

@vvakame
TypeScript → ES5でかく ES6ターゲットではない
@constellation
C++書いてるw
@t_wada
個人→ES6
仕事→IE8まで対応(徳が高い)
IE8は2016年で消滅
@teppeis
個人→ES6で書いてるbabel

ES6どうよ

@t_wada
アロー関数便利

ES6module

https://github.com/ModuleLoader/es6-module-loader
scriptタグが何個も書ける→複雑で仕様決まってない→来年の夏くらいに決まればいい
import from にURLが書ける
ふわっとレベル

https://github.com/whatwg/loader/issues/83

ES2016 以降

yield promise
https://blogs.windows.com/msedgedev/2015/09/30/asynchronous-code-gets-easier-with-es2016-async-function-support-in-chakra-and-microsoft-edge/

promise => generator/yield => async/await っていう流れはいい流れ

あとでやる: class つかってbabel で変換する

型について

@vvakame 型そんなにいらなくね
既存のコードに型を適切につけられる人はすくない
スクラッチで書き直すか新しいコードを書くときは型付けあったほうがいいレベル
定義付けのレベルが人によってまちまちで辛い
ライブラリ作者の思想と異なる型定義がPRでくる
d.tsとライブラリの作者が別という問題

WebAssembly

Mozilla asm.js

babelいつまでつかうの

ずっと使い続ける
中身は変わっていく

AST

ASTはここで定義されています。 "estree/estree" https://github.com/estree/estree


13:30-14:30(60) security

@hasegawayosuke
@kinugawamasato
@nishimunea FirefoxOS の脆弱性とか見つけてる

セキュリティ

@nishimunea サーバー側のセキュリティ対策は銀の弾丸が出尽くしてて、研究のしがいがない。 新しい発見がない
@kinugawamasato XSSは新しい発見がある面白い

@nishimunea Webのセキュリティはすごく曖昧
同一生成元ポリシーについて httpとhttps のページ移動でcookieリファラー流出している

バグハンターになるには

@nishimunea
仕様を見る
ブラウザのセキュリティアドバイザリを見る
→実装レベルでのバグがほとんど
仕様レベルでのバグを見つけるのは少ない

@kinugawamasato
誰も使ってない忘れているような昨日から探す

@nishimunea
stable のバージョンにどんどんドラフトの新しい機能をどんどん突っ込んでいくのはどうなの 医療機関なんかは認可がいるようにもうちょっとWebも慎重にやったほうがいいのでは

古い機能の見つけ方

@kinugawamasato
なんだっけな

@nishimunea
hsts https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security

レスポンスヘッダに追加してセキュリティを高める仕組み
問題: 知っている人しか使えない
→全然Webは安全になっていない

@kinugawamasato 「CSTを適切に使われると厳しい」

CSP Content Security Policy
SRI ハッシュ値で判断する
CDN

Electron

Electron file:: を積極的に使っててセキュリティ的にアレ
今までファイルはユーザが明示的に開くように想定されていたので、プログラムがファイルを開くように誘導するのは問題

CSP のこれから

現場で実際にやるのは厳しい
http://blog.hash-c.co.jp/2013/12/Content-Security-Policy-CSP.html

CSP「クロスサイト・スクリプティング(XSS)防御の切り札」

  • 外部のJavaScriptの読み込みは禁止
  • HTMLソースに記述したJavaScriptは禁止
  • イベント属性(onload="xxxx"など)は禁止

@nishimunea GithubにCSPアイコンをつける

セキュリティ業界のこれから

アプリケーション特有の脆弱性を調べる→人間でしかできない

脆弱性とみなされる/みなされないの判定は時代によって変わるし人間にしかできない

XSSフィルター

XSSフィルターがあることで通信の改ざんが行われる

クリックジャッキング

意図しないボタンをクリックさせたり見えないiframe を表示させたり
http://www.techscore.com/blog/2015/03/05/%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B8%E3%83%A3%E3%82%AE%E3%83%B3%E3%82%B0%E3%81%A3%E3%81%A6%EF%BC%9F/

まとめ

セキュリティは徐々に仕様策定されてきているが足りない


14:40-16:00(80) client_perf

@summerwind
@furoshiki
@ahomu

パフォーマンスの効果の測定

@ahomu
基準値:プチフリーズが無くなる、FPS、ペイントコスト、WebPageTest

対応: 原因を特定して力業でつぶす

@furoshiki
ブラウザのAPIでどこまで計測できるか
JavaScriptAPIでリアルタイムにモニタリング
ナビゲーションタイミング(昔のデファクト)
パフォーマンスタイムライン(最近)
http://www.hcn.zaq.ne.jp/___/WEB/performance-timeline-ja.html

ヒーローイメージ問題=ある大きな画像がそのページのコンテンツを左右するものである場合、その画像が読み込まれないとページの読み込みの体感も上がらないしどうするか的な問題 http://www.stevesouders.com/blog/2015/05/12/hero-image-custom-metrics/

RAIL について

https://speakerdeck.com/deanohume/faster-mobile-websites

Idle って何のために必要?

一本の線として処理でしか実行してできないため、 レンダリングをしている間はJSの処理は実行されない

昔はIdleで画面が真っ白になるのはOKとされている時代があった

問題:一つのタスク歯科実行できないのに読み込む優先度を決められない

setTimeout(-> {hogehoge}, 0)レンダリングをさせるために実行

0ミリ秒で登録した場合にも、いったんブラウザに戻ってからになるので、JavaScriptの実行中に溜まったイベントの処理なども行われます。
http://qiita.com/jkr_2255/items/17693ab77beea71a871c   

Scheduling tasks

setTimeout の代替仕様→まだこれから

日本は国土が狭いからそんなに高速化にプライオリティが置かれない
アメリカみたいに西海岸to東海岸みたいにかんがえなくてよい

Service Worker

Service Worker はブラウザが Web ページとは別にバックグラウンドで実行するスクリプトで、Web ページやユーザのインタラクションを必要としない機能を Web にもたらします。将来的にはプッシュメッセージ、バックグラウンド同期、ジオフェンシングなどが導入されるでしょう。
http://www.html5rocks.com/ja/tutorials/service-worker/introduction/

そこまで流行ってないし手を出せてない

遅延読み込み

ATF(Above the fold, ページを表示して最初に見える範囲)を激速で表示すればすべて丸く収まるの話

クリティカル CSS
http://blog.yuhiisk.com/archive/2015/06/22/about-critical-css.html

http://t32k.me/mol/log/style-class-conference/

Accelerated Mobile Pages
https://www.suzukikenichi.com/blog/accelerated-mobile-pages-amp/

Google Twitter が組んで作っている仕様
ブラウザ on ブラウザ
日本では広がらないのでは
AMPをみてると、preloadでいいんじゃないかと思って見てしまうんですよねー。
http://qiita.com/nakajmg/items/65575d54cbed013ff2a5


16:10-17:30(80) front_arch

@hokaccha
@koba04 React
@armorik83 Angular
@laco0416 Polymer

React

単純 スケールしやすい

Angular

jQuery 辛かった
MVCに分けるというのが新鮮だった

Polymer

Web標準的な
Googleだから

データバインディング

単方向と双方向
Reactは単方向

WebComponent

Polymer: shadow dom を先に実装する

HTML importってもうChromeに実装されててONになってる

未来: 三社が押しているから未来は、ある…?

CSS

BEMかあ、ネーミングが好きじゃない
BEMを使用してCSSのクラスとAngularのDirectiveを紐付けることで関係性をわかりやすくしている

ReactRouter

Angular はRouter がすごい→ ui-router https://github.com/angular-ui/ui-router

Angular2、TSじゃなくてBabelでもかける

速度

React 速度出したいならshouldComponentUpdate 使うべき

flux

オレオレflux
https://github.com/rackt/redux

FW == なんでも揃っている == 足かせ でしかない

https://twitter.com/azu_re/status/655655913806651392

https://github.com/staltz/flux-challenge

Fluxアーキテクチャを使って実装する問題と回答のリポジトリsubmissions/ 以下にそれぞれの回答があり、色々なFluxを使った実装が見られる。

https://github.com/voronianski/flux-comparison

Flux アーキテクチャ実装の比較

前半のナンバーワンフレームワーク決定戦のダメージが辛くなってきて意識は別のところへ…