blog.fanjia38.com

dance as if no one’s watching, sing as if no one’s listening, and live everyday as if it were your last.

2024-05-31

TSKaigi 2024のメモ

5/11にTypeScriptの技術カンファレンスが開催された。
その内容を見つつ、自分用に感想メモを残していく。発表内容の詳細とスライドは非公式まとめがあるので省略。


Keynote

  • 全編英語。YouTubeの自動翻訳に助けられた。
  • TypeScript 5.5
    • 正規表現の記述の正しさを検知できるようになるのが嬉しい。
    • 型推論が強力になり、余分なasによるキャストが不要になる。
      • filterで特定の値を除外するような処理を書いた時、これまではfilterの戻り値の型を工夫する必要があったが、認識してくれるようになる。

フロントエンドもバックエンドもインフラも… 全てをTypeScriptで統一したらこうなった!

  • Zodios
    • Zodのスキーマ定義を活用したAPI定義ができるツール。
  • 現在社内システムを扱っているので、同様にTypeScriptで統一して学習コストを下げつつ認知不可・管理コストを下げるこのやり方は良いなと思った。(主導していくには、休職明けのメンタルにはちょっとハードルが高い・・・)

TypeScript関数型バックエンド開発のリアル

  • エラーのハンドリングなどでResultパズルが発生する。公式にResult型がないので neverthrow を使っている。
  • システム全体の実装は従来の実装からそれほど変わらず、短期的な開発スピードには良くも悪くも影響はない。
  • エラーの処理漏れ、想定していない状態による不具合は少ない。
  • 実際にバックエンド開発でTypeScriptを使用する場合にもう一度読み直したいスライド。

TypeScriptとGraphQLで実現する型安全なAPI実装

  • 外部I/Oに対する型付けが不十分だと、静的型付けの恩恵が十分に活かせない。
  • Fragment Colocation
    • コンポーネントで必要なプロパティだけを記述し、親はそれを参照することで使われていないプロパティがあった時に安全にクエリから削除することができる。
    • (以前使おうとしたが、知見が足りず使いこなせなかった)
  • Fragment Masking
    • Fragmentを定義したコンポーネント以外から、FragmentのデータにアクセスできないようにするuseFragmentを使ってデータ参照する。
    • これを使うことでFlagment Colocationを強制でき、コンポーネントの独立性も上がる。反面、型が複雑になる。

Prettierの未来を考える

  • Prettierの実行速度が遅い。
  • 単体では早いが、ESLintと一緒に使われることが多い。また、ルールの衝突をユーザーが設定導入して回避する必要がある。
  • これが解決しつつある。
    • DenoにおけるDenolint, Denoformat
    • Biome はlinterとformatterを搭載していて高速。
      • 元々ロームというコミュニティフォークが誕生の経緯。
      • Biome FormatterとPrettierは同じアルゴリズム、互換性がある。
      • ESLintのコミュニティルールが対応しきれていない。
  • Prettierのパフォーマンス改善はサボってきたので改善の余地がある!!

Track1の内容しか追えていなかったので、アーカイブが公開され次第また視聴・メモの更新をするかも。

Fanjia38

Web Engineer
©2024 fanjia38. All Right Reserved.