Speee DEVELOPER BLOG

Speee開発陣による技術情報発信ブログです。 メディア開発・運用、スマートフォンアプリ開発、Webマーケティング、アドテクなどで培った技術ノウハウを発信していきます!

Ruby Business Users Conference で Ruby-Python 間ブリッジの PyCall について現状報告をしました

開発部 R&D グループで研究開発をしている CRuby コミッターの村田 (mrkn) です。

2/23 に渋谷で開催された Ruby Business Users Conference 2017 *1 でキーノートスピーカーとして講演をさせていただきました。 内容は、Ruby で統計分析や機械学習ができない現状についての解説と、その状況を打破するために私が現在開発を進めている pycall.gem のデモンストレーションでした。

カンファレンス当日に使用した資料は私個人の Speaker Deck で公開していますので、そちらをご覧ください。

カンファレンスの発表後、当日カンファレンスで一緒だった YassLab の安川さんがデモ部分の動画を facebook で公開し、twitter で拡散してくださいました。

安川さんのおかげで pycall の認知が大きく広がりました。ありがとうございます。

さらに、MoneyForward の金子さんが pycall のコードを読んでくださり、会社の技術ブログで pycall の実験レポートを書いてくださったり、プルリクエストを2つ送ってくれたり *2 *3 しました。これは pycall への初プルリクエストで、非常に嬉しい瞬間でした。

現在もフルタイムで pycall を含めた言語ブリッジの開発を進めています。計画通りに事が運べば、今年中には Python と R のツール群を Ruby から利用できる世界が実現できる予定です。 また、5月に Speee のラウンジで、Ruby でデータサイエンスをするための環境整備に興味がある方を対象としたハンズオンの開催を計画しています。 詳細は後日このブログで発表しますので、興味がある方はこのブログを購読してください。


現時点の pycall で何ができるのか気になっている方は、下記の jupyter notebook ファイルをご覧ください。

簡単に試してもらえるよう 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 のページが開くはずです。

f:id:mrkn:20170312132143p:plain

このページはコンテナ内の /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 を置き換えてください。