
まえがき
はじめまして!カミナシでソフトウェアエンジニアをしている shimmy(@naoya7076) です。
カミナシは 2025年5月23・24日に開催された「TSKaigi 2025」にゴールドスポンサーとして協賛し、私は現地で参加しました。
各登壇の内容やトーク内容の詳細は、きっと誰かがまとめてくれていると思いますので、この記事では以下の点に絞って書いていこうと思います。
やること
- 自分の中でテーマごとに整理した内容と、それぞれの感想
- TS Kaigiで自分が聞いたセッション全体を通じて感じたこと
やらないこと
- 登壇の内容を網羅的に伝えること
- 全ての登壇について詳細に書くこと
静的解析
The New Powerful ESLint Config with Type Safety
The New Powerful ESLint Config with Type Safety - Slidev
英語の登壇を聞くたびに、「あぁ、自分のリスニング力を向上させたい」と毎回痛感します。ただ、今回は自分の知っているテーマだったことや、最近英語学習をしていたこともあり、かなり聞き取れたという印象です。もちろん、Anthony Fuさんの英語が非常に聞き取りやすかったことも大きな理由だと思います。
この登壇で、@eslint/migrate-configやConfig Inspectorの存在を初めて知りました。
私がカミナシで関わっているプロダクトではESLintを使用していますが、まだFlat Configへ移行できていません。@eslint/migrate-configを使えば、案外スムーズに置き換えられるのではないかと期待が膨らみました。
(今調べたらそもそもESLintのConfiguration Migration Guideにmigrate-configについての記述がちゃんとありました。Migration Guideはちゃんと読んでおかねば…)
また、スライドが非常に洗練されており、細部へのこだわりを感じました。
Rust製JavaScript/TypeScript Linterにおけるプラグイン実装の裏側
Plugin System in Rust based JavaScript / TypeScript Linters - Speaker Deck
このセッションでは、Biomeの概要や、Biomeに新たに導入される予定のプラグイン機能について解説がありました。GritQLというクエリ言語を用いてプラグインを作成できるとのことです。コード例を見る限り、GritQLは読みやすく、AST(抽象構文木)に詳しくない人でも比較的容易に記述できそうな印象を受けました。
TypeScriptネイティブ移植観察レポート
TypeScriptネイティブ移植観察レポート TSKaigi 2025 - Speaker Deck
TypeScript Compilerが10倍高速化するという話で、その背景、高速化の理由、そして具体的な移植方法について、非常に詳細な解説がありました。
型チェックを「AIに素早くフィードバックを与えるLinter」と捉えた場合、このコンパイラの高速化は、AIへのフィードバックループをより迅速にすることを意味します。特定のライブラリやエコシステムが選択される上で、「パフォーマンスの高さ」が一層重要な要素になるという潮流を感じました。 パフォーマンスの重要性については、TypeScriptとは何であって何でなく、誰のもので、どこへ向かうのか でも言及されていました
アーキテクチャ
TypeScriptで実践するクリーンアーキテクチャ
最近X(旧Twitter)で「フロントエンド × クリーンアーキテクチャ」という話題を目にすることが多く、関心を持っていました。「終わらせましょう」という力強い宣言にふさわしく、「クリーンアーキテクチャとは何か」という話から、それが何をもたらすのかまで、かなり詳細に説明されました。特に依存関係逆転の原則に関する説明は、私がこれまでに触れたクリーンアーキテクチャに関する解説の中で、最も分かりやすいものでした。
その次にクリーンアーキテクチャの考え方を応用し、WebアプリケーションとしてもCLIツールとしても利用可能なアプリケーションを構築するというパートがありました。
この話を聞きながら、以前読んだMarpの作者へのインタビュー記事を思い出しました。その記事では、複雑化しすぎてメンテナンスが困難になったMarpをゼロから作り直し、コア機能を「Marp Core」というライブラリとして切り出し、それを基盤として「Marp CLI」と「Marp for VS Code」を開発したという経緯が語られていました。まさにセッションであったようにコアドメインを中心に据えることで、再利用性やメンテナンス性の向上を行った例だと思いました
Pragmatic Functional Programming in TypeScript
Pragmatic Functional Programming in TypeScript
このセッションでは、関数型プログラミングを実務で活用するための第一歩として、以下の5つの原則から始めてみてはどうか、という提案がありました。
- Parse, Don’t Validate
- Make Illegal States Unrepresentable
- Errors as values
- Functional Core, Imperative Shell
- Smart Constructor
現在、社内で「関数型ドメインモデリング」の輪読会を行っているのですが、それを実務のTypeScriptでどう活かすかという点では、難しいと感じる部分がいくつかありました。この登壇を通じて、関数型プログラミングのエッセンスをTypeScriptで実践的に活用するためのヒントを得ることができました。
印象的だった登壇
高度な型付け、どう教える?
TypeScriptで書かれたOSSにPRを出したい時に、複雑な型定義にしばしば悩まされていました。スライドには「学ぶ人向け」ではなく「教える人向け」とありましたが、「教えることが最大の学びである」と考え、聞くことにしました。
例えば、Genericsを関数の引数、Conditional Typesをif文のように捉え、まずJavaScriptで下書きし、それをTypeScriptに“翻訳”するというアプローチが紹介されました。発表内でも触れられていた通り、これらは完全に一対一で対応するわけではありませんが、このようにマッピングして考える方法は、私にとってかなり理解しやすかったです。
別の登壇になりますが、TSKaigi Kansai 2024での「TypeScript、上達の瞬間」というトークを思い出しました。その中で語られた「勝ちパターン」として、やりたいことから逆算して当てはまる型を考えるというアプローチがあり、今回の「JSで下書き → TSで翻訳」という話と結びついたことで、複雑な型への理解が一層深まりました。
AIについて
私は2024年のTSKaigiにも現地参加しましたが、昨年と比べて最も大きな変化は、AIを活用した開発が当たり前として語られていた点です。
そのうえでAIとの関わり方について
のセッションを聞いて感じたのは、次の点です。
コンテキストウィンドウが今後どれだけ拡大しても、AI に際限なく情報を渡すのは得策ではありません。情報量が多すぎると、AI は膨大な選択肢の中から回答を出すになり、こちらの意図や自社ドメインから外れた答えが返ってくる可能性が高まります。
そこで「AI Coding Agent Enablement in TypeScript」でも強調されていた 「解空間をできる限り絞る」 という方針が重要になります。ドキュメントなどをRulesやPromptで与えることで、AI が探索すべき範囲が明確になり、こちらの期待したアウトプットを得やすくなることが分かりました。
AIの出力に対して人間が毎回フィードバックを行うと、human-in-the-loopの頻度が増加してしまいます。また、AIの迅速な実装能力に対して、人間の判断速度が追いつかず、ボトルネックとなる可能性も指摘されました。そこで、Linterのように機械的に判断できるルールを活用すれば、人間が介在することなく、AIに対して高速なフィードバックループを構築できます。
さらにAIに対し「自分が行った間違いを再度発生させないためのLintを書いて」と指示することでプロジェクトに応じたルールを自分たちで作り、育てていくことができる。という話が2つの登壇共通でありました。
今回のセッションを通じて、LinterやLSP(Language Server Protocol)は、今まで考えられてきた「コードを静的にチェックするツール」という枠を超え、「AIに迅速なフィードバックを提供する決定論的なシステム」という更に大きな価値を持つようになると感じました。
最後に
物理参加の一番の魅力は、コミュニティの熱量や温度感を肌で直接感じられることです。ソフトウェア開発の歴史で、思想やツール、スタンダードが変化する瞬間は何度かありましたが、「開発するという行為そのもの」がこれほど大きく変わろうとしているのは、今回が初めてでしょう。そのカオスの中にいて、劇的に変化していくのをコミュニティを通じて見れているのが本当にいい体験だなと思いました。
ソフトウェアエンジニアを募集しています
カミナシではTypeScript でソフトウェアを開発していきたいエンジニアを積極的に採用中です!