Rails で gem を導入するときに最低限やること

普通にみんなやっていることだと思うけど、自分が gem を入れるときに最低限やることをまとめてみた。

何かしらの方法で探してきた gem を「導入するかどうか」の判断をするときにやることです。

やること一覧

  1. 今後もメンテされそうかを調べる
  2. README を 全部 読む
  3. 依存関係を調べる
  4. ソースコードを読む

今後もメンテされそうか?

ほとんどの gem は GitHub で公開されているので、下記の観点を参考に調べる。

  • 最終コミット日時
    • 1年前とかだと安定している or 放置されている
  • contributes の数
    • 多いとメンテされそう
  • star の数
    • 使用者が多く、問題が報告(修正)されそう
  • Releases の数
    • 基本機能は安定してそう
  • Issues, Pull Requests の数、対応状況
    • 問題が放置されていないか
    • 自分が踏みそうなものが挙がっていないか
  • 作者はどんな人か?
    • 有名な gem の作者なら技術力ありそう(= ちゃんと動きそう)

ただ、「機能が少なく、あまり更新されない gem」とか「Issues は多いけど、他に代用もない phantomjs」みたいなのもあるので、上記だけでは判断できないこともある。

README を全部読む

はてなブログや Qiita などの記事は参考になるけど、「gem のアップデートに追従できていない」「インストール手順が中途半端」「一応動くけど、内容が微妙」みたいなのが多いです。 安易に信じると、未来の自分が死にます。

今までの経験上、信頼できるのは「ソースコード、次に README」です。英語が苦手でも、 README は一通り目を通した方が良いです。

依存関係を調べる

GitHubリポジトリにある xxx.gemspec を読んで、依存関係がどのくらいあるかを調べる。

  • 依存関係が多い
    • 他 gem (特に Rails )のアップデートで苦労するかも
  • 依存関係が少ない
    • 他 gem へ移行することがあっても楽そう

ソースコードを読む

全部を読むのは時間かかるので、「バグに遭遇したとき、コードを読めそうか?直せるか?」の観点でざっと目を通します。

  • ファイル数がどのくらいか
    • 少ない場合は fork してメンテ(もしくは再実装)がしやすい
  • メタプロがどのくらい使われているか
    • rails_admin などは導入に覚悟が必要になってくる
  • コードが読みやすいか
    • 複雑なコードは直す気になりにくい
    • デバッグ・修正も大変
  • テストコードがあり、 CI が動いているか
    • コードを直したときに、既存機能が壊れていないか確認できる

おまけ: 絶対にやったらダメ

はてなブログや Qiita の「おすすめ gem 10選」みたいなので公開されている gem を一気に Gemfile に入れるのは絶対ダメ。

問題が起きたときに「どの gem が原因か?」が分からなくなって大変なので、面倒でも1つずつ調べてから導入すべきです。

まとめ

ざっと gem を導入するときに気にしてることを書いてみました。何か参考になれば幸いです。