gem, bundlerを自分なりに解説してみる


はじめに

今回が初投稿です。Progateである程度勉強した次はRailsチュートリアルだー!と思い第1章から進めるもいきなりgem?bundle?とよくわからない単語が…。言われるがままにコマンドを入力していくも結局これ何やってるんだろうと思ったので自分なりに調べて解説してみます。

gemとは

まず、gemという単語には以下の2つの意味があるようです。
・Rubyライブラリを管理するシステム(RubyGemsのことを指す)のコマンドの名称のこと。
・それぞれのライブラリのこと

ライブラリとは、いちいち0からプログラムを組むのは面倒なので、汎用性の高い機能をひとまとまりにしたものです。つまりgemとはこのライブラリを管理するツールでもあるし、ライブラリそのものを指す言葉でもあるということですね。驚くことに、今学習しているRails、これから説明するbundlerもgemのなかのひとつのようです。

bundlerとは

先程、RubyGemsはライブラリであるgemを管理するシステムと説明しましたが、最近では「bundler」というライブラリ管理ツールを使うことが多いようです。なるほど、 ここでbundlerっていう単語が出てくるんですね。じゃあBundlerの利点なんだろう?調べました。

Bundlerの役割は以下の通り。
・gemのバージョン依存関係の解決
・gemをプロジェクト毎に管理する

依存関係とは以下のような関係のことです。

・gemAを使うのにgemBが必要(BはAに依存)
・gemBを使うのにgemCが必要(CはBに依存)

これを自分で調べてインストールするのはさすがに大変な作業ですよね。bundlerはこういったgemの依存関係を自動で検知して一括でインストールしてくれます。

bundlerのインストールはgem install bundlerのコマンドでインストールできます。

$gem install bundler

bundlerでgemをインストールする手順

1.「Gemfile」という名前のファイルに自分が使用したいgemのリストとバージョンを記述

2.bundle installのコマンドを実行

$bundle install

このコマンドを実行すると、Gemfileを参照して必要なgemが一括インストールされます。そして、その結果がGemfile.lockファイルに自動的に記録されます。次回以降bundle installコマンドを実行する際にはこのGemfile.lockファイルに基づいてgemがインストールされます。

まとめ

・gemは汎用性の高い複数のプログラムをひとまとまりにしたもの

・bundlerはgemを管理するシステム

・使用したいgemはGemfileに記述した後インストール

Railsもbundlerもgemのひとつだから同じコマンドでインストールするんですね。

$gem install rails -v 5.1.6
$gem install bundler

少しでも勉強し始めた方々にお役に立てれば幸いです!