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
is_ryo
February 21, 2024
Programming
380
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
120
Unknownのことをちゃんと知りたい_関西フロントエンド忘年会
[email protected]
× KINTOテクノロジーズ
is_ryo
0
46
tRPC入門
is_ryo
1
330
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
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.4k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
560
スマートグラスで並列バイブコーディング
hyshu
0
170
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
880
New "Type" system on PicoRuby
pocke
1
980
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
360
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
700
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Color Theory Basics | Prateek | Gurzu
gurzu
0
370
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
エンジニアに許された特別な時間の終わり
watany
107
250k
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!!!