2025年12月2日
ソフトウェア
138 文字
GitHub Actions: macos-latestでのビルドの注意点
GitHub Actionsを使ってmacOS向けのバイナリをビルドしている開発者の方へ。「ローカルでは動くのに、CI/CDでビルドしたバイナリが動かない」という問題に遭遇したことはありませんか? 本記事では、

はじめに
GitHub Actionsを使ってmacOS向けのバイナリをビルドしている開発者の方へ。「ローカルでは動くのに、CI/CDでビルドしたバイナリが動かない」という問題に遭遇したことはありませんか?
本記事では、macos-latestランナーの仕様と、macOS Sequoia(15.x)環境での互換性問題について解説します。
macos-latestは「最新」ではない
多くの開発者が誤解しているポイントがあります。
| ランナー名 | 実際のOS |
|---|---|
macos-latest | macOS 14 (Sonoma) |
macos-15 | macOS 15 (Sequoia) |
macos-14 | macOS 14 (Sonoma) |
macos-13 | macOS 13 (Ventura) |
latestは「最新版」ではなく「GitHubが推奨するデフォルト版」を指します。2024年9月にSequoiaがリリースされた後も、macos-latestはSonomaを指し続けています(2025年12月時点)。
なぜ問題が起きるのか
macOSのバイナリは、ビルド時に使用されるXcode/clangのバージョンによって、動作可能な最小OSバージョンが決まります。
- macos-14ランナー: clang 15を使用 → macOS 14.0以降をターゲット
- macos-15ランナー: clang 16+を使用 → より広い互換性
ビルド環境より新しいmacOSで実行する場合、ランタイムの互換性問題が発生することがあります。特に厄介なのは、エラーメッセージなしで即座に終了するケースです。
確認方法
バイナリの依存関係はotool -Lコマンドで確認できます。
otool -L ./your-binary | grep libSystem
libSystemのバージョンでビルド環境を推測できます:
- 1345.x系: macOS 14 (Sonoma)
- 1356.x系: macOS 15 (Sequoia)
解決策
方法1: macos-15を明示指定(推奨)
jobs: build-macos: runs-on: macos-15 steps: - uses: actions/checkout@v4 # ... ビルドステップ
方法2: デプロイメントターゲットを指定
macOS 14もサポートする必要がある場合は、環境変数で下位互換性を持たせます。
- name: Build env: MACOSX_DEPLOYMENT_TARGET: "14.0" run: | # ビルドコマンド
Linux/Windowsとの違い
macOSでこの問題が発生しやすい理由があります。
| OS | 特徴 |
|---|---|
| Linux | glibcの後方互換性が高く、古い環境でビルドしても新しい環境で動作しやすい |
| Windows | VC++ Runtimeは別途配布が一般的で、OS依存が小さい |
| macOS | libSystemがOSバージョンと密結合しており、互換性問題が起きやすい |
ベストプラクティス
- macOSビルドはバージョンを明示指定 -
macos-latestではなくmacos-15などを使用 - リリース前にターゲット環境でテスト - 特にmacOSメジャーバージョンアップ後
- ワークフローにコメントを残す - なぜそのバージョンを指定しているか記録
まとめ
macos-latestは最新のmacOSを指すわけではない- macOSのバイナリ配布では、ビルド環境とターゲット環境のバージョンに注意
- Sequoia対応が必要なら
macos-15を明示指定する - 問題が発生した場合は
otool -Lで依存ライブラリを確認