Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Railsでユーザー認証機能を実装しよう~定番のgem「devise」活用法(1)

これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/05/15 14:00

 Ruby on Railsを使ってより実践的なWebアプリを開発するために欠かせないのが、RubyGems(gem)です。本連載では、Rails開発において開発効率を格段に上げてくれること間違いなしの定番gemについてご紹介します。第1回、2回では、ユーザー認証機能の実装するにあたり定番と言えるgem「devise」を取り上げます。

目次

Rails開発におけるRubyGemsの役割

 実践的なRails開発においては、たくさんのgemを使用します。Rails初心者の方はまず、Railsチュートリアルから入ることが少なくないでしょう。しかし、チュートリアルを終えて、いざRailsを使って実際のWebアプリを開発しようとしてもチュートリアルレベルの知識だけでは思うように、そして効率的に開発することは難しいのではないでしょうか。また、既に開発が進んでいるRailsアプリのプロジェクトに途中から参加してプロダクトのコードを読んでみて、理解できない場面に遭遇することも少なくありません。

 より実践的なRailsアプリを開発する場合、既にOSS(オープンソース)として公開されている多くのgemを使用します。Railsプロジェクトで導入されているgem一つひとつの役割や使い所をちゃんと理解することで、より深くプロダクトのコードも理解することができます。Railsアプリを開発する上で、どんなgemがあるのかを知ることはRails開発初心者を脱するために重要な要素の1つです。

gemの分類

 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もくもく会などに積極的に参加して有識者にアドバイスをもらうと良いでしょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 竹馬 力(チクバ ツトム)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5