Slide 1

Slide 1 text

R ust で asm.js で P iston した話 @gifnks m (ぎふ) 2016/11/21 R ust の L T 会! R ust 入門者の集い

Slide 2

Slide 2 text

R ust 1.13.0 (stable) リリー スおめでとうござ います! 今日は R ust 1.13.0‑nightly からサポー トされた、 as m.js ター ゲット と P ist on を組み合わせる話をします R ust の可能性はネイティブアプリに留まらない! ということを感じていただければ幸いです 2

Slide 3

Slide 3 text

asm.js とは? (雑な説明) C /C ++ (そして R ust) を J av a S cr ipt へコンパイルできるスゴいやつ ⇒ ⇒ asm.js を使えば R ust でウェブアプリケー ションが作 れる! / / R u s t のコー ド f n m a i n ( ) { p r i n t l n ! ( " H e l l o J S ! " ) ; } / / J S のコー ド f u n c t i o n _ _ Z N 5 h e l l o 4 m a i n 1 7 h e 0 4 5 6 e 9 a f e v a r $ 0 = 0 , $ 1 = 0 , $ 2 = s p = S T A C K T O P ; S T A C K T O P = S T A C K T O P + 3 2 $ _ 2 = s p ; . . . } 3

Slide 4

Slide 4 text

P istonとは? R ust で書かれたゲー ムエンジン (ライブラリ群) ⇒ P iston を使えば R ust でゲー ムが作れる!!! 4

Slide 5

Slide 5 text

asm.js + P iston でブラウザで動くゲー ムが簡 単に作れるのでは? ライフゲー ム (C onway's game of life) を作ってみた ライフゲー ム: 生命を模したシミュレー ションゲー ム。 一定のルー ルに従 って生命が生まれたり死んだりする ソー スはこちら: https://git hu b.com/gifnks m/game‑of‑life‑rs 5

Slide 6

Slide 6 text

デモ 1 W indows/L inux/M ac で動く c a r g o r u n ‐ ‐ r e l e a s e 6

Slide 7

Slide 7 text

デモ2 ブラウザでも動く! デモ: https://gifnks m.git hu b.io/game‑of‑life‑rs/ # E m s c r i p t e n ツー ルのP A T H 設定 & e m c c コンパイラオプションの指定 s o u r c e e m s d k _ p o r t a b l e / e m s d k _ e n v . s h e x p o r t E M M A K E N _ C F L A G S = " ‐ s U S E _ S D L = 2 ‐ O 3 " c a r g o b u i l d ‐ ‐ t a r g e t a s m j s ‐ u n k n o w n ‐ e m s c r i p t e n ‐ ‐ r e l e a s e 詳細な手順は以下の README 参照 https://git hu b.com/gifnks m/game‑of‑life‑rs 7

Slide 8

Slide 8 text

感想 よかったこと コー ドの書き換え量は少なくて済んだ バックエンドを意識せず書ける P ist on すごい JS はシングルスレッド ⇒ イベントルー プは少し工夫が必要 O p en GL /W eb GL 全く知らないけどなんとか(?)できた つらかったこと as m.js + P ist onの先行事例は悉くソー スが見つからず。。。 大量のエラー メッセー ジ (無視しても動く) 動かないライブラリとの格闘 ( p i s t o n _ w i n d o w , g f x _ g r a p h i c s ) 結局、 別のライブラリを使う ( s d l 2 w i n d o w , o p e n g l _ g r a p h i c s ) as m.js と C のコー ド (SDL 2) を比較しつつのデバッグがつらい ブラウザのデバッガがフリー ズ 8

Slide 9

Slide 9 text

私見 R ust は as m.js/W eb A ss embly と相性が良いのでは? ランタイムなし LLVM C /C ++ よりもつらくない R ust も as m.js も M oz illa 言語の開発元が as m.js/W eb A ss embly サポー トに積極的 ⇒ W eb A ssembly 界の覇権言語、 狙えるのでは?? R ust + W eb A ss embly を盛り上げていきましょう!! 9

Slide 10

Slide 10 text

あなたと R ust, 今すぐダウンロー ド 無料 R ust のダウンロー ド