はじめに
記事をご覧いただきありがとうございます。
現在、Mac M4(Apple Silicon)環境でRails開発を始める準備を進めています。
その際にいただいた指示がこちらでした。
- arm64で構築する
- Rosettaは使わない
- Ruby 3.4.3を入れる
- Rails(最新)を入れる
- PostgreSQL / Nodeを入れる
- rbenvまたはmiseでバージョン管理
- AIツール(Claude / ChatGPT)を活用できるようにする
この記事では、
Mac M4でRails開発環境をarm64ネイティブで構築するにあたり、自分なりに整理・理解した内容 をまとめます。
目次
1. arm64とは何か
Mac Mシリーズ(M1〜M4)は、Appleが設計した Apple Silicon を搭載しています。
重要なのは、CPUアーキテクチャの違いです。
| 世代 | アーキテクチャ |
|---|---|
| Intel Mac | x86_64 |
| Apple Silicon | arm64 |
Apple SiliconはIntelとは設計思想の異なるCPUです。
そのため、
- Intel向けにビルドされたソフトウェア
- arm64向けにビルドされたソフトウェア
は内部的に別物として扱われます。
この違いを理解せずに環境を構築すると、
x86_64とarm64が混在し、原因不明のエラーが発生する可能性があります。
2. なぜRosettaを使わないのか
Rosettaとは、
Intel向けアプリケーションをApple Silicon上で動作させるための変換レイヤー
です。
非常に優秀な仕組みですが、
- ネイティブ実行ではない
- Intel版とARM版が混在するリスクがある
- 将来的にはARMネイティブが前提になる
といった点を踏まえ、
最初からarm64ネイティブで構築した方が、再現性・保守性が高い
という判断だと理解しました。
3. Rails開発に必要な依存関係の整理
今回の構成における主要コンポーネントは以下の通りです。
- Ruby(実行環境)
- Bundler(Gem管理)
- Rails(フレームワーク)
- PostgreSQL(データベース)
- Node(JavaScriptビルド用)
- Xcode Command Line Tools(ネイティブ拡張ビルド用)
- Homebrew(パッケージ管理)
Rubyのネイティブ拡張やPostgreSQLのビルドが絡むため、
arm64で統一することが重要になります。
4. rbenvとmiseの比較検討
バージョン管理ツールとして候補に挙がったのが以下です。
- rbenv
- mise
| 項目 | rbenv | mise |
|---|---|---|
| Ruby管理 | ○ | ○ |
| Node管理 | × | ○ |
| 複数言語管理 | × | ○ |
今回の構成では、
- Ruby
- Node
両方を管理する必要があるため、
複数言語を一元管理できるmiseを採用するのが合理的
だと理解しました。
将来的にその他ツールを導入する場合にも拡張性があります。
5. 実際のセットアップ手順
1. Xcode Command Line Tools
xcode-select --install
2. Homebrew(arm64版)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
3. mise
brew install mise
4. Ruby 3.4.3
mise use -g ruby@3.4.3
5. Bundler / Rails
gem install bundler
gem install rails
6. PostgreSQL
brew install postgresql
7. Node
mise use -g node@20
Rails起動確認
rails new プロジェクト名 -d postgresql
cd プロジェクト名
bin/rails db:create
bin/rails s
http://localhost:3000 にアクセスし、Railsの初期画面が表示されることを確認しました。
6. AIツールの使い分け
開発ではGitHub Copilotを使用していますが、
エディタ内だけでは作業領域が狭く感じたため、Claude Codeの導入も指示されました。
Claude Code
- コマンド生成
- エラー原因の分析
- ログ解釈
ChatGPT
- ツール比較検討
- 要件整理
Copilot
- コード補完
- Rails構成の補助
実行はClaude、整理はChatGPT、補完はCopilotという役割分担で開発を進めています。
本記事が、同様の環境構築を行う方の参考になれば幸いです。
最後まで読んでいただきありがとうございました。
