はじめに

こんにちは。グループIT推進本部 CIUのソフトウェアエンジニア兼TypeScriptのNext Expertsをしている平井( did0es )と、タップルでサーバーサイドエンジニアをしている糸井( Issa )です。

本記事は、5/23〜5/24に開催されたTSKaigi 2025の参加レポートです。セッションの聴講や、スポンサーブースの運営で得られた知見と感想を共有させていただきます。

TSKaigiについて

カンファレンス会場の室内で、多数の参加者が着席している。正面のスクリーンとサブスクリーンには「TSKaigi 2025」のロゴとカラフルな金魚のイラストが表示されている。

TSKaigiは、TypeScriptに関するあらゆるテーマを扱う、日本国内最大級のカンファレンスです。

参加者は、3トラックに分かれたセッションから自由に選択して聴講できます。Ask the speakerでは、登壇者と議論を深められます。スポンサーブースでは、各社の様々なTypeScript関連のコンテンツを体験できます。詳細は後述しますが、サイバーエージェントはゴールドスポンサーとしてブースを出展しました。

第2回となる今回は、開催地を中野から神田に移し2日間開催とすることで、さらに規模の大きなイベントとなり、TypeScriptを扱う業界や開発者の活性化が促されました。

聴講したセッションのご紹介

平井と糸井が聴講したセッションのうち、興味深かったものをいくつかご紹介します。

The New Powerful ESLint Config with Type Safety

聴講者:糸井

資料:https://talks.antfu.me/2025/tskaigi/1

Vitest をはじめとする JavaScript のツールチェーン開発に携わる Anthony Fu 氏による招待講演では、ESLint v9 から導入された Flat Config について、Legacy Config との違いを踏まえながら、型安全に運用する方法が紹介されました。

私がプロダクト開発に携わっているタップルのバックエンドは、JavaScript で構成された大規模なモノレポを TypeScript ベースのマイクロサービスへと分割しており、その過程で各サービス間のコーディング規約の統一が課題となっていました。

今回のAnthony Fu 氏の発表をきっかけに、タップルのESLint の周りの見直しを行うことにし、

以上を活用することで、約14個におよぶマイクロサービスおよび開発ツール群のESLint 設定を一気にFlat Config 形式へスムーズに移行することができました。

Lint の設定はアプリケーションコードと異なり、「実行してもすぐに反映結果がわからない」「ルールが意図どおりに適用されているか判断しづらい」といった難しさがあります。ESLint Config Inspector によって、各設定がどのように反映されているかを即座に視覚的に把握でき、開発体験が向上しました。

TypeScriptとは何であって何でなく、誰のもので、どこへ向かうのか

聴講者:糸井

資料:https://zenn.dev/sosukesuzuki/articles/5146c84504445f

TypeScriptという言語やそのエコシステムの変遷について、特に型チェックやコンパイルの文脈で紹介されていました。

特に印象的だったのは、TypeScriptを取り巻くツールチェインの役割の歪性です。

swcを元とした、コンパイルを高速にするツールが登場しているにも関わらず、型チェックの部分はMicrosoft公式のtscを使わないといけないという点です。この背景には、マイクロソフトのメンテしている型チェッカーの複雑性にあります。

型チェックのロジックはcheckert.tsに集約されており約3MBにのぼり、この巨大なファイルを再実装し変更に追従するのは大変な仕事になります。よって、type checkができるサードパーティ製のコンパイラが登場していないのが現状です。

しかし、3月に公表されたTypeScript公式による、コンパイラのGo実装により流れは大きく変わりつつあります。これによりtscのコンパイル速度は劇的に改善され、今後は「型チェックも含めたビルド体験」が一層シームレスになることが期待されます。

これまで高速化のためにesbuildやswcとtscを併用していたような、ツールチェインの分断が次第に解消されていくかもしれません。

さらに、ランタイムにおいては、DenoやBunでは既にTypeScriptの実行をサポートしており、Node.jsのv23.6.0 からは試験的にTypeScriptの型注釈を無視(stripping)してそのまま実行する仕組みの導入が進んでいます。

このようなTypeScript ファーストな体験の浸透により、特にバックエンド領域ではビルドレイヤの存在が開発者にとって「意識されないもの」へと変わりつつあり、TypeScript はより自然に実行環境へと溶け込んでいくように感じます。

個人的には、プロダクト開発者として、エコシステムやツールチェーンの制約に煩わされることなく開発に集中したいという思いがある一方で、こうした技術的な背景や動向を理解しておくことが、結果として適切な技術選定を行い、主流の流れに乗り続けるための大きな助けになると改めて感じました。

TypeScriptが今後も進化を続けていく中で、その仕組みが良くも悪くもブラックボックス化していく側面を持っています。

仕組みの結果だけを盲目的に受け入れるのではなく、言語のエコシステムへの理解を持ちながら、健全な距離感とバランス感覚をもって付き合っていくことが、開発者として求められる姿勢ではないかと強く思います。

Rust製JavaScript/TypeScript Linterにおけるプラグイン実装の裏側

聴講者:平井

資料:https://speakerdeck.com/unvalley/typescript-linters

Biomeコアメンバーのunvalleyさんによる、Biomeやdeno_lint、Oxlintにおけるプラグイン機構の内部実装について深堀りする発表です。

Biomeについては、試験的に行われているGridQLというDSLを用いたプラグインの記述や、将来的に予定している JS / TS によるプラグインの記述に向けて選定中のJS Engineをご紹介されていました。

deno_lintについては、deno runtimeでASTを効率よく扱うためのデータ構造の話を中心にご紹介されていました。

Oxlintについては、GitHubでのディスカッションで議論されている、ESLintとの互換性やパフォーマンスと利便性関連のお話についてご紹介されていました。

特に、BiomeのようなLinter・Formatterの開発や拡張には、ASTへの理解が欠かせないものだと思っていましたが、GridQLでASTの構造や走査方法を知らずともコードの検証や修正ができる仕組みを提供しており、大変興味深い内容でした。

TypeScriptネイティブ移植観察レポート TSKaigi 2025

聴講者:平井

資料:https://speakerdeck.com/berlysia/typescript-native-porting-observation-tskaigi-2025

TSKaigi運営のberlysiaさんによる、tscのtsgoへの移植に関する発表です。

ちょうどTSKaigiの開催時期と同じタイミングでリリースされたtsgoが、なぜ速いのか、なぜGoに移植するのか、なぜ短い開発期間でリリースできたのかなどを、公開情報を元に要点をまとめて考察されていました。

特に、なぜGoに移植するのかの理由として、tscが「既にJavaScript実装での限界に達している」と考察されていたのが印象的でした。

TypeScriptの開発チームはTypeScript自体をTypeScriptで書き、JavaScriptのランタイムで動かしていました。ドッグフーディングとして、TypeScriptの機能を試すことができた反面、コンパイルのような計算負荷の高い処理もすべてJavaScriptの性能に依存していました。

併せて、パフォーマンスが問題に挙がった際に、コンパイル時のプロファイリングを実施したところ、特にボトルネックはなかったためにJavaScriptの性能の限界が際立つ形になりました。

そこで、TypeScriptのような大規模なコードでも移植しやすく、ガベージコレクタや優秀な並行処理機構を持つGoへの移植が選ばれました。

「tscより10倍の速くコンパイルができるようになった」という触れ込みの裏側には、開発チームの様々な意思決定があったことを伺える、非常に知見が深まる内容でした。

TypeScript Language Service Plugin で CSS Modules の開発体験を改善する

聴講者:平井

資料:https://speakerdeck.com/mizdra/css-modules-kit

株式会社はてなでフロントエンドエキスパートとして活動されている、mizdraさんによるCSS Modulesを用いる際の開発体験の改善についての発表です。

CSSのスコープを絞り、JavaScriptのモジュールのようにimportして使えるCSS Modulesですが、エディタのLanguage Serverのサポートが不十分であるという切り口から、Language Server Protocol(以下、LSP)を深堀りし、自作ツールで汎用的なLSPプラグインを作る過程をご紹介されていました。

特に、プラグインツールを作るだけではなくツールを作るためのフレームワークまで、あらゆるものを自作された環境で開発されていたところに対して、初日の基調講演を担当されたAnthony Fuさんと同じように、課題解決力が素晴らしい印象を受けました。

“良い”TSのコードを書く為のマインドセット

聴講者:糸井

資料:https://speakerdeck.com/kei95/liang-i-typescriptwoshu-kutamenomaindosetuto

「良い」TypeScriptを書くには、健全性 (Soundness) と実用性 (Usability) の間のトレードオフを意識することが重要であると提唱しています。

TypeScriptの型システムにおいて「JSへのコンパイル前と実行時が同じ型である」事をどこまで保証するか、つまり健全性 (Soundness)の担保は開発者の手に委ねられています。例えば、型アサーションやanyによって実行時の型を正とすると、健全性 (Soundness)の比重を下げる代わりに実用性 (Usability)を向上させられます。開発時の型付与の手間が削減されコードボリュームも減ります。

プロダクトの性質やチーム体制などを考慮し、どちらを優先するかを決定することが、効果的なTypeScriptの利用に繋がるというマインドセットが示されています。

私は日頃から健全性(Soundness)を重視し、Type Guard などを活用して型の正しさを厳密に担保することにこだわっています。そのため、チームのコードレビューでは型の整合性に関する議論が長引くこともあります。

しかし、プロダクトの特性やチーム体制、求められる品質水準を踏まえたうえで、健全性と実用性のどちらを優先するかというスタンスをチーム全体であらかじめ共有しておくことで、こうした議論における意見の食い違いも減り、よりスムーズに開発を進められると感じました。

スポンサーブースでの取り組み

スポンサーブースでは、ノベルティの配布やTypeScriptを活用しているプロダクトのご紹介、TypeScriptのNext Expertsである平井が具体的にどういった活動を行っているかを中心にご紹介しました。

また、糸井をはじめとするタップルのメンバーを中心に、タップルのUIでTypeScript関連の診断を行えるアプリを開発し、ブースで提供しました。併せてご紹介します。

プロダクトにおけるTypeScript活用のご紹介

以下3つのプロダクトにおける、TypeScriptの活用事例をご紹介しました。

  • タップル(株式会社タップル)
  • AI Worker(株式会社AI Shift)
  • CyGate(株式会社サイバーエージェント グループIT推進本部)

それぞれのプロダクトでスライド2枚分のパネルを用意し、プロダクトの特徴や技術スタック、どこでTypeScriptが活用されているのかについてご紹介しました。

また、ブースにいらした方々には、サイバーエージェントオリジナルのスプーンや、タップルの求人に関するパンフレットをお渡ししました。

CyberAgentのロゴが掲げられたブースで、社員6名が笑顔で並んでポーズを取っている。テーブルにはプロダクトの紹介資料やタブレット、チラシが展示されており、中央には緑色のアベマくんのぬいぐるみも置かれている。背景にはCyberAgentのロゴバナーとホワイトボードがある。

タップルのUIでTypeScript性格診断アプリを提供した話

タップルはスポンサーとしてブースのコンテンツを展開し、来場者の皆さまに「TypeScript性格診断 by CyberAgent」という体験型コンテンツを提供しました。

今回の出展では、TypeScriptやNext.jsをはじめとした技術要素を取り入れながら、バックエンドエンジニア主導で“タップルらしさ”を表現した診断コンテンツを制作しました。

技術スタックと構成

フロントエンドは TypeScript + React (Next.js) で構築し、データ管理には Firebase Firestore を使用しました。ホスティングはS3 + CloudFront を併用しています。

企画と開発の進め方

今回の企画は、タップルのバックエンドエンジニアが中心となり「TypeScript × 性格診断 × いいかも・いまいち」という、マッチングアプリらしいユーザー体験をベースに発案しました。

UIデザインは実際のタップルのアプリのスクリーンショットをコーディングエージェントに渡し、世界観や操作感を寄せるように工夫しました。

Replit の AI エージェント機能を活用してプロトタイプを短時間で作成し、そこから Cursor を使ってそのまま本番コードに仕上げていきました。開発自体は実質 1 営業日で完了するスピード感でした。

診断内容とユーザー体験

ブースでは、来場者が実際にスマホで診断を受けることができ、タップルのUIに近いインターフェースの中で、自身の性格傾向を測る簡単な診断を体験してもらいました。診断結果にはユーモアを交えたコメントも用意し、技術カンファレンスでありながら「エンタメ×エンジニアリング」を感じてもらえる構成にしています。

ブースでの反響

診断コンテンツは、来場者との自然な会話のきっかけとなり、多くの方がブースに立ち寄ってくださいました。技術的な話題に偏らず、カジュアルな体験を通じて、参加者との交流を広げることができました。

プロダクトの世界観と TypeScript を軸にした開発者体験をうまく融合できた、非常に意義のある出展となりました。

振り返り

今年も多くの方が参加され、現地参加者は750名、オンライン参加者は1,906名、スポンサー・運営メンバーを含めた総計では2,656名という大規模なイベントとなり、会場は終始活気にあふれていました。

セッションはどれも見応えがあり、登壇者の話を聞く中で、普段の開発では意識が薄れていた部分にあらためて目を向けるきっかけになりました。

「今の設計や運用、そもそもこれでいいんだっけ?」というような、見直しのトリガーとなる気づきがいくつもあり、カンファレンスの直後から実際にプロダクトや開発体制の改善にもつながっています。また、実務に役立つ学びに加えて、ある意味で独特ともいえる TypeScript のエコシステムに対する興味も深まり、より一層 TypeScript を好きになるきっかけにもなりました。

After Party やスポンサーブースでの交流も非常に有意義で、さまざまな現場で活躍されているエンジニアの方々と直接会話できたことで、技術的な刺激はもちろん、共通の課題や思いを共有できる機会にもなりました。知ったつもりになっていた領域に新しい視点が加わる、とても実りある時間でした。

そして今回はサイバーエージェントとして初めてゴールドスポンサーとして協賛させていただいたこともあり、参加者としてだけでなく、スポンサーブースの運営や案内など、これまでにない立場でイベントに関わる機会にも恵まれました。

最後になりますが、開催・運営に携わってくださったすべての皆さまに、心より感謝申し上げます。ありがとうございました! 来年の開催も今からとても楽しみにしています。

ご精読いただきありがとうございました。

 

アバター画像
22年新卒入社 グループIT推進本部 CIU所属 ソフトウェアエンジニア・Next Experts(TypeScript)|Lead organizer for FrontEnd Conference Tokyo, Meguro.es
アバター画像
2023年新卒入社のサーバーサイドエンジニアです。現在株式会社タップルでTypeScriptを使ったバックエンド開発を行っています。