Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2020/12/05 Japan.R 2020 @yutannihilation
Slide 2
Slide 2 text
ドーモ! ● @yutannihilation ● 某メッセージングアプ リの会社でデータサイ エンティスト見習い ● 好きな言語: R、Rust、忍殺語
Slide 3
Slide 3 text
今日はカニの話をします
Slide 4
Slide 4 text
今日はカニの話をします
Slide 5
Slide 5 text
今日はカニの話をします
Slide 6
Slide 6 text
今日はカニの話をします
Slide 7
Slide 7 text
こっちのカニです
Slide 8
Slide 8 text
非公式Rustマスコット Ferris
Slide 9
Slide 9 text
Rustとは ● メモリ管理が安全 ● 速い ● 並行処理に優れている … みたいな話はググってください
Slide 10
Slide 10 text
extendr
Slide 11
Slide 11 text
extendr ● RからRustを使えるようにするフレーム ワーク ● C++に対してRcppがあるのと同じような 位置づけ ● (RustからRを使うこともできる)
Slide 12
Slide 12 text
なぜRからRustを 使いたいのか?
Slide 13
Slide 13 text
理由その1: 時代はジェンダー ニュートラルな表現を求めている
Slide 14
Slide 14 text
理由その1: 時代はジェンダー ニュートラルな表現を求めている ● Rustを使う人は「Rustacean」 ● この圧倒的かっこよさよ...
Slide 15
Slide 15 text
理由その2: ツールチェーンがOSに依存しない ● 組み込みのパッケージマネージャ cargo ● GCCのバージョンの違いでコケるみたい なことがない ● コンパイル済みバイナリの配布も簡単
Slide 16
Slide 16 text
理由その3: Rustのエコシステムに乗っかれる ● Gamedev系が発達している(行列計算、 3D、物理シミュレーションなど) ● その他は謎... ● Rust-Bio っていうのもあるのでバイオ系 の人の感想を聞きたい
Slide 17
Slide 17 text
extendrの使い方 ※絶賛開発中なので参考までに
Slide 18
Slide 18 text
1. Rustの関数を書く fn hello() -> &'static str { "hello" }
Slide 19
Slide 19 text
2. extendrのマクロをつける #[extendr] fn hello() -> &'static str { "hello" } wrap__関数名 というCの関数が自動で生成される
Slide 20
Slide 20 text
3. Cに生成された関数を書く void wrap__hello(); void *dummy = (void*) &wrap__hello; リンカに勝手に消されるのを防ぐため、とのこと ここはそのうちextendrが勝手にやってくれそう
Slide 21
Slide 21 text
4. Rから.Call()で呼び出す hello <- function() { .Call("wrap__hello") }
Slide 22
Slide 22 text
その他 ● 単一の文字列や数値などは勝手に変換し てくれる ● ベクトルや構造体などは Robj という型に 明示的に変換が必要 ● エラー処理については不明
Slide 23
Slide 23 text
その他 ● バインディングはbindgenというツール で自動生成しているので、Cの関数をほぼ そのままRust側で使える(Rf_...みたい なやつ)
Slide 24
Slide 24 text
まとめ ● この冬、RustをはじめてRustaceanを名 乗ってライバルに差をつけよう ● RからRustを使うための仕組みextendr が絶賛開発中
Slide 25
Slide 25 text
参考 ● extendr https://github.com/extendr ● Using Rust code in R packages https://jeroen.github.io/erum2018/ ● https://github.com/clauswilke/helloexten dr/