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
TypeScriptでWebAssemblyに入門しよう
Search
is_ryo
February 21, 2024
Programming
410
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
140
Unknownのことをちゃんと知りたい_関西フロントエンド忘年会
[email protected]
× KINTOテクノロジーズ
is_ryo
0
51
tRPC入門
is_ryo
1
370
Honoが良さそう🔥
is_ryo
1
1.5k
LambdaのNodejsをアップデートしたら困った話
is_ryo
2
1.5k
頑張らないオレオレVuex規約を作った話
is_ryo
4
3k
AppSyncで始めるGraphQL
is_ryo
1
670
Other Decks in Programming
See All in Programming
続・コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions-again
handlename
0
130
最近”作らせてる” ローカルAIアプリの話
akit37
0
500
Event is what happens
moro
2
1.6k
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
550
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
200
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
240
contenteditable と日本語入力に向き合う
colorful12
0
220
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
170
Performance Optimization With LLMs
xleitix
0
210
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
190
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
RailsConf 2023
tenderlove
30
1.6k
It's Worth the Effort
3n
188
29k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Scaling GitHub
holman
464
140k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Practical Orchestrator
shlominoach
192
12k
Exploring anti-patterns in Rails
aemeredith
4
540
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
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!!!