Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASTをいじいじして僕のかんがえた最強のDXを得る
Search
Shinobu Hayashi
November 12, 2020
Technology
0
460
ASTをいじいじして僕のかんがえた最強のDXを得る
Shinobu Hayashi
November 12, 2020
Tweet
Share
More Decks by Shinobu Hayashi
See All by Shinobu Hayashi
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
61
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
5.4k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
260
Managing "side effect" in Frontend Development
shinyaigeek
3
3.9k
爆速の日経電子版開発の今
shinyaigeek
3
2.9k
加速するEdge Computing
shinyaigeek
6
6.9k
ブラウザ作りのすゝめ
shinyaigeek
1
530
フロントエンド
shinyaigeek
0
200
Web Frontend Performance Tuning
shinyaigeek
1
450
Other Decks in Technology
See All in Technology
TOAMI~投網~: フィッシングハンター支援用ブラウザ拡張ツール / TOAMI ~Casting Net~: Browser Extension Tool for Supporting Phishing Hunters
nttcom
1
110
シンプルを極める。アンチパターンなDB設計の本質
facilo_inc
1
980
mablでリグレッションテストをデイリー実行するまで #mablExperience
bengo4com
0
470
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
47k
pmconf2025 - 他社事例を"自社仕様化"する技術_iRAFT法
daichi_yamashita
0
310
OpenShiftのBGPサポート - MetalLB+FRR-k8s編
orimanabu
0
140
Docker, Infraestructuras seguras y Hardening
josejuansanchez
0
140
Product Engineer
resilire
0
130
AIにおける自由の追求
shujisado
2
460
経営から紐解くデータマネジメント
pacocat
9
1.9k
AI開発の定着を推進するために揃えるべき前提
suguruooki
1
470
MCP・A2A概要 〜Google Cloudで構築するなら〜
shukob
0
150
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
780
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
700
Done Done
chrislema
186
16k
Fireside Chat
paigeccino
41
3.7k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
A Tale of Four Properties
chriscoyier
162
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Producing Creativity
orderedlist
PRO
348
40k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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を自分で上げていくエキサイティングな取り組みができる