前書き
Gemの選ぶ際どういう点に気を付けてGem選びをするか曖昧なので具体化しまた振り返りたいので記事に残します。
- 前提選定する上で「これが正解」とかはないです。
全体像
やりたいことを明確にする
今自分が立てた目標を友人と共有しモチベーションが上がるようなアプリを作成していて「他のユーザーを特定する」といった機能が必要だと思いました。
実装したい機能
- ユーザー検索機能
完成予想図
要件.
他のユーザーを検索できる
アプリ作成後継続的にアプリを使用する
初学者でも最速で実装できるか
使用しても良いgemかどうか(ライセンス問題がないか)
どんなgemがあるかをリストアップ
Ransack
Thinking Sphinx
pg_search
選定基準を明確にする
①アプリ作成後継続的にアプリを使用する.
②初学者でも最速で実装できるか.
③使用しても良いgemかどうか(ライセンス問題がないか)
上記を考慮すると下記の3つの条件でgemを選定しようと思います.
①gemが安定しているとは?
⇨長期的に開発者がgemのバグ修正、アップデートを繰り返している。またgem開発者のバグ修正しようと思うには、たくさんの人にそのgemが使用されているかも大切だと思います。まとめると
長期的にバグ修正を開発者がしてくれそうか
頻繁に開発者がバグ修正をしているのか
gemの利用者が多い.
この3点を判断するために githubの下記を確認する
- コミット数
- githubスター数
- 一番更新日が古いものと最新更新日がある程度空いているのか(長期的にメンテナンスされているか確認)
②学習難易度が低いかどうか
学習難易度が低いとは?
→gemの概要や使い方の把握が簡単で、すぐ実装できる。
どうやって学習難易度が低いかを見極める?
⇨たくさんの開発者にダウンロードされているかどうかを把握する.
たくさんダウンロードされていればその分qiitaやzennやhatenaブログなどでそのgemの記事数が増える。要は情報量が増えるのでgemの概要や使い方を把握することが容易になり最短でgemの実装ができそうです。
下記のサイトで「ダウンロード数の確認」ができます。
RubyGems.org | your community gem host
情報源の優先順位
- 公式ドキュメント
- pikawakaやTechTechMediaなどの企業が作成しているブログ
- 個人ブログ(qiitaなど)
③githubなどの公式ドキュメントに著作権の記載があるか
このように使って良いgemかどうか記載があります。
まとめ
* 技術選定に正解はない(一人一人の要件が変わるため).
* ある程度信用が高い統計を見る