Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
PRO
December 21, 2021
Programming
2
3.4k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
PRO
December 21, 2021
Tweet
Share
More Decks by shin1x1
See All by shin1x1
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
PRO
1
160
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
PRO
0
50
ドメインをモデリングしてPHPコードに落とし込む / domain-modeling-with-php8
shin1x1
PRO
13
5.1k
PHP 8 で作る JSON パーサ / php8-json-parser
shin1x1
PRO
1
1.9k
Kubernetes で構築する PHP 開発環境 / php-development-environment-on-kubernetes
shin1x1
PRO
3
3.5k
独立したコアレイヤパターンの適用 - fortee 編 - / fortee-meets-independent-core-layer-pattern
shin1x1
PRO
0
2.3k
フレームワークとの付き合い方 / how-to-use-framework
shin1x1
PRO
2
4.1k
明日から使えるアーキテクチャ 独立したコアレイヤパターン / independent-core-layer-pattern-phpconsen2019
shin1x1
PRO
2
5.1k
独立したコアレイヤパターンによる PHP アプリケーションの実装 / phpcon2018-independent-core-layer-pattern
shin1x1
PRO
5
5.3k
Other Decks in Programming
See All in Programming
Rust、何もわからない...#3
estie
0
160
WindowsコンテナDojo: 第4回 Red Hat OpenShift Localを使ってみよう
oniak3ibm
PRO
0
180
Better Angular Architectures: Architectures with Standalone Components @DWX2022
manfredsteyer
PRO
1
400
SwiftUIで「意図」を伝える / swiftui_intention
uhooi
2
140
ゴーファーくんと辿るプログラミング言語の歴史/history-of-programming-languages-with-gopher
iwasiman
11
5k
サーバーレスパターンから学ぶデータ分析基盤構築 / devio2022
kasacchiful
0
480
ストア評価「2.4」だったCOCOARアプリを1年で「4.4」になんとかした方法@Cloud CIRCUS Meetup #2
1901drama
0
180
YATA: collaborative documents and how to make them fast
horusiath
1
150
回帰分析ではlm()ではなくestimatr::lm_robust()を使おう / TokyoR100
dropout009
0
4.5k
Rector, time to refactor your code easily
guikingone
2
150
Pluggable Storage in PostgreSQL
sira
1
190
VIMRC 2022
achimnol
0
130
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
Happy Clients
brianwarren
89
5.6k
Building Your Own Lightsaber
phodgson
95
4.7k
Faster Mobile Websites
deanohume
294
28k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
107
16k
Web development in the modern age
philhawksworth
197
9.3k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
How to train your dragon (web standard)
notwaldorf
60
3.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Git: the NoSQL Database
bkeepers
PRO
415
59k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Transcript
Apple Silicon Mac 時代の PHP 開発環境構築 2021 2021/12/21 @shin1x1
@shin1x1 新原(しんばら) 雅司 1×1株式会社 Web アプリケーション開発 技術サポート PHP の現場 https://php-genba.shin1x1.com/
M1 Mac を買いました! 3
PHP 開発環境 Mac アプリ Vagrant Docker 4
Mac アプリ 5
Mac アプリの種類 Intel Mac 用 (x86_64) Apple Silicon Mac(M1 Mac)
用(aarch64) Universal x86_64 と aarch64 アプリが同梱 いずれも Apple Silicon Mac で動作 x86_64 は Rosseta 2 により aarch64 に自動変換して動作 6
file コマンドで確認 Apple Silicon Mac 用(aarch64) $ file Docker Docker:
Mach-O 64-bit executable arm64 Universal $ file iTerm2 iTerm2 (for architecture x86_64): Mach-O 64-bit executable x86_64 iTerm2 (for architecture arm64): Mach-O 64-bit executable arm64 Intel Mac 用 (x86_64) $ file Dropbox Dropbox: Mach-O 64-bit executable x86_64 7
主なアプリ対応状況 aarch64 / x86_64 Docker Desktop Universal (これが多い) PhpStorm Visual
Studio Code iTerm 2 x86_64 のみ Evernote Dropbox 8
Homebrew Apple Silicon Mac(3.0.0) + Monterey(3.3.0) 対応済 aarch64 アプリは、 /opt/homebrew
にインストールされる 環境変数 PATH に /opt/homebrew/bin /opt/homebrew/sbin を追加 x86_64 アプリは、 /usr/local 9
Apple Silicon Mac + Mac アプリ 全く問題無い! 2021/12 時点で多くのアプリで Apple
Silion 対応が行われている Universal 版が多い印象 ダウンロード選択肢が無いからといって Apple Silicon 未対応ではない x86_64 アプリのみでも、Rosetta 2 で普通に動作する 今のところアプリで困ったことは無い 10
仮想環境 - Vagrant 11
Apple Silion Mac + Vagrant + VirtualBox Vagrant は動作する (x86_64)
現時点では VirtulBox は Apple Silion Mac で動作しない Apple Silion サポートについてオフィシャルには情報が無い 12
Apple Silion Mac + Vagrant + VMWare Fusion VMware Fusion
for Apple silicon Public Tech Preview https://blogs.vmware.com/teamfusion/2021/09/fusion-for-m1-public-tech- preview-now-available.html Vagrant を使いたいなら選択肢の一つ 有償 13
Apple Silicon Mac + Vagant VirtualBox が動作しないので厳しい Apple Silicon Mac
以前に Docker 環境を利用していたので、個人的にはモチベーシ ョンはあまりない このタイミングで Docker に移行するプロジェクトもいくつかある 14
仮想環境 - Docker 15
Apple Silion Mac + Docker Docker Desktop アプリは Apple Silion
対応済 Docker イメージにも種類がある linux/amd64: Intel Mac で利用するイメージ linux/arm64: Apple Silion Mac で利用するイメージ Docker Desktop では amd64 イメージも動作する QEMU によるエミュレート 動作は遅くなったり、挙動が不安になるケースも 特に JVM をランタイムとしたイメージは要注意 (arm64 は問題無し) 16
Docker イメージの対応状況 オフィシャルイメージは amd64 / arm64 両対応が多い php, postgres, redis,
nginx, composer 等 mysql は amd64 のみ mysql/mysql の 8.0 は arm64 イメージあり 独自ビルドイメージは amd64 のみが多い傾向 これまで amd64 のみ利用する場面が多かったので 17
docker コマンド, Dockefile, docker-compose.yml docker コマンド操作は基本そのまま Dockerfile や docker-compose.yml はそのままで
OK CPU アーキテクチャ固有の情報以外 Docker イメージ amd64/arm64: Intel=amd64 / Apple Silicon=arm64 が動く amd64 のみ: Intel=amd64 / Apple Silicon=amd64 が動く いかに 両サポートイメージを作るかがポイント 18
Intel Mac と Apple Silicon Mac との共存 案1. Mac で利用するイメージは、自身の
Mac でビルド Intel Mac では amd64、Apple Silicon Mac では arm64 をビルド services: php: build: ./docker/php # docker/php/Dockerfile をビルド 案2. Docker Buildx でマルチアーキテクチャビルドして共有 GitHub Actions 上でのマルチアーキテクチャビルド例 https://blog.shin1x1.com/entry/docker-multi-arch-build-on-github-actions 19
amd64/arm64 イメージ速度差 M1 MacBook Pro では arm64 イメージの方が速い phpunit 実行時間
(php + postgres) M1 MBP(php: arm64): 2.36 minutes M1 MBP(php: amd64): 4.90 minutes [参考] Intel MBP(php: amd64) : 2.23 minutes 20
arm64 で発生: postgres イメージ接続遅延 php(arm64) + postgres(arm64) で発生 時折、PHP から
PostgreSQL への接続に 5 秒かかる現象 pg_connect / PDO ともに php:X-apache-buster ベースで発生 php:X-apache-bullseys や amazonlinux:2 では発生せず 21
Apple Silicon Mac + Docker 基本は arm64 イメージを使えば問題無し amd64 はうまく動かない場合がある(ex.
JVM 系) amd64 と arm64 両イメージを用意しておくとスムーズ チームで Intel Mac と Apple Silicon Mac が混在 22
Apple Silicon Mac 時代の PHP 開発環境 2021 Mac アプリ +
Docker で構成 マルチアーキテクチャ対応の Docker イメージを用意するのがポイント Mac だけではなく、本番環境含めたマルチアーキテクチャ時代に 23