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
490
0
Share
ASTをいじいじして僕のかんがえた最強のDXを得る
Shinobu Hayashi
November 12, 2020
More Decks by Shinobu Hayashi
See All by Shinobu Hayashi
巨大モジュラーモノリスのテスト戦略.pdf
shinyaigeek
0
83
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
5.8k
Big “heart” of mud, 10000 lines VCL generated from .vcl.handlebars
shinyaigeek
0
300
Managing "side effect" in Frontend Development
shinyaigeek
3
4.1k
爆速の日経電子版開発の今
shinyaigeek
3
3.1k
加速するEdge Computing
shinyaigeek
6
7k
ブラウザ作りのすゝめ
shinyaigeek
1
560
フロントエンド
shinyaigeek
0
220
Web Frontend Performance Tuning
shinyaigeek
1
480
Other Decks in Technology
See All in Technology
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
5
1.9k
データを"持てない"環境でのアノテーション基盤設計
sansantech
PRO
1
150
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
130
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
120
No Types Needed, Just Callable Method Check
dak2
1
2.1k
プラットフォームエンジニアリングの実践 - AWS コンテナサービスで構築する社内プラットフォーム / AWS Containers Platform Meetup #1
literalice
1
210
ServiceNow Knowledge 26 の歩き方
manarobot
0
200
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
170
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
120
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
460
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
1.3k
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
150
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
210
Thoughts on Productivity
jonyablonski
76
5.1k
A designer walks into a library…
pauljervisheath
211
24k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
200
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
290
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
4 Signs Your Business is Dying
shpigford
187
22k
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を自分で上げていくエキサイティングな取り組みができる