2026/07/14

テクノロジー

TSKaigi2026に参加してきました!

この記事の目次

    はじめに

    ITD1部開発3課のO.Aです!
    先日2日間にわたって開催された、TSKaigi2026に会社のメンバーと参加してきました。

    TSKaigiとは

    日本最大級のTypeScriptをテーマとした技術カンファレンス。
    TypeScriptに関する幅広いテーマを取り上げ、特定のライブラリやフレームワーク、フロントエンドやバックエンドなどの領域に限定せず、様々な分野のTypeScriptエンジニアの学びや活用事例を知ることができます。
    今年で3年目になります。

    ミッション

    学び、繋がり、”型”を破ろう

    公式サイト:https://2026.tskaigi.org/

    イベント概要

    日時

    2026 5/22(Fri) - 5/23(Sat)

    場所

    ベルサール羽田空港

    スケジュール

    公式スケジュールはこちら

    参加したセッション
    Dayセッション名登壇者概要
    1tscからtsgoへ ── DenoのTypeScript基盤はどう変わったかmaguroDenoがTypeScript基盤をtscからtsgoへ移行する過程と技術的変化について
    1業務に残された「よくない型」で考える「TypeScriptの難しさ」Saji実務で遭遇する不適切な型定義を題材に、TypeScriptの型設計の難しさと改善を考察
    1権限チェックの一貫性を型で守る TypeScript による多層防御北川 直昭型システムを活用して権限チェックの一貫性を保証し、多層防御を実現する設計パターン
    1型の深宇宙へ飛び込め ─ tscを遅くする記述パターンの全解剖 ─dowodTypeScriptコンパイラを遅くする型記述パターンを網羅的に分析
    1決定論的な型チェックへ:Go 製コンパイラによる10倍速の裏側で --stableTypeOrdering から見える並列化への挑戦えーたろーtsgoの並列化における型チェックの決定論性の課題と--stableTypeOrderingの意味
    1アンチパターンを避ける型駆動React最適化Kazuya Serizawa型情報を活用してReactのパフォーマンスアンチパターンを回避する手法
    1Stage 3 Decorators でできること / できないことsusisuTC39 Stage 3 Decoratorsの仕様で実現可能なこと・制約・実用パターンの整理
    1密結合なバックエンドから TypeScript のコードを生成するkemuridamaバックエンドと密結合した環境からTypeScriptの型定義やクライアントコードを自動生成する手法
    1TypeSpecで繋ぐ複数プロダクトの型安全 — スキーマ共有による「型契約」の実践mitsuiTypeSpecを用いて複数プロダクト間でスキーマを共有し、型安全なAPI契約を実現する事例
    1TypeScriptの型はAIに届いているか? ― AIコーディングツール検証で見えた届き方の差shotaroAIコーディングツールがTypeScriptの型情報をどの程度活用できているかの検証
    1Zod v4 Codec でスキーマに型変換を埋め込む REST API 設計Ryutaro YakoZod v4のCodec機能を使い、バリデーションと型変換をスキーマに統合するAPI設計
    1TS 7: How We Got ThereJake BaileyTypeScript 7(tsgo)に至るまでの開発経緯。TypeScriptチームによるGo移植の技術的決断と道のり
    2制約と時代から読み解くTypeScriptコンパイラ設計史Yoshiaki TogamiTypeScriptコンパイラの設計がどのような制約・時代背景のもとで進化してきたかを読み解く
    2React の props は値の集合ではない — UI の状態を宣言するコンポーネント設計nabeliwopropsを単なる値の集合ではなくUIの状態宣言として捉え直すコンポーネント設計論
    2型プラグインシステムの実装に使われるテクニックelecdeerTypeScriptの型システムを活用したプラグインアーキテクチャの実装テクニック
    2Auth.jsからBetter Authへの移行に見る「型とランタイム」の設計思想の変化宇根昇汰Auth.jsからBetter Authへの移行を通じて見える、型安全性とランタイム設計思想の違い
    2AI活用の格差をなくす:チーム全体のAI開発生産性を底上げする方法中津川篤司チーム内のAI活用スキル格差を解消し、全体の開発生産性を向上させるアプローチ
    2AI Agent に"攻略本"を渡したら、150フォームの移行が回り始めた話高橋悟生AIエージェントに移行ガイドを与えて150フォームの大規模移行を効率化した実践事例
    2AIコーディングエージェントの活用で、コードは静かに肥大化した —— 型・Lint・Skillsで挽回する10分篠田 陽介AIコーディングによるコード肥大化問題と、型・Lint・Skillsによる品質
    維持の戦略
    2TypeScriptで実現する既存APIを活用したリモートMCPサーバー構築鈴木翔大TypeScriptで既存APIをラップしたリモートMCPサーバーを構築する方法
    2「バイトル」のTypeScriptリニューアル — 積み上がったレガシーとパフォーマンスに挑む現在地横山 隼大規模サービス「バイトル」のTypeScriptリニューアルにおけるレガシー対応とパフォーマンス改善
    2ts-morph でプロジェクト固有のアーキテクチャガードレールを作るmsuto / Michimasa Sutots-morphを使ってプロジェクト固有のアーキテクチャルールを自動検証する仕組みの構築
    2typescript-goで変わるリンターの世界 — Flintという第三の選択肢Tamasho Tomoyatsgoの登場で変化するリンターエコシステムと、新たな選択肢「Flint」の紹介
    2Polymorphic Components パターンで作る、型安全でセマンティックな UI コンポーネントryoPolymorphic Componentsパターンによる型安全かつセマンティックなUIコンポーネント設計
    2AI時代に考える、Branded Typesで実現する堅牢な型付け池奥裕太/@yuta-ikeAI時代においてBranded Typesが果たす役割と、堅牢な型付けの実践パターン
    2次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解Yuta Takahashitsgo時代に型認識カスタムルールをどう運用するか。Go バックエンドルール PoCと現実的な振り分け戦略
    2TypeScript7 - 非推奨設定から読む責務の変化AyuTypeScript 7で非推奨となった設定項目から読み解く、コンパイラの責務の変化
    2TypeScript Compiler はどのように未使用変数を検出しているのか?つねみ@tocomiTypeScriptコンパイラの未使用変数検出メカニズムの内部実装を解説
    2プロパティの順序で型推論が壊れる!? TS6.0 の修正から Context-Sensitivity の仕組みを追うおおいし (bicstone)プロパティ順序による型推論の不具合とTS6.0での修正を通じてContext-Sensitivityの仕組みを解説
    2OST (Open Space Technology)TSKaigi運営参加者主導のオープンディスカッション形式セッション

    以下、特に実践的だと思ったセッションや印象に残った出来事について書きます。

    業務に残された「よくない型」で考える「TypeScriptの難しさ」

    登壇者:Saji (サイボウズ株式会社 / フロントエンドエンジニア)
    資料:https://speakerdeck.com/sajikix/ye-wu-nican-sareta-liang-kunaixing-dekao-eru-typescriptnonan-sisa

    要約

    TSによる失敗パターンにはパターンがある -> そのパターンこそがTSの難しさ

    => プロダクトのよくない型(any, asによるcast, @ts-ignoreで型チェック無視、雑な型ガード)をAIで探すとおおよそ3つのパターンに分けられ細かくわけると7つに分類できた

    解決策様々

    • helperや型ガードをちゃんとかく(かけるものは書くことをチーム(orAI)で規約に)
    • typeとvalueなど本来1対1で対応している型はセットで生成し、d-unionが使えるようにする設計に
    • overload関数でなんとかする

    etc…

    リントで規約化したり、ガイドラインにチェックリストなど明記し、AIに同じ妥協を再生産させないことや定期的な棚卸しをする(させる)ことが運用面で大事!

    感想

    会場で頷いている人が多いと司会の方も言われていましたが、確かにあるあると思いましたし、こうして、改めて明示的にパターン列挙されると数もこんなもので、みんながハマるポイントって同じなんだなという気持ちになりました。
    改善策の大半は、ヘルパー関数、型ガード、overloadを開発者それぞれが意識して書いて担保する必要があるというのは昔から変わらない気がしますが、AI協業を考えるとより仕組み化させることの重要性を意識させられました。
    unionの難しい型解決に関してはバージョンアップでより便利になると嬉しいですね…。

    アンチパターンを避ける型駆動React最適化

    登壇者:Kazuya Serizawa(株式会社PeopleX)
    資料: https://speakerdeck.com/seriseri/tskaigi-2026-antipatanwobi-keruxing-qu-dong-reactzui-shi-hua

    要約

    ReactCompilerはこれまで人間が手動で行なってきた最適化(不要な再レンダリングを防ぐためのメモ化)を肩代わりしてくれる。
    => コンパイラの仕組みを読み解き、より最適化されやすいコードを書くことが今後重要。
    最適化されるか否かは純粋性が証明できるかによって決まる。

    最適化されるコードは結果として読みやすく、テストしやすく、壊れにくい。

    ReactCompilerの中身を読み解くと、

    • React Compilerは何が何に依存するかの依存グラフとして読む。
    • 依存グラフを使って、ReactiveScopeの概念を構築し、値の流れと再計算のキャッシュが必要な単位見ている。
    • 依存構造でReactiveScopeを自動で発見すること

    => 我々がやること:コンパイラが依存構造を発見できる書き方をする(=純粋に書く)

    純粋関数の条件

    1. 決定的であること(同じ入力に対して常に同じ出力を返す)
    2. 関数の外側に副作用(観測可能な可能性を一切与えない)がないこと

    <コードレビューでの上記のチェック観点>
    1. 外部スコープの値を書き換えていないか
    2. Propsや引数を破壊していないか
    3. レンダー中に外の世界に値を渡していないか(ログ、API、DOM操作etc)

    アンチパターン
    コンパイラに諦められる4パターン(B >> C > AとDはベテランがよくふむ?)
    A. 副作用の混入(uuid, Date.now()…)-> hook, イベントハンドラに渡すのが正解
    B. ミュータブル操作(sortは破壊的メソッド)-> スプレッド構文で一度コピーして展開する
    C. 参照不安定(境界を超える毎回new)
    D. 非決定的な依存(外部の可変参照

    これらは型駆動で仕組み化して間違ったコードを書けなくすることが大事

    • Readonlyでミュータブル操作を"書けなく"する
      • 型で禁止すればコンパイラの検出を待たない
      • 破壊的操作を思考から取り除く(型が思考のデフォルトを変える)
    • Branded typePure<T>で純粋契約を型化

    型でカバーしきれない部分(関数の振る舞いなど)はlinter(Biome, Oxc..)で守る。
    => 型は値と形、lintは振る舞いと規約の安全性を守る

    大規模プロジェクトの設計指針

    副作用を持つ層(Effects)・純粋層(Domain)・UIを物理的に分ける
    上記はコンパイラが最適化しやすい設計のため、設計の動機付けがより強くなった。

    ~チームに残すルール~
    ・副作用は専用フック/サービスに追い出す
    ・ドメイン関数はPureを強制
    ・UIは純粋層の値を渡すだけ
    ・メモ化は書かない、書かせない←1番大事(lintでuseMemo/useCallback禁止)

    感想

    ReactCompiler、信じてるからな。(手動メモ、消します__)
    「ReactCompilerの気持ちになって考えてみる」というセリフを別のセッションでも聞きましたし、今回のセッション内容でより、react19から登場したReactCompilerによってこれまで手動で行ってきたパフォーマンスチューニングから解放され綺麗なコードをかく意味合いが転換されたことを実感しました。
    コンパイラのために純粋性を保つことが結果的に良い設計・良いコードにつながると言う視点は非常に納得感があり、業務ですぐ使える具体的なチェック観点やチームルールも多く紹介されており、大変勉強になりました。

    その他

    ランチ

    今年もランチに出るお弁当の種類が日毎3種類くらい出ていて大変豪華でした。

    鶏めし御膳人気すぎて一瞬でなくなっていた…。

    スポンサーブース

    今年は全部で77社のスポンサーがついているそうです(すごい)
    クイズやくじ引きなどを行なっているブースがあったり、初出展のブース企業の事業内容について聞いたり、AI導入やトレンドについて話したり普段こういった機会は中々ないので、大変刺激になりました。

    ブーススタンプラリー

    20個集めて抽選に参加!だったので回ってみましたが結果は参加賞(缶バッチ)

    エンジニアの願いが書かれた短冊

    営業シミュレーションを体験する社内メンバー

    ソフトバンクのsatto事業開発本部エンジニアタイプ診断
    皆さんもやってみてください。(自分はコードの預言者でした。)

    当日企画

    昨年にはなかったセッション以外の企画も盛り沢山でした!

    ネイル

    スポンサーブースの片隅にネイルコーナーが。
    TSカラーの青で頼んでいる男性がいたり、爪磨きだけ等もできるようだったので結構盛況していました。ネイリストさんに聞いてみるとこういったイベント出張はやはり珍しいとのことでしたが、GitHubやAWSイベントでもネイル企画があったらしいので最近流行りなんでしょうか?
    自分はTSの水色に冒険する勇気出ず、普通にかわいいネイルをしてもらいました…^^;

    マッサージ

    マッサージも常に待ち列が。
    マッサージ師さんが常駐されており、遠方から来ている人などはリフレッシュできて良さそうでした。

    公式頒布物

    今年は参加特典としてTシャツだけでなく、参加者1人1枚NFCカードが貰えました。
    (最近名刺がわりにしている人もたまに見かけるのですが、専用アプリで、自分のサイトURLなど登録しておくとスマホなどでカード読み取ればさっとリンク先に飛べるようになるものです)
    OSTなどのエンジニア交流で即役に立ち、記念品・実用性両面兼ね備えたナイスな特典でよかったです。

    参加してみて

    今年で3年目となるTSKaigiですが、昨年に引き続き参加してみて、連年で参加したイベントも初めてなのもあり、昨年と比較してさまざまな面で大きな変化を感じることができたイベントだったと思います。

    チケットが即完するスピード感に始まり、協賛スポンサーの増加、企画が様々増えていることなども実際に現地へ足を運んで昨年よりもレベルアップしているのを感じました。

    内容に関しては、昨年は突如到来したAIバイブコーディングの波や、開催直前に出たtsgo previewがセンセーショナルな話題として圧倒されていたのが懐かしいですが、昨年は突如到来したAIバイブコーディングの波や、開催直前に出たtsgo previewがセンセーショナルな話題として圧倒されていたのが懐かしいですが、AIを活用することは前提として扱われていて、1年という短い期間でありながら、この1年の進歩がいかに怒涛であったかを実感しました。

    基調講演では、TypeScriptコンパイラのGo移植を主導したMicrosoftのJake Bailey氏が登壇され、TypeScriptコンパイラをGoに移植する1年半の取り組みについてお話しされました。移植戦略の中でお話しされていた、約1万5,000個のスナップショットテストと差分ファジングによって「振る舞いを変えずに移植する」開発スピードと安全性を担保した手法が印象的であったのと、公式リリースされたtsgoによるライブでのコンパイル速度比較デモ(VS Codeで125秒→10秒、約12倍)も披露されました。

    同時に、複数のセッション内容が同じテーマについて触れられていた(ReactCompiler, BrandedTypes...)のも特徴的で、エコシステムのデファクトスタンダードな話題としてわかりやすい年だったように思います。

    OSTでは、外部エンジニアとこれからのキャリアや技術選定の悩みについて話したりなどしましたが、カンファレンスとしては他のコミュニティよりまだまだ若いので、着実に成長・輪を広げているTSコミュニティに引き続き注目、参加していきたいと思いました。

    セッションの内容も実務に活かせそうな内容のものも多かったので、今回得た知見を業務に取り入れながら今後もキャッチアップしていきたいと思います。

    今回の参加レポートが、TypeScriptを学びたい方やTSKaigiに興味があるけど参加したことがない方など、少しでもTypeScript に触れるきっかけになれば嬉しいです。

    ここまでお読みいただき、ありがとうございました!

    ※本記事は2026年07月時点の情報です。

    著者:マイナビエンジニアブログ編集部