開発部 R&D グループで研究開発をしている CRuby コミッターの村田 (mrkn) です。
2/23 に渋谷で開催された Ruby Business Users Conference 2017 *1 でキーノートスピーカーとして講演をさせていただきました。 内容は、Ruby で統計分析や機械学習ができない現状についての解説と、その状況を打破するために私が現在開発を進めている pycall.gem のデモンストレーションでした。
カンファレンス当日に使用した資料は私個人の Speaker Deck で公開していますので、そちらをご覧ください。
カンファレンスの発表後、当日カンファレンスで一緒だった YassLab の安川さんがデモ部分の動画を facebook で公開し、twitter で拡散してくださいました。
.@mrkn さんの PyCall を使ったデモがスゴい!😆 #RBUC@mrkn demonstrates calling Python libraries from Ruby by using PyCall 😆
— Yohei Yasukawa (@yasulab) February 23, 2017
Demo: https://t.co/h6KVCqSbnh pic.twitter.com/hy0mIodepl
安川さんのおかげで pycall の認知が大きく広がりました。ありがとうございます。
さらに、MoneyForward の金子さんが pycall のコードを読んでくださり、会社の技術ブログで pycall の実験レポートを書いてくださったり、プルリクエストを2つ送ってくれたり *2 *3 しました。これは pycall への初プルリクエストで、非常に嬉しい瞬間でした。
現在もフルタイムで pycall を含めた言語ブリッジの開発を進めています。計画通りに事が運べば、今年中には Python と R のツール群を Ruby から利用できる世界が実現できる予定です。 また、5月に Speee のラウンジで、Ruby でデータサイエンスをするための環境整備に興味がある方を対象としたハンズオンの開催を計画しています。 詳細は後日このブログで発表しますので、興味がある方はこのブログを購読してください。
現時点の pycall で何ができるのか気になっている方は、下記の jupyter notebook ファイルをご覧ください。
- IRuby と matplotlib の連携について
- Ruby 2.4 で導入された Array#sum の速さを seaborn で可視化する例
- 極座標グラフの例
- Lorentz アトラクタの3次元プロット
- ScikitLearn の ExtraTreeClassifier を使った feature importance の可視化例
- ScikitLearn で複数の分類器を比較する例
簡単に試してもらえるよう Docker イメージを Docker Hub に登録してあります。下記のコマンドを実行すると、コンテナ内の /notebooks/local
がホスト側のホームディレクトリに attach された状態で IRuby notebook が起動します。
docker run -p 8888:8888 -it --rm --name iruby -v ~:/notebooks/local rubydata/pycall
ターミナルに
Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://0.0.0.0:8888/?token=2f8dda92daa9c28326baf5024d5b8883ca36dcb0e470f885
このようなメッセージが表示されるはずですので、トークンの部分をコピペして http://localhost:8888/?token=2f8dda92daa9c28326baf5024d5b8883ca36dcb0e470f885
のような URL *4 を作りブラウザで開いてもらえれば、以下のような jupyter notebook のページが開くはずです。
このページはコンテナ内の /notebooks
ディレクトリの中を表示しています。/examples/matplotlib
の下に、上記でリストアップした notebook ファイルが入っています。/local
は docker run コマンドの -v
オプションで attach したものですので、上記のコマンドラインをそのまま使っている場合はホスト側のホームディレクトリに対応しています。
色々遊んでいただき、見つけたバグは github issue で報告していただけると嬉しいです。
*1:この URL は記事執筆時点では2017年のカンファレンスのページになっているが、おそらく毎年その年のイベントのページに書き換わるので、2017年の開催報告が Ruby Association 様から公開された時点で差し替える予定です。
*2:https://github.com/mrkn/pycall/pull/1
*3:https://github.com/mrkn/pycall/pull/2
*4:Mac で localhost では Docker コンテナ内にアクセスできない場合は恐らく Docker Toolbox を使っていると思うので、docker-machine ip コマンドで docker-machine の IP アドレスを調べて localhost を置き換えてください。