Logo
    環境構築用のスクリプトをApple Siliconでも利用できるようにした話

    環境構築用のスクリプトをApple Siliconでも利用できるようにした話

    はじめに

    ゆとり世代の中野です。

    今回チャレンジした内容は【環境構築用のスクリプトをApple Siliconでも利用できるようにした話】です。

    さっそくチャレンジについて書いていきます。

    チャレンジする背景

    • Macの環境を自動で構築してくれるスクリプトを作成済み
    • 現環境は全てx86_64ベースで作っているがarm64でも使えるようにしたい

    チャレンジ内容

    • 既存の環境構築用のスクリプトをApple Siliconにも対応させる方法を書く

    やり方

    知っておきたいこと

    • Rosetta2ってなに?
    Rosetta 2 ってなに?|M1 Mac ってなに? ぼくにも使える?

    Rosetta とは特定のアーキテクチャのバイナリを別のアーキテクチャのバイナリに変換することで互換性を維持する Apple の技術のことです。 2004 年に Macintosh が PowerPC から Intel アーキテクチャに移行したときに使われたのが Rosetta で、2020 年に Intel アーキテクチャから Apple Silicon に移行するために発表されたのが Rosetta 2 です。 ARM Mac の Finder でアプリの情報を確認すると、( Intel ) や ( Universal ) などと書いてあります。 Intel は見た通り x86_64 用のバイナリであることを、Universal は x86_64 バイナリと ARM64 バイナリの両方を含んでいることを示しています。 ( Intel ) の例。 ( Universal

    zenn.dev

    Rosetta 2 ってなに?|M1 Mac ってなに? ぼくにも使える?
    • Rosetta2のインストールするコマンド
    softwareupdate --install-rosetta --agree-to-license
    • アプリケーションがRosetta2もしくはM1に対応しているかを下記サイトで確認
    isapplesiliconready.com

    isapplesiliconready.com

    • homebrewのパスがx86_64とarm64では違う

    Homebrewのパスの差分を吸収する

    • .zprofileにhomebrewのパスをx86_64とarm64で切り替えるように設定した
      • intel製のMacも利用しているため
    # -------------------------------------------------
    # アーキテクチャ環境
    # -------------------------------------------------
    ARCH=$(uname -m)
    if [[ $ARCH == arm64 ]]; then
        echo "Current Architecture: $ARCH"
      eval $(/opt/homebrew/bin/brew shellenv)
    elif [[ $ARCH == x86_64 ]]; then
        echo "Current Architecture: $ARCH"
      eval $(/usr/local/bin/brew shellenv)
    fi

    まとめ

    • 抑えておきたいところは2点
      • Rosetta2に対応しているものは使える(暫定対応)
      • Intel版のMacを使う場合は.zprofileでパスの振り分けを行う
    • xcodeのインストールが時間めっちゃかかってたので下記コマンドでログ見てると心が安心するのでおすすめ
    tail -f /var/log/install.log

    さいごに

    過不足がある場合はあとから追記します

    yutanakano

    WEBエンジニア

    大阪生まれのゆとり世代です

    趣味はバイクでツーリングに行くこと

    愛車は Ninja ZX-25R SE KRT EDITION

    Expoでプロダクトを作っています

    image

    ©ゆとりちゃれんじ

    GitHubXInstagram