Slide 1

Slide 1 text

TypeScript を活かしてデザインシステム MCP を作る 2025-05-27 TSKaigi 2025 After Night 〜セッションおかわりの会!〜 @izumin5210

Slide 2

Slide 2 text

@izumin5210 © LayerX Inc. whoami LayerX バクラク事業部 (2022-09 -) Platform Engineering 部 Enabling チーム Staff Software Engineer ISUCON14 4位 飛び入り LT だ!(イベント始まってから作り始めました)

Slide 3

Slide 3 text

TSKaigi 2025 でも話したよ! © LayerX Inc. 3

Slide 4

Slide 4 text

LayerX バクラク事業部 @shota8511_tech の発表 デザインシステムのデザイントークンと共通 UI コンポーネントの情報を返す MCP server を作っています © LayerX Inc. 4

Slide 5

Slide 5 text

この MCP server の、とくに UI コンポーネントに関する情報は Storybook から抽出しています https://zenn.dev/layerx/articles/7e9f87fca65e94 © LayerX Inc. 5

Slide 6

Slide 6 text

Storybook は React コンポーネントの Props の定義をうまく輸出し、ドキュメントとして表示できます © LayerX Inc. 6

Slide 7

Slide 7 text

© LayerX Inc. Storybook は何を、どうやって抽出しているか Storybook の情報をどうやって MCP で利用するか 7

Slide 8

Slide 8 text

Button コンポーネントの props 定義 型はもちろん、その props の意味や使い方・注意点などもコメントに残しています(これはもともと人間用) この型やコメントが Storybook にも反映されています © LayerX Inc. Storybook はどこから、何を、どうやって抽出しているか 8

Slide 9

Slide 9 text

Storybook における React コンポーネントの情報取得 © LayerX Inc. Storybook では react-docgen or react-docgen-typescript を利用し、 コードから情報を抜き出してドキュメントを生成している デフォルトは react-docgen だが、 react-docgen-typescript に変更可能 react-docgen-typescript は型情報も利用してくれるが、ビルドに時間がかかる react-docgen-typescript は TSDoc(JSDoc) + 型情報を見てくれる さっきの Button の例もそうでしたね 9

Slide 10

Slide 10 text

react-docgen-typescript を使えばコンポーネントの情報を抜き出せるのでは? © LayerX Inc. 10

Slide 11

Slide 11 text

なんかそれっぽい感じで呼び出して… © LayerX Inc. 11

Slide 12

Slide 12 text

なんかそれっぽい感じで使ってみる © LayerX Inc. 12

Slide 13

Slide 13 text

できた? © LayerX Inc. 13

Slide 14

Slide 14 text

それっぽい © LayerX Inc. 14

Slide 15

Slide 15 text

雑感 © LayerX Inc. 実はコンポーネントの実装をそのまま渡すだけでもそれなりにいい感じになるらしい Storybook で必要な情報に絞ることで AI 的にはノイズが減り、精度もいいはずと信じてる 実際に Agent に利用してもらった感じだと、 TSDoc に @example を書いているのが Few-shot prompting 的に効いてそう これも Ubie さんのブログを見て悔しくなって半日くらいで試したやつなので もっといい感じの方法もたぶんある キミだけの最強の MCP server を作ろう! 15