nissy.dev

次世代Webカンファレンス 2023 で登壇した

8 min read
Table of Contents

次世代 Web カンファレンス 2023 に Tooling のセッションで登壇しました。

次世代 Web カンファレンス 2023 (2023/12/16 12:00〜)
# 次世代 Web カンファレンス 2023 ## Archive 動画を公開しました。 https://www.youtube.com/playlist?list=PLRW5DJ7mngHyG4ZWRjuvmZtu771d4K1uS ## Time Table Time | Conference | Bar | Factory ---|---|---|--- 11:00-12:00(開) | | | 12:00-13:30(90) | ### Performance * @narirou * @progfay * @3846masa * @...
nextwebconf.connpass.comnextwebconf.connpass.com
thumbnail

登壇のきっかけは、そーすけさんに声をかけてもらったからでした。過去の参加者数を見て少し悩んだのですが、JS Conf のときと同様にとりあえず失敗してもいいからやってみようの精神で「やります」とさくっと返信した気がします。

登壇していろいろ思うことがあって、頭の中に残すだけだともったいないなと感じたので、個人ブログにログを残します。

登壇して思ったこと

本番までは、JSConf のときより楽しみだな〜とは思っていたくらいで、話す内容とかはなにも考えていなかったです。 こんな状態で人前で話すことなんて今まで経験したことなかったですが、本番は聞いている人をあんまり意識せずに楽しく話せたのは良かったです。

ただ、1日終わった後で振り返ると、OSS の最前線で活躍している人と差を感じる1日だったな〜という気持ちが強くなってきました。 とくに、ツールをメンテする過程で、皆さん技術的に深いところまで入り込んでいるのが印象的でした。

議論のときには、CSS の Spec、正規表現などの深い話が出ていた気がします。自分がそういう深いところまでやった経験を話せるかというとあんまりないな〜というところで、普段の OSS での活動量の差を感じました。(これは登壇後に気付いたのですが、自分の 10 倍以上はみなさん活動していそうでした) ちなみに、CSS も正規表現もいつもかなり雰囲気で書いている (ChatGPT にお世話になることさえある) ので、本番中は話しについて行くのに必死な時間もありました。あとは、控室のそーすけさんの GC の講義も途中から聞いてたけど何もわからなかったので精進したいですね。

今年の後半から漠然ともっと技術の幅を広げたいなーと思っていて、自分の知識の足りないところが再認識できたので、CS の知識をちゃんと学び直そうと思う良い機会になりました。 あとは、JSConf や翻訳プロジェクトを終わらせて若干休憩モードに入っていた Biome へのコミットも、来年に向けてまた頑張ろうと思いました。

こんな感じで差を感じたのは間違いないのですが、その中で自分が話せることがなかったかというとそうでもなくて、自分はもっと Tooling の未来を話したほうが良かったのかなとか後から思いました。ぱっとおもいついたのは、次の2つ。

  • 割と疲弊しがちな Tooling の開発をどう持続可能なものにしていくのか
  • Rust のツール全般で抱えている、JS でプラグインを書こうと思ったときの JS ⇔ Rust 間のシリアライズコストにどう向き合う必要があるのか

割と疲弊しがちな Tooling の開発をどう持続可能なものにしていくのか

長期でユーザーを獲得し続けているツール開発者が集まっていたので、持続可能な開発に向けて何をするべきなのかを新しいツールという立場から聞いても良かったかもしれません。

Biome は自分たちの掲げた目標に対してやらなければいけないことがとても多く、安定して開発を続けていくことが重要です。金銭面だと、最近は寄付だけではなく ByteDance や Vercel などの会社がバックにつくものが多く、これらを意識した議論もしてみると面白かったかもしれません。

Rust のツール全般で抱えている、JS でプラグインを書こうと思ったときの JS ⇔ Rust 間のシリアライズコストにどう向き合う必要があるのか

ここは当日の議論でも話題に触れてはいますが、もうちょっと自分から議論しても良かったところかもしれません。Oxc にマージされた FlexBuffer に関する PR は、あんまりちゃんと調べられていませんでした。内容としては、FlatBuffers を使って AST をバイナリ形式でやり取りするようにしたということらしい。Linter 目線だと、"Using binary reader to traverse AST is undesirable. A proxy-based API to emulate object behavior will be nice." とあるのが気になります。

あとは、yoku さんが次のコメントをしていたのですが、感想書きながら Rome 時代に v8 のラッパーを内部で利用しようとする PR が出されていたのを思い出しました。

Rust と JS のメッセージング遅い問題、Rust 製ツールに embedding できる JS エンジンみたいな方向性で解決しうるのかな

feat(rome_v8): implement a wrapper for the V8 runtime by leops · Pull Request #3580 · rome/tools
Summary This branch implements a prototype wrapper for the V8 JavaScript runtime, and exposes various syntax tree-related APIs to the JS environment: SyntaxNodes and SyntaxTokens, all AST node clas...
github.comgithub.com
thumbnail

ここでは、deno の core でも使われている serde_v8 の crate を使っています。

という感じで、もうちょっと色々調べていたら、将来に向けた議論をできたかもなーとかは思ったりしました。

まとめ

長々書きましたが、総じて楽しく刺激になる時間でした!参加者・関係者のみなさん、本当にありがとうございました!