Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

WebAssembly with Go

1,852 views

Published on

Google I/O 2018 わいわい報告会 in 福岡で発表した資料です
https://mercari.connpass.com/event/88979/

Published in: Technology

WebAssembly with Go

  1. 1. The Go gopher was designed by Renée French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. WebAssemblyとGo 2018/06/13 @Google I/O 2018 わいわい報告会 in 福岡
  2. 2. 自己紹介 上田拓也 @tenntenn 所属 コミュニティ活動 Go ビギナーズ Go Conference 上田拓也 @tenntenn 株式会社メルペイ エキスパートチーム 2
  3. 3. メルペイ エキスパートチーム 技術をアウトプットするところに技術は集まる ■ エキスパートチームとは? ● 50%以上の時間を技術コミュニティへの貢献に充てる ■ エキスパートチームの役割 ● 社内に新しい技術を取り取り込む ● 社外のコミュニティなどを通じて社会へ還元する ■ エキスパートチームの活動 ● カンファレンス・勉強会の開催/運営 ● 対外的な講演活動 ● 執筆、雑誌への寄稿、インタビュー ● 社内外での担当技術の普及推進 @tenntenn 担当:Go・GCP @mhidaka 担当:Android メンバー 3
  4. 4. Google I/Oに参加してきました 参考:http://tech.mercari.com/entry/2018/05/18/170401
  5. 5. WebAssemblyとは? ■ WebAssembly ● ブラウザ上で実行できるバイナリ形式の言語 ● ネイティブに近いパフォーマンスで動作する ● C/C++/Rustなどをコンパイルする
  6. 6. WebAssembly + AutoCAD 参考:https://youtu.be/BnYq7JapeDA?t=1679
  7. 7. WebAssembly + AutoCAD https://youtu.be/BnYq7JapeDA?t=1679
  8. 8. 各言語の対応状況
  9. 9. 各言語の対応状況
  10. 10. Goの対応状況 ■ Go 1.11でのリリースに向けて対応中 ● #18892 ● デザインドキュメント ■ 対応状況 ● ゴルーチンとチャネルには対応 ○ wasmにマルチスレッドの機能が入るらしい ● JavaScriptのAPIの呼び出し ○ syscall/jsを用いる ● https://github.com/neelance/go/tree/wasm-wip/src/syscall/js
  11. 11. GoでWebAssemblyを試す −1− ■ forkされたリポジトリを取ってくる ■ ビルドする $ git clone https://github.com/neelance/go.git $ cd go $ git checkout wasm-wip $ cd src $ ./all.bash
  12. 12. GoでWebAssemblyを試す −2− ■ GOOSとGOARCHを指定してビルドする $ GOOS=js GOARCH=wasm go build -o test.wasm test.go
  13. 13. デモ
  14. 14. デモ1: コンソールに出力 https://youtu.be/c3g1g1eIzCs
  15. 15. デモ2: DOMの操作とイベント ■ syscall/jsパッケージを利用 ● おおよそのGoの標準パッケージは使える ● 静的解析を行うgoパッケージも使えう
  16. 16. デモ3: 静的解析 + ACE 元ネタ:
  17. 17. デモ4: WebGL ■ WebGLのラッパーライブラリを用意 ● GopherJSのものを少し改変 ○ https://github.com/gopherjs/webgl ● Go Mobileのデモを少し改変 ○ https://github.com/golang/mobile/tree/master/example/basic
  18. 18. Thank you! twitter: @tenntenn Qiita: tenntenn connpass: tenntenn 18

×