「gemって何?」
「gemをインストールすると何ができるの?」
Ruby on Railsを学んでいる方の中には、このような疑問を持っている方がいるかと思います。Railsを使ってWebアプリケーションを開発する際、gemの理解は必要になってきます。
そこで今回はプログラミング初心者向けに、分かりやすく gem について解説していきます。
gemとは
まずgemとは何か?を簡単に整理しておきましょう。Rubyにおけるgemは下記2つの役割を持ちます。
①パッケージ
②パッケージ管理ツール
パッケージとは便利な機能がまとまったものを指します。
まずは①パッケージの役割とはどのようなものなのか見ていきましょう。
例えばWebアプリケーションにユーザー登録やログイン機能などいわゆるユーザー認証機能を実装したいとします。これらを一からコードを書いて作っていくのは非常に時間がかかる作業と言えます。
画像:Deviceを使用したログイン画面
しかし「devise」と呼ばれるgemをインストールするだけで簡単にユーザー認証で必要な機能が揃います。パッケージを使うことで開発を効率的に進めることができるので、実際の現場でも使用されることが多いのです。
devise意外にもダミーの文章を自動で作成してくれる「Faker」やデバッグツールの「prybug」など非常に便利なgemが存在しています。
またほとんどのgemは Githubと呼ばれるサイトで管理されており、インストール方法や使い方などを見ることができるようになっています。
![image](//s3-ap-northeast-1.amazonaws.com/mash-jp/production/uploads/18701/4fb22738d9cb50fe9e1fdae716240bf78ac6db79.18790.desktop.jpg)
出典: Github
gemのメリット・デメリット
メリット
簡単にパッケージをインストール可能なので、Ruby on Rails 初心者でも素早く本格的なアプリ機能を装備することができる。
アプリ内で使う各種機能・レイアウトをライブラリとしてパッケージ管理できるので、Rubyプログラマーの技術力優劣に左右されない安定したアプリを構築できる。
誰でもRuby用ライブラリを作成・公開することができる。
デメリット
- ほとんどの場合、インストール方法や使い方は英語で書かれているので理解するのに時間がかかることもある。
- セキュリティーリスクがある**。
- Ruby on Rails との相関性、Railsのバージョンを上げると実装済みのライブラリにエラーが発生することがある。
- 基本的にコマンドプロンプト(ターミナル)での操作が必要。
gemコマンドの使い方
次にgemに関するコマンドの使い方を見ていきましょう。
実際のRails開発現場では、gemのインストールや管理はコマンドプロンプトもしくはターミナルを利用することが多いです。この項目では頻繁に使用するコマンドに絞って解説していきます。
gemのコマンド① gem list
![gem-list](//s3-ap-northeast-1.amazonaws.com/mash-jp/staging/uploads/801/7331dfb7fe13c8c4d5e68c8ee419edf1a1884911.833.original.png?1488162535)
現在 PCにインストールされているgemの一覧を表示するコマンドです。このコマンドではgemの名前とヴァージョンを見ることができます。
gemのコマンド② gem outdated
![gem-outdated](//s3-ap-northeast-1.amazonaws.com/mash-jp/staging/uploads/801/bcdb6b3045cff6247e2db382d5006d8fb8434230.834.original.png?1488162536)
このコマンドは最新版のgemが存在するかどうかをチェックできます。
上記画像にある Arel (6.0.3 < 7.0.0) の場合、現在 6.0.3 で最新版 7.0.0 に更新できることを意味します。
最新版へ更新する際は、コマンドに以下のコードを入力します。
gem update arel
![arel-update](//s3-ap-northeast-1.amazonaws.com/mash-jp/staging/uploads/801/d449b25b8df4400b649cf69e0ed4900ad8e8f8f9.835.original.png?1488162537)
すべての gemを更新する場合は、以下のコマンドを入力します。(終了までに時間がかかります)
gem update
更新が終わって再度 gem list を叩くと、新しいライブラリと古いライブラリが混在することに気づきます。
![gem-update](//s3-ap-northeast-1.amazonaws.com/mash-jp/staging/uploads/801/84c5bfbbc8e02d076ad931ba613d180180e1af7c.836.original.png?1488162537)
古いバージョンのgemが不要な場合は、以下のコードで削除することができます。
# 古いバージョンのgemすべてを削除
<strong>gem cleanup rjb</strong>
# gem arel 6.0.3 バージョンのみ削除
<strong>gem uninstall arel --version 6.0.3</strong>
# gem arel の 6.0.3 以前のすべての古いバージョンを削除
<strong>gem uninstall arel --version '<6.0.3'</strong>
ライブラリarel6.0.3バージョンのみ削除
gemを使えば自分でライブラリを作ることも可能です。
![gem-create-app](//s3-ap-northeast-1.amazonaws.com/mash-jp/staging/uploads/801/2dc292b22ff8108e482f774eb6872f3e6a7be786.838.original.png?1488162539)
ライブラリを設定したい Rails の bin ディレクトリで以下のコードを実行すると、新規ライブラリを作ることができます。
rails plugin new test_app
また作成中もしくは完成したライブラリは、GitHub上で公開することもできますし、プライベートな管理で利用することができます。
人気があるgemを知ろう
最後に人気があるgemを調べる方法について解説していきます。Best Gemsというサイトにはこれまでダウンロードされたgemの一覧が表示されます。
![image](//s3-ap-northeast-1.amazonaws.com/mash-jp/production/uploads/18701/0548bc5ffd36456d16019e5674e884a91aabe112.18791.desktop.jpg)
どのgemを使えば良いか分からない方はBest Gemsを見れば参考になるかもしれません。
ちなみに先程説明した「bundler」も上位に入っていることが分かりますね。
ここまでgemの特徴などを解説してきました。Railsで開発する際は必ずと言っていいほどgemを使用します。効率的にWebアプリケーションを作りたい方は積極的にgemを使ってみるのも良いかと思います。