登壇してきた
発表の内容については前の記事を読んでください.
この規模のカンファレンスでの登壇は初めてだったのですが, 元々関連分野に興味があった人には刺さりつつ, そうでない人にも面白いと思ってもらえた様子も観測していて, だいたい目論見通りの発表ができたんじゃないかと思います. 良かったね.
来月の関数型まつりにも参加するので (登壇はしませんが), TypeScript でのエフェクト周りのあれこれについてなどはまたバトルしてください > 各位
あとこの場を借りて運営の方々に感謝を申し上げておきます. 前回の TSKaigi Kansai では運営をしていたのですが, 今回登壇者として参加する方が準備も当日も何もかも数倍気楽でした (少なくとも自分にとっては). 本当にいつもありがとうございます.
面白かった・興味深かった発表
と, あんまり大したこと書けなくてすみませんが発表を聞きながら思ったことなどを少しだけ.
「The New Powerful ESLint Config with Type Safety」
紹介されている中で特に面白いなと思ったのは eslint-plugin-command. 他の Codemod / リファクタリングツールに比べて使いやすいかどうかはさておき, こういう可能性を見出そうとするタイプの営みが好き過ぎる.
「Language Serverと喋ろう」
「危険なコードに到達しうる関数全列挙くん」これも一種のエフェクト解析であることだなあと思いながら聞いてました. 色々な言語を相手にするときに LSP を使うとこれが言語によらず実現できるというのも, 当然 LSP はそのための技術ではありつつ, 自分で複数言語を対象に何かをする機会は少ないので面白かったです.
「TypeScriptとReactで、WAI-ARIAの属性を正しく利用する」
要素の ARIA ロールに応じて適切な aria-*
属性が使われるように型で制限するという話.
状況や文脈や動的にロールが決まったりするのは当然のように静的解析が大変という感じで大変...
「TypeScriptネイティブ移植観察レポート」
tsgo について, 自分では追いきれていない部分も含めて紹介されていて非常に良かったです.
tsgo の互換性は本当にすごくて, バグっぽい挙動を突いて無理やり型の再帰上限を突破していたのが普通に動いていたのはマジかよと思いました. でもそれくらいだからこそ我々一般の開発者は安心していられるわけで, ありがたいことですね. 「複雑すぎる型を書いて性能の余裕を使い潰さないで欲しい」はい, すみません...
「複雑なフォームを継続的に開発していくための技術選定・設計・実装」
フォームの状態のモデリングに真剣に向き合おう, 要件に応じて適切な技術を使ってモデリングしよう, そしてモデリングが限界を迎えているサインに注意しようという話. モデリングがうまくできていないときの歪みというのはどこにおいても苦しいものですが, その中でもまだ UI に閉じているものであれば変更しやすい部類だと思うので, 柔軟にやっていきたいですね.
モデリングの道具としては素の React, react-hook-form, Conform, MobX, jotai, XState, ... などなど色々あるわけですが, 理想的にはこれらそれぞれを適切な場面で繰り出さなければいけない. 果たして自分はどこまで手札に入っていて, どこまで手足のように使えるだろうか?
「ProxyとTypeScriptのおいしい関係」
TypeScript では型から値を生成することは基本的に (コンパイラプラグインなどを使わない限りは) できないわけですが, このテクニックを使うとあたかも型から値が生成されているかのように見えて面白いですよね〜. Speeding up the JavaScript ecosystem - Rust and JavaScript Plugins で紹介されている lazy deserialization の実装も Proxy ではないですが似たようなパターンか (実際にノードの種類ごとのオブジェクトの作り方が定義されているわけではなく, 型だけがある).