Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby のデータサイエンス事情
Search
Kenta Murata
December 10, 2017
Technology
2
600
Ruby のデータサイエンス事情
Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」
Kenta Murata
December 10, 2017
Tweet
Share
More Decks by Kenta Murata
See All by Kenta Murata
waitany と waitall を作った話
mrkn
0
270
HolidayJp.jl を作りました
mrkn
0
300
Calling Julia functions from Streamlit applications
mrkn
1
520
Red Data Tools で切り開く Ruby の未来
mrkn
3
1.2k
Method-based JIT compilation by transpiling to Julia
mrkn
0
8k
Apache Arrow C++ Datasets
mrkn
4
1.7k
Reducing ActiveRecord memory consumption using Apache Arrow
mrkn
0
1.8k
RubyData and Rails
mrkn
0
3.3k
Tensor and Arrow
mrkn
0
1k
Other Decks in Technology
See All in Technology
CDKの魔法を少し解いてみる ― synth・build・diffで覗くIaCの裏側 ―
takahumi27
1
120
3年ぶりの re:Invent 今年の意気込みと前回の振り返り
kazzpapa3
0
200
Post-AIコーディング時代のエンジニア生存戦略
shinoyu
0
250
Flutter DevToolsで発見! 本番アプリのパフォーマンス問題と改善の実践
goto_tsl
1
340
Introducing RFC9111 / YAPC::Fukuoka 2025
k1low
1
210
クレジットカードの不正を防止する技術
yutadayo
13
6.4k
【Android】テキスト選択色の問題修正で心がけたこと
tonionagauzzi
0
130
メタプログラミングRuby問題集の活用
willnet
2
770
エンジニアに定年なし! AI時代にキャリアをReboot — 学び続けて未来を創る
junjikoide
0
180
QAセントラル組織が運営する自動テストプラットフォームの課題と現状
lycorptech_jp
PRO
0
350
仕様駆動 x Codex で 超効率開発
ismk
2
1.3k
コミュニティと共に変化する 私とFusicの8年間
ayasamind
0
450
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
GraphQLとの向き合い方2022年版
quramy
49
14k
4 Signs Your Business is Dying
shpigford
186
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
RailsConf 2023
tenderlove
30
1.3k
For a Future-Friendly Web
brad_frost
180
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Code Review Best Practice
trishagee
72
19k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
Ruby のデータサイエンス事情 Kenta Murata, Speee Inc. 開発部 R&D グループ Sun,
Dec 10, 2017 Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」 1 / 43
self . introduction Kenta Murata (@mrkn) Full-time CRuby committer at
Speee Inc. CRuby The maintainer of bigdecimal Other OSS pycall.rb, mxnet.rb, enumerable-statistics, vim-cruby Hobby Playing with my daughter Studying Mathematics, Physics, Computer Science Reading SF novels 2 / 43
Contents はじめに データサイエンス Ruby のデータサイエンスへの対応状況 アプリケーションの構築パターン 将来の展望 まとめ 付録 3
/ 43
はじめに Introduction 4 / 43
現在、Ruby のデータサイエンス対応は過渡期です。 本日は、Ruby で書かれたアプリケーションでデータ活用技術 を利用するためのパターンを説明します。 また、データサイエンス分野において Ruby コミュニティー内 にどんなプロジェクトが存在し、それぞれどのような特徴があ るかを紹介します。
みなさんは、ぜひどこかのプロジェクトに参加していただき、 Ruby のデータサイエンス対応を加速する当事者になっていた だきたいです。 5 / 43
データサイエンス Data science 6 / 43
データサイエンス お仕事 における問題を解決するために 数学 と 統計学 を使うこと 7 / 43
データサイエンスのサイクル 何らかの取り組み ( 実験や事業など) からデータを収集する 蓄積されたデータから がんばって 知識を取り出す データから取り出した知識に基づいて、取り組みの内容を微調整する 取り組みが成功するまで上記を繰り返す
8 / 43
データサイエンスのための要素技術 数値配列、科学計算基盤 並列計算基盤、分散処理基盤、並列分散DB データフレーム、データ入出力、データ可視化 統計的モデリング、機械学習 9 / 43
データサイエンスにおけるプログラミ ング言語の役割 データ解析アルゴリズムの記述 データ解析作業時のプログラミング アプリケーションの記述 10 / 43
Ruby はアプリケーションの記述が得意 11 / 43
Python は データ解析作業時のプログラミングと アプリケーション記述の両方が得意 12 / 43
Ruby も Python のように データ解析作業時のプログラミング も得意になると嬉しい 13 / 43
Ruby のデータサイエンスへの 対応状況 14 / 43
3 つの主要プロジェクト SciRuby Ruby Numo Red Data Tools 他言語とのブリッジ pycall
15 / 43
SciRuby NMatrix を中心とする科学技術計算用 gem 群 海外で最も有名な Ruby の科学技術計算ライブラリ群 発起人たちは最近は全く開発しておらず、GSOC のプロジェクトで学生が
色々作っているものの寄せ集め状態になっている 一部の基本演算が遅いバグがある 16 / 43
Ruby Numo Numo::NArray を中心とする科学技術計算用 gem 群 元祖 NArray の作者である田中昌宏さんが発起人であり開発の中心にいる RubyKaigi
でも発表されていて、日本ではそこそこ知られていると思う 海外ではあまり知られていない (?) 17 / 43
SciRuby と Ruby Numo でできること データフレームライブラリ Daru が NMatrix に対応している
[HELP] 誰か Numo::NArray にも対応させてください 科学技術計算用の基礎関数群 GSL のバインディングが SciRuby と Ruby Numo のそれぞれに対して 存在する 可視化 Gnuplot を使うライブラリが SciRuby と Ruby Numo のそれぞれに対 して存在する rbplotly が両方に対応している ( はず) 18 / 43
Red Data Tools project Apache Arrow を中心としたデータツールエコシステムの Ruby 版 須藤さんが立ち上げた
須藤さんは Apache Arrow の PMC にもなった Red Chainer など、Apache Arrow とは直接関係ない派生プロダクトの開 発も始まっている おそらく関係者は全員が日本人である 毎月「OSS Gate 東京ミートアップ for Red Data Tools 」で開発が進められ ている 12/19 のミートアップの案内を後でします 19 / 43
主要プロジェクト間の関係 20 / 43
他言語とのブリッジ Ruby から他の言語のライブラリを呼び出す仕組み 現在 pycall が Python とのブリッジを提供している 今後は R,
Julia, Stan など対応言語を増やしていく計画がある 21 / 43
pycall Ruby から Python のライブラリを呼び出せる Ruby と同じプロセス内で Python インタープリタを初期化し呼び出す 一緒に開発してくれる、Ruby
と Python の両方に詳しい人も募集してます 22 / 43
RubyData Workshop in RubyKaigi 2017 RubyKaigi 2017 (2017 年9 月)
で開催したワークショップ pycall の仕組みと使い方のデモンストレーションを実施した Red Data Tools のデモンストレーションも実施した 当時使用した Jupyter notebook が github のリポジトリにある https://github.com/RubyData/rubykaigi2017 23 / 43
Docker image to try data tools for Ruby Ruby でデータを扱う最新の環境を簡単に試せる
Docker イメージを作ってあ る。 $ docker run -it --rm -p 8888:8888 -v $(pwd):/home/jovyan/work rubydata/notebooks 24 / 43
アプリケーション 構築パターン 25 / 43
Ruby とPython/R を同時に使う必要がある データサイエンティストの能力を最大限に発揮させるには Python や R が 現在の最良の選択肢である データサイエンティストは探索的データ解析のために、pandas
や scik- it-learn などの枯れた標準ツールの能力が必要になる ほぼすべてのデータサイエンティストは仕事で Ruby を使いたがらない ( ∵ 使い慣れてないから) 一方で、Ruby と Ruby on Rails はウェブアプリケーションを作る場合に最 良な選択肢である 26 / 43
3 種類の実装パターンがある Python で書かれたデータ処理系と Ruby で書かれたアプリケーションを統合 する3 つの実装パターン: 1. 同じデータベースを両方から直接参照する
2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し) する 3. pycall を利用してデータ処理系を直接呼び出す 27 / 43
1. 同じ DB を両方から参照する 28 / 43
2. JSON 直列化による RPC 29 / 43
3. pycall による直接的な呼び出し 30 / 43
状況に応じて適切なパターンを選択 1. 同じデータベースを両方から直接参照する 2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し)
する 3. pycall を利用してデータ処理系を直接呼び出す 組織の構造・規模、アプリケーションの立ち位置などの状況に 応じて適切な選択肢は変化する。 31 / 43
将来の展望 32 / 43
将来について3 点 Apache Arrow と Red Data Tools GPGPU Deep
Learning 33 / 43
Apache Arrow と Red Data Tools Apache Arrow は将来、ほとんどのデータツールのコアに採用される Pandas
2.0 のコアになることが決定済み (Apache Arrow の存在理由) PySpark が Spark (Scala) と Python 間のデータ交換に Apache Arrow を採用済み Red Data Tools は Ruby のデータ・エコシステムの将来にとって最重要で ある Apache Arrow に興味があるなら、Red Data Tools に参画すべし!! https://red-data-tools.github.io/ 34 / 43
GPGPU ArrayFire (@prasunanand 作) が既に GPGPU (CUDA と OpenCL) に対応
している @prasunanand さんが Ruby アソシエーションの今年の開発助成で RbCU- DA を開発中 CUDA のランタイムライブラリの Ruby バインディングを開発するプロ ジェクト @sonots さんが、同じ開発助成の別プロジェクトとして Cumo を開発中 Chainer が利用している CuPy を Numo NArray 向けに移植するプロジ ェクト 35 / 43
Deep Learning Tensorflow.rb (@Arafatk 作) が既にあって、Tensorflow を Ruby から直 接使える!
しかし Tensorflow の API は低レイヤーすぎて面倒なので Keras のよう な高レイヤー API も欲しい Red Data Tools 内で、@hatappi さん他が Red Chainer を開発中 Chainer の移植プロジェクト MXNet の Ruby バインディングを私が開発中 3 月の沖縄 Ruby 会議 02 で披露したい 36 / 43
まとめ 37 / 43
Conclusion Ruby でデータを扱う際に鍵となる 3 大プロジェクトを紹介した Ruby と他言語のブリッジとして pycall を紹介した Ruby
でデータサイエンスをするための最新環境を試せる Docker イメージ を紹介した Ruby で書かれたアプリケーションと Python で書かれたデータ処理系を統 合する3 つのパターンを紹介した Ruby のデータサイエンスにおける将来の展望について述べた 38 / 43
Docker image to try data tools for Ruby Ruby でデータを扱う最新の環境を簡単に試せる
Docker イメージを作ってあ る。 $ docker run -it --rm -p 8888:8888 -v $(pwd):/home/jovyan/work rubydata/notebooks 39 / 43
みなさんが今すぐできること 1. 使ってみてバグ報告 2. 利用者が増えるようなブログ記事を書く ( やってみた系) 3. 既存のライブラリにプルリクを送って自ら開発に参加する 4.
開発者が増えるようなブログ記事を書く ( 開発環境を作る、コードを読んで みた系) 5. 日本国内に閉じてるプロダクトを海外向けに英語で紹介する 6. OSS Gate for Red Data Tools に参加して他の開発者と交流する 7. RubyData の運営チームに入って得意なことをやる 40 / 43
RubyData organization SciRuby 、Ruby Numo 、Red Data Tools 、など複数のプロジェクトに人が 分散している現状は、純粋な利用者が戸惑いやすい
プロジェクトに関係なく、Ruby とデータツールを組み合わせて使おうとし ている人が集まって情報交換ができる場が必要だろう というわけで、私が作り始めました http://ruby-data.org/ まだランディングページしかない!! 41 / 43
RubyData needs helps!! 以下のような人を募集してます コミュニティ運営 ( 人の集まりを制御すること) が得意な人 ( 私
mrkn が 一番不得意なこと) AWS に詳しい人 (discourse の立ち上げと運営を手伝って欲しい) 自然言語での継続的な情報発信が得意な人 ( 「Ruby でデータサイエン ス」的な情報発信をスケールさせたい) 英語が得意な人 ( 僕たちの変な英語を直して欲しい) docker-stacks の維持と発展を積極的にやってくれる人 42 / 43
OSS Gate for Red Data Tools in Speee 2017.12.19 Red
Data Tools プロジェクトの開発者が集まります。 場所: 六本木4-1-4 黒崎ビル 5F Speee Inc. セミナールーム 時間: 2017 年12 月19 日 19:00 開場 19:30 開始 https://speee.connpass.com/event/72926/ 43 / 43