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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kenta Murata
December 10, 2017
Technology
2
620
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
300
HolidayJp.jl を作りました
mrkn
0
330
Calling Julia functions from Streamlit applications
mrkn
1
560
Red Data Tools で切り開く Ruby の未来
mrkn
3
1.3k
Method-based JIT compilation by transpiling to Julia
mrkn
0
8.5k
Apache Arrow C++ Datasets
mrkn
4
1.8k
Reducing ActiveRecord memory consumption using Apache Arrow
mrkn
0
1.9k
RubyData and Rails
mrkn
0
3.4k
Tensor and Arrow
mrkn
0
1.1k
Other Decks in Technology
See All in Technology
AWS Transformを使ってCOBOLプログラムのモダナイズに挑戦
duelist2020jp
1
100
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
0
1.4k
GitHub Copilot CLI 現状確認会議(2026年2月のすがた)
torumakabe
3
450
歴史に敬意を! パラシュートVPoEが組織と共同で立ち上がる信頼醸成オンボーディング
go0517go
PRO
0
120
Agent Payments Protocolで実装するAIエージェント間取引
tokio007
0
120
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
5
820
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
74k
新規事業開発でのAWS活用
amixedcolor
1
180
ECSネイティブのBlue/Green デプロイを攻略しよう ~CodeDeployとの違いから、デプロイフロー実装まで~
ideaws
3
290
生成AI素人でも玄人でもない私がセイセイAIチョットワカルために勉強したこと
wkm2
2
300
#23 Turing × atmaCup 2nd 6th Place Solution + 取り組み方紹介
yumizu
0
150
チーム開発の基礎_研究を事業につなげるために
cyberagentdevelopers
PRO
8
3.9k
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
200
Designing for Timeless Needs
cassininazir
0
140
Statistics for Hackers
jakevdp
799
230k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
The Curse of the Amulet
leimatthew05
1
9k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
120
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Writing Fast Ruby
sferik
630
62k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Bash Introduction
62gerente
615
210k
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