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
Shinobu Hayashi
November 12, 2020
Technology
510
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
360
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
100
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
6.1k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
330
Managing "side effect" in Frontend Development
shinyaigeek
3
4.1k
爆速の日経電子版開発の今
shinyaigeek
3
3.3k
加速するEdge Computing
shinyaigeek
6
7.1k
ブラウザ作りのすゝめ
shinyaigeek
1
590
フロントエンド
shinyaigeek
0
230
Other Decks in Technology
See All in Technology
PLaMoを毎日の開発で使い育てていく
pfn
PRO
0
180
Flutterをカメラで動かしたかった話
sony
0
120
新しい SLO が良い感じにハマっている話
z63d
4
2.1k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
460
AI エージェント時代のデジタルアイデンティティ
fujie
3
1.4k
モダンフロントエンド 開発研修
recruitengineers
PRO
1
330
モバイルアプリ開発概論2026
recruitengineers
PRO
1
320
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
480
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
150
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
130
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
440
How to Ace a Technical Interview
jacobian
281
24k
Building an army of robots
kneath
306
46k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
570
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
630
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
250
Statistics for Hackers
jakevdp
799
230k
The Invisible Side of Design
smashingmag
301
52k
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を自分で上げていくエキサイティングな取り組みができる