はじめに
TSKaigi 2026に学生支援制度を利用して参加させていただきました。本記事はその参加レポートです。
私はインターンでTypeScriptを使う機会があるものの、バックエンドはGoで書くことが多く、BE側のTypeScriptに深く触れる機会はほとんどありませんでした。実際に企業でプロダクトを開発しているエンジニアの方々がTypeScriptに対してどのような取り組みをされているのか気になり、今回の学生支援制度に応募しました。
参加にあたり、株式会社アイスタイル・株式会社アサイン・株式会社SmartHR・ソフトバンク株式会社・株式会社ドワンゴ・株式会社プレイド・株式会社LayerX・レバレジーズ株式会社 の皆様にご支援いただきました。この場を借りて感謝申し上げます。
事前イベント
TSKaigiの前日には、学生支援制度の参加者を対象に、スポンサー企業のエンジニア・人事の方々と交流できるオンラインイベントが開催されました。学生3名ほどがZoomのブレイクアウトルームに入り、各企業の方々と直接お話しできる形式でした。
私は株式会社ドワンゴと株式会社アイスタイルの方々とお話しする機会をいただきました。実際に第一線で働いているエンジニアの方と直接お話しできる貴重な機会で、大変良い経験になりました。お時間をいただいた両社の皆様、ありがとうございました。
スカラシップランチ
スカラシップランチは、Day1のランチタイムに運営の方々が設けてくれた交流の場で、学生支援制度の参加者とスポンサー企業のエンジニアの方々がマッチングされ、一緒に食事をしながら話せる機会でした。私は株式会社プレイドのエンジニアの方と学生5名でビュッフェ形式のランチをいただきました。会場はTSKaigi 2026と同じ建物1階にある「オールデイダイニング グランドエール」で行われ、料理もとても美味しく、リラックスした雰囲気でお話しすることができました。
私はそれまでプレイドについて「何かのSaaS」という程度の認識しか持っていなかったのですが、実際にお話しを聞いて大きく認識が変わりました。
プレイドは、「何回同じ画面を開いたか」「どのボタンをクリックしたか」といったユーザー行動データをデータウェアハウスに蓄積し、そのデータを元に通知やアプリ内イベントをパーソナライズ配信できるSaaSを提供している会社でした。データウェアハウスに溜まったデータは一般的にバッチ処理や分析用途に使われるものですが、そのデータをリアルタイムのイベントトリガーとして活用できる点が大きな特徴とのことでした。さらにその配信トリガーの設定をエンジニアでなくてもUIから直感的に管理できる点も強みとして挙げていただきました。
ちょうど私がデータ基盤周りに興味を持ち始めていた時期だったこともあり、「なぜ自前のイベント駆動ではなくSaaSを使うべきなのか」「データウェアハウスを使いながらリアルタイム配信をどう実現しているのか」といった疑問を直接ぶつけることができ、とても充実した時間でした。TSKaigiのメインテーマとは少し外れたトピックでしたが、学生支援という場ならではの近い距離での対話を存分に楽しめました。
セッション
今回は数多くのセッションが開催されましたが、中でも特に印象に残ったものを紹介します。
静的解析・レビュー自動化
普段の開発でレビューの負担がボトルネックになりつつあると感じていたこともあり、その課題にアプローチするセッションが複数あり、とても興味深く聴講しました。
静的解析への投資がAI時代のコード品質を支える ー カスタムESLintルールの設計と運用
AIが生成するコードはプロジェクト固有のルールを無視してしまうことがあり、「AIによるレビューや修正はあくまで確率的」という問題があります。それに対して「同じ入力には同じ結果を返す」静的解析との相性が非常に良いという視点が印象的でした。
実際に紹介された工夫として、
- OxlintとESLintの二層構造でCIを構成する
- 正解が一意なルールはCIで
eslint --fixを実行してbotが自動コミット - ボーイスカウトルールで気づいた人がルールを追加していく文化
-
eslint-disableコメントにはAIへの意図説明を記載する
など、現場で活かせるノウハウが詰まっていました。
ts-morphでプロジェクト固有のアーキテクチャガードレールを作る
ts-morphを使ってコードベース独自のアーキテクチャルールを静的チェックとして実装する方法についてのセッションでした。ESLintの汎用ルールでは表現しきれないプロジェクト固有の制約をTypeScript自身で記述してチェックできるのは、非常に強力だと感じました。
Branded Types
AI時代に考える、Branded Typesで実現する堅牢な型付け
TypeScriptの構造的型付けでは、UserとBookのように名前が異なっていても構造が同じであれば同一視されてしまいます。このセッションではBranded Typesによってその問題を解決するアプローチが紹介されていました。入力値を正規表現でバリデーションしても型がstringのままという実用的な問題を解消できる点が印象的でした。
スプレッド構文によるブランド流出問題を乗り越えて、オブジェクト型に対するBranded Typesを使い倒す
Branded Typesをオブジェクト型に適用する際にスプレッド構文でブランドが消えてしまう問題とその対策についてのセッションでした。Branded Typesに関するセッションを複数聴いたことで、各セッションがそれぞれ異なる実用上の課題にフォーカスしているのがわかり、自分の理解も深まりました。
Ripple-TS
今回聴講した中で最も新鮮だったセッションです。RippleというTypeScript-firstな新しいUIフレームワークの紹介で、TSRXというテンプレート構文仕様を採用しているのが大きな特徴です。JSXのような返り値ベースの記法とは異なり、コンポーネント本体内でif/for/try-catchをそのまま記述できるステートメント型の構文を採用しており、記述が局所化されるためLLMの出力が安定しやすいという特性が興味深かったです。React・Solid・Svelteといった既存フレームワークの思想を吸収しながら、次世代の開発体験を模索している点が印象的でした。
懇親会
Day2終了後の懇親会では、SNSでの存在は知っていたものの対面では初めてお会いする方々や、過去にインターン先やイベントなどでお世話になった方々にも久しぶりに会うことができました。もちろん全く新しい出会いも多く、立場や会社を超えた交流がとても有意義でした。会場のお寿司も非常に美味しく、楽しい時間を過ごすことができました。
全体を通じての感想
今回のTSKaigiで最も印象的だったのは、AIが意図しない挙動をしないよう静的解析でどう守るか、というテーマが複数のセッションで共通して語られていたことです。
AIが生成するコードの品質にムラがあり、プロジェクト固有のルールを無視することもあるという課題に対し、「確率的なAIレビュー」ではなく「決定論的な静的解析」で補完するアプローチは非常に説得力がありました。型システムによってコードの品質や意図を守れるというTypeScriptの強みを改めて実感し、自分がAIを活用した開発をする際にも今回得た知見を活かしていきたいと思いました。
技術的なキャッチアップだけでなく、立場を超えたエンジニア同士の交流や、学生支援制度を通じたスポンサー企業の方々との交流を行うことができ、参加できてよかったと感じました!!
最後に、学生支援という形で参加の機会をいただいた 株式会社アイスタイル・株式会社アサイン・株式会社SmartHR・ソフトバンク株式会社・株式会社ドワンゴ・株式会社プレイド・株式会社LayerX・レバレジーズ株式会社 の皆様、本当にありがとうございました。