Ruby on Rails の環境構築(Mac版・Apple Silicon)

【注意】こちらは 2020年以降に発売された Apple シリコン の Mac を前提としております。2019年以前に発売された Intel プロセッサの Mac の方は こちら をご覧下さい。
「どちらか分からない」という方は,ターミナル(「Spotlight検索」で「terminal」もしくは「たーみなる」と入力すれば出てきます)を起動し,
以下を実行することで確認ができます。

ターミナル
sysctl machdep.cpu.brand_string

Apple M1 が含まれている場合はこの教材,Intel が含まれている場合は こちら を参照下さい。


【注意】 ネットワーク通信量が大きいため,ご注意下さい。

1. 準備

1.1 アプリの開き方

  • Macのアプリを開く方法はいろいろあります
    • Dock(一番下のメニュー)から開く
    • Lanchpadから開く
    • Spotlight検索から開く
    • ターミナルから開く

特に,Dockに入っていないアプリはSpotlight検索から起動する方法が便利です。
方法は2通りありますが,なるべくショートカットキーで覚えましょう。

  • 右上の虫眼鏡マークをクリック
  • command(⌘) + Spacecommand(⌘)キーを押しながらSpaceキーを押す)

Spotlight検索で,例えば「メモ」と入力すると,「メモ」「ボイスメモ」などのアプリが候補として出てきます。ファイル検索も可能です。

1.2 Google Chromeのインストール

Macには Safari というブラウザが用意されておりますが,現在最も使用されているブラウザは Google Chrome です。

Railsアプリの開発で必須といっても過言ではありませんので,まだインストールされていない方は,このタイミングで導入しておきましょう。

Google Chromeをフォルダにドラッグ&ドロップする作業が終わりましたら,Spotlight検索で「chrome」と入力すれば候補に出ます。必要があればDockに追加しておきましょう。

1.3 Visual Studio Code

1.3.1 コードエディタ

プログラミングをする上で必須となるのが「コードエディタ」です。参考までに現在有名なエディタを列挙します。

2021年11月現在において,最もお勧めできるのは,VS Codeです。
無料でありながら,動作が軽快かつ拡張機能が豊富なエディタで,使用率も1位です。

以下,VS Codeをインストールする前提で進めていきます。

1.3.2 VS Codeのインストール

  • 次のリンクからVS CodeのMac版をダウンロード

  • 右下のDockにアイコンが追加されるのでそれをクリック

  • ダウンロードフォルダが表示されたら,Visual Studio Codeを「アプリケーション」フォルダに移動し,「アプリケーション」フォルダから開いてください。

「悪質なソフトウェアかどうかをappleでは確認できないため……」のような表示が出た場合は,アプリをダブルクリックするのではなく,右クリック(トラックパッドなら2本指でクリック)で出てくるメニューの「開く」をクリックして,「開く」をクリックして下さい。

1.3.3 VS Codeの日本語化

初期設定は英語です。日本語で使用されたい場合は,以下の設定を行って下さい。

  • 一番左に5つあるアイコン一番下のExtensionsをクリックし,「Japanese」で検索

  • 一番上の「Japanese Language Pack for Visual Studio Code」を選択し,Installボタンをクリック

  • 右下に現れるRestart Nowボタンをクリック

  • VS Codeが再起動され,日本語化されます

1.3.4 パスを通す

以下の作業を行うと,ターミナルからVS Codeを簡単に開くことができるようになります。
とても便利なので是非設定しておきましょう。

  • 左下の歯車マークをクリックし,コマンドパレットをクリック

  • shellと入力して出てくる「シェルコマンド: PATH内に 'code' コマンドをインストールします」をクリック

  • パスワードを聞かれた場合は,Macのパスワード(macの初期設定で決めたパスワード)を入力してEnterキーを押して下さい

    • 入力しても表示が変わりませんが入力できています

以上で設定は終了です。動作確認をしてみましょう。

  • まず,VS Codeを閉じて下さい

  • 「ターミナル」を起動して下さい

    • 「Spotlight検索」で「terminal」もしくは「たーみなる」と入力すれば出てきます
  • 「ターミナル」で code と入力して実行(Enterキーを押す)

  • VS Codeが起動すればOKです

code .を実行すると,カレントディレクトリをVS codeで開くことができます)

1.3.5 自動保存

「保存のし忘れ」でコードが反映されないケースがよくあります。
VS Codeには,自動で保存する設定がありますので,設定をお勧めします。

  • 左下の歯車ボタンをクリックし,「設定」をクリック
  • 「autosave」と入力
  • 「Auto Save」の項目の「Off」を「OnFocusChange」に変更

【補足】より細かい調整については,後の教材で紹介しております。

1.4 Homebrewのインストール

Homebrew

【注意】ターミナルは Rossetta を使用して開かないようにして下さい。使用しているかどうかが分からない方は,次の画像を参考に確認して下さい。

Rosetta

MacOS では特に有名なパッケージ管理システムである Homebrew をインストールしておきましょう。

Homebrew をインストール済みがどうかが不明な場合は,ターミナルから次を実行して下さい。

ターミナル
brew -v

Homebrew 3.3.2 のようなバージョン情報が表示されればインストール済みですので,brew updateを実行した上で次に進んでOKです。(バージョンの数字は異なっていても構いません)

command not found: brew と表示された場合は,まだインストールできていませんので,以下をペーストして Enter キーを押して下さい。

ターミナル
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

【注意】環境構築に関するコマンドは原則コピペするようにしてください。1文字のミスで原因追求に膨大な時間を浪費することになります

次の画像のような「パスワード入力画面」になりましたら, Mac で設定したパスワードを入力し,Enterキーを押して下さい。
(入力しても何も表示されませんが,これはセキュリティを考慮したターミナルの仕様です)

Homebrew:パスワード入力

次に press RETURN to continue or any other key to abortと表示されたら,「Enterキー」を押して下さい。

インストールが完了したら,パスを通す必要があるのですが,実行環境の シェル の種類により方法が異なります。

シェルの種類を確認するため,次をターミナルから実行して下さい。

ターミナル
echo $SHELL

出力結果を確認し,対応する方のコマンドをターミナルから実行して下さい。

ターミナル
# 実行結果が /bin/zsh の場合

echo 'export PATH="/opt/homebrew/bin:$PATH"' >>  ~/.zprofile

# 実行結果が /bin/bash の場合

echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.bash_profile

さらに次を実行し,シェルを再起動して下さい。

ターミナル
exec $SHELL -l

インストールできているかどうかの確認のため,ターミナルから次のコマンドを実行して下さい。

ターミナル
brew -v

Homebrew 3.3.2のようなバージョン情報が表示されればOKです。(バージョンの数字は異なっていても構いません)

1.5 Git のインストール・課題提出

以下の教材の 0章 を参考にGitのインストールなどを行なって下さい。

https://www.yanbaru-code.com/texts/317

さらに,以下のGitの課題を先に済ませることをお勧めします。

https://github.com/yoshitokamizato/joint_dev_task/blob/master/1_Git%E8%AA%B2%E9%A1%8C.md

2. Rubyの環境構築

Macには最初からRubyがインストールされていますが,Railsの学習を進める中で,いずれ複数のRubyのバージョンを用いる機会が出てきます。

そのため,rbenv(アールビー・エンブ)という Ruby のバージョン管理ツールをインストールし,複数のバージョンの Ruby を利用できる状態にしておきましょう。

2.1 rbenvのインストール

Ruby のバージョン管理ツールである rbenv をインストールしましょう。次を実行して下さい。

ターミナル
brew install rbenv

(すでにインストール済みの方は brew upgrade rbenv ruby-build を実行してから 2.2.3 に進んで下さい)

次に rbenv のパスを通しましょう。対応する方のコマンドを実行して下さい。

ターミナル
# zsh の場合

echo 'export PATH="~/.rbenv/shims:$PATH"' >>  ~/.zprofile
echo 'eval "$(rbenv init -)"' >>  ~/.zprofile

# bash の場合

echo 'export PATH="~/.rbenv/shims:$PATH"' >>  ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

次を実行し,シェルを再起動して下さい。

ターミナル
exec $SHELL -l

次を実行し,バージョン情報が表示されればOKです。

ターミナル
rbenv -v

2.2 Rubyのインストール

それでは, rbenv を利用して Ruby のインストールを行いましょう。

まず,最新のRubyの安定バージョンを確認して下さい。次のコマンドで最新の10個のバージョンを確認できます。

ターミナル
rbenv install -L | grep -v - | tail -n 10

例えばバージョン 3.1.0 をインストールする場合は,次を実行します。

ターミナル
rbenv install 3.1.0

インストールが完了したら,インストールできているかどうかの確認のため,ターミナルに次のコマンドを入力して下さい。指定したバージョンが含まれていればOKです。

ターミナル
rbenv versions

Rubyで使用するデフォルトのバージョンを 3.1.0 に設定する場合は,次を実行して下さい。

ターミナル
rbenv global 3.1.0

シェルの再起動後,Rubyのバージョンを確認して下さい。指定したバージョンが表示されればOKです。

ターミナル
exec $SHELL -l
ruby -v

3. Node.js, Yarn のインストール

3.1 Node.jsのインストール

Rails が必要とする Node.js をインストールしましょう。

Node.js は直接 Homebrew からインストールすることもできるのですが,Rails が使用する node-sass が node のバージョン14以下にしか対応していません。

また, Node.js も Ruby 同様,複数のバージョンを使用することになることと思いますので,バージョン管理ツール経由でインストールすることとしましょう。

ここでは, Node.js のバージョン管理ツールの1つである nodenv 経由でインストールすることとします。

nodenv をインストールするため,先に anyenv をインストールしましょう。

ターミナル
brew install anyenv

rbenv 同様,シェルに応じてパスを通しましょう。

# zsh の場合

echo 'eval "$(anyenv init -)"' >>  ~/.zprofile

# bash の場合

echo 'eval "$(anyenv init -)"' >> ~/.bash_profile

シェルの再起動後,先ほどインストールした anyenv 経由で nodenv をインストールしましょう。

ターミナル
exec $SHELL -l
anyenv install nodenv

シェルの再起動後,インストールができているかどうかを確認するため,バージョンを確認しておいて下さい。

ターミナル
exec $SHELL -l
nodenv -v

次に Node.js をインストールしましょう。次を実行することで,ダウンロードしたいバージョン14の最新5件が一覧表示されます。

ターミナル
nodenv install -l | grep -E "^14\." | tail -n 5

例えば 14.18.1 をインストールして使用する場合は次を実行して下さい。

ターミナル
nodenv install 14.18.1
nodenv global 14.18.1

シェルの再起動後,指定したバージョンになっているかどうかを確認しておいて下さい。

ターミナル
exec $SHELL -l
node -v

3.2 Yarnのインストール

Rails 6 のアプリを作成するには, JavaScript のパッケージマネージャである Yarn もインストールしておく必要がありますので,次を実行しましょう。

ターミナル
brew install yarn

次を実行し,バージョンが表示されればOKです。

ターミナル
yarn -v

4. Ruby on Rails の環境構築

ターミナルから次を実行して下さい。

ターミナル
which ruby

/Users/ユーザー名/.rbenv/shims/rubyが表示されればOKです。

/usr/bin/rubyと表示された場合は,Rubyがrbenvで管理されていませんので,先に「2. 」に記載した設定を行って下さい。

4.1 Bundlerのインストール

gemRuby のライブラリ)のバージョン管理ツールである Bundler をインストールしましょう。バージョンが表示されることも確認して下さい。

ターミナル
gem install bundler
bundler -v

4.2 Railsのインストール

ここでようやく Ruby on Rails をインストールしましょう。

ターミナル
gem install rails
exec $SHELL -l
rails -v

バージョンが表示されればOKです。

4.3 動作確認

これで最低限の準備ができました。Rails のアプリを作成できるか確認しましょう。

テスト用のアプリですので, デスクトップ に作成する前提で進めることとします。
次を実行し,「デスクトップ」に cd コマンドで移動して Rails アプリを作成しましょう。

ターミナル
cd ~/desktop
rails _6.1.4.4_  new rails6_app

rails new アプリ名 コマンドで,カレントディレクトリに指定した「アプリ名」のディレクトリが作成され,その中に Rails アプリのベースとなるディレクトリやファイルが作成されます。
_バージョン_ の表記でバージョンを指定することができます)

初回実行時は, gem(Rubyのライブラリ)のインストールでかなり時間がかかります。Webpacker successfully installed が表示されれば成功です。

アプリのディレクトリに移動しましょう。

ターミナル
cd rails6_app

今回はデフォルトの状態で Rails サーバーを起動してみましょう。

ターミナル
rails s

Use Ctrl-C to stop が表示された後に,ブラウザで http://localhost:3000/ のURLにアクセスして下さい。

画像のような「Yay! You're on Rails!」が表示されればOKです。

Yay! You're on Rails!

確認が終わりましたら,ターミナルにて control + c でサーバーを停止させてください。

4.4 PostgreSQLの導入

アプリを作成する際,特に指定しなければデータベースシステムが SQ Lite3 になります。

テストアプリを作成される場合は問題ありませんが,ポートフォリオを作成するような場合に使用することはお勧めできません。

データベースシステムは PostgreSQL もしくは MySQL を指定するべきです。

MySQL はエラー解決が大変になるケースが多く,また,最初のデプロイ先として利用する Heroku のデフォルトデータベースシステムが PostgreSQL であることを踏まえ,初学者の方には PostgreSQL をお勧めしております。

データベースシステムに PostgreSQL を指定してRailsアプリを作成するには,先に PostgreSQL をインストールし,起動しておく必要があります。

PostgreSQL をインストール済みで起動しているかどうかが分からない場合は次を実行して下さい。

ターミナル
ps x | grep -v grep | grep postgresql

何も表示されなければ,次の2つのコマンドを実行して下さい。

ターミナル
brew install postgresql
brew services start postgresql

次を実行すれば PostgreSQL を起動できているかどうかを確認できます。

ターミナル
brew services list

postgresql started で始まる1行が表示されればOKです。次に, PostgreSQL に直接接続できるかどうかを確認してみましょう。

ターミナル
psql postgres
#  postgres=# で始まる状態になっている(PostgreSQL に接続している)ことを確認

\l
# 注意: バックスラッシュの後は 1 ではなく,アルファベット小文字の「エル」です
# List of databases が表示されればOK

exit;

(何らかの事情で,パスワードなどしっかり設定されたい方は別途調べて下さい。ただし,Railsアプリのdatabase.ymlを毎回調整する必要が出てきます)

それでは,データベースを PostgreSQL に指定してアプリを作成してみましょう。
-d postgresql を追加することで,データベースを PostgreSQL に指定できます。

ターミナル
cd ~/desktop
rails _6.1.4.4_  new rails6_psql_app -d postgresql
cd rails6_psql_app

データベースシステムに PostgreSQL もしくは MySQL を指定した場合は,アプリが使用するデータベースを作成しておく必要があります。

ターミナル
rails db:create

今回は,scaffold コマンドでメッセージ投稿機能を付けましょう。

ターミナル
rails g scaffold Post body:string
rails db:migrate

Rails サーバーを起動しましょう。

ターミナル
rails s

Use Ctrl-C to stop が表示された後に,ブラウザで今回は http://localhost:3000/posts のURLにアクセスして下さい。

無調整なので全て英語ですが, New Post からメッセージを投稿できます。Back で戻ると一覧表示画面に戻り, Edit / Destroy から編集・削除ができればOKです。

確認が終わりましたら,ターミナルで control + c でサーバーを停止させてください。
(後の都合上,1件以上投稿を残した状態にして下さい)

4.5 Posticoのインストール

PostgreSQLのデータベースの中身を確認されたい場合は Postico というGUIソフトが便利です。無料でも十分利用できますので,インストールされるとよいでしょう。

https://eggerapps.at/postico

こちらのページの Download ボタンをクリックし,zipファイルを解凍して出てくる Postico をアプリケーションディレクトリに移動した上で,実行して下さい。

特別な設定をされていなければ,画像のように Databasepostgres にして Connect ボタンを押せば接続できます。(今後使いやすいように Nickname も指定されるとよいでしょう)

postico

左上の「localhost」をクリックすれば,データベース一覧が表示されます。

Posticoデータベース一覧

「rails6_psql_app_development」をダブルタップし,左側の「posts」テーブルをダブルタップして,先ほど投稿したデータが入っているかを確認してみましょう。

Postico: postsテーブル

再度 rails s で Rails サーバーを起動し,ブラウザからメッセージの新規投稿を行った後に, Postico の右上のほうにある更新ボタンをクリックすると,データが更新されることも確認してみてもよいでしょう。(確認後に control + c でサーバーを停止させて下さい)

Postico:リロード

確認が終われば,テスト用のデータベースは必要がないので,「rails6_psql_app_development」「rails6_psql_app_test」の両方を削除しておきましょう。

PostgreSQL:データベース削除

4.6 MariaDBのインストール

(MariaDB の導入は必須ではありませんので,エラーを解決できない場合は後回しにして構いません)

次にもう一つよく使用されるデータベースシステムである MySQL もインストールしておきましょう。

ただ, MySQL は Oracle に買収されたことで,MySQL から派生した MariaDB がデフォルトになりつつあり,AWS EC2 の Amazon Linux 2 でもデフォルトは MariaDB になっていますので,ここでは MariaDB をインストールする前提で進めます。
(MariaDB は MySQL とほぼ同じように使用できます。どうしてもMySQLをインストールされたい方は3.8を参考にして下さい)

先に,MySQLをインストール済みで起動していないか確認して下さい。

ターミナル
ps x | grep -v grep | grep mysql

何か表示された場合は,すでに MySQL がインストールされて起動済みです。状況次第ではインストール済みの MySQL を停止,もしくは削除する必要があります。

何も表示されていない場合は,次の2つのコマンドを実行して下さい。

ターミナル
brew install mariadb
brew services start mariadb

次を実行すれば MariaDB を起動できているかどうかを確認できます。

ターミナル
brew services list

mariadb started で始まる1行が表示されればOKです。次に,sudo なしで root アカウントで接続できるようにしておきます。
(何らかの事情で,パスワードなどしっかり設定されたい方は別途調べて下さい)

ターミナル
mysql
# MariaDB [(none)]> が表示されている(MariaDBに接続できている)ことを確認

GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA mysql_native_password;
FLUSH PRIVILEGES;
exit;

mysql -u root
# MariaDB [(none)]> が表示されている(MariaDBに接続できている)ことを確認
exit;

さらに次を実行すれば準備が完了です。

ターミナル
bundle config --global build.mysql2 "--with-ldflags=-L/opt/homebrew/opt/openssl/lib"
exec $SHELL -l

それでは,データベースシステムを Mariadb に指定してアプリを作成してみましょう。
-d mysql を追加することで,データベースシステムを Mariadb に指定できます。

ターミナル
cd ~/desktop
rails _6.1.4.4_  new rails6_mysql_app -d mysql
cd rails6_mysql_app
rails db:create

今回も,scaffold コマンドでメッセージ投稿機能を付けましょう。

ターミナル
rails g scaffold Post body:string
rails db:migrate

Rails サーバーを起動しましょう。

ターミナル
rails s

Use Ctrl-C to stop が表示された後に,ブラウザで今回は http://localhost:3000/posts のURLにアクセスして下さい。

確認が終わりましたら,ターミナルで control + c でサーバーを停止させてください。
(後の都合上,1件以上投稿を残した状態にして下さい)

4.7 Sequel Ace

MySQL のデータベースの中身を確認されたい場合は Sequel Ace というGUIソフトが便利です。(ネット上でよく見かける Sequel Pro は開発が終了しております)

App Store で「Sequel Ace」で検索すればアプリが見つかるでしょう。

アプリを開いたら,TCP/IP タブを選択されていることを確認した上で,次のように記載しましょう。

項目 内容
Name localhost(任意)
Host localhost
Username root(変更したい場合はそちらを記入)
Password (設定していなければ記入不要)
Database 無記入でOK
Port 無記入でOK

次回から設定を省けるよう Add to Favorites ボタンをクリックしてお気に入り登録をした上で,Connect ボタンをクリックしましょう。

Sequel Ace

左上の Choose Database... のプルダウンメニューでデータベースを選択できます。

データベースの削除は,次の画像のようにアプリケーションメニューから行います。「rails6_mysql_app_development」「rails6_mysql_app_test」は削除しておきましょう。

Sequel Ace:データベース削除

最後にデスクトップに作成した「rails6_app」「rails6_psql_app」「rails6_mysql_app」は削除して下さい。

これで Ruby on Rails の環境構築は終了です。お疲れ様でした!

4.8 【補足】MySQL5.7のインストール

(MariaDBをどうしても避けたい方のみご覧下さい。絶対に MariaDB と MySQL の両方をインストールしないで下さい)

ターミナル
brew install mysql@5.7
brew services start mysql@5.7
brew link mysql@5.7 --force
ターミナル
# zshの場合
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zprofile

# bashの場合
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
ターミナル
bundle config --global build.mysql2 "--with-ldflags=-L/opt/homebrew/opt/openssl/lib"
exec $SHELL -l