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
TypeScriptでWebAssemblyに入門しよう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
is_ryo
February 21, 2024
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScriptでWebAssemblyに入門しよう
is_ryo
February 21, 2024
More Decks by is_ryo
See All by is_ryo
生成AIとエンジニアの仕事と私~実践知を添えて~
is_ryo
0
130
Unknownのことをちゃんと知りたい_関西フロントエンド忘年会
[email protected]
× KINTOテクノロジーズ
is_ryo
0
47
tRPC入門
is_ryo
1
340
Honoが良さそう🔥
is_ryo
1
1.4k
LambdaのNodejsをアップデートしたら困った話
is_ryo
2
1.4k
頑張らないオレオレVuex規約を作った話
is_ryo
4
2.9k
AppSyncで始めるGraphQL
is_ryo
1
650
Other Decks in Programming
See All in Programming
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
100
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
490
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
730
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
380
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
360
Press start. Python's next generation.
willingc
PRO
3
140
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
FastAPI の並行処理モデルを完全に理解する
hoto17296
8
3k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.9k
KATA
mclloyd
PRO
35
15k
The Curse of the Amulet
leimatthew05
2
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
490
Crafting Experiences
bethany
1
260
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
950
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
360
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Transcript
TypeScriptで WebAssemblyに入門しよう AssemblyScriptでwasmを生成してWebAssemblyに触れる 2024/02/21 kansai.ts#5
いづりょー #EngineeringManager #SoftwareEngineer #React #TypeScript #Rust入門中 #Sprocket #Web接客 X →
@is_ryo bsky → @is-ryo.bsky.social
WebAssembly? WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパ フォーマンス向上を提供する新しい種類のコードです。基本的に直接記述では なく、C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対象とな るように設計されています。 https://developer.mozilla.org/ja/docs/WebAssembly/Concepts
JavaScriptでは処理速度が遅くてUXを大きく損なうような計算処理などを高 速化したいといった動機から生まれたもののようです。 https://developer.mozilla.org/ja/docs/WebAssembly/Concepts#we bassembly_%E3%81%AE%E7%9B%AE%E6%A8%99 WebAssembly?
主要ブラウザーはWebAssemblyをサポートしていますので、このブラウザー だと動かないんじゃない?みたいな心配をしなくても大丈夫です。 https://caniuse.com/?search=wasm ブラウザごとのWebAssembly対応状況
WebAssemblyの目標 • 高速で、高効率であり、ポータブルであること • 可読性をもちデバッグ可能であること • 安全であること • ウェブを破壊しないこと https://developer.mozilla.org/ja/docs/WebAssembly/Concepts#we
bassembly_%E3%81%AE%E7%9B%AE%E6%A8%99
• フロント側で重たい処理を実行したいとき • フロント側で並列実行をしたい処理があるとき • わざわざサーバーを介さずにフロントエンドで複雑な処理 をしたいとき • サーバ側の処理をそのままフロント側に移植したいとき WebAssemblyの使いどころ
• Webアプリへ組み込む • wasm runnerで様々な環境でWebAssemblyを実行す る ◦ 最近Rust製のwasm runnerが増えているらしい WebAssemblyの将来性
WebAssemblyがブラウザで動く仕組み 1. WebサーバーからHTMLなどと一緒にWebAssembly実行ファイルがダ ウンロードする 2. WebAssemblyJavaScriptAPIを使って、WebAssembly実行ファイルを 読み込み、WebAssembly仮想マシンの上でWebAssemblyインスタン スを生成する 3. WebAssemblyインスタンスに生えている関数をブラウザ上で実行する
WebAssemblyがブラウザで動く仕組み
グルーコード wasmをインポートして利用するためのコードを グルーコード と呼びま す。
WebAssemblyに入門するには? MDNにも「C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対 象となるように設計されています。」と書かれているように、WebAssemblyを 入門しようと書籍を買ってみてると、大体CかC++のコードで入門をしていくとい うことが多いんだよな… と思っていたときに見つけたのが AssemblyScript でした!
AssemblyScript 🚀 TypeScriptを一定書くことができる人ならサクッと使い始めることができて、 WebAssemblyについても入門し始めることができるという代物です。 https://www.assemblyscript.org/
AssemblyScript 🚀 C や Rust の詳細を学ぶ必要なく、 TypeScript のような慣れ親しんだ言語 の快適さの中で WebAssembly
を試したいウェブ開発者にとって、 AssemblyScript は最良の選択肢になるでしょう。 AssemblyScript は TypeScript の厳密なバージョンを WebAssembly にコンパイルし、ウェブ開 発者は Prettier、ESLint、VS Code IntelliSense など、使い慣れた TypeScript 互換のツールを引き続き使用することができます。 https://developer.mozilla.org/ja/docs/WebAssembly/Concepts#as semblyscript_%E3%81%AE%E4%BD%BF%E7%94%A8
AssemblyScript 🚀 要するに、 CとかC++とかRustとか知らなくても WebAssemblyを生成して動かすことができる ぞ!!!! ということです。
AssemblyScript 🚀 フロントエンドエンジニアにとって嬉しいことがいくつかありま すので、そういう嬉しいポイントも含めて紹介していきます。
AssemblyScript サンプルコード
AssemblyScriptでコンパイルしたwasmの使い 方 ビルドしたものは build 以下に生成され、その中の release.js をインポートし て利用します。release.jsはグルーコードとしてwasmをインポートしていま す。また型情報も提供してくれます。
TypeScriptとの違い • 扱える型が違う ◦ https://www.assemblyscript.org/types.html • 基本的にanyやundefinedはない • 引数の型にObjectが使えない •
などなど
まとめ • WebAssemblyはもうほとんどのブラウザ環境で使うことができる • 最近Rust製のwasm runnerが出てきているので、いろんなところで wasmを使うことができる未来が来るかも • 個人的にはDockerの代わりになる可能性もあると感じている •
TypeScriptを知っていれば、AssemblyScriptでWebAssemblyに入門 することもできる • wasmは早い、安全、楽しい
Thanks!!!