scirubyとか, 最近のruby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ...

61
SciRubyとか, 最近のRuby界隈の話 西田 直樹 (@domitry)

Upload: others

Post on 25-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

SciRubyとか, 最近のRuby界隈の話

西田 直樹 (@domitry)

Page 2: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

自己紹介Part1● 大阪大学 基礎工… (略)… 生物工学コース 3年● 来年卒論書きます

Page 3: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

寝不足の方へ● 資料: http://naoki.pw/ruby● SciRuby Install battle

> sudo apt-get install ruby2> gem install nyaplot> gem install iruby

Page 4: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

1/3 IRubyとJupyterのお話

Page 5: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

IRuby? Jupyter?● IRuby: 対話的Ruby実行環境, ブラウザ上● Jupyter: これの上にIRubyが乗っかってる

Page 6: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (nbviewerのURL)

Page 7: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

何が便利?● R studioやMathematica, MATLABなど色々

あった● Webとつなげたのが新しい● 共有が楽, interactive

Page 8: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

使われてるの?● アメリカだと大学の授業で普通に使われてる

– https://web.stanford.edu/~boyd/papers/cvx_short_course.html

● 日本だとCookpadとか

Page 9: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Jupyterの歴史● 2012年IPythonとしてスタート● 2014年分裂(IPython teamとJupyter team)● 1ヶ月後ぐらいにJupyterがIPythonを吸収(?)● 検索ワードは`hoge AND IRuby OR Jupyter

OR IPython ?

Page 10: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Jupyterのしくみ

http://ipython.org/ipython-doc/3/

Page 11: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Jupyter kernel色々● IPython● IJulia● IHaskell● IRuby● ICommonLisp● Ibrainf*ck … etc.

Page 12: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

kernelの作りやすさ● Ibrainf*ck

– https://github.com/robbielynch/ibrainfuck

● Making kernels for Jupyter– https://github.com/ipython/ipython/wiki/I

Python-kernels-for-other-languages

Page 13: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

拡張の作りやすさ● completion(補完)機能をhookしたりできる。

Page 14: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

IRubyの話● http://github.com/SciRuby/iruby● IPython黎明期から存在● 現メンテナ: @minad, @domitry● 割とがっつりメンテ継続中

Page 15: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

IRubyの話● 最近Nyaplot, Daru, GnuplotRBなど対応ライ

ブラリが増える● ImageMagickとかもこの上で動く

Page 16: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (ipynbのURL)

Page 17: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Jupyter/IRubyまとめ● Jupyterは向こうでは割と使われてる● いろんな言語で動く: Ruby, Python,

Brainf*ck…● 何がうれしい?: 可視化や共有が楽

Page 18: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

2/3 Nyaplotとか

Page 19: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplot (にゃぷろっと)● 「にゃ〜」+「プロット」● 名前空間問題● 猫みたいにかわいいグラフが作れる

Page 20: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

猫が好き

Page 21: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplotとは● 汎用可視化ライブラリ● IRuby上で便利● `gem install nyaplot でインストール

Page 22: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplotのできること● 2D, 3D, 地図, circos風プロットまで● 主にSVGとWebGLで稼働● 出力はPNGかSVG

Page 23: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (.ipynbのURL)

Page 24: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplotのできないこと● Webから離れること● Headless browserを試したことあり● 最近Electronでやらない?という話が有る

Page 25: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplotの仕組み● RubyのコードでJSONを生成、JavaScriptに

JSONを渡して描画してもらう● RubyはJSONをいじるだけ、JavaScriptは

JSONを解釈するだけ

Page 26: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Nyaplotjs● 単独で動く● portingがすごく楽

Page 27: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (https://github.com/domitry/Nyaplotjs)

Page 28: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

まとめ● Nyaplot

– 汎用可視化ライブラリ– 3D, bio, mapなど

● JS使えれば自分で拡張が書ける● Nyaplotのbackend自体もportingが楽

Page 29: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

3/3部 SciRubyへの誘い

Page 30: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

SciRuby● 創始者: Johnさん● メンバ: 僕とか含めて20数人● 活動場所: GitHub, Hangouts, IRC

Page 31: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

SciRubyの主な活動● 科学技術系gemのメンテ● GSoCに来る学生のお守り

Page 32: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Google Summer of Code● Googleがお金を出して● OSS organizationが人(mentor)を出し● 学生が時間とコードを出す

Page 33: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Google Summer of Code● SciRubyが権利を持つコードのn%がGSoCの成果物

● 実績があるため学生に割と人気、この時期になるとメールが……

Page 34: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

過去にこんなメールが来た

Page 35: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ
Page 36: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

SciRubyがメンテするソフトウェア● 基盤系から応用まで色々● 皆gemになってる

Page 37: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

1. NMatrix● SciRubyが始まったきっかけ● NArrayを使いやすくしよう!というモチベーショ

ンだったはず

Page 38: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

NMatrix pros● 配列はC-order● 標準で配列的な操作になる(行列的でない)● APIはNumpy風かも

Page 39: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (.ipynbのURL)

Page 40: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

NMatrix cons● 割とすぐゲロっちゃう● `gem install nmatrix では入らない● NMatrix install battleの発生

Page 41: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

2. Daru● 2014年に出来たデータフレームgem● csvとかお手頃サイズのファイルを扱う際便利● Ruby版Pandas

Page 42: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

データフレーム?● 元々Rのdata.frameから来てるらしい● 統計解析に便利なメソッドを揃える● DaruはNyaplot::DataFrameと

Pandas(Python)を元に作られている

Page 43: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==● (.ipynbのURL)

Page 44: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

3. Statsample● @clbustos さんが創始● 統計解析用のライブラリ, pure-Ruby● `gem install statsample でOK

Page 45: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Statsample● ややメンテが滞り気味?● GSoCでは毎年何かネタを出してるので若返りに

期待● Daruと互換性があるので今後活発になるかも

Page 46: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

4.SymRuby● 記号計算用ライブラリ● SymPyやMathematicaみたいなやつ。● SymPy(pure-python実装)からC++のバックエ

ンドを切りだそう、ならRubyでラップも楽だよねという発想

Page 47: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

==DEMO==

Page 48: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

SymRuby● 使い心地は@gogotanakaさんのdxdyの方がよ

かったかも…● ただsymengine自体に将来性があるので将来別

の人がcommitしてくれることを期待

Page 49: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

その他もろもろ● FFTするやつ● Optimization tools● ODE solver

Page 50: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

*宣伝*● 今年も(多分)Google Summer of Codeやりま

Page 51: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Calls for students● Ph.DでもMasterでも学生と名のつく身分なら

何でもOK● 数カ月間の労働で5000$

Page 52: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Calls for students● テーマは色々、こっちから提案してもOK

Page 53: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

Calls for mentors● 今年は9 slotsとのこと。人たりなさそう。● お金は… 出ません● 学生と一緒に作った成果物で論文書いてる人はい

Page 54: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

まとめ?● IRuby/Jupyter

– 講義などで共有するとき便利!

● Nyaplot– 手元で可視化したいときに便利!

● SciRuby– 色々便利!

Page 55: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

リンクの紹介(SciRuby)● SciRuby blog:

– http://sciruby.com/blog

● SciRuby ML:– https://groups.google.com/forum/m/#!forum

/sciruby-dev● SciRuby GitHub:

– http://github.com/SciRuby

Page 56: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

リンクの紹介(SciRuby)● Sammer(Daruの開発者)のブログ

– http://v0dro.github.io/

● 僕のブログ等:– http://domitry.com

Page 57: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

リンクの紹介(Nyaplot)● GitHub

– http://github.com/domitry/nyaplot

● Blog post– http://sciruby.com/blog/2014/08/23/nyaplo

t-interactive-plots-generateor-with-ruby/– http://domitry.hatenablog.jp/entry/2014/

08/23/215630

Page 58: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

リンクの紹介(Jupyter)● Jupyter project

– http://jupyter.org

● Jupyter project ML– https://groups.google.com/forum/#!forum/j

upyter● E-Cell4

– https://github.com/ecell

Page 59: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

リンクの紹介(Jupyter)● IJulia

– https://github.com/JuliaLang/IJulia.jl

● IHaskell– https://github.com/gibiansky/IHaskell

● IBrainf*ck– https://github.com/robbielynch/ibrainfuck

Page 60: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

copyright● 木星の画像:CC-BY2.0 by NASA

– https://www.flickr.com/photos/gsfc/13247890444

● ねこの画像:CC-BY2.0 by Moyan Brenn– https://www.flickr.com/photos/aigle_dore/6672150457

● Rubyの画像:CC-BY2.0 by Nicolas Raymond– https://www.flickr.com/photos/82955120@N05/1960367180

2

Page 61: SciRubyとか, 最近のRuby界隈の話mosir/pub/2016/2016-02-12/...記号計算用ライブラリ SymPyやMathematicaみたいなやつ。 SymPy(pure-python実装)からC++のバックエ

copyright● その他、@domitryが権利を持つ文章など

– CC-BY2.0