以下の内容はhttps://ozaki25.hatenadiary.jp/entry/2025/05/23/183328より取得しました。


「TSKaigi 2025(Day1)」に参加してきました

The New Powerful ESLint Config with Type Safety

Anthony Fuさん
https://talks.antfu.me/2025/tskaigi

  • ESLint
    • flat configに設定の書き方が変わった
    • 2024/4のv9
    • 設定ファイルが.tsで書けるようになった
  • Config Inspector
    • 設定を視覚化してくれる
    • --inspect-config
  • プラグインの書き方がシンプルになった
  • ルールの入力補完
  • LintとFormat
    • ESLint Stylistic
    • autofixでフォーマットも
    • ルールに違反する書き方を変えてくれる
  • 対象言語が増えてる
    • TS/Vue/Svelit/Astro
    • JSON/yaml/toml
    • GraphQL/HTML/mdx

checker.tsに対して真剣に向き合う

Kaoruさん(AVITA)

  • checker.js
  • TypeScriptそのものの型を判別する実装
  • コードが巨大なので生成AIに解説させて読むのがいい

TypeScriptで実践するクリーンアーキテクチャ ― WebからもCLIからも使えるアプリ設計

プログラミングをするパンダさん
https://speakerdeck.com/panda_program/clean-architecture-with-typescript-application

  • クリーンアーキテクチャ
    • 方針と詳細を分けて安定度の高い方に依存するルール
    • 方針はビジネスルールとビジネスロジック
    • 詳細はプラグインのように差し替えられるもの
      • 決定を遅延できる
  • 同心円の図だけを見ている人が多い
  • プログラムの構成
  • 実現方法
    • SOLID原則
    • DIP
      • 依存関係逆転の原則
      • 呼び出しの流れと依存の流れが一緒じゃなくなる
      • DB周りとかUI周りを差し替えられるようになる

堅牢なデザインシステムをつくるためのTypeScript活用

takanoripさん
https://speakerdeck.com/takanorip/bulletproof-design-system-with-typescript

  • デザインシステム
    • ルールセット + ドキュメント + 実装
    • 制約を整えて再現可能にする
    • デザイン原則 - ボイス/トーン - スタイルガイド - コンポーネント/デザイントーク
  • ルールは守られない
    • 善意に頼らない
    • 逸脱を検知できるように
    • ドキュメントを更新し続ける
  • TypsScriptの型定義で強固にする
  • 型付け
    • StyleDictionaryでトークンを出力
    • BrandedTypesで同じnumberでも用途ごとに型付けしたり
  • styleの上書き
    • 基本的に許容したくない
    • classNameは受け取らない
    • 必要ならmarginとかwidthとか個別に受け取る
    • jsxでCSS変数に代入しCSSファイルでは変数を使うようにしておく
  • JSDocに説明を書く
    • JSDocのドキュメントをしっかり書くことでエディタ上で情報を知らせることができる
    • deprecatedが分かったり
  • ドキュメント

AI Coding Agent Enablement in TypeScript

Yuku Kotaniさん
https://speakerdeck.com/yukukotani/ai-coding-agents-enablement-in-typescript

  • AIコーディング
    • できるだけ自走してほしい
    • 人が介入するサイクルを長くしたい
  • デフォルトだと解空間が広すぎる
    • 可能な限り制約を与えて答えの範囲を狭める
    • コンテキストの注入
    • 機械的な検査によるフィードバック
  • 型チェック
    • 型をつけてるからといって精度が上がるわけではないという研究結果
    • anyをつけてるとノイズになって下がる
    • 型を書かせようとするとanyとか適当に逃げるコードを出される
    • そこをうまくやる仕組みも研究されている
  • Linter
    • 従来通りの静的チェックは今も有効
      • コードを生成しながらのチェックは遅くなってしまう
      • 生成AIのチェック判断は本当に正しいかはわからない
    • Lintのルールも指摘して書かせる
      • 次ミスらないようにルールを書きなさいと
  • デザインシステム
    • デザインシステムのMCP
    • htmltとCSSの制約
    • TSのコードも使用例のドキュメントとして役立つ
  • 複雑な型エラーからは次のアクションが分かりづらい
    • コード生成に最初から頼ってうまくいかなかったら再生成

TypeScriptとReactで、WAI-ARIAの属性を正しく利用する

ymrlさん(freee)
https://docs.google.com/presentation/d/1rzznSwA7da7S_lU6qyAFuCN9IC1uDJe44PvDg-uqHjQ/edit?slide=id.p

  • wai-aria
    • 支援技術に対して提供するAccessibilityTreeのあり方の定義
    • AccessibilityTreeを操作できる
  • ReactとTSでwai-ariaを使う
    • Reactの型定義に入ってる
    • wai-aria1.1に基づいている
  • Reactの型での問題点
    • roleの定義と紐づけてariaのチェックをしてくれない
    • 存在しないroleを指定できてしまう
    • ハイフンがあるpropsが無法地帯
      • タイポしてても気付けない
      • ariaを受け付けてないのに渡せると思って書いちゃう
    • TSのコンパイラーの仕様でハイフン入ってると無視される
      • data-*とかのため
    • キャメルケースで定義するとかで対応

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

Sosuke Suzukiさん

  • TypeScript
    • altJSはいろいろある
    • その中でJSのスーパーセット的な位置づけ
  • tsc
    • 公式のコンパイラーが遅い
    • rustとかgo製のものがいろいろ出てる
  • 型チェック
  • TypeScriptファーストな流れ
    • フレームワークはTSファースト
    • DenoやBunなどTSがそのまま動く
    • NodeもTypeAnnotationsという議論で型をコメントとして扱う案
  • ツールの高速化
    • swc/Turbopack
      • vercel
    • oxc/vite
      • void0
    • rspack
      • bytedance
    • esbuild
    • ビルドツールなので型チェックははやくならない
  • tsgo
    • 公式がgoで書き直して型チェックを早くする
  • 今後
    • TSを意識することがなくなっていく
      • 意識してビルドするということがなくなっていく
      • バックエンドでは特に
    • フロントエンドは環境が利用者依存なので事情が違う
      • バンドルしたりミニファイしたりビルドのステップは残る
      • 小さくするなら型情報も消したい

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

unvalleyさん
https://speakerdeck.com/unvalley/typescript-linters

  • ESLint Plugin
    • Parserがプラガブル
    • tsやbabelの構文にも対応できる
  • Rust製Linter
    • Biome/deno_lint/OxLint
    • プラグインはこれまで提供されてなかった
      • JS/TSでプラグインを書くとパフォーマンスが落ちる
      • ルールをコアに集約するという思想を持っていたものが多い
  • Rust製Linterのプラグインを何で書くか
    • Rust
      • 書ける人が少ないのでは
    • js/ts
      • deno_lintが対応
    • DSL
      • BiomeがGritQL
    • wasm
  • GridQL
    • コードベースに対して構造的な検索修正ができるクエリ言語
    • Rust製なのでRustで完結できる
  • JSでのプラグイン
    • JSエンジンを保つ必要がある
      • denoはdeno runtimeで
    • JSとRustの境界
      • denoではASTをフラット化して小さくして対処している



以上の内容はhttps://ozaki25.hatenadiary.jp/entry/2025/05/23/183328より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14