Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev...
Search
shin1x1
December 21, 2021
Programming
4.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
December 21, 2021
More Decks by shin1x1
See All by shin1x1
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
520
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
shin1x1
0
160
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.4k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
4.1k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.5k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3.3k
制約の力 - 状態を限定する -
shin1x1
6
5.8k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
570
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
1
330
Other Decks in Programming
See All in Programming
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
230
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
240
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.4k
AIで効率化できた業務・日常
ochtum
0
160
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
320
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
640
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
190
Lessons from Spec-Driven Development
simas
PRO
0
240
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
340
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
210
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.7k
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Skip the Path - Find Your Career Trail
mkilby
1
160
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
550
Optimizing for Happiness
mojombo
378
71k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
400
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
320
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
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