Slide 1

Slide 1 text

Red Data Tools で切り開く Ruby の未来 Kenta Murata 2023.02.25 Ruby 30周年記念イベント LT

Slide 2

Slide 2 text

Ruby 30 周年おめでとうございます

Slide 3

Slide 3 text

self.introduction Kenta Murata 株式会社サイカ CRO Apache Arrow と CRuby のコミッター Red Data Tools メンバー

Slide 4

Slide 4 text

self.introduction Kenta Murata 株式会社サイカ CRO Apache Arrow と CRuby のコミッター Red Data Tools メンバー ← 今日はこの立場

Slide 5

Slide 5 text

Contents 1. Red Data Tools 2. Ruby 用データフレームライブラリ 3. まとめ

Slide 6

Slide 6 text

Red Data Tools https://red-data-tools.github.io/ja/

Slide 7

Slide 7 text

Red Data Tools とは Ruby用のデータ処理ツールを開発するプロジェクト いま Ruby 界隈で一番ホットな、データ処理ツールの開発者集団 とてもよいポリシーを掲げている

Slide 8

Slide 8 text

Red Data Tools プロジェクトのポリシー 1. Rubyコミュニティーを超えて協力する 2. 非難することよりも手を動かすことが大事 3. 一回だけの活発な活動よりも小さくてもいいので継続的に活動することが大事 4. 現時点での知識不足は問題ではない 5. 部外者からの非難は気にしない 6. 楽しくやろう!

Slide 9

Slide 9 text

詳しくは

Slide 10

Slide 10 text

Red Data Tools の主なプロダクト Red Arrow ファミリー Apache Arrow の Ruby バインディング (apache/arrow 内にある) Red Datasets オープンデータにアクセスするための統一インターフェイス Charty 複数のバックエンドをサポートする統計的可視化ライブラリ unicode_plot ターミナルでデータ可視化を行うライブラリ YouPlot ターミナルでデータ可視化を行う CLI ツール (unicode_plot を使用)

Slide 11

Slide 11 text

詳しくは

Slide 12

Slide 12 text

Ruby 用のデータフレームライブラリについて

Slide 13

Slide 13 text

データフレーム? データフレームは表の形のデータ構造 トランザクション処理ではなく分析処理を主な用途とする 表を行指向ではなく列指向で管理

Slide 14

Slide 14 text

行指向?列指向?

Slide 15

Slide 15 text

行指向?列指向?

Slide 16

Slide 16 text

データフレーム? データフレームは表の形のデータ構造 トランザクション処理ではなく分析処理を主な用途とする 表を行単位ではなく列単位で管理 選択、結合、集約などの操作、要素単位の演算 複数のデータフレームを扱う操作と演算

Slide 17

Slide 17 text

Ruby 用データフレームライブラリ Red Amber Polas Ruby pandas Daru

Slide 18

Slide 18 text

Red Amber https://github.com/heronshoes/red_amber Red Arrow をバックエンドとしてデータフレームを実装 メモリ上のデータ構造は Arrow 形式 Apache Arrow C++ の機能を利用できる Ruby にとって自然なインターフェイスを目指している heronshoes さんがモリモリと開発している これも Red Data Tools プロダクトのひとつ

Slide 19

Slide 19 text

Polars Ruby https://github.com/ankane/polars-ruby Polars という Rust 用データフレームライブラリのバインディング Polars は Rust 版 Apache Arrow を使っててめっちゃ速い (blazingly fast)

Slide 20

Slide 20 text

Polars の速さ 凄く速いので pandas から polars に乗り換える Kaggler が続出している

Slide 21

Slide 21 text

Polars Ruby https://github.com/ankane/polars-ruby Polars という Rust 用データフレームライブラリのバインディング Polars は Rust 版 Apache Arrow 使っててめっちゃ速い (blazingly fast) Red Amber と同様にメモリ上のデータ構造は Arrow 形式 Polars の Python 版 API に従って実装されている ankane さんがモリモリと開発している

Slide 22

Slide 22 text

pandas https://github.com/mrkn/pandas.rb Python 用データフレームである pandas を Ruby から使える pycall を用いて CPython を直接呼び出す形で実装している pycall のおかげで df.applymap(->(x){ x * 5 }) のような事も可能 pandas の全機能について網羅テストをしてないため、未対応の機能があるかも pycall の制限を引き継ぐので、メインスレッド以外では使えないなどの制限がある

Slide 23

Slide 23 text

daru https://github.com/SciRuby/daru おそらく最古の Ruby 用データフレームライブラリ Pure Ruby で実装されている!! 遅いけど、Ruby さえあれば動く利点もある 残念ながら最近はまったくメンテされていない

Slide 24

Slide 24 text

25周年のとき (5年前) にあったもの pandas Daru 30周年目で増えたもの Red Amber Polars Ruby

Slide 25

Slide 25 text

5年で2つも増えた!! Red Amber は Rubyist が使いやすいデータフレームのインターフェイスを目指している Polars Ruby は最速データフレームの Ruby バインディング どちらも Apache Arrow という共通基盤の上に乗っている どちらも活発に開発が進んでいる

Slide 26

Slide 26 text

この波に乗るしかない!! Rubyist にとって使いやすいデータフレームを作れるのは Red Amber の良いところ Red Data Tools に参加して一緒に Red Amber を盛り上げませんか? 最速を求めて Polars Ruby を弄るのも良いと思う (Charty 対応とか!) Daru をメンテする人も増えてほしい

Slide 27

Slide 27 text

まとめ: Red Data Tools に参加しよう