- Node学園 34時限目 jsconf.eu 報告会に参加してきました。
タイトル | 登壇者 |
---|---|
JavaScript Package Manager 2019 | yosuke_furukawa |
Cloudflare Workersの紹介 | dorayakikun |
Node.jsとWebAPIのこれまで、現在、これから | Leko |
jsconf.eu 報告会 Performance Empathy 編 | tomonari-takahashi |
TypeScriptでコマンドラインパーサー | Akito0107 |
JavaScript Package Manager 2019
- yosuke_furukawaさん
JSのPackageManager
npm
- npmの仕組み
- ダウンロードが高負荷
- fetchしてgunzipしてコピーする
- Network負荷
- CPU負荷
- FileIO負荷
tink
- 新しいパッケージマネージャー
- npm cliをもとにして作られてるもの
- ゆくゆくはnpmに統合
- npm iの処理を実行時にやればいいのでは
- node_modulesを仮想上のフォルダにする
- ランタイムでモジュール解決するから
npm i
がいらない- コピーしないからFileIO改善
- cloneして実行するだけでよくなる
- zero install
node main.js
ではなくtink sh main.js
とするtinkで実行できる- prepareとunwind
- prepareは事前にmoduleをfetch(本番はこれでやるとよい)
- unwindは事前にnode_modulesを実体化
loadmap
- npm v8でtinkがnpmに統合される
yarn
- yarnのv2でも同じzero installに取り組んでいる
今後
- npmもyarnもzero installになっていく
- npmとyarnどちらも有意差はまだない
- まだexperimentalな段階
JavaScript Registryの今後
- JavaScript Registryとは
- Packageをバックで管理するサービス
- npm
- github
- Packageをバックで管理するサービス
- JavaScriptのRegistryをビジネス的に成功させるのは難しい
- public moduleは無償で提供
- アクセスコントロールするなら有償
- npmは100万モジュールある
- rubyのgemは30万
- Entropic
- 中央集権ではなく分散管理していこう
- npmにつながる新しいregistry
- みんなで治験を高めて分散管理できる状態を目指す
Cloudflare Workersの紹介
- dorayakikunさん
wasm
- ここ1~2年盛り上がってきた
- JSConf EUでのwasmのセッション3つ
Webの現状
- JSのbyteサイズが年々上昇している
- この3年でモバイルは50%増加
- Time To Interactive
- TTIの平均値9秒以上
既存の戦略
Edge Side Rendering
Cloudflare Workers
- エッジサーバ上でserverlessアプリを動かせるサービス
- 言語はjsかwasm
- デプロイはwebかwrangler
- 要素技術
- V8のIsolate
Edge Side Renderingは有効か
- グローバルなサービスだと旨味がありそう
- エッジサーバで何させるかは議論の余地ある
Terrarium
- Fastlyが提供するEdge Computing Platform
- wasmのみ
Node.jsとWebAPIのこれまで、現在、これから
- Lekoさん
NodeとWebAPIのこれまで
- ブラウザのJSの仕様/NodeのJSの仕様
- 片方にあったやつをもう片方でも実装されたりとか
- 同じようなことなのに微妙に違うとか
- NodeとWebAPIを近づけようとしてる
- URLSearchParams
- TextEncoder
- Wrker Threads
- Performance Timing API
- 議論中
- StreamsAPI
- FetchAPI
- 仕様がとても複雑
- Nodeで全部再現できるのか、再現する必要があるのか
まとめ
- 多くのWebAPIがNodeに取り入れられている
- ワークフローを改善してより改善されていく
参考
jsconf.eu 報告会 Performance Empathy 編
- tomonari-takahashiさん
パフォーマンスに関して大切なこと
- デフォルト/デファクトツールを使う
- ブラウザデフォルトでできるようになってることも多い
- lazy loading
- virtual-scroller
- パフォーマンスをマネジメント
- Performance budget
TypeScriptでコマンドラインパーサー
- Akito0107さん
コマンドラインパーサーを作る
- 有名なライブラリがいろいろある
- minimist
- commander
- オプションが複雑だとどれもつらい
- 型がほしい
- => 作った