ローカル開発向けにmacOSへRubyをインストールする方法
2022年9月27日
0 分で読めますRubyまたはRuby on Railsの開発を始めるなら、次のことを知っておきたいでしょう。
MacにRubyを正しくインストールする方法。
brewや既存のRuby 2.7 Macのインストールと競合しないローカル開発環境の構築方法。
このチュートリアルでは、その両方を学びます。新しいmacOS M1搭載のノートパソコンをお使いの場合もご安心ください。このチュートリアルはMac M1へのRubyのインストールにも対応しています。
brew install rubyは絶対に実行しないでください
Rubyをインストールするために、brew install rubyを実行したり、update ruby macコマンドを実行してmacOS上の既存のRubyバージョンを更新したりするよう指示するガイドやブログ記事がありますが、こうした方法は避けることを強くおすすめします。
とはいえ、RedditユーザーのpostmodernはRubyのスレッドで、brewによるインストール先を別のディレクトリに明示的に指定できるだろうと述べています。Brewはデフォルトで/usr/localにインストールしますが、postmodernによると、AppleのシステムRubyスクリプトはインタープリターの場所が/usr/bin/rubyにハードコードされているため、影響しません。また、Appleはプリインストール版のPython、Ruby、Perlを廃止する計画があるとも指摘しています。
MacでシステムのRubyを使えないのはなぜ?
brew install rubyやbrew uninstall rubyなど、標準のRubyバージョンを変更するコマンドを実行すると、macOSの機能に問題が生じるおそれがあります(Mac M1でも同様です)。
また、macOSにプリインストールされているRubyのバージョンは古いことにも注意が必要です。2022年製の新しいM1ノートパソコンでも、ruby 2.6.8p205が使われています。最新バージョンのRuby 3.1.2は2022年4月にリリースされており、macOSのプリインストール版からメジャーバージョンアップしています。
ローカル開発環境ではRuby 3を使いたいと思うでしょう。これだけでも、プリインストール版のRubyから移行する十分な理由になります。さらに、使うバージョンを自由に選べるようになります。これを実現するために、Rubyの仮想環境を利用します。
MacにインストールされているRubyのバージョンを確認する方法
標準でインストールされているRubyインタープリターのバージョンを確認するには、次のコマンドを実行します。
アップグレードしていない場合、macOS MontereyにはRuby 2.6.8が付属しています。アップグレード済みの場合や、rbenv、rvmなどのRubyバージョン管理ツールを使っている場合は、別のバージョンが表示されることがあります。また、macOSのパッケージマネージャーHomebrewでインストールした場合、ファイルパス/usr/local/bin/rubyにRubyが見つかることもあります。
MacのRubyフォルダはどこにありますか?
Rubyインタープリターは、インストール先によって、macOS上の/usr/bin/rubyまたは/usr/local/bin/rubyにあることがよくあります。Ruby gemはmacOSのオペレーティングシステムによって標準でインストール、管理されるため、sudo gem installの使用やRuby gemへの変更は推奨されません。代わりに、rbenvなどのツールを使ってRubyの仮想環境をインストールすることを検討してください。
Rubyの仮想環境
ほかのプログラミング言語やツールでもおなじみの便利な仕組みが、Rubyの仮想環境です。PythonのvirtualenvやNode.jsのnvmを使ったことがあれば、Rubyのvirutalenvへの移行も簡単でしょう。始めるには、rbenvやrvmなど、Rubyエコシステムのツールをいくつか用意するだけです。
これらのツールは、Rubyのソースコードをインターネットから取得してローカルでコンパイルし、指定したパスから利用できるようにすることで、Macに標準搭載されたRubyとの競合を回避します。その後、新しいディレクトリのパスを使用するシェルに追加するよう指示されます。これにより、新しいターミナルを開いたときに新しいRubyバージョンを使えるようになります。
これらは基本的にRubyのバージョン管理ツールで、設定されたRubyのインストールディレクトリに応じて、必要なときに異なるRubyランタイムバージョンをすばやく切り替えられます。
rbenvとrvm、どちらを使うべき?
よく使われているRubyの仮想環境ツールには、rbenvとrvmがあります。業界の進化に伴い、特定の環境ツールやバージョンは古くなる傾向があるため、rbenvとrvm1の機能を詳しく比較することはしません。その代わりに、Rubyに詳しい開発者仲間に意見を聞き、大多数がすすめていたrbenvを選びました。
まだ試していませんが、注目に値するほかのRuby仮想環境マネージャーとして、chrubyとruby-installがあります。
rbenvを使ってみましょう
オープンソースのrbenvプロジェクトはGitHubで公開されています。問題への対応や最新ドキュメントの確認には、rbenv READMEが役立ちます。
rbenvでRubyをインストールする方法
ほかの多くのツールと同じく、macOSで人気のパッケージマネージャーHomebrewを使います。ターミナルで次のコマンドを実行してください。
インストールが完了したら、rbenvを使ってシェルを設定します。これにより、新しいターミナルウィンドウを開いてプロンプトからコマンドを入力するたびに、macOSにプリインストールされているRuby 2.6.8ではなく、rbenvで独自にインストールしたRubyランタイムバージョンが使われるようになります。
rbenvをシェルに設定するには、次のコマンドを実行します。
追加の設定が必要な場合は、画面に表示される手順に従ってください。シェルの設定ファイルにコマンドを貼り付けるよう求められることがあります。macOSのデフォルトであるZ Shell(ZSH)を使っている場合は、次のコード行を~/.zshrcファイルの先頭に追加してください。
これでrbenvのインストールは完了です。正しく設定できたか診断チェックを実行して確認してもよいでしょう。rbenvのGitHubプロジェクトが提供するrbenv-doctorツールを使うには、次のコマンドを実行します。
新しいターミナルウィンドウを開き、新しいrbenv環境を読み込みます
次のコマンドを実行します。
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh
警告:このコマンドを安易に実行しないでください。公開されているオープンソースのGitHubリポジトリ由来のコマンドを、開発環境のシェルにパイプで渡すことになります。悪意ある第三者がソースコードを改ざんしている可能性もあるため、実行する前に必ずコードを十分に確認してください。
rbenvで新しいRubyバージョンをインストールする方法
Rubyの仮想環境を構築できましたね。rbenvの設定が完了したので、これを使ってRubyのバージョンをすべて管理できます。
まず、インストール可能なRubyバージョンを一覧表示して、最新リリースまたは必要な特定のバージョンを選びます。rbenvでRubyの全バージョンを一覧表示するには、次のコマンドを実行します。
実行結果は次のとおりです。
表示されたRubyバージョンのいずれかをインストールできます。rbenvを使ってRuby 3.1.2をインストールしてみましょう。
このコマンドを実行すると、必要なソースコードファイルの取得が始まり、展開、コンパイルを経て、シェルから利用できるRuby 3.1.2ランタイムバージョンがインストールされます。
インストールが完了したら、シェルを起動するたびに選択したバージョンが使われるように設定します。そのためには、次のコマンドを実行します。
最後に、シェルでruby --versionを実行して、想定どおりに動作することを確認できます。次のような結果が表示されます。
最後に、rbenv globalについて補足します。コマンド名がglobalなので、実行するとmacOSのプリインストール版Rubyに何らかの影響があるのではないかと心配していました。しかし、その心配はありません。このコマンドが指すのは、rbenvの設定ファイル~/.rbenv/versionで管理されるユーザー全体の設定です。特定のRubyプロジェクトやディレクトリに紐づかないという意味です。
次にやることは?
Ruby on RailsとRubyのセキュリティ脆弱性
Rubyの開発に取りかかる前に、安全なコーディング規約に従い、Ruby gemを脆弱性から守るために、以下のリソースをご覧ください。フレームワークのRuby gemに起因するRuby on Railsの脆弱性にも、一般的なRubyのセキュリティ脆弱性にも役立ちます。
Rubyの開発とセキュリティに関する、次のリソースを強くおすすめします。
Ruby開発が初めての方や、Rubyのオープンソース依存関係の仕組みがよくわからない方は、Ruby gemの依存関係管理を徹底解説したガイドをご覧ください。
セキュリティ脆弱性が自分のプロジェクトにも影響するとは思えない方は、DeveloperSteveのブログ記事Snykを使ったRuby Gemfileのセキュリティ強化:ステップごとのガイドをぜひご覧ください。Ruby向けのSnykセキュリティツールでいくつかのプロジェクトをスキャンしています。Snykは無料で利用でき、Rubyをすぐに始められます。
最後に、Rubyを含むさまざまなエコシステムで発生しているサプライチェーン攻撃により、悪意あるリモートコード実行やRuby gemのその他のセキュリティリスクが生じる可能性があることも忘れずに注意してください。
無料のRubyコードチェッカーを今すぐお試しください。Snyk Codeエンジンが、コードのセキュリティと品質に関する問題をどのように分析するか確認できます。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。



