Javaの人間がRubyの世界に入って一番感じる1つの違い

Javaの人間がRubyの世界に入って一番感じる1つの違い

自分は大学時代の4年間+SIer時代の5年間、Javaのみを書いてきました。
ここでいうJavaを書いてきたというのは、J2EEの世界でStrutsとかHibernateとかSeasar2とかSpringとかのFWを使って、業務系Webアプリの開発をしてきたということ。

そして今年転職して、Rubyの会社になりたい会社(つまりPHPも結構やってる)ペパボに入りました。そこで感じているJavaの世界とRubyの世界の違いについて書いていきます。とは言っても、Rubyの世界の入り口からちょっと覗き見したぐらいの立ち位置ですが。

今、自分が1番感じているのは、Rubyの世界はライブラリの開発スピードが速過ぎるということ。

開発スピードが速過ぎるとは

railsで開発している時に色々なgemを使いますが、そのアップデートがめちゃくちゃ頻繁に起きます。メジャーなライブラリを使っていても、1週間に一度でもgem updateすると何かしらアップデートされているし、毎日gem updateする。という人がいるほど。Javaで開発していた時は、そもそもそんな枯れていないライブラリを使わないってのもあるけど、そんな頻繁にアップデートなんてされていませんでした。枯れていないライブラリにしても、そんな頻繁にアップデートされているケースはほとんどありません。

なぜ違いが生まれる?

なんでこんな違いが生まれるかというと、開発者と使用者の垣根の有無です。

Javaではコミッタ様がいて、それを使う下々の者たちがいるという関係性です。下々の者たちはコミッタ様に「ここをこうしてみてはくれませんか?」「これってバグじゃないですかね?違いますか。すいませんでした。」みたいなイメージですが、Rubyではその垣根がありません。

メジャーなライブラリでも、誰でもGitHub上でPull Requestを使い、機能改善やバグ修正が行われています。「ここをこうしてみたらいいと思うんだけど、どう?イケてるでしょ」「バグ見つけておいたから直しておいたよ」みたいなイメージです。俗にいうソーシャルコーディングが活発です。ソーシャルコーディングってバズワード的で、ホントに流行ってんのかよ。って印象であんまり好きじゃなかったんですが、社内で「PR送った。マージされたぜ」っていうやり取りを頻繁に見ると、Rubyでは流行ってるとかそういうレベルではなくて、もう日常の風景なんだな、と考えを改めさせられました。

ということで、別にJavaに限った話ではなかったんですが、GitHubっていいなと改めて感じたので書いてみました。多言語を学ぶとこういう違いまで感じるので、おもしろいし改善のヒントになるかもしれません。たぶん、本質はJavaユーザはSIerでプログラムは納品物なので、オープンに出来ないとかそういうことな気もするけど、GitHubについて書きたかったので、まぁこの内容で。今回はソーシャルコーディング最高的な話になってしまいましたが、そういう自分が全く出来ていないのでまずはPull Requestを送ることから挑戦します。Let’s PullReq!!