JSConfJP2019 day1
一度復習したが、さらに復習が必要なものは「#WIP」を付けといた

ライブラリ、フレームワーク、AltJSの利用状況などのアンケート結果の紹介
今年のSurvey
誰でも参加できる
去年のやつの結果が見れる
CSS版
ElmもReasonも認知度がそもそも低く、触ったことがある人は数%しかいない
グラフは下から
赤: 触ったことがあるし、今後も触りたい
橙: 触ったことがあるが、今後は触るつもりはない
青: 聞いたことがあり興味がある
水: 聞いたことはあるが興味はない
灰: 聞いたことがない
ちなみにTSは60%ぐらいが「使ったことがある」
refビジュアル的なスライドがすごかった
英語はゆっくり話してくれてたのでまだ聞き取れた
このサーベイの内容は毎年誰かがQiitaにあげてるのを見たことがあるので2019年版もそれ見ようかな

t_wadaさんのJSのASTをいじる話
JSコードからASTを抽出(parser)→ASTをいじる(traverse)→ASTをJSコードに戻す(unparser)
感想
何に使えるのかが知りたかった
テストとかかな、ライブラリ作成か、なんの?
t_wada氏らが開発
内部はASTを使いまくりらしい
ネットスケープ作った人
grepは文字列を扱う
コメントかどうかの判断できない
bananaのネタのやつをASTでみてみると
b+a+(+a)+aになっていることがわかる
↑intにしようとして無理なのでNaNになる
OSSを使っているエンジニアは99%を超える
OSSを仕事とするのは難しい
なんでOSSをするのか?
→coolだから
お金の話
OSSは当たり前ではない
当たり前となって強い言葉を使ったissueが立つこともある
>Open source is lens thorugh which I see the world
@webseals
新聞社、Cを書いてる
jsのパフォーマンスの話
product
メモ化、キャッシュ
runtime
非同期処理、code fetching
engine
inline casche
SMI/heapNumber
packed/holey
この辺わからん

micro-optimization
jsではあまりやらんでもいい
すでに速いので
runtime,engineが頑張っている
server side
IOがボトルネックになりがち
同期的なIOは避ける
parseとかは非同期には実行できない(?)
nodeのStream API
pipeとかあるのか
renderToNodeStream
Reactに16からはいった
Chrome独自にeventloopがある
code casheing
一旦コンパイルしたもの次使うときはそれを使う、再パースしない
↑パースとコンパイル
preloading scripts
先にpreloadしてほしいものを指定しておく
link rel="preload"
fetchした時点でパースとコンパイルをする
まだ実行しないのに
だから、使われるときはあとは実行するだけの状態にできる
idling
idle until urgent
必要になるまで待て
requestIdleCallback
cancellIdeleVallback
idlelizeというライブラリがある
phillipwalton.com/articles/idle-until-urgent
wasmの話
fuji goroさん
趣味で@msgpack/msgpackを作ったときの話に基づく
ネイティブコードと言うよりはjvmっぽい
wasmはバイトコードとその処理系の仕様
emscriptenでC/C++→は2012年頃
jsでCPUのエミュレーションをする
速度感
class 3はclass 1の3倍遅い
クラス3のところは企業が金をつぎ込んでちゃんとしてるので速い
v8の実装にお金をかけたのでjsは他のスクリプト言語より速い
wasmは「クラス5の中では速い方」ってぐらい
クラス1には及ばない
製品の一部をwasmにしたい
扱える型が数値だけなので、小さい単位で色々やろうとすると結構辛い
ASの話かな
wasmはリトルエンディアン、jsはホストに依存するのでつらい
rustとかcのほうが楽そう、
AssemblyScriptはランタイムが小さめ
↑は文法はtsだが、書き味はC
Bynarienで最適化
ベンチマーク
データサイズが小さいと普通のjsの速い
データサイズが大きくなるとwasmのほうが早かった
これは常に確実に
20~50%ぐらい速い
js→asのつなぎこみは大変そう
v8
-no-opt
最適化を無効にするオプション
これやってベンチマーク取るとだいぶ差がついた
@koba04氏の95%ぐらい英語で、ちょこちょこ日本語での補足も入った発表形式だった
後半全然わからん
Sponcer Talk
サイボウズ
mediba
pre-fetchとかができるやつ?
よくわからんかた..
今朝スケートの大会に行き、家族全員メダルをもろたらしい
自分でタグを作るやつ
昔からあった技術
MS HTML Component
JavaScript page components
全然ヒットしねえ、なんだこれ
Reactと併用できるの?
できるならいつ?
ライブラリとしてあるのか
divと同じようにそのタグで使える
キャッシュ難しい問題
サービスワーカー
http
Cache-Control
CDNのきゃっしゅ
Node.jsコンパイラのstructure
LLVMはレジスタマシン
wasmはスタックマシン
WebDINO Japan (元Mozilla Japan)
OSSの生みの親のような会社
のCTOの人@dynamitterさんの発表
OSSのライセンスの本あったよなたしか

誰も守ってない規約になんの意味があるんだ?
npm license checkerというライブラリがある