Suche senden
Hochladen
WebAssemblyの紹介
•
0 gefällt mir
•
414 views
mizdra
Folgen
Dentoo.LT #20で使用したスライドです.
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 49
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ASP.NET パフォーマンス改善
ASP.NET パフォーマンス改善
Joni
Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話
Kenichi Murahashi
RVM with Server Environment
RVM with Server Environment
Yukimitsu Izawa
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
豊明 尾古
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Kazumi Hirose
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
Kazumi Hirose
20150523
20150523
Toshihiro Suzuki
Web Assembly in action
Web Assembly in action
t-kihira
Empfohlen
ASP.NET パフォーマンス改善
ASP.NET パフォーマンス改善
Joni
Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話
Kenichi Murahashi
RVM with Server Environment
RVM with Server Environment
Yukimitsu Izawa
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
豊明 尾古
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Kazumi Hirose
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
Kazumi Hirose
20150523
20150523
Toshihiro Suzuki
Web Assembly in action
Web Assembly in action
t-kihira
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
Mbed2013
Mbed2013
lynxeyed
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
Hirata Tomoko
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
Sho Okada
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
Maboroshi.inc
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Hirata Tomoko
Html5 nagoya 07
Html5 nagoya 07
Yoshiaki Sugimoto
サーバ構築実践入門
サーバ構築実践入門
優之 田中
WordPressでの制作説明
WordPressでの制作説明
Toshiaki Endo
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明
schoowebcampus
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
Masaya Kogawa
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
GoAzure
Ad stirの裏側
Ad stirの裏側
Seiji Ochiai
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
Yuki Nihei
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
Ito Kohta
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
About SnapKit - Open source lab -
About SnapKit - Open source lab -
Daisuke Yamashita
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
Amebaプラットフォームの作りかた
Amebaプラットフォームの作りかた
Kazunari Hara
Weitere ähnliche Inhalte
Was ist angesagt?
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
Mbed2013
Mbed2013
lynxeyed
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
Hirata Tomoko
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
Sho Okada
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
Maboroshi.inc
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Hirata Tomoko
Html5 nagoya 07
Html5 nagoya 07
Yoshiaki Sugimoto
サーバ構築実践入門
サーバ構築実践入門
優之 田中
WordPressでの制作説明
WordPressでの制作説明
Toshiaki Endo
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明
schoowebcampus
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
Masaya Kogawa
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
GoAzure
Ad stirの裏側
Ad stirの裏側
Seiji Ochiai
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
Yuki Nihei
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
Ito Kohta
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
About SnapKit - Open source lab -
About SnapKit - Open source lab -
Daisuke Yamashita
Was ist angesagt?
(20)
Ember コミュニティとわたし
Ember コミュニティとわたし
Mbed2013
Mbed2013
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Html5 nagoya 07
Html5 nagoya 07
サーバ構築実践入門
サーバ構築実践入門
WordPressでの制作説明
WordPressでの制作説明
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
Node.js で Web アプリ開発
Node.js で Web アプリ開発
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
Ad stirの裏側
Ad stirの裏側
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
サーバ・VM+コンテナ管理Tips@オンライン合宿2020
Hello, Node.js
Hello, Node.js
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
About SnapKit - Open source lab -
About SnapKit - Open source lab -
Ähnlich wie WebAssemblyの紹介
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
Amebaプラットフォームの作りかた
Amebaプラットフォームの作りかた
Kazunari Hara
フロントエンド技術の変遷
フロントエンド技術の変遷
Ryo Higashigawa
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Joni
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
CloudFront構築事例 ハートビーツ 20121025
CloudFront構築事例 ハートビーツ 20121025
Toshiaki Baba
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
Mvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
Web Standards 2018
Web Standards 2018
Shogo Sensui
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~
miso- soup3
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
オープニング
オープニング
konekto
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
Varnish
Varnish
Ayako Hatori
Web study
Web study
chibita
リアルタイムweb入門
リアルタイムweb入門
Hiromu Shioya
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
Joni
Ähnlich wie WebAssemblyの紹介
(20)
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
Amebaプラットフォームの作りかた
Amebaプラットフォームの作りかた
フロントエンド技術の変遷
フロントエンド技術の変遷
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
CloudFront構築事例 ハートビーツ 20121025
CloudFront構築事例 ハートビーツ 20121025
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Mvc conf session_1_osada
Mvc conf session_1_osada
Web Standards 2018
Web Standards 2018
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
オープニング
オープニング
Web技術勉強会 第33回
Web技術勉強会 第33回
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
Varnish
Varnish
Web study
Web study
リアルタイムweb入門
リアルタイムweb入門
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
WebAssemblyの紹介
1.
WebAssemblyの紹介 in Dentoo.LT #20 1
2.
自己紹介 mizdra 3年I類CSプログラム 興味のあること JavaScript/TypeScript Rust/WebAssembly ポケモン乱数調整 2
3.
今日話すこと 3
4.
WebAssemblyの紹介 4
5.
目次 1. 何故WebAssemblyが必要とされるのか 2. WebAssemblyとは何か 3.
Rust+WebAssemblyの始め方 5
6.
何故WebAssemblyが 必要とされるのか 6
7.
何故WebAssemblyが必要とされる のか これを説明するにはWebフロントエンドの歴史を 知る必要がある 太古のWebフロントエンド 現在のWebフロントエンド 7
8.
太古のWebフロントエンド 低速なJavaScriptエンジン Webページ装飾するための最小限のAPI 通知/高速なグラフィック処理などが扱えない リッチなアプリはFlash/Java Appletが担当 リッチなアプリを作るのは困難だった 8
9.
現在のWebフロントエンド JavaScriptエンジンの高速化(JIT) JavaScript自体の進化(ES2015+) 静的型システムの導入(TypeScript, Flow) 富豪的プログラミングの発展(VDOM) 新アーキテクチャの発明(Flux, BFF) ネイティブアプリのようなUXの提供(PWA) リッチなアプリのためのAPIの提供(WebRTC) 9
10.
雑にまとめると... Webが進化して ネイティブアプリのような 機能やUXを提供する リッチなアプリが作れるように 10
11.
Webが進化することで 多くの課題が解決されてきた 11
12.
しかし進化することで 新たに見えてきた課題も 12
13.
現在のWebフロントエンドの課題 JITコンパイラの性能の限界 JavaScriptという言語仕様の問題 インタプリタ言語 動的型付け 要求スペックの向上 グラフィカルなゲームなど 13
14.
性能問題の解決策 パフォーマンスを重視したAPIの導入 TypedArray SIMD WebGL 高速な代替言語の導入 WebAssembly 14
15.
性能問題の解決策 パフォーマンスを重視したAPIの導入 TypedArray SIMD WebGL 高速な代替言語の導入 WebAssembly 15
16.
WebAssemblyとは何か 16
17.
WebAssemblyとは何か ブラウザで動く低級言語 事前に任意の言語からコンパイルして生成 C/C++/Rust/Golang 静的型付け JavaScriptよりも高速に動作する 17
18.
なるほど 18
19.
皆さんはこう思っているはず 19
20.
WebAssembly なんだか良さそう 20
21.
とりあえず触ってみたい 21
22.
でも触り方が分からない… 22
23.
そんな人のために お得な情報 23
24.
http://www.mizdra.net/entry/2018/05/07/080000 24
25.
WebAssembly 開発環境構築の本 Rust を用いたWebAssembly
の開発環境を構築す る手法を紹介する電子書籍 ハマりポイントの紹介 モジュールバンドラとの連携 関連ツールの紹介 私が書きました JSer.info でも紹介された 今日は書籍の内容を掻い摘んでに紹介 25
26.
はじめよう Rust+WebAssembly 26
27.
Rustのセットアップ rustupをインストールするとコンパイラなどのツ ール一式が揃う ## Rust をインストール $
curl https://sh.rustup.rs -sSf | sh $ export PATH="$HOME/.cargo/bin:$PATH" ## WebAssembly へのコンパイル機能をインストール $ rustup target add wasm32-unknown-unknown 27
28.
プロジェクトを作成 cargo new --lib
でRust のライブラリ用のプロジェ クトテンプレートを作成 Cargo.toml : プロジェクトの設定ファイル src/lib.rs : エントリポイント $ cargo new --lib hello-wasm $ tree hello-wasm hello-wasm ├── Cargo.toml └── src └── lib.rs 28
29.
WebAssembly向けの設定を追加する 生成されるバイナリにはメタデータが含まれる 他のRustプログラムから利用される時に利用さ れる 今回はwasmバイナリはJSからのみ利用されるので, メタデータを付けないよう cdylib を設定 [package] name
= "hello-wasm" version = "0.1.0" authors = ["mizdra <pp.mizdra@gmail.com>"] [lib] crate-type = ["cdylib"] 29
30.
Rustを書く 2 つの符号付き32bit 整数を引数として受け取り, その和を返す関数 pub
キーワードで外部に関数を公開 /src/lib.rs #[no_mangle] pub fn add(a: i32, b: i32) -> i32 { a + b } 30
31.
#[no_mangle] について アトリビュート ブロックやメソッドなどを修飾する構文 「Rustコンパイラに次の関数の名前をマングリン グせずにコンパイルせよ」と指示 JavaScript から
add という名前で関数にアクセス できるようになる 31
32.
コンパイルする cargo build コマンドを使う --target
で生成するバイナリの種類をwasmに指定 release は最適化オプション $ cargo build --target=wasm32-unknown-unknown --release $ /target/wasm32-unknown-unknown/release/hello_wasm.wasm 32
33.
JavaScriptからwasmを利用する /index.html <!DOCTYPE html> <title>Hello, WebAssembly!</title> <script> const
wasm = `./target/wasm32-unknown-unknown/release /wasm_dev_book_hello_wasm.wasm` fetch(wasm) .then(response => response.arrayBuffer()) .then(bytes => WebAssembly.instantiate(bytes, {})) .then(results => console.log(results.instance.exports.add(1, 2)) ) </script> 33
34.
34
35.
35
36.
36
37.
37
38.
38
39.
Q. 何故JSで再コンパイルするの? 39
40.
A. OSはそのままではwasmを解釈 できないため 40
41.
Q. 何故JSで再コンパイルするの? ブラウザは様々なOSで動作する だが, OSが解釈できる機械語はOSごとに異なる ブラウザがOSが解釈できる機械語にコンパイルす る 41
42.
実行 HTTPサーバを立てて index.html にアクセス $
npx http-server . $ open http://127.0.0.1:8080 42
43.
43
44.
動いた 44
45.
実際どれくらい速いの? 45
46.
実際どれくらい速いの? wasmで乱数調整補助ツール作ってみた http://search-tinymt-seed.netlify.com WebpackのバグでChromeでは動かない Firefoxでの実行時間 JavaScript: 約300分 WebAssembly: 約13分 場合によってはJSのほうが速いことも wasmのランタイムはまだ登場したばかり 46
47.
まとめ 47
48.
まとめ JavaScriptよりも高速なブラウザで動く言語として WebAssemblyが必要とされている WebAssemblyはブラウザで動く低級言語 Rust+WebAssemblyの始め方を紹介した 48
49.
まとめ JavaScriptよりも高速なブラウザで動く言語として WebAssemblyが必要とされている WebAssemblyはブラウザで動く低級言語 Rust+WebAssemblyの始め方を紹介した とりあえず電子書籍を読んでくれ!! 49
Jetzt herunterladen