Skip to main content

ローカル開発用に macOS に Ruby をインストールする方法

著者:
wordpress-sync/blog-feature-ruby-security

2022年9月27日

0 分で読めます

Ruby または Ruby on Rails 開発を初めて行う場合は、次のことを心得ておいてください。

  1. Mac に Ruby を正しくインストールする方法

  2. brew または Ruby 2.7 Mac の既存のインストールと競合しないローカル開発環境をセットアップする方法

このチュートリアルでは、その両方を学ぶことができます。新しい macOS M1 ノートパソコンをお持ちの場合も心配は無用です。このチュートリアルは、Mac M1 に Ruby をインストールする場合にもご利用いただけます。

「brew install ruby」は実行しないこと

一部のガイドやブログ記事は、「brew install ruby」を実行して Ruby をインストールするか、「update ruby mac」コマンドを実行して macOS 上の既存の Ruby バージョンをアップデートするように指示していますが、そのいずれも行わないことを強くお勧めします。

実際、Reddit ユーザーの postmodern は、brew のインストール場所として別のディレクトリを明示的に指定できるであろうというアイデアを Ruby スレッドで共有しています。brew はデフォルトで「/usr/local」にインストールされ、postmodern によると、インタプリターの場所が「/usr/bin/ruby」にハードコーディングされているため、Apple システムの Ruby スクリプトと干渉しません。また、Apple が Python、Ruby、Perl のプリインストール バージョンを廃止予定であることも指摘されています。

Mac でシステム Ruby を使用すべきでない理由

ネイティブ Ruby バージョンを変更するコマンド (「brew install ruby」や「brew uninstall 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 インタープリターのバージョンを確認するには、次のコマンドを実行します。

1/usr/bin/ruby --version

アップグレードしていない場合、macOS Monterey バージョンには Ruby 2.6.8 が付属しています。アップグレードした場合、または rbenvrvm、その他の Ruby バージョンマネージャーを使用して 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 に簡単に切り替えることができます。使用開始に必要なのは、rbenvrvm などの Ruby エコシステムツールだけです。

これらのツールでは、インターネットから Ruby ソースコードを取得し、ローカルでコンパイルして、パスで使用できるようにすることで、ネイティブの Ruby Mac バージョンとの競合が回避されます。ユーザーは、選択したシェルにこの新しいディレクトリパスを追加するように指示されます。これを行うことで、新しいターミナルインターフェイスを開いたときに新しい Ruby バージョンを使用できるようになります。

これらのツールは基本的に Ruby のバージョンマネージャーであり、設定された Ruby インストールディレクトリに応じて、複数の異なる Ruby ランタイムバージョン間をすばやく切り替えることができます。

rbenv と rvm のどちらを使用すべきか

Ruby 仮想環境ツールとしてよく知られているのは、rbenvrvm の 2 つです。特定の環境ツールやバージョンを取り上げても、業界の発展や進歩に伴ってすぐに最新情報ではなくなるため、ここでは rbenvrvm1 の機能マトリックスの詳細な比較は行いません。その代わりに、Ruby に精通している開発者の友人に意見を求め、その大多数から勧められた rbenv を使用することにします。

詳しく調べていないものの、注目に値するその他の Ruby 仮想環境マネージャーとしては、chrubyruby-install があります。

rbenv を使い始める

GitHub でホストされているオープンソースの rbenv プロジェクトは、問題に対処したり、rbenv README から最新のドキュメントを入手したりするのに最適な場所です。

Ruby rbenv のインストール方法

他の多くのツールと同様に、広く使用されている Homebrew macOS パッケージマネージャーを使用します。ターミナルで次のコマンドを実行します。

1brew install rbenv ruby-build

すべてがインストールされたら、シェルをセットアップするよう rbenv に指示する必要があります。新しいターミナルウィンドウを開いてプロンプトにコマンドを入力するときは常に、(macOS にプリインストールされている Ruby 2.6.8 バージョンではなく) rbenv でカスタムインストールした Ruby ランタイムバージョンを使用します。

シェルで rbenv をセットアップするには、次のコマンドを実行します。

1rbenv init

追加の設定が必要な場合は、画面に表示される手順に従ってください。シェルの設定にコマンドを貼り付けるよう求められる場合があります。macOS を使用していて、デフォルトの Z Shell (ZSH) から変更していない場合は、「~/.zshrc」ファイルの先頭に次のコード行を追加してください。

1eval "$(rbenv init - zsh)"

rbenv のインストールプロセスが完了しました。すべて正しく設定されていることを確認するために、診断チェックを実行することもできます。その場合は、rbenv GitHub プロジェクトが提供している rbenv-doctor ツールを実行します。

  1. 新しいターミナルウィンドウを開いて、新しい rbenv 環境をロードします。

  2. 次のコマンドを実行します。

    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

警告:このコマンドを実行すると、公開およびオープンソースの GitHub リポジトリからのコマンドが開発環境のシェルにパイプされることになるため、慎重に扱う必要があります。悪意のある攻撃者がソースコードを改ざんしている可能性があるため、このコマンドを実行する前にコードの確認を適切に行っておくことを強くお勧めします。

rbenv を使用して新しい Ruby バージョンをインストールする方法

独自の Ruby 仮想環境のビルドが完了しました。正しく機能する rbenv セットアップを入手したので、それを使用して Ruby のバージョン管理を行うことができます。

まず、インストール可能な Ruby のバージョンをリストして、最新の Ruby リリースや、必要な特定のバージョンを選択できるようにします。rbenv を使用してすべての Ruby バージョンをリストするには、次のコマンドを実行します。

1curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

出力は次のようになります。

12.6.10
22.7.6
33.0.4
43.1.2
5jruby-9.3.6.0
6mruby-3.1.0
7picoruby-3.0.0
8rbx-5.0
9truffleruby-22.1.0
10truffleruby+graalvm-22.1.0
11
12Only latest stable releases for each Ruby implementation are shown.
13Use 'rbenv install --list-all / -L' to show all local versions.

これらの Ruby バージョンのいずれかのインストールに進みます。ここでは、rbenv を使用して Ruby バージョン 3.1.2 をインストールすることにしましょう。

1rbenv install 3.1.2

このコマンドにより、適切なソースコードファイルのフェッチが開始され、シェルで利用可能な Ruby 3.1.2 ランタイムバージョンが抽出、コンパイル、インストールされます。

インストールが完了したら、シェルが起動するたびにこのバージョンが選択されるように設定する必要があります。それを行うには、次のコマンドを実行する必要があります。

1rbenv global 3.1.2

最後に、シェルで「ruby --version」を実行すると、次のような結果が出力され、Ruby が期待どおりに動作していることを確認できます。

1ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

まとめる前に、「rbenv global」に関する注意事項を 1 つ示しておきます。コマンドの名前に「global」が含まれているため、このコマンドを実行すると、プリインストールされている macOS Ruby バージョンと何らかの干渉が生じるのではないかという懸念がありましたが、問題ありませんでした。このコマンドは、グローバルユーザー設定 (「~/.rbenv/version」にある rbenv 設定ファイル) を参照するため、特定の Ruby プロジェクト/ディレクトリに拘束されません。

次のステップは何でしょうか。

Ruby on Rails の脆弱性と Ruby のセキュリティ脆弱性

Ruby の開発作業に取り掛かる前に、以下の資料に目を通して、セキュアコーディング規則に従っていることを確認し、Ruby gem を脆弱性から保護してください。これらの資料は、一般的な Ruby のセキュリティ脆弱性に加え、フレームワークの Ruby gem の一部として生じる Ruby on Rails の脆弱性に対処する上でも効果的です。

Ruby 開発および Ruby セキュリティに関連した次の資料を確認することを強くお勧めします。

  • Ruby 開発に慣れていない場合、または Ruby のオープンソース依存関係の仕組みを完全に理解していない場合は、Ruby gem 依存関係管理の決定版ガイドとして私の記事を参照してください。

  • セキュリティの脆弱性がプロジェクトに影響を及ぼすものであると考えていない場合は、DeveloperSteve のブログ「Better Ruby Gemfile security: A step-by-step guide using Snyk」をお読みください。Snyk の Ruby 用セキュリティツールを使用したプロジェクトのスキャンについてご確認いただけます。Snyk は無料で使用できるため、Ruby の導入をすばやく簡単に行えます。

最後に、Ruby を含むさまざまなエコシステムでサプライチェーン攻撃が発生していることを踏まえ、Ruby gem における悪意のあるリモートコード実行などのセキュリティリスクに常に注意を払うことが重要です。

今すぐ無料の Ruby コードチェッカーツールを試して、Snyk コードエンジンがコードのセキュリティと品質の問題をどのように分析するかをご確認ください。

wordpress-sync/blog-feature-ruby-security

CI/CDパイプラインをレベルアップする方法

プロダクションにプッシュする前に、これらの8つのヒントでパイプ内のセキュリティ問題をキャッチする方法を確認してみましょう⭐️