meguroes #26 に参加してきた

JJ
·

1本目はECMAScript仕様の読み方ガイドだったが、仕様書を読み慣れてないのでかなり助かった。W3Cもそうだけどリンクばりばり貼ってるので追っていけばいいんだが、リンクを開けば原点回帰みたいな時あって、読み方合ってるのか(?)みたいな気持ちになってたのでガイドがあると嬉しい。輪読会も参加しようかなーという気持ちになっている。

2本目はモノレポツールに頼らず標準装備で戦えるとこは戦おうねという話だったが、これは普段の業務でも基本的にモノレポで、うちの場合はフロントエンドのコンポーネントを別パッケージにするとか、toolchainの依存により順序実行が必要とかは特にないけど、とりま全部ビルド!とか、一旦全パッケージlint!をしつついざとなったらゴリゴリキャッシュかけれるぞのためにturborepoが入ってる。が、基本はpnpmでのworkspace管理なのでそうだよなーという気持ちで書いてた。

少し前に知ったけど、vscodeのworkspaceが便利なので最初にから知っときたかったなみたいな気持ちある。

3本目はWebComponents元年いつくるねんの話で、Custom ElementやShadow DOM、HTML template/slotで構成されるが意外と普及率も上がってきているとのこと。実務では試したことないけど、2019年ぐらいから関心はあるので引き続き追っていきたい。

DSDが出たのは結構前な気がしてるけど、まだガッツリ使ってないので話せる知見がない。

4本目はfacebook(meta)の使ってるhermesと言うJSエンジンの話だが、hermes自体は2,3年前ぐらいに見て、facebook/prepackが死んだのと同じようにどこまでやってくれるかねーと静観してただけだったので去年のstatic hermesみたいなものは初見だった。が、当方JSエンジンにも造詣が深いわけではないため話している内容を聞くので精一杯だった。もう一度資料を読み返したい。

5本目は指数的バックトラックを回避するV8の試験的な正規表現エンジンの話で、確かに正規表現周りは指数的バックトラックを悪用してReDoSの話などもたまに出る気がするためV8の方針みたいなのも知れてよかった。

この回だけ10分のLTと言うより大学の講義だったの面白い。もう一度資料を見ないとちゃんと理解できてないけど、一定数以上から探索のアルゴリズムを変更することで指数的に膨れ上がる計算量を抑える取り組み。

6本目はプロトタイプ汚染の話とそれをどのようにECMAScriptが対処しようとしてるか、またプロトタイプを触りたいタイプの人々(チャットボットとかSDKとかでwindowに生やしたやつだけでなく何かをoverrideしたい系)の話が聞けた。

世の中にはwindow.Promiseをoverrideする怖いライブラリもあるもんだなぁと思いながら見てた。toStringして[native code]と文字列を返すの鬼畜すぎてやばい

Shdow Realmについては以下の記事が分かりやすい

この分離して実行しようね系の考え方は昨今のwebでよくある話な気がしている。僕はこう言ったもの達をパーテーション系とグループ化してる。一方既存のやつを上書きできなくさせようぜ派閥としてFrozen系の話もでてきた。

Secure ECMAScriptも初見で聞いたのでまだまだ駆け出しエンジニアの気持ちでいる。

最後はWeb界隈の株主優待券さんからRecord & Tupleの話からOperator Overridingへと移った。

このRecord同士とかTuple同士をtriple equale operatorで参照しようとしたとすると、Recordの中身が同じかを見て同じ場合にtrueを返す。ここまではみんなが欲しかった機能なのだが、現在のobjectの比較はアドレスを見て返すため、既存のoperatorの実装が

旧: アドレスを確認 → アドレスを比較 → return

新: アドレスを確認 → アドレスからデータを取得 → object なのか Record なのかを確認 → object ならアドレス比較だけして終わりだが Record なら中身を見て比較 → return

というステップの違いが生まれ、Record & Tuple を入れることにより、既存実装の Operator が遅くなるのを懸念していると言う話だった。webの互換性はinterfaceだけではなくこういった処理速度が既存実装を壊さないかも考慮しないといけないので大変だなぁと言う気持ちになった。

そして来月(2月)の meeting で、話し合うのでそこで進展があるでしょうとのことだった。

outro

web標準、まだまだ知らないことや便利なことが議論されていたりなるべく今を壊さずに未来へ進んでいる文化がとても印象が良い。頑張ってwebを良くしていこうねと言う気持ち。

とりあえずDOMにもっと詳しくならないといけないし、ECMAScriptやその実行環境に対しても詳しくならないと議論をしてる背景やなぜその議論が必要なのかの前提を取りこぼしてしまうのでしっかり学びたい。

@jj
0xjj.dev | 猫、バイオリン、麻雀、ポーカー、洋楽が好き