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
Content Mapper APIの応用例~CSS Modules、言語ファイル~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uhyo
November 01, 2026
Technology
130
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Content Mapper APIの応用例~CSS Modules、言語ファイル~
2026-11-01 TSKaigi Sendai 2026
uhyo
November 01, 2026
More Decks by uhyo
See All by uhyo
Reactの設計論
uhyo
26
17k
型があると何が嬉しいか
uhyo
3
170
Baseline対応のDOMの型定義を作った
uhyo
3
1k
AIのReact習熟度を測る
uhyo
2
1.1k
React、まだ楽しくて草
uhyo
7
5.2k
TypeScript 7.0の現在地と備え方
uhyo
6
3.9k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
11k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
130
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.2k
Other Decks in Technology
See All in Technology
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
160
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
400
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
13k
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
550
Adversary Infrastructure Hunting101
disconinja
0
170
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
390
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
330
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
300
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
120
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
正解のない研修に放り出されて / Being thrown into a training program with no right answers
ohnoeight
1
160
仕様駆動開発の、その先へ。決める力と確かめる仕組み
inariku
1
130
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
490
Docker and Python
trallard
47
4.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
New Earth Scene 8
popppiees
4
2.7k
Raft: Consensus for Rubyists
vanstee
143
7.8k
Speed Design
sergeychernyshev
33
2.2k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
Transcript
Content Mapper APIの応用例 ~CSS Modules、言語ファイル~ 2026-11-01 TSKaigi Sendai 2026
発表者紹介 uhyo 株式会社カオナビ フロントエンドエキスパート TypeScriptとReactにとても詳しい。 宣伝 → 2
TypeScript 7.1 今月リリース予定! (順調にいけば11月24日) APIやアンビエントモジュール宣言における Import Attributesのサポートなども気になるが、 7.1 Betaのリリース以降、Content Mapper
API に注目が集まっている。 3
Content Mapper API 任意の拡張子のファイルを、TypeScriptファイル のように扱うことができる夢のような機能。 4
Content Mapperでできること 5
従来方式との比較 6
Content Mapperの通信内容 7
マッピングの例 8
マッピングの活用 型エラーの表示や各種エディタ機能に。 9
Content Mapperまとめ 任意のファイルに変換をかませてTypeScript プロジェクトに組み込むことができる。 マッピングを通じて各種エディタ機能も使用可。 (Go to Definitionなど) 10
応用例① CSS Modules 11
CSS Modulesとは フロントエンドアプリ向けにCSSを書く方法の ひとつ。 ViteやNext.jsなどに初期設定で組み込まれており、 デファクトスタンダードな方法。 生のCSS構文を使える点がメリット。 12
CSS Modulesとは 13
CSS Modulesの型サポート: 従来手法 事前に型定義を生成する。 14
CSS Modulesの型サポート: 従来手法 型定義だけだと足りない開発体験を Language Service Pluginで補う。 例: css-modules-kit https://github.com/mizdra/css-modules-kit
15
従来方式との比較(再掲) 16
Content MapperによるCSS Modulesサポート 事前のファイル生成が不要に。 TypeScript組み込みのエディタ機能も利用可能。 17
Content MapperによるCSS Modulesサポート 先ほど紹介したcss-modules-kitが Content Mapperサポートを追加するようなので 応援しよう! (みんなContent Mapperの応用でCSS Modulesを思いつく
から多分既に10個くらい類似OSSが公開されている) 18
応用例② 言語ファイル 19
言語ファイル カオナビでは、最近言語ファイルの新しい仕組み を導入した。 言語ファイル: 多言語をサポートするアプリで、言語ごとに 異なる文言を定義するファイル。 20
言語ファイルの使いかた Viteプラグインで*.lang.jsoncファイルがフックを エクスポートするように変換。 21
言語ファイルシステムの特徴 コロケーション: 細かな粒度の言語ファイルを 使うコードの近くに配置する。既存の設計技術を 文言管理にも持ち込む。 翻訳に有利: 文脈を参照でき、適切な翻訳をしや すい。全言語が同じファイルにあり、翻訳し忘れ が起きない。 22
言語ファイルシステムの裏側 言語ファイルごとに別の名前空間として i18nextに文言を登録している。 1つのJSONが各言語ごとに別々のバーチャル モジュールに分割され、ランタイムでは必要な 言語のみ読み込まれる。 23
言語ファイルにContent Mapperを適用 ※ 単純化した生成例です。 24
Content Mapperの恩恵 keyを間違っ たら型エラー になる。 従来手法より 圧倒的に簡単。 25
応用例: 言語ファイル自体のチェック 26
注意 場合によっては、TypeScriptにチェックさせる より別のlinterでチェックしたほうが効率がいい。 型情報が必要なチェックや、.vueなどTypeScript コードを含む特殊ファイルのチェックに適してい る。 (一応任意のdiagnosticsをTSに送れる機能もある) 27
おまけ: nitrogql v2.1 28
おまけ: nitrogql v2.1 ずっと「.nitrogqlファイルを直接インポートする」 設計を提唱してきたが、Contenet Mapperにより ついに主流の方法に返り咲く!(かも) 29
Content Mapper時代の フレームワーク論 30
Content Mapperがもたらす変化 独自のファイル形式をプロジェクトに組み込みや すくなった。 31
オレオレファイル形式の時代へ ViteプラグインとContent Mapperの両輪で、 独自形式の実装がこれまで以上に簡単になり、 優れた開発者体験を実現しやすくなった。 • 事前の型定義生成など面倒なステップが無い • エディタ機能や型システムの統合までTSが 担ってくれる
32
言語ファイルシステムの狙い AIが開発する時代に適合する独自方式。 • 細かく分割してコンテキスト管理 • コロケーションで発見性向上 • 全言語をコンテキストに投入することで、 文言修正時の翻訳更新漏れを防ぐ 33
独自方式のすすめ 独自方式の実装は簡単になり、メンテナンスも AIで容易にできるようになった。 少し独自実装するくらいは、今の時代、 もはやオーバーエンジニアリングではない。 プロジェクトに合わせてカスタマイズすることの 合理性がとても増した。 34
まとめ Content Mapper APIにより、型や開発者体験を 良好に保ったままTS以外のファイル形式を プロジェクトに組み込めるようになった。 自分たちに合った仕組みを作り込もう。 35
おまけ: Content Mapper以外のAPI 7.1で一部のAPIが安定化予定。 型情報やASTを取得できるJS版に近いAPIが 利用可能になる。 36
37