#1 Rubyで学ぶ環境構築の基本
Rubyは、日本人技術者(まつもとゆきひろ氏)によって開発されたプログラミング言語で、「書きやすさ・読みやすさ」を重視した設計が特徴です。Webアプリ開発フレームワーク「Ruby on Rails」の土台としても広く知られています。この記事では、Rubyを学ぶための環境構築を、インストールの手順だけでなく、実際によくつまずくエラーとその直し方、初心者が疑問に思いやすいポイントまで含めて、ひととおり解説します。
OSごとのインストール方法
Windowsの場合
「RubyInstaller」という専用のインストーラーが公式に用意されています。これをダウンロードして実行するだけで、Rubyの基本的な機能一式が使えるようになります。インストールの最後に、黒い画面(コマンドプロンプト)が開いて「1, 2, 3のどれを選びますか?」という趣旨の選択肢が出ることがありますが、これは「MSYS2」というビルドツール(一部のgemをインストールする際に必要になる補助ソフト)を追加でセットアップするかどうかの確認です。迷ったら、案内に従って全部インストールする選択肢(通常は最後の番号)を選んでおけば、後々のトラブルを避けやすくなります。
macOS・Linuxの場合
OSにあらかじめ古いバージョンのRubyが「システムRuby」として入っていることが多いため、学習用には「rbenv」というバージョン管理ツールを使って、最新版を別途インストールするのがおすすめです。バージョン管理ツールとは、パソコンの中に複数のRubyのバージョンを共存させ、プロジェクトごとに使うバージョンを切り替えられるようにする仕組みのことです。システムRubyをそのまま使うと、後述するような権限エラーに悩まされやすいため、最初の一歩として避けておくと安心です。
インストールできたか確認する
ターミナルで次のコマンドを実行し、バージョンが表示されれば準備完了です。
ruby --version
ファイルを実行する・その場で試す
拡張子`.rb`のファイルを用意し、次のコマンドで実行します。
ruby ファイル名.rb
また、Rubyには`irb`という対話的にコードを試せる機能も付属しています。ちょっとした動作確認をしたいときに便利です。
irb
実際によく出るエラーと対処法
ここでは、Rubyの環境構築で初心者がよく遭遇する具体的なエラーメッセージと、その原因・直し方を紹介します。エラーが出ても異常事態ではなく、むしろ「よくあること」だと知っておくだけで気持ちがかなり楽になります。
Gem::FilePermissionError: You don't have write permissions for the /Library/Ruby/Gems ディレクトリ
macOSで、OSにあらかじめ入っている「システムRuby」に対して`gem install`(外部ライブラリのインストール)を実行すると出るエラーです。システムRubyのインストール先はOSが保護しているため、一般ユーザーの権限では書き込みができないようになっています。ここで`sudo gem install`のように管理者権限で強行することもできますが、システムの奥深くを直接いじることになり、後々トラブルの原因になりやすいのでおすすめしません。素直な対処法は、前述の`rbenv`で別途Rubyをインストールし、そちらを使うことです。rbenvで入れたRubyは自分専用の場所に置かれるため、権限エラーを気にせず`gem install`できます。
rbenv: command not found
rbenvをインストールしたのに、ターミナルで`rbenv`と打っても「見つかりません」と言われるケースです。多くの場合、rbenv自体のインストールは成功しているものの、シェル(ターミナルの中身を動かしているプログラム)の設定ファイルに、rbenvを読み込むための1行(`eval "$(rbenv init -)"`など)を追加し忘れています。使っているシェルの設定ファイル(`.zshrc`や`.bash_profile`など)にこの設定を追記し、ターミナルを再起動すると解決することがほとんどです。
rbenv: version 'x.x.x' is not installed / definition not found
rbenvで特定バージョンのRubyをインストールしようとして出るエラーです。前者は「そのバージョンをまだインストールしていない」という単純な意味で、`rbenv install x.x.x`を実行すれば解決します。後者は、rbenvがそのバージョン番号自体を認識できていない状態で、インストール可能なバージョンの一覧を管理している`ruby-build`というプラグインが古いことが原因のことが多いです。`ruby-build`を更新する(Homebrewを使っている場合は`brew upgrade ruby-build`など)と、新しいバージョンも選択肢に出てくるようになります。
rbenvでバージョンを切り替えたのに反映されない
`rbenv global`や`rbenv local`でバージョンを切り替えたつもりが、`ruby --version`を打つと古いバージョンのままになっていることがあります。原因として多いのは、gemをインストールした際に生成される実行コマンド(シェルスクリプト)をrbenvが認識できていないケースで、`rbenv rehash`というコマンドを実行すると解消することが多いです。それでも直らない場合は、ターミナルを一度閉じて開き直すと反映されることもあります。
RVMとrbenvを両方インストールしてしまい、挙動がおかしい
ネット上の情報を参考にしていると、バージョン管理ツールとして「rbenv」の記事と「RVM」の記事の両方に出会うことがあります。この2つは同じ目的(Rubyのバージョン管理)のための別々のツールで、両方を同時にインストールすると、シェルの設定ファイルの中で読み込み順が競合し、`ruby --version`の結果が意図しないものになるなど、原因の特定しづらい不具合につながりがちです。基本的にはどちらか一方だけを選び、迷ったらこの記事でも紹介している`rbenv`(仕組みがシンプルで、他のツールとの相性でトラブルが起きにくいとされています)を使っておくと無難です。
つまずきやすいポイント・よくある質問
Q. RubyとRuby on Railsは何が違うの?
Rubyは、この記事で環境構築しているプログラミング言語そのものです。一方「Ruby on Rails(通称Rails)」は、Rubyという言語を使って書かれた「Webアプリケーションを作るための土台(フレームワーク)」です。日本語で言うなら、Rubyが「言葉」だとすれば、Railsはその言葉を使って書かれた「便利な設計図・部品集」のようなものだとイメージすると分かりやすいかもしれません。Railsを使うにはRubyの基本的な文法をある程度理解しておく必要があるため、まずはこの記事のようにRuby単体の環境構築とごく簡単な文法から始めるのが遠回りに見えて近道です。
Q. なぜバージョン管理ツール(rbenvなど)が必要なの?
Rubyは開発が活発な言語で、バージョンによって使える機能や文法が少しずつ変わります。あるプロジェクトは古いバージョンを前提に作られていて、別のプロジェクト(あるいは学習用の教材)は最新バージョンを前提にしている、ということが珍しくありません。パソコンに1つのRubyしか入っていないと、教材ごとにアンインストール・再インストールを繰り返すことになってしまいます。rbenvのようなツールを使えば、複数バージョンを共存させて、プロジェクトごとに使うバージョンを切り替えられるため、こうした手間を避けられます。
Q. エディタやIDEは何を使えばいいの?
最初の一本としては、無料で使える「Visual Studio Code(VS Code)」に、Ruby用の拡張機能(構文のハイライトやエラー箇所の表示をしてくれるもの)を追加する組み合わせが候補に挙がることが多いです。動作が軽く、他の言語を学ぶときにも使い回せるのが利点です。より本格的にRuby on Railsまで見据えるなら、「RubyMine」のようなRuby専用の統合開発環境(IDE)を使う道もあります。最終的にどれが合うかは書くコードの規模や好みにもよるので、まずは触ってみて書きやすいと感じるものを選ぶのがよいでしょう。
Q. gem installで権限エラーが出たら、必ずsudoをつければいいの?
`sudo`(管理者権限で実行するコマンド)をつけると一時的にエラーは消えますが、システムの保護された領域に直接書き込むことになるため、別の不具合を招きやすく、あまり推奨されません。前述のとおり、システムRubyではなくrbenvなどで入れた自分専用のRubyを使うことで、そもそも`sudo`が要らない状態にしておくのが、遠回りに見えて結局は安全な道です。
Rubyならではの注意点
Rubyは「書き方が一通りではない」ことが多い言語です。同じ処理でも複数の書き方が用意されていることが多く、自由度が高い反面、最初はどれを選べばよいか迷うこともあります。学習を始めたばかりの頃は、公式のスタイルガイドや入門書で紹介されている書き方に素直に従っておくと迷いにくいでしょう。
他の言語と比べたRubyの環境構築の考え方
言語によって、環境構築や依存関係の管理に対する考え方には違いがあります。Rubyの場合、rbenvなどでインストールする「Rubyのバージョンそのものの管理」と、`Bundler`という仕組みを使った「プロジェクトごとに使う外部ライブラリ(gem)の管理」が、役割として分かれているのが特徴です。これは、Node.jsの`package.json`やPythonの仮想環境のように、プロジェクトごとに依存関係を切り分けたいという発想は共通していますが、Rubyでは「バージョン管理ツール」と「ライブラリ管理ツール(Bundler)」を組み合わせて使うのが一般的な流儀になっている、という点がやや独特です。最初は道具立てが多く感じられるかもしれませんが、これはどの言語が優れているという話ではなく、それぞれの言語のコミュニティが「どんな課題を解決したかったか」の違いだと捉えると理解しやすいと思います。
まとめ
Rubyの環境構築は、Windowsなら専用インストーラー、Mac・Linuxならrbenvを使うのが基本の流れです。この記事で紹介したように、macOSのシステムRubyに直接インストールしようとして権限エラーが出たり、rbenvの設定を反映し忘れて`command not found`になったりと、つまずきやすいポイントはある程度パターンが決まっています。エラーメッセージが出ても慌てず、まずは落ち着いてメッセージを読んでみましょう。`irb`を使えば、環境構築の直後からその場でコードを試せるので、まずは触りながら感覚をつかんでみてください。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
コメント
コメントを投稿