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
Node.js x WebAssembly
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yosuke Furukawa
PRO
March 31, 2017
Programming
1.2k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node.js x WebAssembly
Node学園24時限目で発表した Node.js と WebAssembly のデモですー。
Yosuke Furukawa
PRO
March 31, 2017
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.4k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
14
11k
Webの地図
yosuke_furukawa
PRO
6
5.3k
XHTMLが残したもの
yosuke_furukawa
PRO
2
990
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
460
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
350
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.4k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.9k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
390
Other Decks in Programming
See All in Programming
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
120
Seven New Principles of Software Engineering
yegor256
0
410
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
320
オーケストレーション記述言語 Katari
yukikurage
0
220
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
130
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
500
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
210
AI Augmentation Techniques with Liberty
ivargrimstad
0
240
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
350
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
670
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.4k
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.3k
Featured
See All Featured
Leo the Paperboy
mayatellez
10
2.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
First, design no harm
axbom
PRO
2
1.4k
Technical Leadership for Architectural Decision Making
baasie
3
620
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.6k
Ethics towards AI in product and experience design
skipperchong
2
450
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
650
Six Lessons from altMBA
skipperchong
29
4.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
350
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Mind Mapping
helmedeiros
1
420
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Transcript
Node x WebAssembly 2017, Mar, 31th @ NodeֶԂ 24࣌ݶ in
FiNC
Twitter: @yosuke_furukawa Github: yosuke-furukawa
WebAssembly
WebAssembly Goals • ϙʔλϒϧ͔ͭϩʔυޮ͕ྑ͍όΠφϦϑΥʔϚο τΛ࡞Δ͜ͱ • ϋʔυΣΞ(mobile, IoT ؚΉ)ͷೳྗΛϑϧʹ׆͔ ͯ͠nativeͷͱಉͷ࣮ߦ࣌ؒͰܭࢉ͢Δ͜ͱ
• طଘͷϓϥοτϑΥʔϜ(web)ͱͷੑΛߴ͘͠ ͯɺ౷߹͘͢͢͠Δ͜ͱ http://webassembly.org/docs/high-level-goals/
WebAssembly UseCases
WebAssembly UseCase (1) • ωΠςΟϒϞδϡʔϧΛϒϥβͰಡΈࠐΉ
WebAssembly UseCase (1) • ωΠςΟϒϞδϡʔϧΛϒϥβͰಡΈࠐΉ
WebAssembly UseCase (2) • Game
WebAssembly Use Cases • BrowserϢʔεέʔε • CC++(Rust)Ͱॻ͔ΕͨωΠςΟϒϞ δϡʔϧΛϒϥβ͔ΒಡΈࠐΊΔΑ͏ʹ ͢Δ •
Game / ը૾ೝࣝ / ҉߸Խ / ѹॖ֦ு etc etc http://webassembly.org/docs/use-cases/
WebAssembly Use Cases • BrowerҎ֎ͷϢʔεέʔε • Server Side application •
Native Apps on mobile devices http://webassembly.org/docs/use-cases/
WebAssembly͕Ͳ͏ΘΕΔ ͜ͱΛఆ͢Δ͔ʁ • શମͷίʔυϕʔεΛWebAssemblyԽ͞ΕΔ ͜ͱΛظ • ͱ͍͑ɺWeb UIͷϨΠϠHTML/JSͷ·· • ͻͱ·ͣϝΠϯλʔήοτCC++Ͱॻ͔Ε
͍ͯΔطଘίʔυΛJSͰݺΔΑ͏ʹ͢Δ http://webassembly.org/docs/use-cases/
Node.js x Native Modules
Node.js x Native Module • NAN Ͱ࡞ͬͯϞδϡʔϧΛϥοϓ͢Δ • node-ffi Ͱ
FFI ݺͼग़͠ʹ͢Δ • emscriptenͰasm.jsʹ͢Δ • emscriptenͰwasmʹ͢Δ
Node.js x Native Module • NAN Ͱ࡞ͬͯϞδϡʔϧΛϥοϓ͢Δ
Node.js x Native Module • NAN Ͱ࡞ͬͯϞδϡʔϧΛϥοϓ͢Δ • V8ͷAPIόʔδϣϯมΘΔͱେମյΕΔ •
ͦΕʹґଘ͍ͯ͠ΔNative Moduleେମյ ΕΔ • ͦͷAPIΛநԽͯ͠ٵऩ͢Δͷ͕NAN
Node.js x Native Module • NAN Ͱ࡞ͬͯϞδϡʔϧΛϥοϓ͢Δ • ࣗ༝͕ߴ͍ •
ͦͷΘΓbindingͷͨΊͷίʔυΛ৭ʑ֤ ඞཁ͕͋Δ
Node.js x Native Module • node-ffi Ͱ FFI ݺͼग़͠ʹ͢Δ
Node.js x Native Module • node-ffi Ͱ FFI ݺͼग़͠ʹ͢Δ •
Foreign Function Interface (ݴޠ͕༻ҙͯ͠ ͘Ε͍ͯΔಛ༗ͷ֎෦ݺͼग़͠ػೳ) • libffi Λ library ͱͯ͠ϩʔυ͍ͯ͠ΔͷͰC C++ͷίʔυͰ͋Εಈ͘
Node.js x Native Module • node-ffi Ͱ FFI ݺͼग़͠ʹ͢Δ •
؆୯ • ͨͩ͠ɺ֎෦ݺͼग़͠ʹͳΔͨΊFFI͍
Node.js x Native Module • emscriptenͰasm.jsʹ͢Δ
Node.js x Native Module • emscriptenͰasm.jsʹ͢Δ • emscriptenͷఏڙ͢ΔίϯύΠϥͰasm.jsԽ͢ Δ •
asm.jsMozilla͕ఏএɺChrome/Edgeα ϙʔτ༧ఆͰwasmͷpolyfillͱͯ͠ಈ͘Մೳ ੑ͋Γ
Node.js x Native Module • emscriptenͰasm.jsʹ͢Δ • ؆୯ʢ͚ͩͲɺҙ֎ͱಈ͔ͳ͔ͬͨΓ͢Δʣ • શͯJavaScriptʹͳΓɺϑΝΠϧαΠζ͕ڊେʹ
ͳΔ • ࣮ࡍNode.jsͷཪͷv8asm.jsΛϑϧαϙʔτ ͯ͠ͳ͔ͬͨΓͰ͋·Γ͘ͳ͍
Node.js x Native Module • emscriptenͰwasmʹ͢Δ (NEW!!)
Node.js x Native Module • emscriptenͰwasmʹ͢Δ • asm.jsͱಉ͡؆୯͞ • v8ͷ࠷৽ͩͱwasmରԠࡁΈͳͷͰී௨ʹಈ͘
• ·ͩ·ͩʢJSJIT͕ޮ͘ͷͰ୯७ͳܭ ࢉͩͱ JS > WebAssemblyʹͳΔ͜ͱ͋Δʣ
͞Βʹ࠷ۙͰ
Node.js ʹ stable module ABI ͷ PR͕Ճ͞ΕͯΔ • https://github.com/nodejs/node/pull/11975
Node.js ʹ stable module ABI ͷ PR͕Ճ͞ΕͯΔ • ͳͷͰɺ5ͭ: stable
module ABIͰ࡞Δ • ͍উखతʹNANͱҰॹ • ৽͍͠APIͳͷͰதʢ·ͩࢼͯ͠ͳ͍ʣ
ͳͷͰ
Node.js x Native Module • NAN Ͱ࡞ͬͯϞδϡʔϧΛϥοϓ͢Δ • node-ffi Ͱ
FFI ݺͼग़͠ʹ͢Δ • emscriptenͰasm.jsʹ͢Δ • emscriptenͰwasmʹ͢Δ (new!!! node v8 Ͱ༗ޮʹ) • stable module ABI ʹ͢Δ (new!!! node v8 Ͱ༗ޮʹ)
WebAssembly DEMO
butteraugly DEMO
Node.js x WebAssembly • ࢥ৭ʑ͋ΕͲ໘ന͍ • WebAssemblyʹͨ͠΄͏͕ϒϥβͰ Ͱ͖Δ͜ͱ͕ଟ͘ͳΔͱࢥΘΕΔ • ࠓ·ͩΈΜͳ৭ʑτϥΠͯ͠νΣοΫͯ͠
Δ࠷த