$30 off During Our Annual Pro Sale. View Details »
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
63
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
5.4k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
270
Managing "side effect" in Frontend Development
shinyaigeek
3
3.9k
爆速の日経電子版開発の今
shinyaigeek
3
2.9k
加速するEdge Computing
shinyaigeek
6
7k
ブラウザ作りのすゝめ
shinyaigeek
1
530
フロントエンド
shinyaigeek
0
210
Web Frontend Performance Tuning
shinyaigeek
1
450
Other Decks in Technology
See All in Technology
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
460
生成AI時代におけるグローバル戦略思考
taka_aki
0
190
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
210
.NET 10の概要
tomokusaba
0
110
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
290
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
160
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
500
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/09 - 2025/11
oracle4engineer
PRO
0
150
業務のトイルをバスターせよ 〜AI時代の生存戦略〜
staka121
PRO
2
200
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
120
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
720
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
2
980
Featured
See All Featured
A better future with KSS
kneath
240
18k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Bash Introduction
62gerente
615
210k
Automating Front-end Workflow
addyosmani
1371
200k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Making Projects Easy
brettharned
120
6.5k
Building Adaptive Systems
keathley
44
2.9k
Why Our Code Smells
bkeepers
PRO
340
57k
How GitHub (no longer) Works
holman
316
140k
Rails Girls Zürich Keynote
gr2m
95
14k
A Modern Web Designer's Workflow
chriscoyier
698
190k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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を自分で上げていくエキサイティングな取り組みができる