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
490
0
Share
ASTをいじいじして僕のかんがえた最強のDXを得る
Shinobu Hayashi
November 12, 2020
More Decks by Shinobu Hayashi
See All by Shinobu Hayashi
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
88
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
5.9k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
310
Managing "side effect" in Frontend Development
shinyaigeek
3
4.1k
爆速の日経電子版開発の今
shinyaigeek
3
3.1k
加速するEdge Computing
shinyaigeek
6
7.1k
ブラウザ作りのすゝめ
shinyaigeek
1
570
フロントエンド
shinyaigeek
0
230
Web Frontend Performance Tuning
shinyaigeek
1
480
Other Decks in Technology
See All in Technology
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
1
840
Purview Endpoint DLP 動かしてみた
kozakigh
1
440
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
kumamotone
1
260
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
250
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
170
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
4
1.6k
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
240
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
1
140
AI Agent に“攻略本”を渡したら、150フォームの移行が回り始めた話/登壇資料(高橋 悟生)
hacobu
PRO
0
110
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
280
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
100k
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
6
1.8k
Featured
See All Featured
Music & Morning Musume
bryan
47
7.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
290
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
160
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Balancing Empowerment & Direction
lara
6
1.1k
From π to Pie charts
rasagy
0
180
How to build a perfect <img>
jonoalderson
1
5.5k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
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を自分で上げていくエキサイティングな取り組みができる