M1 Pro/Maxを積んだMacbook proの販売が始まり、メモリ32GBがこれでやっと選べるという今日このごろ。
日々Magento に泣かされている と戦っている自分としては、ぼちぼちM1 Macを開発機の候補に入れるかなと思い始めました。
というわけで備忘録です。一切の保証はしませんのであしからず。
M1 Macを買ってくる
とりあえず、四の五の言わずにM1 Macbook Airを買ってきました。
さすがにメモリ8GBはDockerを動かす上で不足なので、16GBモデルです。
あとはこだわるポイントとしてUSキー。これは他の端末も揃えているので譲れません。
OSアップデートをする
Big surで検証しても良いのですが、新しいマシンは新しいOSを入れたくなります。
ということでMontereyをインストールします。
このへんまではお約束です。
Docker for Macを入れる
Apple Silicon用のDocker for Macをダウンロードしてきてインストールします。
このとき、Rosettaを入れろと言われます。ネイティブ対応したんちゃうんかい!と思いはしますが、仕方ないので黙って入れます。
Homebrewを入れる
gitやその他諸々を入れたいので、Homebrewを入れます。ここもまあ開発用に使う人はみんなやりますよね(たぶん)。
入れたあとは必要なパッケージ類をゴリゴリ入れます。
今回は動作検証だけなので、
- git
- composer
をとりあえず入れておきます。
Magentoのソースを取ってくる
さて、ここでMagentoのソースを取ってきます。
- githubから開発版をcloneする
- composerで正式リリース版をインストールする
という2通りの方法がありますが、今回は後者でいきます。
Marketplaceの認証情報を設定する
composerでインストールする場合は、公式Marketplaceの認証情報が必要です。
5年くらい前から手順的には変わっていないので、わからない方は
を読んでいただけると良いかな、と。
PHPを8.0から7.4に変更する
現時点のMagentoはPHP8には対応していません。次の2.4.4でPHP8に対応する予定です。
が・・・。Montereyの標準PHPバージョンは8なので、composer create-projectしようとするとコケます。
仕方がないので、
brew install php@7.4
でPHP7.4をインストールし、
brew unlink php && brew link php@7.4
で切り替えます。切り替え時に.zshrcに追記する内容が示されるので、忘れずに実行しておきましょう。
気を取り直して、composer create-project
PHP7.4に切り替えたら、気を取り直してcomposer create-projectを実行します。
php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition <Magento2をインストールしたいディレクトリ>
Magentoの動くDocker環境を作る
M1 Macといえば・・・
- Dockerは対応イメージなら動く
- VirtualBoxはだめ
- Parallelsは動く
という状況です。最近のプロジェクトはほとんどDockerで動かしているので、Dockerが動けばまあなんとかなりそうです。
M1 Mac対応Wardenを入れる
MagentoやSymfony系の開発用Docker環境として「Warden」というものがあります。
Magento2系の開発環境を作るのはそれなりにめんどくさいので、ソースさえあればササッと作れるWardenは重宝しています。
が、公式にはM1 Macには対応していない模様。Issueも上がっていて、まだクローズされていないようです。
とおもったら、Issueの中にフォークプロジェクトの案内が。
今回はこちらを試します。
readmeに書かれている手順通りに実行していけば基本OKですが、起動時に
- pub/mediaがホスト側からコンテナ側に共有されていないエラー
- pub/staticがコンテナ側に存在しないので書き込めないエラー
がでます。
まあ、それぞれ共有したりディレクトリ作成すればいいだけなんですが・・・。
(エラーメッセージを読めばすぐわかる話です)
コンテナ一式が起動したら、warden公式のチュートリアル に沿ってインストールを行います。
あとは指定したホスト名にアクセスして、MagentoのTOPページが出ればOK。
とりあえず・・・いけそうです。