Enviar pesquisa
Carregar
RustでWebAssembly
•
2 gostaram
•
588 visualizações
ceres-inc
Seguir
2019年11月21日(木)に開催しました、エンジニア文化祭~新技術へのチャレンジ~の資料です。
Leia menos
Leia mais
Engenharia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 18
Baixar agora
Baixar para ler offline
Recomendados
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術
Isamu Suzuki
About .Net vNext
About .Net vNext
Kazunori Hamamoto
安く・速く・安定したウェブを作る方法
安く・速く・安定したウェブを作る方法
Kei Mikage
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
Isamu Suzuki
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
Ad stirの裏側
Ad stirの裏側
Seiji Ochiai
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
Yosuke Onoue
Recomendados
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術
Isamu Suzuki
About .Net vNext
About .Net vNext
Kazunori Hamamoto
安く・速く・安定したウェブを作る方法
安く・速く・安定したウェブを作る方法
Kei Mikage
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
Isamu Suzuki
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
Ad stirの裏側
Ad stirの裏側
Seiji Ochiai
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
Yosuke Onoue
Elixirfest2018-conbu-ltpub
Elixirfest2018-conbu-ltpub
Ryuzi Toyama
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Shunsuke Watanabe
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
zuya
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Kei Nakazawa
Node js 入門
Node js 入門
Satoshi Takami
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
AimingStudy
WebComponentsとPolymer
WebComponentsとPolymer
Takahiro Maki
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Tetsurou Yano
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
Yoshihiro Iwanaga
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
kyon mm
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始め
Takako Miyagawa
Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話
Takayuki Saito
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
Node.js Hands-On
Node.js Hands-On
Akinari Tsugo
ご注文は構成管理ですか??
ご注文は構成管理ですか??
Cosign930
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
三七男 山本
JAMstackは眠らない
JAMstackは眠らない
Kuniyoshi Tone
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
Mais conteúdo relacionado
Mais procurados
Elixirfest2018-conbu-ltpub
Elixirfest2018-conbu-ltpub
Ryuzi Toyama
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Shunsuke Watanabe
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
zuya
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Kei Nakazawa
Node js 入門
Node js 入門
Satoshi Takami
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
AimingStudy
WebComponentsとPolymer
WebComponentsとPolymer
Takahiro Maki
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Tetsurou Yano
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
Yoshihiro Iwanaga
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
kyon mm
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始め
Takako Miyagawa
Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話
Takayuki Saito
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
Node.js Hands-On
Node.js Hands-On
Akinari Tsugo
ご注文は構成管理ですか??
ご注文は構成管理ですか??
Cosign930
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
三七男 山本
Mais procurados
(20)
Elixirfest2018-conbu-ltpub
Elixirfest2018-conbu-ltpub
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Node js 入門
Node js 入門
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
WebComponentsとPolymer
WebComponentsとPolymer
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Hello, Node.js
Hello, Node.js
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始め
Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Node.js Hands-On
Node.js Hands-On
ご注文は構成管理ですか??
ご注文は構成管理ですか??
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
Semelhante a RustでWebAssembly
JAMstackは眠らない
JAMstackは眠らない
Kuniyoshi Tone
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
yuzorock
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
Tadashi Nemoto
初めてのWebプログラミング講座
初めてのWebプログラミング講座
DIVE INTO CODE Corp.
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Tetsuo Ajima
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
ECSとGitLabでCI環境構築
ECSとGitLabでCI環境構築
iwata jaws-ug
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
Eight meets AWS
Eight meets AWS
Tetsuya Mase
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
Keiichi Hagiwara
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
Semelhante a RustでWebAssembly
(20)
JAMstackは眠らない
JAMstackは眠らない
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
初めてのWebプログラミング講座
初めてのWebプログラミング講座
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
ECSとGitLabでCI環境構築
ECSとGitLabでCI環境構築
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Eight meets AWS
Eight meets AWS
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
Mais de ceres-inc
エンジニア力底辺のデザイナーが Vue.jsチャレンジ
エンジニア力底辺のデザイナーが Vue.jsチャレンジ
ceres-inc
Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話
ceres-inc
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
ceres-inc
初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れ
ceres-inc
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
ceres-inc
初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニング
ceres-inc
Mais de ceres-inc
(6)
エンジニア力底辺のデザイナーが Vue.jsチャレンジ
エンジニア力底辺のデザイナーが Vue.jsチャレンジ
Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れ
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニング
RustでWebAssembly
1.
RustでWebAssembly 株式会社セレス インフラチーム 樫本直弘
2.
About Me ● 樫本直弘(かしもとなおひろ) ○
GitHub:https://github.com/NaohiroKashimoto ● 株式会社セレスの(中略)インフラチーム所属 ● 業務 ○ 内部統制(IT) ○ バックエンドの管理(プロビジョニング、モニタリング、 etc...) ● バックグラウンド ○ N88-BASIC,80286のアセンブラからPerl,PHP,C/C++,C#,Ruby,Go,ES5,ES2015,Reactあたりま で。 ○ ガラケー開発、サーバー型電子マネー、決済、と来て現職
3.
目次 ● 自己紹介(済) ● なぜRustか ●
なぜWebAssemblyか ● ブラウザから見たWASMの実行フロー ● WASMでの動作確認までのフロー ● 事前準備 ● コードを見ながら実行してみよう ● 結論
4.
なぜRustか
5.
GCないしメモリ管理とかイケてそう ゼロコスト抽象化がかっこいい
6.
Rustの特徴 ● 安全性、速度、並行性にフォーカスした言語 ○ 型安全 ○
メモリセーフ ○ GCがない ○ マルチスレッドを実装しやすい ○ C++と同程度の実行速度 ● コンパイラ言語 ● 静的型付け
7.
Rustの採用事例 ● MozillaのFirefox ● Facebook
Libra Core ○ Libraプロトコルのオープンソース実装 ○ Libra:https://developers.libra.org/docs/libra-core-overview ○ GitHub:https://github.com/libra/libra ● Amazon Web ServiceのFirecracker ○ Rustで書かれたKVMを利用するMicroVM ○ AWS:https://aws.amazon.com/jp/blogs/news/firecracker-lightweight-virtualization-for-serverles s-computing/ ○ GitHub:https://github.com/firecracker-microvm/firecracker ● 他にもDropbox,Fastlyなどで活用されている。
8.
なぜWebAssmblyか
9.
何ができるかわからないから使ってみたい
10.
WebAssemblyの特徴 ● バイナリフォーマット ○ WebAssemblyのテキスト表現もある。
WAST(拡張子:.wast)とWAT(拡張子:.wat)の2つのフォー マットが存在。 ● 異なるプラットフォーム間でネイティブ水準の速度で実行可能 ● 安全に実行できるようにサンドボックス内で実行される。 ● wasm32とwasm64があるがwasm64のコンパイラがないので事実上wasm32の み。
11.
ブラウザからみたWASMの実行フロー 1. ブラウザがHTML読み込み 2. ブラウザがJavaScript読み込み&実行 3.
JavaScript内からWASM読み込み&実行
12.
Rustを使ってWASMでの動作確認までのフロー 1. Rust(2パターン) a. wasm-packでビルドする b.
rustcでビルドする 2. JavaScript(3パターン) a. 手書きのJavaScript,HTMLでWASM呼び出し b. wasm-packをnpmのローカルインストールで node_modulesにインポートしてwebpackでまとめ る c. create-wasm-appを使う
13.
事前準備 1. Rustのインストール 2. npmのインストール そこまで複雑ではないので詳しい説明は割愛します
14.
コードみながら実行してみよう 1. Rustの単純なコード(JavaScriptのalertをRustから呼び出す)を書く 2. wasm-packでビルドするとpkgディレクトリが生成される。npm
installで取り込める 形になっている。 3. publicディレクトリに移動してnpm initで初期化 4. npm install --save-dev webpack webpack-cli webpack-dev-server 5. package.jsonのscriptsにdev-server起動のコマンド書く 6. index.html,index.jsを用意しておく 7. webpack-dev-serverで確認
15.
まとめ ● RustからWASM,WATを吐き出すまでのフローが煩雑に思えた。 ● JavaScriptとRust間での変数の受け渡しのハードルが高い。個人開発者含めて広 がるには、まだ時間かかると思う(本番環境に適用するという意味で)。 ●
Rust/WebAssembly用のUIフレームワークyewを使ってみたい。
16.
参考資料 ● WebAssembly Specification ○
http://webassembly.github.io/spec/core/index.html ● WebAssembly: 「なぜ」と「どうやって」 [翻訳記事] ○ https://dev.to/nabbisen/webassembly--3385 ● Rust から WebAssembly にコンパイルする ○ https://developer.mozilla.org/ja/docs/WebAssembly/Rust_to_wasm ● WebAssembly テキストフォーマットを理解する ○ https://developer.mozilla.org/ja/docs/WebAssembly/Understanding_the_text_format ● WebAssembly JavaScript API を使用する ○ https://developer.mozilla.org/ja/docs/WebAssembly/Using_the_JavaScript_API
17.
参考資料2 ● wasm-pack ○ rustのコードをいい感じに
npmのモジュールにしてくれる。 ○ https://github.com/rustwasm/wasm-pack ● yew ○ UIフレームワーク ○ https://github.com/yewstack/yew
18.
ご静聴ありがとうございました
Baixar agora