Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
700
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
shin1x1
0
170
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.5k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
4.2k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.5k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3.4k
制約の力 - 状態を限定する -
shin1x1
6
5.9k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
580
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
1
340
Other Decks in Programming
See All in Programming
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
280
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
200
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
210
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
1
970
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
1k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
100
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
440
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
150
setup-vp GitLab対応の裏側
naokihaba
0
140
FreeBSDでZabbixを動かす
kenkino
0
340
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Documentation Writing (for coders)
carmenintech
77
5.5k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
720
Agile that works and the tools we love
rasmusluckow
331
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Odyssey Design
rkendrick25
PRO
2
850
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