Bundler で Gem を管理しよう
- 学習の目標
- はじめに
- Bundler の概要
- Bundler のインストール
- Gemfile の作成
- gem のインストール (bundle install)
- Gemfile.lock の確認
- インストールした gem を実行する
- まとめ
学習の目標
本章では、以下の内容を学習します。
- Bundler の概念と役割を理解する
- Bundler をインストールして使えるようにする
- Gemfile の作成と編集方法を習得する
- bundle install コマンドでライブラリを導入する
- Gemfile.lock の意味と重要性を理解する
- インストールした gem を実行する方法を学ぶ
はじめに
Ruby の世界では、便利な機能をまとめた「gem」と呼ばれるライブラリがたくさん存在します。これらの gem を使うことで、一から全てのコードを書かずに済み、開発効率が大幅に向上します。
しかし、gem を導入する際に問題となるのが依存関係です。例えば「A という gem を使うためには B という gem が必要で、そのバージョンは 2.0 以上でなければならない」といった条件が発生します。複数の gem を使用すると、この依存関係は複雑になっていきます。
そこで活躍するのが Bundler です。Bundler は gem の依存関係を自動的に解決してくれるツールで、Ruby の開発現場では必ず使われる重要なツールです。今回は、この Bundler のインストールから使い方までを学んでいきましょう。
Bundler の概要
Bundler は「gem のための gem」と言えるツールです。その主な役割は以下の通りです。
Bundler の主な役割
- プロジェクトで使用する gem のバージョンを管理する
- gem 間の依存関係を自動的に解決する
- 開発環境を統一し、「自分の環境では動くのに他の人の環境では動かない」という問題を防ぐ
例えば、Ruby on Rails というフレームワーク(これも gem の一つです)を使う場合、Rails だけでなく、その動作に必要な何十もの gem が自動的にインストールされます。これらの gem が適切なバージョンで導入されるよう管理するのが Bundler の仕事です。
Bundler を使うことで、「この gem のバージョンは何にすべきか」「このバージョンの gem を入れると競合しないか」といった心配をする必要がなくなります。
Bundler のインストール
Bundler 自体も gem の一つなので、gem install
コマンドでインストールできます。ターミナル(Mac)またはコマンドプロンプト(Windows)を開き、次のコマンドを実行しましょう。
$ gem install bundler
インストールが完了したら、バージョン番号を確認してみましょう。
$ bundler -vBundler version 2.6.5
バージョン番号が表示されれば、インストールは成功です。表示されるバージョン番号はインストールした時点のものなので、上記と異なる数字が表示されても問題ありません。
Gemfile の作成
Bundler を使うためには、Gemfile(ジェムファイル)という、使用したい gem の情報をまとめたファイルが必要です。まずは、作業用のディレクトリを作成し、その中に Gemfile を作成していきましょう。
作業ディレクトリの準備
最初に、作業用のフォルダを作成します。VS Code などのエディタでデスクトップを開き、ターミナルを起動しましょう。
$ mkdir workspace$ cd workspace
mkdir
コマンドでworkspaceという名前のディレクトリを作成し、cd
コマンドでそのディレクトリに移動しました。
Gemfile の作成
workspace ディレクトリ内で、Bundler の初期化コマンドを実行します。
$ bundle init
このコマンドを実行すると、現在のディレクトリ(workspace)内に Gemfile という名前のファイルが自動的に作成されます。VS Code のエクスプローラーで確認してみましょう。
Gemfile の編集
作成された Gemfile を VS Code で開き、以下のように編集します。
source 'https://rubygems.org'
gem 'rails', '~> 8.0'
この Gemfile では、次のことを指定しています。
source 'https://rubygems.org'
- gem をダウンロードする場所(Ruby の公式リポジトリ)gem 'rails', '~> 8.0'
- Rails gem をインストールすること、そしてそのバージョンは 8.0.x シリーズの最新版を使用すること
バージョン指定の ~> 8.0
という書き方は「8.0 以上 9.0 未満の最新版」という意味になります。これにより、セキュリティパッチなどの小さなアップデートは自動的に取り込まれますが、互換性が壊れる可能性のある大きなバージョンアップは行われないようになります。
gem のインストール (bundle install)
Gemfile を用意できたら、その定義に従って gem をインストールします。ただし、システム全体ではなく、プロジェクト内にのみインストールすることをおすすめします。これにより、異なるプロジェクト間で gem のバージョンが衝突する問題を避けられます。
インストール場所の設定
まず、gem をプロジェクト内にインストールするための設定を行います。
$ bundle config set path '.bundle'
このコマンドは、gem を workspace ディレクトリ内の .bundle
フォルダにインストールするよう Bundler に指示します。
gem のインストール
次に、bundle install コマンドを実行して gem をインストールします。
$ bundle install
このコマンド実行後、多くのテキストが画面に流れます。これは Rails とその依存関係にある gem がインストールされていることを示しています。最終的に以下のようなメッセージが表示されれば成功です。
Bundle complete! xx Gemfile dependencies, xxx gems now installed.
最後に「Bundle complete!」と表示されていれば、インストールは成功しています。もし別のメッセージが表示されていたり、エラーが発生している場合は、何かしらの問題が発生しています。
インストールがうまくいかない場合
bundle install
コマンドは環境によっては失敗することがあります。これは初学者がつまずきやすいポイントの一つです。エラーが発生した場合は、次のような対処法を試してみましょう。
- エラーメッセージをコピーして Google 検索する
- ChatGPT などのAIサービスにエラーメッセージを質問する
- スクールの質問フォームを利用する
エラーメッセージには問題の原因が書かれていることが多いので、必ず目を通すようにしましょう。
Gemfile.lock の確認
bundle install が成功すると、workspace ディレクトリ内に Gemfile.lock というファイルが作成されます。このファイルには、実際にインストールされた gem の正確なバージョン情報が記録されています。
Gemfile.lock を VS Code で開いてみると、次のような内容が記載されています。
GEM remote: https://rubygems.org/ specs: actioncable (8.0.1) actionpack (= 8.0.1) activesupport (= 8.0.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) actionmailbox (8.0.1) ...
このファイルは非常に重要で、以下のような役割を持っています。
Gemfile.lock の役割
- 実際にインストールされた gem の正確なバージョンを記録する
- チーム開発時に全員が同一バージョンの gem を使えるようにする
- 本番環境と開発環境で同じバージョンの gem を使用できるようにする
つまり、Gemfile が「こういう gem を使いたい」という希望を表すのに対し、Gemfile.lock は「実際にこういう gem を使っている」という現実を記録しているのです。
チーム開発では、この Gemfile.lock をバージョン管理システム(Git など)で共有することで、全ての開発者が同じバージョンの gem を使うことができます。これにより、「自分の環境では動くのに、他の人の環境では動かない」といった問題を防ぐことができます。
インストールした gem を実行する
最後に、インストールした gem を実行する方法を見ていきましょう。Bundler でインストールした gem を使うときは、通常のコマンドの前に bundle exec
を付ける必要があります。
例えば、Rails のバージョンを確認するには、次のコマンドを実行します。
$ bundle exec rails -vRails 8.0.2
bundle exec
を付けることで、「Bundler が管理している gem を使って実行してください」という指示になります。これにより、Gemfile で指定したバージョンの gem が確実に使われるようになります。
表示されるバージョン番号はインストールした時点のものであり、最新版と異なる場合がありますので、上記と異なるバージョンが表示されていても問題ありません。
トラブルシューティング
もし「Gemfile が見つからない」というエラーが表示された場合は、次の点を確認してください。
- 実行するディレクトリが間違っていないか(workspace ディレクトリ内にいるか)
- Gemfile が正しく作成されているか
- bundle install が正常に完了しているか
これらを確認することで、多くの問題は解決できるでしょう。
まとめ
本章では、Ruby の開発に欠かせない Bundler について学びました。以下のことを理解できたと思います。
- Bundler は gem の依存関係を自動的に解決するツールである
- Gemfile には使用したい gem とそのバージョンを記述する
- bundle install コマンドで gem をインストールする
- Gemfile.lock には実際にインストールされた gem の正確なバージョンが記録される
- インストールした gem を実行するときは bundle exec を付ける
Bundler は Ruby の開発現場では必ず使われるツールであり、今後の Rails 開発でも重要な役割を果たします。この章で学んだことをしっかりと理解して、次のステップに進みましょう。
Basicプランでより詳しく学習
この先のコンテンツを読むにはBasicプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。