Open5

JSConf JP 2023 参加メモ

ryo_kawamataryo_kawamata

Deep dive into biome

https://jsconf.jp/2023/talk/daiki-nishikawa-1/

https://speakerdeck.com/nissydev/deep-dive-into-biome-in-jsconf-2023

Biome とは?

https://biomejs.dev/

  • RomeからforkされたWeb開発のツールチェイン
  • Romeの開発が止まったので、コミュニティベースで開発
  • Weeklyで6万ダウンロードくらい
  • Vercelも使っている。 v0.dev のコードのformatはBiome。他 Ant Design、Tamaguiなど。

なぜ Biome を使うのか?

  • Rustで作られているので早い
  • 設定が簡単Zero config
    • TSやJSXの設定も初期から使える

Biomeのパーサーの特徴

  • invalidなシンタックスがあっても、解析を継続できる
    • Green TreeとRed Treeを作り、それをASTにする
      • Green Tree
        • immutableなtree
        • コメントや空白等も作る
      • Red Tree
        • mutableなtree
        • これをトラバースしてASTを作る
      • lossless syntax tree と呼ばれる

Custome ruleの設定

  • rustで書く
    • ただ、ESLintのルールの実装と似ている
  • Custome ruleは基本的に書かない
ryo_kawamataryo_kawamata

TYPESCRIPTで型定義を信頼しすぎず「信頼境界線」を設置した話

https://jsconf.jp/2023/talk/himeno-kosei-1/

Memo

  • 外側(network、storage etc)から内側(appコード)にデータが流れるものについては値が信頼できない
  • その境界で値の検証をすることで、その後のコードでは型安全を信頼することができる
  • 境界では異常系+正常系のテストをすべき
  • 境界以降のコードでは正常系のみでもOK
ryo_kawamataryo_kawamata

TODO: 聴きながらメモが難しすぎたので、後日追加する