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
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
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
260
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
580
霧の中の代数的エフェクト
funnyycat
1
340
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
4k
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
130
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
480
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
260
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
130
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
170
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
310
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
370
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
190
Featured
See All Featured
Believing is Seeing
oripsolob
1
170
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Building an army of robots
kneath
306
46k
Embracing the Ebb and Flow
colly
88
5.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Producing Creativity
orderedlist
PRO
348
40k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
820
Code Reviewing Like a Champion
maltzj
528
40k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Visualization
eitanlees
152
17k
Bash Introduction
62gerente
615
220k
Google's AI Overviews - The New Search
badams
0
1.1k
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!!!