Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 2.46 KB

conclusion.md

File metadata and controls

34 lines (27 loc) · 2.46 KB

まとめ

さて、Red Data Toolsのプロダクトを色々見てきたわけですが、 結局Rubyで機械学習はできるのでしょうか。

結論としては、十分に可能 と言えるのではないでしょうか。 おそらく、PyCall全振り が最も正しい選択肢だと思います。 PyCallはパフォーマンスも十分高く、Pythonライブラリの中でされる処理はほぼPythonの速度そのままのようです。 特に機械学習だと、データを作ったらあとはライブラリに投げるだけというプログラムがほとんどでしょう。 データは使い慣れたRubyで作り、PyCallでPythonライブラリに投げるのが効率よくやれるような気がします。 ライブラリはPyCallに親和性が高いKeras一択でいいと思います。

Rubyを使う利点

Rubyの優れている点、それは何よりも pry の存在です。 適当な場所に binding.pry を入れて処理を止める、ls で変数を見るcd で変数の中に入る という、 気が狂ったインタフェイスはやはり何物にも代えがたい最高の機能です。 Rubyの開発が楽しい理由の8割くらいは pry の便利さが担っていると思っています。 処理を止めて変数をチェックできるだけで、実際に移植時の開発効率は格段に上がりました。 しかし、残念ながらPyCallのインスタンス自体に対しては pry は無力です。 ここはなんとかしてほしいですね。 ぜひPython側のメソッド一覧が見えてほしいです。

問題点

やはり一番の問題点は、クラス定義が上手くPython世界に持っていけないことでしょう。 Pythonでクラスを書くなんて絶対やりたくないので、これはなんとしてでも解決して欲しいところです。 多分 pry をなんとかすることにも繋がっていきそうです。 あとは .call をなるべく避けられたらもっと自然なRubyになるのではないかと思います。

それ以外の点はおおむね特に問題なさそうに感じます。 少なくとも今後、Pythonで機械学習しようという気はもう全く起きません。 もうPythonのクソッタレな制御構文をググらなくていいんだ・・・ もう for とかダサい文字列タイプしなくていいだ・・・と思うとこれからのやっていきが高まります。