Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Red Data Tools で切り開く Ruby の未来

Kenta Murata
February 25, 2023

Red Data Tools で切り開く Ruby の未来

Ruby 30周年記念イベント LT

Kenta Murata

February 25, 2023
Tweet

More Decks by Kenta Murata

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 詳しくは

    View Slide

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

    View Slide

  11. 詳しくは

    View Slide

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

    View Slide

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

    View Slide

  14. 行指向?列指向?

    View Slide

  15. 行指向?列指向?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide