@banyan's blog

living as a gem ソムリエ

gem ソムリエとは何だろうか? @kyanny 氏の書いた gem ソムリエになる方法 が日本で最も gem ソムリエについて言及した記事だ (というかこれしかない)。 Ruby / Rails で開発をしている人なら誰でも大なり小なり gem ソムリエなのだと思う。

Rails のコミュニティ (エコシステム) は毎日のように新しい gem が出てくる。(もちろん他の言語 / コミュニティもそうだとは思うけど) フィードを追っかけ、ぱぱっと GitHub のソースを見たりして、吟味し、息もつく暇もなくまた新しい gem が出てくる。

一番人気、デファクトスタンダードの重要性

これは gem に限ったわけではないけど、色々なことにおいて一番人気のものにのっかることはとても大切なことだと思う。 なぜなら使う人が多ければ多いほど、便利なものが増え、同じ問題に困っている人が多く、その解決方法も生まれてくるからだ。

かつて僕は sleipnil というブラウザが大好きで、firefox に移行することに躊躇してた。 当時はグリモン全盛期の頃で、横目で見ながらも、sleipnil だって同じことができるはずだ... と色々頑張ったりしてたけど、 ある日移行してみて愕然とした。そのグリモンの量や、アドオンの量に... (そりゃグリモンなのに IE 対応とか考えたくもない)

その時以来、オワコンになるものを見極めつつも、人気のある言語であったり OS であったり、ライブラリであったり、ミドルウェアであったりそういうものを使うのが正しいことだ、というのが僕の考えです。

一度導入すると変更が難しい gem

ここまで言っておきながら、僕は元来メジャーとマイナーのものだとマイナーのほうが好きな傾向がある。 もちろん趣味の話なら好きなものはなんだって構わないけど、でも仕事で使うものは基本的に先に述べたような理由から一番人気のあるものを使ったほうがいいと思う。

仕事で使うものにも、ちょっとした遊びみたいな小さな gem から、全体に影響を与える大きな gem がある。 例えばテストフレームワークとか、認証用のライブラリだとかだ。

例えば fixture replacement としての Factory Girl と Fabrication がある。 前者は thoughtbot がメンテをして今一番人気があるものだ。Fabrication は後発で Factory Girl とほぼ同じなんだけど、syntax がちょっとキレイな感じがする。

ruby-toolbox.com で今調べてみると、Factory Girl が Total Downloads 2642751 に対して、Fabrication が Total Downloads 149592 だ。(単純に Download 数で比較できないけど約17倍の差!!!)

僕は今同僚である @kyanny 氏と仕事をさせて頂いていて、ただ毎回選ぶ時には @kyanny 氏はとても優しい人なので「どちらでも @banyan さんの好きなほうで僕は構いませんよ」と言ってくれて、つい Fabrication を選んでしまった。

認証ライブラリも Devise ではなく Sorcery を選んだ。

その時以来、オワコンになるものを見極めつつも、人気のある言語であったり OS であったり、ライブラリであったり、ミドルウェアであったりそういうものを使うのが正しいことだ、というのが僕の考えです。

あれ...


まるで成長していない...


後発の gem の抗い難い魅力

とは言え、後出しで作られる gem には基本的に今一番メジャーなものへのカウンターというか、魅力がある。 例えば Devise はそれこそほぼ全ての認証のことができてしまうが大きい。Sorcery の魅力は小ささだ。

また後発ならではの良さは小さいが故にバグも多かったり、また必要な機能も足りてなかったりして色々 Pull Request を送ったりすることもできる。

何か問題が起こったわけではないし、結局のところ後発のものを採用するからには、何かあったら、選んだ自分に問題になるから、まぁなんとしてでも直して使うぞという気概を持って毎回選択している。

それでも一番人気になるべく寄せたほうがいい

何かあったら、選んだ自分に問題になるから、まぁなんとしてでも直して使うぞという気概を持って毎回選択している。

ひとつ思うのは、確かに自分が関わっている限りこの考え方なら問題はでないかもしれない。でも自分がそのプロジェクトに関わらなくなることは当然あるわけで、 またその時引き継ぐ人が gem ソムリエかもしくは gem ソムリエになるやる気がある人ならいいけど、あんまり興味ないし適当にやりますー、みたいな感じの人だと こんなに色々使ってると bump version した時とかうまく upgrade できなくて、そうしたらやはり問題になるわけで、そういう意味でもやっぱその時の一番人気 (終わりかけになってない感じ) を見極めて寄せるのはやっぱり改めて大切なことなのかなーと思った。まぁでもみんな1年先くらいまでしか分かんない気もするけども ><