TypeScript の型システムを活用した ESLint カスタムルール開発入門
TSKaigi 2025 の発表資料です。TypeScript の型システムを活用した ESLint のカスタムルールの開発手法などについて解説しております。
https://ren-yamanashi.github.io/2025-05-24_ts_kaigi/
こんにちは。メイツの内藤です。
2025/05/23, 24 の 2 日間に渡って開催された TSKaigi 2025 に現地参加しました!
ぼくは今年から TypeScript を使用し始めました。TypeScript をより学びたい、TypeScript 好きな人と話してみたいと思い参加しました。
TypeScript に関するあらゆるテーマを扱う国内最大級のカンファレンスです。2024 年から始まって今年で 2 度目の開催で、今年は 2 days 開催でした。
TSKaigi 2025 のミッションは「学び、繋がり、"型"を破ろう」ということで、技術的な学びはもちろん、登壇者の方や参加者、スポンサー企業の方やスタッフの方との繋がりも強く感じたイベントでした。
弊社の後藤さん、山梨さんの 2 名が登壇しました!
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 〜他言語変換の仕組み〜
型システムを活用した ESLint カスタムルール開発入門 〜固有ドメインにおけるコーディング規約を開発する〜
オープニングトークでは、TSKaigi の規模とカンファレンスの目的の一つとして「繋がり」を意識されていることを強く感じました。
Day 1 では招待公演としてアンソニさんが「The New Powerful ESLint Config with Type Safety」というタイトルで ESLint の flat config について登壇されました。
Day 2 では berlysia さんが「TypeScriptネイティブ移植観察レポート」というタイトルで登壇されていました。
どちらのセッションも 1 発目に相応しい内容でした。
内容の素晴らしさはもちろんですが、お二人の熱量や思いを感じることができてととてもワクワクしました。
18 企業ものブースがあり、どこのブースも大盛況でした!
実際に製品を使用させていただいたり、アンケートや型クイズに参加しながらスポンサーの方と交流することができてとても楽しかったです。
美味しいコーヒーもいただけてサイコーでした☕
2 日間で 10 セッション 12 LT というとんでもなく濃い 2 日間を過ごすことができました。
ぼくが聞いたトーク一覧はこちらです!
Day 1(5 セッション、4 LT)
(セッション)スキーマと型で拓く Full-Stack TypeScript / Sohei Takeno さん
(セッション)SignalとObservable―新たなデータモデルを解きほぐす / lacolaco さん
(セッション)堅牢なデザインシステムをつくるためのTypeScript活用 / takanorip さん
(LT)学生でもここまで出来る!ハッカソンで爆速開発して優勝した話 / かわちゃんさん
(LT)『Python→TypeScript』オンボーディング奮闘記 / 龍野 卓己さん
(LT)転生したらTypeScriptのEnumだった件~型安全性とエコシステムの変化で挫けそうになっているんだが~ / やまのくさん
(LT)URLPatternから始めるWebフレームワーク開発入門 / ryuapp さん
(セッション)fast-checkとneverthrowのPBT+Result型で堅牢なビジネスロジックを実現する / 上田慶祐さん
(セッション)Rust製JavaScript/TypeScript Linterにおけるプラグイン実装の裏側 / unvalley さん
Day 2(5 セッション、8 LT)
(セッション)TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで / 加瀬健太(Kesin11)さん
(セッション)複雑なフォームを継続的に開発していくための技術選定・設計・実装 / izumin5210 さん
(セッション)型システムを活用した ESLint カスタムルール開発入門 〜固有ドメインにおけるコーディング規約を開発する〜 / 山梨 蓮さん
(LT)VueUse から学ぶ実践 TypeScript / ツノさん
(LT)型推論の扉を開く―集合論と構造的型制約で理解する中級へのステップ / 栃川晃佑さん
(LT)TypeScript ASTとJSDocで実現するコードの自動削除 / 川野賢一さん
(LT)これは型破り?型安全?真実はいつもひとつ!(じゃないかもしれない)TypeScriptクイズ〜〜〜〜!!!!! / 君田 祥一さん
(セッション)機能的凝集の概念を用いて複数ロール、類似の機能を多く含むシステムのフロントエンドのコンポーネントを適切に分割する / Noritakalkeda さん
(セッション)TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 〜他言語変換の仕組み〜 / k.goto さん
(LT)ts-morph実践:型を利用するcodemodのテクニック / ypresto さん
(LT)declaration mergingの威力:ライブラリアップデート時の書き換え作業を90%短縮するテクニック / Yuma Takei さん
(LT)Standard Schema: スキーマライブラリの統一規格とは何か / Nozomu Ikuta さん
(LT)バリデーションライブラリ徹底比較 / 田中勇太さん
学びの機会を提供してくださった登壇者の皆さんに感謝の気持ちでいっぱいです。
申し込んだ時点では TypeScript のことはほとんど何もわかっていませんでした。
参加してみると発表の内容を理解し共感できることもあって、これからも学習と仕事を頑張りたいなと思いました。
LT では個性的な発表をたくさん見ることができて楽しかったです(笑)
スキーマと型で拓く Full-Stack TypeScript / Sohei Takeno さん
プロダクト初期はノーコード開発で実現していて 100 画面以上 1000 カラム超の規模だったということにも驚き、興味が惹かれました。
GraphQL をバックエンドとフロントエンドの分離のための技術として採用し、どのようにスピードと持続的な成長を実現したかについて学ぶことができました。
SignalとObservable―新たなデータモデルを解きほぐす / lacolaco さん
v-tokyo #22 でも Signal について発表されていました。
今回の発表でも Signal についてわかりやすく発表されていて非常に勉強になりました。
技術の歴史や経緯についても知ることができてとてもよかったです。
「プログラミング言語に欠けているところがあるから、ライブラリで実装されている。だからライブラリの実装を見ることで言語の未来を見ることができる!」という発言が個人的にとても印象に残りました。
Rust製JavaScript/TypeScript Linterにおけるプラグイン実装の裏側 / unvalley さん
これまで Linter の実装について考えたことはありませんでした。
TSKaigi にせっかく参加するからには、今の自分にとっては難しそうなテーマも聞いてみたいなと思って聞かせていただきました。
Rust 製の JS/TS Linter は複数あることは知っていましたが、違いについてまでは知らなかったのでとても良い機会になりました。
型システムを活用した ESLint カスタムルール開発入門 〜固有ドメインにおけるコーディング規約を開発する〜 / 山梨 蓮さん
ESLint の知識が全然なく、カスタムルールを作成できるとは全く知りませんでした。
コーディング規約を ESLint のカスタムルールで表現するというゴールに向かって、必要な知識と方法を丁寧に説明していて、とても理解しやすかったです。
いつかコーディング規約を Lint のルールとして表現したくなる日が来そうなので復習したいと思います。
発表の内容も素晴らしかったですが、スライド自体も見やすく綺麗で非常に参考になりました。
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 〜他言語変換の仕組み〜 / k.goto さん
AWS CDK が複数言語を使用して実装できるとは知りませんでした。
jsii というライブラリを用いて TypeScript を他言語に変換する、というところからさらに深く踏み込んでいてとても興味深かったです。
社内のバックエンドチームの勉強会で議題に取り上げられていたのは知っていたのですが、自分には難しそうだなと思っていたので、後藤さんの発表で勉強することができてよかったです。
TS コミュニティはツールチェーンにも関心が高いなと改めて感じました。
また、AST などのコードの抽象的な表現についてのテーマの発表も多かった気がします。
懇親会では普段お世話になっている方だけでなく、登壇者の方やスタッフの方ともお話ができて嬉しかったです。
学生の方にもお話を聞かせていただけてとても刺激を受けました。
自分の仕事のことについても話すことができて、日々の仕事に改めてやりがいを感じてやる気が出ました。
たくさんの発表を聞いて勉強することができましたが、聞くことができなかった発表もたくさんありました。
公開されている資料などを見てキャッチアップしたいと思います。
最後に、素晴らしい発表をしてくださった登壇者の方々、スタッフの方々、参加者の皆様、ありがとうございました!!
TSKaigi 2026 も楽しみです!