Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
typescript-goで変わるリンターの世界 — Flintという第三の選択肢
Search
Tamashoo
May 23, 2026
180
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
typescript-goで変わるリンターの世界 — Flintという第三の選択肢
Tamashoo
May 23, 2026
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Practical Orchestrator
shlominoach
192
12k
Why Our Code Smells
bkeepers
PRO
340
58k
4 Signs Your Business is Dying
shpigford
187
23k
First, design no harm
axbom
PRO
2
1.3k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
ラッコキーワード サービス紹介資料
rakko
1
4.9M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Claude Code のすすめ
schroneko
67
230k
Transcript
typescript-go で変わるリンターの世界 - Flint という第三の選択肢 Tamasho Tomoya TSKaigi 2026 2026-05
自己紹介 名前: 玉正 智也(Tamasho Tomoya) 所属: 楽天グループ株式会社 業務: フロントとかBFF とか TypeScript
は触り始めて1 年くらい typescript-eslint に少しPR を出したことがある 1
1. リンターの仕組み 2. ESLint とRust 製Linter 3. Flint: ハイブリッド 4.
まとめ 2
1. リンターの仕組み 2. ESLint とRust 製Linter 3. Flint: ハイブリッド 4.
まとめ 3
TypeScript リンターの役割 リンターはAST( 抽象構文木) ルールや型チェックルールによって コードの解析を行う それぞれのルールについて簡単に紹介する 4
AST ルール: 構文木を見て判定 コード例: const x = 1 == 2;
↓ パース(型情報不要) BinaryExpression ├─ operator: "==" ← ここを見る ├─ left: 1 └─ right: 2 → "==" を検出 → 警告(eqeqeq ルール) 型情報は不要で、ファイルをパースするだけなので速い 5
型チェックルール: 型情報で判定 コード例: async function load() { fetch('/api/data'); // ←
await なし } 型グラフより: fetch() → Promise<Response> この Promise は未処理 → no-floating-promises が検出 (戻り値の型を知らないと判断できない) tsc の型解析が必要なので遅い →ESLint が遅いと言われる理由 6
2 種類のルール: まとめ AST ルール 構文木のみで動作 → 高速・軽量 スタイル・構文の問題を検出 型チェックルール
型情報が必要 → tsc をフル実行 型に起因するバグを検出できる → 両方必要だが、型チェックを有効にすると実行時間が遅くなる → 速度と拡張性のバランスがツール選定の主な理由 7
1. リンターの仕組み 2. ESLint とRust 製Linter 3. Flint: ハイブリッド 4.
まとめ 8
ESLint 強み エコシステム最大で、多種多様なルールが存在 ルールはTypeScript/JS で記述可能 →TypeScript のルールをTypeScript で記述可 jest ・react
・import など有名プラグインが充実 弱み 型チェック時に低速になる 9
Rust 製Linter 強み Rust 製でESLint より高速 フォーマッター内蔵のものもある(Biome ) 弱み 型チェックルールは非対応
or 対応中 カスタムルールはRust で書く必要がある →TypeScript+Rust の知識が求められる ESLint の全てのルールをカバーしているわけではない 10
比較 項目 ESLint Rust 製 理想 型チェックルール あり なし あり
カスタムルールの言語 TypeScript Rust TypeScript 速度 遅い 超高速 超高速 エコシステム 巨大 発展途上 巨大 11
1. リンターの仕組み 2. ESLint とRust 製Linter 3. Flint: ハイブリッド 4.
まとめ 12
Flint とは Josh Goldberg さん(typescript-eslint メンテナー)が主導する実験 的OSS リンター If I
Wrote a Linter, Part 1: Architecture GitHub: https://github.com/flint-fyi/flint TypeScript で書かれたルールや設定を、ネイティブ速度のコアに 委譲することで高速にできるというアイデア ESLint の拡張性とネイティブリンターの速度の両立が目標 13
Flint: ハイブリッドアーキテクチャ ネイティブ速度コア(typescript-go 等に委譲) └─ 高速パース + 型解析 ↓ ルールエンジン(TypeScript)
└─ TS でルール記述 ↓ Lint 結果出力 ネイティブ速度の処理を委譲する設計 ルールはTypeScript — TypeScript の知識のみで記述可能 Linter の組み合わせ不要 14
Flint とESLint の違い クロスファイルキャッシュ 他のリンターは変更のあったファイルのみの解析を行うが、 型チェックルールは依存関係も考慮する必要がある この機能では、 変更ファイルとの依存関係のある部分のキャッシュを無効化 することで、パフォーマンスを大幅に改善 TypeScript
で型安全な設定ファイル markdown やJSON などの非コードファイルも解析可能 詳しくは: What flint does differently 15
Flint が提供するもの 型チェックルールを高速に実行 カスタムルールをTypeScript で記述(Rust 不要) ESLint 互換で移行コストを下げる ⚠️ 注意
実用に耐えるレベルまでまだまだかかる見込み 開発が頓挫する可能性もある→OSS コントリビュートの余地がと てもある 16
1. リンターの仕組み 2. ESLint とRust 製Linter 3. Flint: ハイブリッド 4.
まとめ 17
まとめ Flint はESLint の拡張性とRust 製リンターの速度を両立させること を目指す実験的プロジェクト 試すなら個人プロジェクトから、興味があればコントリビュート も面白いかも 18