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

Ruby のデータサイエンス事情

Kenta Murata
December 10, 2017

Ruby のデータサイエンス事情

Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」

Kenta Murata

December 10, 2017
Tweet

More Decks by Kenta Murata

Other Decks in Technology

Transcript

  1. Ruby
    のデータサイエンス事情
    Kenta Murata, Speee Inc.
    開発部 R&D
    グループ
    Sun, Dec 10, 2017 Dive into Code
    「Ruby on Rails
    最新動向と教え方のノウハウとキャリア」
    1 / 43

    View Slide

  2. 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

    View Slide

  3. Contents
    はじめに
    データサイエンス
    Ruby
    のデータサイエンスへの対応状況
    アプリケーションの構築パターン
    将来の展望
    まとめ
    付録
    3 / 43

    View Slide

  4. はじめに
    Introduction
    4 / 43

    View Slide

  5. 現在、Ruby
    のデータサイエンス対応は過渡期です。
    本日は、Ruby
    で書かれたアプリケーションでデータ活用技術
    を利用するためのパターンを説明します。
    また、データサイエンス分野において Ruby
    コミュニティー内
    にどんなプロジェクトが存在し、それぞれどのような特徴があ
    るかを紹介します。
    みなさんは、ぜひどこかのプロジェクトに参加していただき、
    Ruby
    のデータサイエンス対応を加速する当事者になっていた
    だきたいです。
    5 / 43

    View Slide

  6. データサイエンス
    Data science
    6 / 43

    View Slide

  7. データサイエンス
    お仕事 における問題を解決するために 数学 と 統計学 を使うこと
    7 / 43

    View Slide

  8. データサイエンスのサイクル
    何らかの取り組み (
    実験や事業など)
    からデータを収集する
    蓄積されたデータから がんばって 知識を取り出す
    データから取り出した知識に基づいて、取り組みの内容を微調整する
    取り組みが成功するまで上記を繰り返す
    8 / 43

    View Slide

  9. データサイエンスのための要素技術
    数値配列、科学計算基盤
    並列計算基盤、分散処理基盤、並列分散DB
    データフレーム、データ入出力、データ可視化
    統計的モデリング、機械学習
    9 / 43

    View Slide

  10. データサイエンスにおけるプログラミ
    ング言語の役割
    データ解析アルゴリズムの記述
    データ解析作業時のプログラミング
    アプリケーションの記述
    10 / 43

    View Slide

  11. Ruby
    はアプリケーションの記述が得意
    11 / 43

    View Slide

  12. Python

    データ解析作業時のプログラミングと
    アプリケーション記述の両方が得意
    12 / 43

    View Slide

  13. Ruby
    も Python
    のように
    データ解析作業時のプログラミング
    も得意になると嬉しい
    13 / 43

    View Slide

  14. Ruby
    のデータサイエンスへの
    対応状況
    14 / 43

    View Slide

  15. 3
    つの主要プロジェクト
    SciRuby
    Ruby Numo
    Red Data Tools
    他言語とのブリッジ
    pycall
    15 / 43

    View Slide

  16. SciRuby
    NMatrix
    を中心とする科学技術計算用 gem

    海外で最も有名な Ruby
    の科学技術計算ライブラリ群
    発起人たちは最近は全く開発しておらず、GSOC
    のプロジェクトで学生が
    色々作っているものの寄せ集め状態になっている
    一部の基本演算が遅いバグがある
    16 / 43

    View Slide

  17. Ruby Numo
    Numo::NArray
    を中心とする科学技術計算用 gem

    元祖 NArray
    の作者である田中昌宏さんが発起人であり開発の中心にいる
    RubyKaigi
    でも発表されていて、日本ではそこそこ知られていると思う
    海外ではあまり知られていない (?)
    17 / 43

    View Slide

  18. SciRuby
    と Ruby Numo
    でできること
    データフレームライブラリ Daru
    が NMatrix
    に対応している
    [HELP]
    誰か Numo::NArray
    にも対応させてください
    科学技術計算用の基礎関数群
    GSL
    のバインディングが SciRuby
    と Ruby Numo
    のそれぞれに対して
    存在する
    可視化
    Gnuplot
    を使うライブラリが SciRuby
    と Ruby Numo
    のそれぞれに対
    して存在する
    rbplotly
    が両方に対応している (
    はず)
    18 / 43

    View Slide

  19. Red Data Tools project
    Apache Arrow
    を中心としたデータツールエコシステムの Ruby

    須藤さんが立ち上げた
    須藤さんは Apache Arrow
    の PMC
    にもなった
    Red Chainer
    など、Apache Arrow
    とは直接関係ない派生プロダクトの開
    発も始まっている
    おそらく関係者は全員が日本人である
    毎月「OSS Gate
    東京ミートアップ for Red Data Tools
    」で開発が進められ
    ている
    12/19
    のミートアップの案内を後でします
    19 / 43

    View Slide

  20. 主要プロジェクト間の関係
    20 / 43

    View Slide

  21. 他言語とのブリッジ
    Ruby
    から他の言語のライブラリを呼び出す仕組み
    現在 pycall
    が Python
    とのブリッジを提供している
    今後は R, Julia, Stan
    など対応言語を増やしていく計画がある
    21 / 43

    View Slide

  22. pycall
    Ruby
    から Python
    のライブラリを呼び出せる
    Ruby
    と同じプロセス内で Python
    インタープリタを初期化し呼び出す
    一緒に開発してくれる、Ruby
    と Python
    の両方に詳しい人も募集してます
    22 / 43

    View Slide

  23. RubyData Workshop in RubyKaigi 2017
    RubyKaigi 2017 (2017
    年9
    月)
    で開催したワークショップ
    pycall
    の仕組みと使い方のデモンストレーションを実施した
    Red Data Tools
    のデモンストレーションも実施した
    当時使用した Jupyter notebook
    が github
    のリポジトリにある
    https://github.com/RubyData/rubykaigi2017
    23 / 43

    View Slide

  24. 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

    View Slide

  25. アプリケーション
    構築パターン
    25 / 43

    View Slide

  26. Ruby
    とPython/R
    を同時に使う必要がある
    データサイエンティストの能力を最大限に発揮させるには Python
    や R

    現在の最良の選択肢である
    データサイエンティストは探索的データ解析のために、pandas
    や scik-
    it-learn
    などの枯れた標準ツールの能力が必要になる
    ほぼすべてのデータサイエンティストは仕事で Ruby
    を使いたがらない
    (
    ∵ 使い慣れてないから)
    一方で、Ruby
    と Ruby on Rails
    はウェブアプリケーションを作る場合に最
    良な選択肢である
    26 / 43

    View Slide

  27. 3
    種類の実装パターンがある
    Python
    で書かれたデータ処理系と Ruby
    で書かれたアプリケーションを統合
    する3
    つの実装パターン:
    1.
    同じデータベースを両方から直接参照する
    2.
    データを JSON
    などで直列化して RPC (
    遠隔手続き呼び出し)
    する
    3. pycall
    を利用してデータ処理系を直接呼び出す
    27 / 43

    View Slide

  28. 1.
    同じ DB
    を両方から参照する
    28 / 43

    View Slide

  29. 2. JSON
    直列化による RPC
    29 / 43

    View Slide

  30. 3. pycall
    による直接的な呼び出し
    30 / 43

    View Slide

  31. 状況に応じて適切なパターンを選択
    1.
    同じデータベースを両方から直接参照する
    2.
    データを JSON
    などで直列化して RPC (
    遠隔手続き呼び出し)
    する
    3. pycall
    を利用してデータ処理系を直接呼び出す
    組織の構造・規模、アプリケーションの立ち位置などの状況に
    応じて適切な選択肢は変化する。
    31 / 43

    View Slide

  32. 将来の展望
    32 / 43

    View Slide

  33. 将来について3

    Apache Arrow
    と Red Data Tools
    GPGPU
    Deep Learning
    33 / 43

    View Slide

  34. 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

    View Slide

  35. GPGPU
    ArrayFire (@prasunanand
    作)
    が既に GPGPU (CUDA
    と OpenCL)
    に対応
    している
    @prasunanand
    さんが Ruby
    アソシエーションの今年の開発助成で RbCU-
    DA
    を開発中
    CUDA
    のランタイムライブラリの Ruby
    バインディングを開発するプロ
    ジェクト
    @sonots
    さんが、同じ開発助成の別プロジェクトとして Cumo
    を開発中
    Chainer
    が利用している CuPy
    を Numo NArray
    向けに移植するプロジ
    ェクト
    35 / 43

    View Slide

  36. 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

    View Slide

  37. まとめ
    37 / 43

    View Slide

  38. Conclusion
    Ruby
    でデータを扱う際に鍵となる 3
    大プロジェクトを紹介した
    Ruby
    と他言語のブリッジとして pycall
    を紹介した
    Ruby
    でデータサイエンスをするための最新環境を試せる Docker
    イメージ
    を紹介した
    Ruby
    で書かれたアプリケーションと Python
    で書かれたデータ処理系を統
    合する3
    つのパターンを紹介した
    Ruby
    のデータサイエンスにおける将来の展望について述べた
    38 / 43

    View Slide

  39. 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

    View Slide

  40. みなさんが今すぐできること
    1.
    使ってみてバグ報告
    2.
    利用者が増えるようなブログ記事を書く (
    やってみた系)
    3.
    既存のライブラリにプルリクを送って自ら開発に参加する
    4.
    開発者が増えるようなブログ記事を書く (
    開発環境を作る、コードを読んで
    みた系)
    5.
    日本国内に閉じてるプロダクトを海外向けに英語で紹介する
    6. OSS Gate for Red Data Tools
    に参加して他の開発者と交流する
    7. RubyData
    の運営チームに入って得意なことをやる
    40 / 43

    View Slide

  41. RubyData organization
    SciRuby
    、Ruby Numo
    、Red Data Tools
    、など複数のプロジェクトに人が
    分散している現状は、純粋な利用者が戸惑いやすい
    プロジェクトに関係なく、Ruby
    とデータツールを組み合わせて使おうとし
    ている人が集まって情報交換ができる場が必要だろう
    というわけで、私が作り始めました
    http://ruby-data.org/
    まだランディングページしかない!!
    41 / 43

    View Slide

  42. RubyData needs helps!!
    以下のような人を募集してます
    コミュニティ運営 (
    人の集まりを制御すること)
    が得意な人 (
    私 mrkn

    一番不得意なこと)
    AWS
    に詳しい人 (discourse
    の立ち上げと運営を手伝って欲しい)
    自然言語での継続的な情報発信が得意な人 (
    「Ruby
    でデータサイエン
    ス」的な情報発信をスケールさせたい)
    英語が得意な人 (
    僕たちの変な英語を直して欲しい)
    docker-stacks
    の維持と発展を積極的にやってくれる人
    42 / 43

    View Slide

  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

    View Slide