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
ASTをいじいじして僕のかんがえた最強のDXを得る
Search
Shinobu Hayashi
November 12, 2020
Technology
520
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ASTをいじいじして僕のかんがえた最強のDXを得る
Shinobu Hayashi
November 12, 2020
More Decks by Shinobu Hayashi
See All by Shinobu Hayashi
AI フレンドリーなエラー監視を TypeScript で実現する
shinyaigeek
2
430
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
110
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
6.3k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
360
Managing "side effect" in Frontend Development
shinyaigeek
3
4.2k
爆速の日経電子版開発の今
shinyaigeek
3
3.6k
加速するEdge Computing
shinyaigeek
6
7.1k
ブラウザ作りのすゝめ
shinyaigeek
1
600
フロントエンド
shinyaigeek
0
240
Other Decks in Technology
See All in Technology
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
350
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.3k
SDDの運用にめげずに向き合った話
sansantech
PRO
1
140
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
350
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
190
大型犬好きによるPugの紹介
yamanoku
1
110
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
6
5.7k
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
0
300
今さら理解するウェブフォントver.2026
takanorip
3
660
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
1.9k
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
230
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
440
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
520
Bash Introduction
62gerente
615
220k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Technical Leadership for Architectural Decision Making
baasie
3
600
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を自分で上げていくエキサイティングな取り組みができる