みみ (id:mimifuwacc) です.
先日開催された TSKaigi 2026 に現地参加してきたので,その参加記を書こうと思います (忙しすぎて放置していたら一ヶ月近く経ってしまい,かなり記憶が抜け落ちている部分もあって苦しかった).
様々なセッションの発表を聞きましたが,特に印象に残ったもの,面白いと感じたものについてメインで書いています.
Day1
前日4時まで開発をしていたら,見事に寝坊してギリギリに着く京急で会場に向かいました. 本当はモノレールに乗りたかったのですが,間に合わなかった...
どうにか間に合い入場しました.
来ています #Tskaigi #ゴミダスといっしょ

1日目は処理系寄りの話が多かった気がします.研究室が言語処理系で,かなり興味がある分野なので積極的にそういったセッションに参加しました.
tscからtsgoへ ── DenoのTypeScript基盤はどう変わったか
Deno が TypeScript checker などをどこに置き,Deno 独自の仕様とどう接続してきたか,という話でした.
Biome のように自前で抱えたり,Deno Phase 2 のように fork したりすると,公式に追従するのに体力がいるので, Deno Phase 3,Oxlint,Vize の例のように (やり方は色々あるにせよ) 公式の TypeScript に寄せていく方が今後やりやすくなっていくのかな,と感じました.
ほとんど触ったことがなく Deno 独自の仕様 (import で :jsr や :npm などが使えるやつとか) をあまり知らなかったのですが,気になったので,触りつつ余裕があればどう TS に materialize されているのかも追ってみようと思いました.
checker.tsにチキンレースを仕掛けてみた:型エラー(TS2589)が発生する境界線を求めて
Type instantiation is excessively deep and possibly infinite.ts(2589)
このエラー,たまに見かけて直すのが面倒くさくて AI に投げていたんですが,この発表でなぜ怒っているのかを追うことができてとても勉強になりました (やはり壊して遊んでみると良いことがある).
別の発表でこれにどう対応するか,というものもありそれも含めて良かったです.
checker.ts チキンレース 第二章 も期待しています.
決定論的な型チェックへ:Go 製コンパイラによる10倍速の裏側で --stableTypeOrdering から見える並列化への挑戦
TypeScript では type ID というものを振っており,それのおかげで型定義の順が決定的 (常に同じ) になっていました. tsgo での並列化ではこれが壊れてしまうため,それをどのように解決しているのか,という話でした.
type ID の話は知らなかったですが,このような話が好きな人間としてとても楽しい内容でした.
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
Oxlint に興味 (だけ) はあり,tsgo の話もあったので楽しい内容でした (TSKaigi 全体を通して tsgo の話が多かったですが,かなり面白かったと思います).
Oxlint から実行できる type-aware な Go 製のルールを追加するには,Oxlint と tsgolint の両方を変更しなければいけない,というのはさすがにちょっと大変すぎる気がするので,今後どうなっていくのか注目してみていきたいなと思いました.
(基調講演) TS 7: How We Got There
Microsoft の Jake Bailey 氏による,なぜ TS7 は Go を採用したのか,それによってどのように TS が変わったのか,という話でした.
他にも tsgo の内容に触れているセッションが多く,事前に勉強ができていた部分が多かったので,かなり内容を理解することができて良かったです.
Go を採用した理由の1つに,1対1対応で書き換えやすいというのがありましたが,実際に機械的に書き換えており,そこまでやりやすいのかと驚きました.
また,実際にどれくらい早くなったのかを,グラフを見せるだけでなく,実際に tsc と tsgo を走らせて比べていたのがとても印象的でした.
複数のコアが使われている,というのも可視化して見せてくれたのでより実感が湧きました.
(2分くらいかかる typecheck を見せられたのはなかなかシュールでした)
VSCode の language support も早くなっており,使ってみてほしいとのことだったので,積極的に使っていこうかなと思っています.
Day2
2日目です.1日目に乗り損ねたモノレールに乗ってテンションが上がっています.
ガキなのでモノレールで喜んでる
TypeScriptはどのようにどこまで推論できるのか ─ とにかく as は禁止で
TypeScript の型推論は十分に強力ですが、その強さをどう評価するかはいったん置くとして,as をできる限り禁止したい,という気持ちはあったので勉強になりました.
かなり印象的だったのが,as の使用箇所は約9割が人間やAIが敗北した結果だった という部分でした.Linter rule で as を禁止しても基本的に問題なさそうというのは大きい知見だと思います.
ところで,発表の中で Contextual Typing という話があったので,色々調べていました (TypeScript のドキュメントもある).
そんな中,contextual Typing という名前そのままの論文があったので気になって読んでみたのですが,どうやら学術的には bidirectional typing と呼ぶらしく,そんな...という気持ちになりました (そこそこ難しくてどうしようという感じになっている).
指導教員「つまり勘違いで,よくわからない contextual typing の論文を読む羽目になったのか (笑)」
ぼく「はい...」
10周年を迎えたZEN Study Webフロントエンドの次の10年へ向けた工夫
昨年の 10〜12月に長期インターンでお世話になっていた,ドワンゴの教育事業本部の方の発表でした.
判別可能なユニオン型を使う話は自分もやりたいなとずっと思いつつできていなかった,という感じだったので,色々比較されており,うれしさもまとまっていてとても参考になりました .
あと,全人類 Result 型の話をしているのは本当にそう...
Real World Effect-TS: 堅牢なプロダクトを型で組み上げる
Effect-TS の存在は知っていたのですが,実際に使ったことはなかったのでとても新鮮でした.うれしさが丁寧にまとまっている資料でとても助かります.
色々嬉しい点はありますが,個人的には,エラーハンドリングが綺麗にできるのが大きいかなと思いました (普段かなり悩むことが多いので).
心中ライブラリで一度入れたら剥がすのが大変,というデメリットはあるものの,個人で開発しているものなんかに入れてみるのはかなり良さそうかな,と感じています.
OST (Open Space Technology)
テーマごとにグループに分かれてディスカッションする企画でした.
普段そこまで話さない社会人のエンジニアの方々と色々会話できて楽しかったです.
一番印象に残っているのは,Vite の開発チームの方と同じグループになり,Vite でどのようにテストをやっているのかを聞けたことです.
基本的に e2e テストが多いらしく,とても驚きました.がまあ確かにユニットテストをやったところで検証したいものがそこまでなさそうだなという感じ...
懇親会
Far Yeast Hop Frontier Juicy IPA 美味しかった.

はてなサマーインターン 2025 で一緒だった人たちと会えたりしてアツかった...
学生支援の人たちで集まって交流できたのも良かったです.学生のうちにこういうイベントに参加できるのはとても大きい経験になるので,支援してくださった方々には本当に感謝です.
まとめ
普段 TypeScript を書いていても知らない話がたくさんあり,とても勉強になる 2日間でした.
開発に対するモチベーションもかなり上がった気がします.
(特に学生のみんな) 技術イベントに積極的に参加しよう!
2日間楽しかったです、デカい感謝!!!!!!! #TSKaigi
