Apple silicon Macで開発環境を構築


MacBook Air 2022を入手したので、Apple silicon(M1、M2)ネイティブソフトウェアのみで開発環境を整えてみる。MacBook Air 2022のmacOSは元々12.4がインストールされていたが、後にアップデートが公開されて、現在は12.5になっている。


  1. Xcode等をインストール
  2. Homebrewをインストール
  3. JDKをインストール
  4. Docker Desktopをインストール
  5. Dockerイメージの確認
  6. Rosettaが...

Xcode等をインストール

まずはiOSアプリの開発に欠かせないXcodeをインストールする。XcodeはApp Storeからインストールするだけなので、特に説明の必要もないだろう。

Chromeは以下URLからインストールできる。Apple silicon用バイナリが用意されているので、それをダウンロードする。

https://www.google.com/intl/ja/chrome/

Visual Studio Codeは以下URLからインストールできる。"Universal"か"Apple Silicon"を選択すれば良い。


https://code.visualstudio.com/download

gitは元々MacBook Airに入っていた。

% git --version
git version 2.32.1 (Apple Git-133)

Homebrewをインストール

HomebrewはMac用のパッケージマネージャで、開発に必要なソフトウェアをコマンド1つでインストールできるので事実上必須のツールである。ターミナルを開いて以下のコマンドを入力する。

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

コマンドを実行した後に、以下のようなメッセージが表示されるのでそれに従う。

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/mobile/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"

すなわち、mobileユーザであれば以下の2行を実行する。

% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/mobile/.zprofile
% eval "$(/opt/homebrew/bin/brew shellenv)"

Homebrew 3.5.7がインストールされた。

% brew -v
Homebrew 3.5.7
Homebrew/homebrew-core (git revision 7d7bf52656e; last commit 2022-08-01)

JDKをインストール

JDKは入っていないようだ。

% java -version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

JDKはHomebrewを使うと簡単にインストールできる。今回はLTSとなるOpenJDK 17をHomebrewでインストールする。/p>

% brew install openjdk@17

すると、JDKがインストールされた後に以下のようなメッセージが表示された。

For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

JDKを利用可能にするために、指示に従ってシンボリックリンクを作成する。

% sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

JDKが利用可能となった。

% java -version
openjdk 17.0.4 2022-07-19
OpenJDK Runtime Environment Homebrew (build 17.0.4+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4+0, mixed mode, sharing)

Docker Desktopをインストール

Docker Desktopは以下URLからインストールできる。"Mac with Apple Chip"を選択すれば良い。


https://www.docker.com/products/docker-desktop/

dockerもdocker-composeもインストールされた。

% docker -v            
Docker version 20.10.17, build 100c701
% docker-compose -v    
Docker Compose version v2.6.1

Dockerイメージの確認

よく使うDockerイメージを確認する。公式Debian 11イメージ。

% docker run --name debian -it debian /bin/bash
# cat /etc/debian_version 
11.4

公式Amazon Linux 2イメージ。

% docker run --name amazonlinux -it amazonlinux /bin/bash
# cat /etc/system-release
Amazon Linux release 2 (Karoo)

公式PHP 8.0イメージ。

% docker run --name php -it php:8.0 php -v
PHP 8.0.22 (cli) (built: Aug  4 2022 23:02:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.22, Copyright (c) Zend Technologies

公式MySQL 8.0イメージ。

% docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
% docker exec -it mysql mysql --password=password
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.30 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

尚、数か月前にWindowsのDocker DesktopでMySQL 8.0公式イメージから作成したコンテナでは使えていたapt-getが使えなくなっていて気付いたのだが、いつの間にか公式イメージがDebianベースからRHELベースに変わっている。

sh-4.4# cat /etc/redhat-release 
Red Hat Enterprise Linux release 8.6 (Ootpa)

日本語ロケールへの切り替え方法が異なるため、できればDebianベースのイメージを使いたかったが、残念ながらApple silicon向けはRHELベースしかないようだ。

% docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0-debian
Unable to find image 'mysql:8.0-debian' locally
8.0-debian: Pulling from library/mysql
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.

どうしてもApple siliconのMacでDebianベースのMySQL公式イメージを使いたい場合は、docker runコマンドで--platform linux/x86_64オプションを指定する等すればエミュレーションでコンテナを動かすことができるが、本稿の趣旨から外れるので詳しくは述べない。

Rosettaが...

ここまでRosetta 2をインストールせずに開発環境を構築してきたつもりだった。しかし、念の為アクティビティモニタを確認すると、種類が"Intel"の"CarbonComponentScannerXPC"というプロセスがいることに気付いた。

なんと、これはRosetta 2のプロセスらしい。何の確認もなく、勝手にインストールするなんて...誰だよ。結局ピュアなApple silicon環境はできなかった。Rosetta 2をアンインストールすることもできなくはないようだが、今後も同意なくインストールされないとも限らない。このままMacBook Airを使うことにした。

因みに、Rosetta 2をインストールした張本人かどうかは不明だが、MacBook Airを再起動すると一瞬だけ"OneDriveStandaloneUpdater"と"StandaloneUpdater"というプロセスが種類="Intel"で動いていた。



(2022/08/12)
() 各種公式イメージの検証結果を追加。

新着情報
【オープンソースソフトウェア環境構築】Apple silicon Macで開発環境を構築
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する

Copyright© 2004-2022 モバイル開発系(K) All rights reserved.
[Home]