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
20160903-WebAssembly
Search
chikoski
September 03, 2016
Technology
9
3.1k
20160903-WebAssembly
chikoski
September 03, 2016
Tweet
Share
More Decks by chikoski
See All by chikoski
20210825_ossx
chikoski
0
310
festudy02-wasm
chikoski
1
990
An overview of WebAssembly; how it is used, created, and applied?
chikoski
1
730
Functions in JavaScript
chikoski
1
1.2k
20171018-WASM
chikoski
2
1.4k
20171002-wejs
chikoski
1
590
20170924-html5conference-wasm
chikoski
5
10k
Equivalence_in_JS
chikoski
0
1.5k
いまさら振り返るPromise
chikoski
1
560
Other Decks in Technology
See All in Technology
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
260
MagicPod導入から半年、オープンロジQAチームで実際にやったこと
tjoko
0
110
組織を巻き込む大規模プラットフォーム移行戦略 〜50+サービスのマルチリージョン・マルチプロダクト化で学んだステークホルダー協働の実践〜 / Platform migration strategy engaging all stakeholders
toshi0607
2
200
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
280
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
190
会社紹介資料 / Sansan Company Profile
sansan33
PRO
7
380k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
10
75k
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
670
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
440
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
110
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
200
Create Ruby native extension gem with Go
sue445
0
130
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
513
110k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
A Modern Web Designer's Workflow
chriscoyier
696
190k
The Invisible Side of Design
smashingmag
301
51k
What's in a price? How to price your products and services
michaelherold
246
12k
Navigating Team Friction
lara
189
15k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
Six Lessons from altMBA
skipperchong
28
4k
Become a Pro
speakerdeck
PRO
29
5.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Transcript
ـٓؐؠ欽ך$16⡲״ 8FC"TTFNCMZד .P[JMMB+BQBO /4IJNJ[V OTIJNJ[V!NP[JMMBKBQBOPSH!DIJLPTLJ )5.-$POGFSFODF !匌❨ꨵ堣㣐㷕⻌⼪⡝ٍؗٝػأ
+BWB4DSJQU7. KT
+BWB4DSJQU7. KT 8"4.7. XBTN
/4IJNJ[V!DIJLPTLJ ˖ .P[JMMB+BQBO ˖ %FWFMPQFSSFMBUJPO ˖ -PDBMJ[FS.%/ 46.0 'JSFGPYGPSJ04 ˖
IUNMK8FCفٓحزؿؓ٦ي鿇٦ي鿇 ˖ فؚٗٓىؚٝ鎉铂ךךָ㥨ֹדׅ ˖ IUUQTTMJEFTIBSFOFUDIJLPTLJ ˖ IUUQTIUNMFYQFSUTKQDIJLPTLJ
None
None
None
Proudly non-profit, Mozilla makes products like Firefox with a mission
to keep the power of the Web in the hands of users everywhere. Mozilla Mission (https://www.mozilla.org/en-US/mission/)
Our mission is to promote openness, innovation & opportunity on
the Web. Mozilla Mission(https://www.mozilla.org/en-US/mission/)
IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOJTTVFT IUUQTHJUIVCDPN'PHBDDJP0QFO%FTJHO
8FC"TTFNCMZ ˖ 8$ך؝ىُصذ؍ؚٕ٦فד陽锷ׁגְ倜׃ְ8FC垥彊 ˖ 㼭ֻׁגه٦ةـٕזغ؎شٔؿؓ٦وحز ˖ ط؎ذ؍ـח鵚ְأؾ٦سדך㹋遤 ˖ 㸜Ⰻז㹋遤橆㞮 ˖
㼎ד㼎䘔ׅذؗأز邌植
https://www.w3.org/community/webassembly/
None
.P[JMMB .JDSPTPGU (PPHMF "QQMF
https://www.w3.org/community/webassembly/
https://webassembly.github.io/demo/
IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS'"2NE
文字列 実行コード 抽象構文木 トークン列 中間表現 字句解析 構文解析 意味解析 最適化・コード生成
文字列 AST バイトコード 字句解析 / 構文解析 生成 実行 * AST:
Abstract Syntax Tree / 抽象構文木 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF
文字列 字句解析 / 構文解析 実行 バイトコード AST Baseline Compiled Code
MIR Iron Compiled Code 実行と プロファイル 実行 Bail 生成 Baseline Compile Iron Build Iron Compile * AST: Abstract Syntax Tree / 抽象構文木 MIR: Medium-level Intermediate Representation / 中間表現 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF
文字列 字句解析 / 構文解析 AST MIR 実行コード 生成 Compile *
AST: Abstract Syntax Tree / 抽象構文木 MIR: Medium-level Intermediate Representation / 中間表現
asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル
実行開始 ダウンロード 構文解析 コンパイル 実行開始
asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル
実行開始 ダウンロード 構文解析 コンパイル 実行開始 WASM ダウンロード 構文解析 コンパイル 実行開始
8"4.؝ٝػ؎ٕך欰䧭暟
D DQQ XBTN XBTU BTN KT DMBOHFNDD FNDD XBTNBT BTNXBTN
変換パイプライン
None
FNTELJOTUBMMFNTDSJQUFOJODPNJOHCJU FNTELJOTUBMMDMBOHJODPNJOHCJU FNTELJOTUBMMTELJODPNJOHCJU FNTELBDUJWBUFFNTDSJQUFOJODPNJOHCJU FNTELBDUJWBUFDMBOHJODPNJOHCJU FNTELBDUJWBUFTELJODPNJOHCJU TPVSDF\&.4%,@*/45"--@%*3^FNTEL@FOWTI Emscripten から wasm
を出力する設定
MT BEEDQQ FNDDT#*/&3:&/PBEEXBTNBEEDQQ MT BEEDQQBEEXBTN
LLVMのターゲットにもWebAssemblyの文字が
8FCل٦آפך穈鴥
WebAssemblyは実行コードに変換されてから実行される
GFUDI BEEXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS
DPOTUNPEVMF8BTNJOTUBODJBUF.PEMVF DPEF#ZUF BMFSU A \NPEVMFFYQPSUTBEE ^A ^ WASM.instanceiateModule でコンパイル
FYQPSUJOUBEE JOU JNQPSUJOUTPNFUIJOH JOUBEE4PNF JOUB \ SFUVSOB TPNFUIJOH
^ CからJSの関数を呼び出す場合
GFUDI BEETPNFXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS
DPOTUNPEVMF8"4.JOTUBODJBUF.PEMVF DPEF#ZUF \ TPNFUIJOH ^ BMFSU A \NPEVMFFYQPSUTBEETPNF ^A ^ CからJSの関数を呼び出す場合
8FC"TTFNCMZך暴䗙 ˖ 㘗➰ֽׁأةحؙوءٝ ˖ 鸬竲זًٌٌٔرٕ ˖ 䬄韋圓俑加 "45 ˖
圓鸡⻉ׁ؝ٝزٗ٦ٕؿٗ٦㹀纏 ˖ ٌآُ٦ٕءأذي
B
B B
B B 抽象構文木 (Abstract
Syntax Tree : AST)
8FC"TTFNCMZ Y "3. JBEE BEEM "%% DBMM DBMM #- JMPBE
$)&$, NPW $)&$, -%3 実マシンのコードに近い仮想的な命令セットを定義 IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS"TU4FNBOUJDTNE
8"4. BTNKT JBEE B C ] DBMM G ] JMPBE
)&"1<J>] asm.js との互換性
JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU JDPOTU
テキスト表現(仕様策定中) JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU
JDPOTU TFU@MPDBMB JBEE JDPOTU JNVM JDPOTU JDPOTU
子ノードが出現順に評価される JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU
JDPOTU
㘗 䪔ִ⦼ך珏겲 J ؽحزך侭侧⦼ J ؽحزך侭侧⦼ G ؽحزך侭侧⦼ G ؽحزך侭侧⦼
ㄏ⟀ 䮶莸ְ JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸 JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸
JMPBE غ؎زٗ٦س
ㄏ⟀ 䮶莸ְ JTUPSF JJח㢌䳔׃גأز، JTUPSF JJח㢌䳔׃גأز، JTUPSF 㢌䳔ׇ׆חغ؎زأز،
QUSNBMMPD BEESFTT@TQBDF@NBY (# غ؎ز 連続的にとられるメモリ JMPBE JTUPSF
ㄏ⟀ 䮶莸ְ HSPX@NFNPSZ ًٌٔ䭷㹀ׁل٦آⴓ㟓װׅ DVSSFOU@NFNPSZ 植㖈ךًٌٔ؟؎ؤل٦آ侧ד鵤ׅ
ㄏ⟀ 䮶莸ְ OPQ ⡦׃זְ CMPDL ـٗحؙך㹀纏 MPPQ 粸鵤׃ JG JG俑UIFOח醱侧ך䒭ָ֮㜥さ
CS ⴓ䀄 CS@JG 勴⟝➰ֹⴓ䀄 CS@UBCMF آٍٝفذ٦ـٕ SFUVSO 鵤⦼
NPEVMF NFNPSZ FYQPSUNFNPSZNFNPSZ FYQPSUBEEBEE
GVODBEE QBSBNJ QBSBNJ SFTVMUJ JBEE HFU@MPDBM HFU@MPDBM 同等のWASMモジュール
8FC"TTFNCMZך➙䖓 .71ך䖓ח✮㹀ׁגְ堣腉 ˖ أٖحس ˖ Ⱏ剣ًٌٔ ˖ ت؎شىحؙؙٔٝ ˖ ؝أزך⢽㢩
˖ 㔿㹀ꞿך4*.% 㼛勻涸ז堣腉 ˖ 稢ְַ磛䏝דךًٌٔ盖椚 ˖ 㣐ְֹ؟؎ؤךل٦آ ˖ ⵖ䖴圓鸡ך⯍㹋 ˖ ($װ%0.ך窟さ ˖ (#⟃♳ך简䕎ًٌٔ ˖ FUD
תה ˖ 8"4.כ؝ٝػ؎ٓך欰䧭暟 ˖ 1PMZMM ˖ +4ך縧ֹ䳔ִדכזְ ˖ ְתךהֿ%0.湫䱸ⵃ欽דֹזְ ˖
넝鸞ד侧⦼鎘皾׃ְ㜥כꣲ ˖ 欰欵䚍ך倯⮚⯓ׅ㜥さ㢳ְ
ꟼ鸬䞔㜠 ˖ 8FC"TTFNCMZ$PNNVOJUZ(SPVQ IUUQTXXXXPSHDPNNVOJUZXFCBTTFNCMZ ˖ .PEFTU IUUQTEFWNP[JMMBKQ ˖ FNTDSJQUFO
IUUQTFNTDSJQUFOPSH ˖ 8"4.&YQMPSFS IUUQNCFCFOJUBHJUIVCJP8BTN&YQMPSFS