Rails開発におけるRubyGemsの役割
実践的なRails開発においては、たくさんのgemを使用します。Rails初心者の方はまず、Railsチュートリアルから入ることが少なくないでしょう。しかし、チュートリアルを終えて、いざRailsを使って実際のWebアプリを開発しようとしてもチュートリアルレベルの知識だけでは思うように、そして効率的に開発することは難しいのではないでしょうか。また、既に開発が進んでいるRailsアプリのプロジェクトに途中から参加してプロダクトのコードを読んでみて、理解できない場面に遭遇することも少なくありません。
より実践的なRailsアプリを開発する場合、既にOSS(オープンソース)として公開されている多くのgemを使用します。Railsプロジェクトで導入されているgem一つひとつの役割や使い所をちゃんと理解することで、より深くプロダクトのコードも理解することができます。Railsアプリを開発する上で、どんなgemがあるのかを知ることはRails開発初心者を脱するために重要な要素の1つです。
gemの分類
gemの役割は一言で言えば、「開発効率を上げること」であると言えます。しかしgemの役割をより細かく見ていくと、どのような機能を提供するかによって分類することができます。
分類 | 詳細 | 代表的なgem | gemの機能 |
---|---|---|---|
機能を追加 | Railsアプリに機能を追加するもの | devise、sorcery | ユーザー認証機能 |
開発を補助 | Railsアプリのコード記述を効率化するもの | slim、haml | テンプレートエンジン |
機能を整理 | ビジネスロジックを整理するもの |
active_decorator、 draper |
デコレーター層を追加 |
テスト自動化 |
テストを自動化するフレームワーク など |
rspec、turnip | テスティングフレームワーク |
なお、表に示したslimとhamlの関係のように、ほぼ同一の機能を提供するgemも複数存在します。既に開発が進行しているRailsアプリだとgemは選定済みですが、Railsアプリを新規で開発する場合や新たに機能を追加する場合に、どのgemを選定するかには注意しなくてはいけません。以下の点を考慮して選定を行う必要があります。
- 開発する機能に沿ったgemか
- 類似の機能を持つgemがあるか
- 使用実績がどれくらいあるか
- プロジェクトのRuby/Railsのバージョンをサポートしているか
- 開発コミュニティが活発か
- プロジェクトに携わる開発者同士でgem導入の合意が取れているか
特にプロダクトに携わる開発者が複数いる場合、独断でgemを選定するのではなく、上記の点を踏まえて周囲の有識者に確認するなど、選定したgemを入れて開発することの合意を取ることが大切です。逆に1人で開発している場合は自由に選定できます。とはいえRails開発に慣れていれば自信を持ってgem選定できるでしょうが、そうでない場合はRailsもくもく会などに積極的に参加して有識者にアドバイスをもらうと良いでしょう。