SlideShare a Scribd company logo
1 of 36
Rustを支える技術
梅澤 慶介
1
紹介論文
2
紹介論文
3
Colin S. Gordonの研究
• Uniqueness and Reference Immutability
• 型システムで、不変参照と単一性を保証することで、
平行プログラミングにおけるデータ競合を検知する
• 研究の成果がプログラミング言語「Rust」に反映され
ている
↓
• Rely-Guarantee References
• Reference Immutabilityを一般化したもの
• 初出はPLDI2013
4
Rustを支える技術
• Rustって何が嬉しいの?
• それを実現する背景
• 新しい技術
5
AGENDA
• Rustって?
• Rustのメモリ管理を支える概念
• Rely-Guarantee References for Refinement Typesとは?
6
AGENDA
• Rustって?
• Rustのメモリ管理を支える概念
• Rely-Guarantee References for Refinement Typesとは?
7
Rustって?
• Mozilla が開発し、次世代ブラウザの開発に使っているプ
ログラミング言語。
• 「Rustは速度、安全性、並行性の3つのゴールにフォーカ
スしたシステムプログラミング言語です」
• https://www.rust-lang.org/ja-JP/
• C++に構文は似ているが、’&’の意味論は異なる。借用と
いう概念が導入され、メモリ安全性が保証されている。
8
Rustで何ができるの?
• Rustはさまざまな用途で採用されている
• データベースやOSなどのシステムソフトウェア
• レンダリングエンジンやゲームエンジンなど、高速性
が必要なコンポーネント
• ベンチマーカやテキストエディタなど、IOや描画とい
ったイベントを効率的・即時的に扱うソフトウェア
9
Rustの特徴
• ゼロコスト抽象化
• ムーブセマンティクス
• 保証されたメモリ安全性
• データ競合のないスレッド
• 最小限のランタイム
• 効率的なCバインディングス
• 関数型言語
• トレイトによるジェネリクス
• パターンマッチング
• 型推論
10
Rustの特徴
• ゼロコスト抽象化
• ムーブセマンティクス
• 保証されたメモリ安全性
• データ競合のないスレッド
• 最小限のランタイム
• 効率的なCバインディングス
• 関数型言語
• トレイトによるジェネリクス
• パターンマッチング
• 型推論
11
AGENDA
• Rustって?
• Rustのメモリ管理を支える概念
• Rely-Guarantee References for Refinement Typesとは?
12
Rustのメモリ管理を支える概念
• メモリ安全性を支える概念
1. リソースに対する単一の所有権
2. ライフタイムによるオブジェクトの有効性チェック
• データ競合のないスレッド支える概念
3. 借用によるR/Wのアクセス管理
13
Rustのメモリ管理を支える概念
• メモリ安全性を支える概念
1. リソースに対する単一の所有権
2. ライフタイムによるオブジェクトの有効性チェック
• データ競合のないスレッド支える概念
3. 借用によるR/Wのアクセス管理
14
1. リソースに対する単一の所有権
プログラミングの歴史は
メモリ管理との戦いであった
• メモリ管理の主なパラダイム
C言語
malloc/free
C++
スマートポインタ
Java 等
ガベージコレクショ
ン
15
1. リソースに対する単一の所有権
C言語のメモリ管理
C言語
malloc/free
• メリット
• プログラマがメモリ管理を制御でき
るので高速度・高効率
• デメリット
• 確保したメモリの解放を人間が忘れ
ず完璧に行うのは難しい
C++
スマートポインタ
Java 等
ガベージコレクショ
ン
16
1. リソースに対する単一の所有権
ガベージコレクションのメモリ管理
C言語
malloc/free
C++
スマートポインタ
Java 等
ガベージコレクショ
ン
• メリット
• プログラマがメモリ管理を制御でき
るので高速度・高効率
• デメリット
• 確保したメモリの解放を人間が忘れ
ず完璧に行うのは難しい
• メリット
• ランタイムが自動でメモリ管理する
• デメリット
• メモリ解放のためにプログラムが停
止する
• ランタイムが非高速・非効率
17
1. リソースに対する単一の所有権
C++のメモリ管理
C言語
malloc/free
C++
スマートポインタ
Java 等
ガベージコレクショ
ン
• メリット
• プログラマがメモリ管理を制御でき
るので高速度・高効率
• デメリット
• 確保したメモリの解放を人間が忘れ
ず完璧に行うのは難しい
• メリット
• ランタイムが自動でメモリ管理する
• デメリット
• メモリ解放のためにプログラムが停
止する
• ランタイムが非高速・非効率
• メリット
• スコープ外になるとメモリを解放す
る
• unique_ptrは生ポインタと比較して
も遜色ない
18
1. リソースに対する単一の所有権
C++のメモリ管理のデメリット
• unique_ptrの問題点
• 所有権の移譲を行うとアクセス違反が起きうるint main(int argc, char** argv) {
auto x = std::make_unique<std::string>("x");
auto y = std::make_unique<std::string>("y");
std::cout << *x << std::endl; // x
std::cout << *y << std::endl; // y
x = std::move(y); // moveによってyが持つポインタの所有権をyに移譲する
std::cout << *x << std::endl; // y
std::cout << *y << std::endl; // メモリアクセス違反
19
1. リソースに対する単一の所有権
Rustのリソースに対する単一の所有権
• 以下の挙動がデフォルトで行われる
• "="で移譲が行われ、リソースに対して単一の所有権しか
許さない
• 移譲された変数へのアクセスをコンパイル時に禁止する
→ 「unique_ptr + アクセス違反の禁止」による解決
20
fn main() {
let mut x = "x".to_string(); // 文字列 "x" を変数xにbindする
let y = "y".to_string(); // 文字列"y"を変数yにbindする
println!("{}", x); // x
println!("{}", y); // y
x = y; // C++のmoveと同じように、変数yにある文字列の所有権は変数yに移譲される
Rustのメモリ管理を支える概念
• メモリ安全性を支える概念
1. リソースに対する単一の所有権
2. ライフタイムによるオブジェクトの有効性チェック
• データ競合のないスレッド支える概念
3. 借用によるR/Wのアクセス管理
21
2. ライフタイムによるオブジェクトの有効性チェック
参照・ポインタのリソース解放の問
題
• C++の場合、参照やポインタが既に解放された変数を指し
示す場合がある。
• そのような参照やポインタへアクセスすることで
バグが発生する
int main() {
std::string* x;
{
std::string y = "y";
x = &y;
} // yのスコープが終わり、ここで"y"の値は開放されてしまう。
std::cout << *x << std::endl; // アクセス違反
return 0;
22
2. ライフタイムによるオブジェクトの有効性チェック
Rustのライフタイムによるオブジェクトの
有効性チェック
• 下記のようにコンパイル時にオブジェクトの寿命をチェ
ックしてくれる
fn main() {
let x;
{
let y = "hoge".to_string();
x = &y; // コンパイルエラー!
}
println!("{}", x);
}
23
Rustのメモリ管理を支える概念
• メモリ安全性を支える概念
1. リソースに対する単一の所有権
2. ライフタイムによるオブジェクトの有効性チェック
• データ競合のないスレッド支える概念
3. 借用によるR/Wのアクセス管理
24
3. 借用によるR/Wのアクセス管理
複数Write権限によるデータ競合
の問題
• データ競合
• 定義:(1)複数スレッド間で共有する変数に対して、(2)同時
に、(3)R/Wアクセスが行われる事象を指す。
• C++ではデータ競合が起きると未定義動作を引き起こす
25
int my_account = 0; int your_account = 100; // 預金口座残高
bool transfer(int& src, int& dst, int m)
{
if (m <= src) { // 未定義動作の可能性あり!
src -= m; // 未定義動作の可能性あり!
dst += m; // 未定義動作の可能性あり!
return true;
} else {
return false;
}
3. 借用によるR/Wのアクセス管理
Rustの複数Write権限の制限
• Rustの借用は、「1つ以上の不変(書き換えのできない)
参照」あるいは「1つの可変(書き換えのできる)参照」
に制限されている。 fn f1(a: &String, b: &String) {}
fn f2(a: &mut String, b: &String) {}
fn f3(a: &mut String) {}
fn main() {
let mut a = "hoge".to_string(); // 可変変数の宣言
f1(&a, &a); // 不変参照のみ借用しているので OK
f2(&mut a, &a); // コンパイルエラー!
f3(&mut a); // 可変参照を 1 つだけ借用しているので OK
println!("{}", a);
}
26
ここまでがRustの話
• Rustに対する「Uniqueness and Reference Immutability」
の貢献の話
• 特に以下に研究の成果が生かされている
• リソースに対する単一の所有権
• 借用によるR/Wのアクセス管理
27
AGENDA
• Rustって?
• Rustのメモリ管理を支える概念
• Rely-Guarantee Referencesとは?
28
Uniqueness and Reference
Immutability
29
• 型の種類
Uniqueness and Reference
Immutability
30
• 型の変換規則
Aliasingによる
静的チェックの問題
31
Rely-Guarantee Referencesの
型
32
Rely-Guarantee References
33
Rely-Guarantee Referencesによる
Reference Immutabilityの表記
34
• Rely-Guarantee ReferencesはReference Immutabilityを一
般化したものである
まとめ
35
• プログラミング言語の最新の研究成果を生かして、新し
い言語が開発されている
• 「リソースに対する単一の所有権」「借用によるR/Wのア
クセス管理」などのRustの機能に著者の研究成果が生か
されている
• Rustはメモリ安全性がコンパイル時に保証される素晴ら
しい言語だ
参考
• https://homes.cs.washington.edu/~mernst/pubs/rely-
guarantee-ref-pldi2013-abstract.html
• https://www.cs.drexel.edu/~csgordon/pubs/toplas17.html
• http://imoz.jp/note/rust-functions.html
36

More Related Content

What's hot

PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介T. Suwa
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウchancelab
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える増田 亨
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
C# 8.0 null許容参照型
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型信之 岩永
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)TetsuroMatsumura
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
RootlessコンテナAkihiro Suda
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup samplemganeko
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)lestrrat
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
研究の基本ツール
研究の基本ツール研究の基本ツール
研究の基本ツール由来 藤原
 

What's hot (20)

PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
C# 8.0 null許容参照型
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
今さら聞けない人のためのCI/CD超入門
今さら聞けない人のためのCI/CD超入門今さら聞けない人のためのCI/CD超入門
今さら聞けない人のためのCI/CD超入門
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
研究の基本ツール
研究の基本ツール研究の基本ツール
研究の基本ツール
 

Similar to Rustを支える技術

IVS CTO Night & Day 2016 Tech Talk - AI
IVS CTO Night & Day 2016 Tech Talk - AIIVS CTO Night & Day 2016 Tech Talk - AI
IVS CTO Night & Day 2016 Tech Talk - AIToshiaki Enami
 
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜National Institute of Informatics (NII)
 
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)Ikki Ohmukai
 
自然言語処理による議論マイニング
自然言語処理による議論マイニング自然言語処理による議論マイニング
自然言語処理による議論マイニングNaoaki Okazaki
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!Kazumi IWANAGA
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Ruo Ando
 
RecSys2023論文読み会_LLMRec_佐藤.pdf
RecSys2023論文読み会_LLMRec_佐藤.pdfRecSys2023論文読み会_LLMRec_佐藤.pdf
RecSys2023論文読み会_LLMRec_佐藤.pdfMasahiro Sato
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る健一 辰濱
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料Hironori Miura
 
AWS Well-Architected Tool 活用術セミナー セキュリティ編
AWS Well-Architected Tool 活用術セミナー セキュリティ編AWS Well-Architected Tool 活用術セミナー セキュリティ編
AWS Well-Architected Tool 活用術セミナー セキュリティ編Nobuhiro Nakayama
 
情報爆発シンポジウム infoplosion
情報爆発シンポジウム infoplosion情報爆発シンポジウム infoplosion
情報爆発シンポジウム infoplosionRakuten Group, Inc.
 
ICDE2012勉強会:Social Media
ICDE2012勉強会:Social MediaICDE2012勉強会:Social Media
ICDE2012勉強会:Social MediaYuto Yamaguchi
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Wataru Fukatsu
 
Datrium DVX update 20180605
Datrium DVX update 20180605Datrium DVX update 20180605
Datrium DVX update 20180605datriumjapan
 

Similar to Rustを支える技術 (20)

Kspin20121201 kobayashi
Kspin20121201 kobayashiKspin20121201 kobayashi
Kspin20121201 kobayashi
 
スキーマとURI
スキーマとURIスキーマとURI
スキーマとURI
 
IVS CTO Night & Day 2016 Tech Talk - AI
IVS CTO Night & Day 2016 Tech Talk - AIIVS CTO Night & Day 2016 Tech Talk - AI
IVS CTO Night & Day 2016 Tech Talk - AI
 
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜
共通語彙の構築の基本的な考え方と方法 〜研究データのために語彙・スキーマを作るには〜
 
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
 
自然言語処理による議論マイニング
自然言語処理による議論マイニング自然言語処理による議論マイニング
自然言語処理による議論マイニング
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01
 
RecSys2023論文読み会_LLMRec_佐藤.pdf
RecSys2023論文読み会_LLMRec_佐藤.pdfRecSys2023論文読み会_LLMRec_佐藤.pdf
RecSys2023論文読み会_LLMRec_佐藤.pdf
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
AWS Well-Architected Tool 活用術セミナー セキュリティ編
AWS Well-Architected Tool 活用術セミナー セキュリティ編AWS Well-Architected Tool 活用術セミナー セキュリティ編
AWS Well-Architected Tool 活用術セミナー セキュリティ編
 
Datomic&datalog紹介
Datomic&datalog紹介Datomic&datalog紹介
Datomic&datalog紹介
 
OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法
 
情報爆発シンポジウム infoplosion
情報爆発シンポジウム infoplosion情報爆発シンポジウム infoplosion
情報爆発シンポジウム infoplosion
 
ICDE2012勉強会:Social Media
ICDE2012勉強会:Social MediaICDE2012勉強会:Social Media
ICDE2012勉強会:Social Media
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
 
Datrium DVX update 20180605
Datrium DVX update 20180605Datrium DVX update 20180605
Datrium DVX update 20180605
 
Dvx update 20180605
Dvx update 20180605Dvx update 20180605
Dvx update 20180605
 

More from Keisuke Umezawa

C2CマーケットプレイスでのMLの応用
C2CマーケットプレイスでのMLの応用C2CマーケットプレイスでのMLの応用
C2CマーケットプレイスでのMLの応用Keisuke Umezawa
 
Chainerを使ってプロダクション環境上で推論するには
Chainerを使ってプロダクション環境上で推論するにはChainerを使ってプロダクション環境上で推論するには
Chainerを使ってプロダクション環境上で推論するにはKeisuke Umezawa
 
20190216 chainer handson_cource02
20190216 chainer handson_cource0220190216 chainer handson_cource02
20190216 chainer handson_cource02Keisuke Umezawa
 
20190125 Minecraftで深層強化学習 ハンズオン
20190125 Minecraftで深層強化学習 ハンズオン20190125 Minecraftで深層強化学習 ハンズオン
20190125 Minecraftで深層強化学習 ハンズオンKeisuke Umezawa
 
20181215 Chainer User Group 「chug」のご紹介
20181215 Chainer User Group 「chug」のご紹介20181215 Chainer User Group 「chug」のご紹介
20181215 Chainer User Group 「chug」のご紹介Keisuke Umezawa
 
20181214 Minecraftで深層強化学習 ハンズオン
20181214 Minecraftで深層強化学習 ハンズオン 20181214 Minecraftで深層強化学習 ハンズオン
20181214 Minecraftで深層強化学習 ハンズオン Keisuke Umezawa
 
20181201 chainer handson_cource01
20181201 chainer handson_cource0120181201 chainer handson_cource01
20181201 chainer handson_cource01Keisuke Umezawa
 
20180728 chainer on_colaboratory
20180728 chainer on_colaboratory20180728 chainer on_colaboratory
20180728 chainer on_colaboratoryKeisuke Umezawa
 
20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献Keisuke Umezawa
 
大企業 vs ベンチャー
大企業 vs ベンチャー大企業 vs ベンチャー
大企業 vs ベンチャーKeisuke Umezawa
 
20180628 chainer on_colaboratory
20180628 chainer on_colaboratory20180628 chainer on_colaboratory
20180628 chainer on_colaboratoryKeisuke Umezawa
 
Chainer User Group 「chug」
Chainer User Group 「chug」 Chainer User Group 「chug」
Chainer User Group 「chug」 Keisuke Umezawa
 
Start to Contribute to Chainer!
Start to Contribute to Chainer!Start to Contribute to Chainer!
Start to Contribute to Chainer!Keisuke Umezawa
 
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flowプログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flowKeisuke Umezawa
 
Neural Models for Information Retrieval
Neural Models for Information RetrievalNeural Models for Information Retrieval
Neural Models for Information RetrievalKeisuke Umezawa
 
2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainer2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainerKeisuke Umezawa
 

More from Keisuke Umezawa (16)

C2CマーケットプレイスでのMLの応用
C2CマーケットプレイスでのMLの応用C2CマーケットプレイスでのMLの応用
C2CマーケットプレイスでのMLの応用
 
Chainerを使ってプロダクション環境上で推論するには
Chainerを使ってプロダクション環境上で推論するにはChainerを使ってプロダクション環境上で推論するには
Chainerを使ってプロダクション環境上で推論するには
 
20190216 chainer handson_cource02
20190216 chainer handson_cource0220190216 chainer handson_cource02
20190216 chainer handson_cource02
 
20190125 Minecraftで深層強化学習 ハンズオン
20190125 Minecraftで深層強化学習 ハンズオン20190125 Minecraftで深層強化学習 ハンズオン
20190125 Minecraftで深層強化学習 ハンズオン
 
20181215 Chainer User Group 「chug」のご紹介
20181215 Chainer User Group 「chug」のご紹介20181215 Chainer User Group 「chug」のご紹介
20181215 Chainer User Group 「chug」のご紹介
 
20181214 Minecraftで深層強化学習 ハンズオン
20181214 Minecraftで深層強化学習 ハンズオン 20181214 Minecraftで深層強化学習 ハンズオン
20181214 Minecraftで深層強化学習 ハンズオン
 
20181201 chainer handson_cource01
20181201 chainer handson_cource0120181201 chainer handson_cource01
20181201 chainer handson_cource01
 
20180728 chainer on_colaboratory
20180728 chainer on_colaboratory20180728 chainer on_colaboratory
20180728 chainer on_colaboratory
 
20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献
 
大企業 vs ベンチャー
大企業 vs ベンチャー大企業 vs ベンチャー
大企業 vs ベンチャー
 
20180628 chainer on_colaboratory
20180628 chainer on_colaboratory20180628 chainer on_colaboratory
20180628 chainer on_colaboratory
 
Chainer User Group 「chug」
Chainer User Group 「chug」 Chainer User Group 「chug」
Chainer User Group 「chug」
 
Start to Contribute to Chainer!
Start to Contribute to Chainer!Start to Contribute to Chainer!
Start to Contribute to Chainer!
 
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flowプログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
 
Neural Models for Information Retrieval
Neural Models for Information RetrievalNeural Models for Information Retrieval
Neural Models for Information Retrieval
 
2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainer2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainer
 

Rustを支える技術