Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASTをいじいじして僕のかんがえた最強のDXを得る
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shinobu Hayashi
November 12, 2020
Technology
0
480
ASTをいじいじして僕のかんがえた最強のDXを得る
Shinobu Hayashi
November 12, 2020
Tweet
Share
More Decks by Shinobu Hayashi
See All by Shinobu Hayashi
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
76
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
5.7k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
290
Managing "side effect" in Frontend Development
shinyaigeek
3
4k
爆速の日経電子版開発の今
shinyaigeek
3
3k
加速するEdge Computing
shinyaigeek
6
7k
ブラウザ作りのすゝめ
shinyaigeek
1
550
フロントエンド
shinyaigeek
0
220
Web Frontend Performance Tuning
shinyaigeek
1
470
Other Decks in Technology
See All in Technology
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
260
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
300
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
100
20260321_エンベディングってなに?RAGってなに?エンベディングの説明とGemini Embedding 2 の紹介
tsho
0
130
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
130
TypeScript 7.0の現在地と備え方
uhyo
7
2k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
Phase11_戦略的AI経営
overflowinc
0
340
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
360
Cortex Code CLI と一緒に進めるAgentic Data Engineering
__allllllllez__
0
550
スピンアウト講座05_実践活用事例
overflowinc
0
260
The Rise of Browser Automation: AI-Powered Web Interaction in 2026
marcthompson_seo
0
170
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Between Models and Reality
mayunak
2
240
A designer walks into a library…
pauljervisheath
210
24k
30 Presentation Tips
portentint
PRO
1
260
The untapped power of vector embeddings
frankvandijk
2
1.6k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
100
Fireside Chat
paigeccino
42
3.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
690
Transcript
ASTをイジイジして僕のかんがえた 最強のDXを得よう 〜自分のDXは自分で守っていけ〜
Who am I Shinobu Hayashi(林 仁) a.k.a. @Shinyaigeek Web Frontend Engineer
Web Performanceのことを考えたり, ASTをイジイジする のが好きです. 夏バイト生として, ASGでお世話になってます.
今日のゴール ASTイジイジすることを布教したい!!
Agenda • ASTとは ◦ 概説 ◦ ASTの恩恵 • ASTをどうイジイジするのか(JavaScriptの場合) ◦
ライブコーディングタイム • 僕が最近ASTで作っていたもの • まとめ
ASTとは
ASTとは Abstract Syntax Tree, 抽象構文木 Tree とあるように, プログラムの文法構造を Tree 構造で表現したものになります.
Tree 構造なので, それぞれのプログラムの節々 を Node と言います. if文 条件 === 変数 hoge リテラル値 “bar” then 関数を実行 fuga 二項演算子 if( hoge === “bar” ) { fuga() }
ASTが使われているツール
ASTでコードをいじいじするときのあれこれ parse transform unparse JS -> AST traverse AST ->
JS
ASTでコードをいじいじするときのあれこれ parse transform unparse parseとunparseはライブラリに任せる • parse ◦ @babel/parser ◦
accorn • unparse ◦ @babel/generator
ASTでコードをいじいじするときのあれこれ parse transform unparse @babel/traverse の場合 traverse(ast, { //visitor })
↑ visitor?
ASTでコードをいじいじするときのあれこれ parse transform unparse Visitor Pattern Tree の内、あるNodeに “訪問” して、処理を行
う
ASTを試してみよう!! ライブコーディング
僕が作ってたもの
僕が作ってたもの lit-html使いたいけど型が。。 普通にJSX書きたい。。
僕が作ってたもの JSX html-bas ed template -literal 互換性あるんじゃね!!
僕が作っていたもの babel-plugin-lit-jsx(仮) https://github.com/Shinyaigeek/lit-jsx (実はまだWIP)
まとめ • 先人の努力のおかげで, ASTを触ること自体は難しくない • ASTが触れると, 扱える領域が広がる • 今回はJSの話をしたけど, どんな言語でも役にたつ
• 自分のDXを自分で上げていくエキサイティングな取り組みができる