Apple シリコン Mac で、アプリがネイティブか intel かを確認する

M1 チップ搭載の MacBook Air 2020 を買いまして。
 これなんですか? 革命的とかいわれてるんですか?
 わたしの買った一番安い MacBook Air が? 一線を画する歴史的名機、とか世間でいわれちゃってるんですか? 確かにすごくパワフルで、そのわりに物静かなマシンかと思いますが、なんですか? 世間ではゲームチェンジャーとまで評価されちゃってるんですか?
 知らなかったなぁ。

それはともかく、Apple 謹製の M1 チップとやらになり、アーキテクチャとやらが x86 から Arm とかいうのになった。以前のインテルで動いていたアプリは Rosetta 2 とかいうもんで翻訳されて、すべてではないらしいがほとんど動く。

アプリが Apple シリコンに最適化、ユニバーサル化されているかを確認する方法はいくつかある。

アクティビティモニタ

起動中のアプリは「アプリケーション」>「ユーティリティ」内にある「アクティビティモニタ.app」で、intel か Apple シリコンかを確認できる。

アクティビティモニタ

アーキテクチャ、という項目が追加されていて「Apple」か「intel」かで判断できる。

情報を見る

単純に、ファインダーで目的のアプリを選択し、右クリックメニューの「情報を見る」を実行すれば、「intel」か「Universal」かを確かめられる。

intel
universal

いわずと知れたこととは思うが、「情報を見る」はキーボード・ショートカットの [Command] + [ i ] が便利だ。

アーキテクチャを確認するアプリ

AAPL Ch. さんで知ったのだが、アーキテクチャを調べる「Silicon」というアプリがあるらしい。

🔗 Macのアプリケーションファルダ内にあるアプリがIntel/Apple Siliconアーキテクチャに対応しているかをチェックしてくれるオープンソースのユーティリティ「Silicon」がリリース。 | AAPL Ch.

 ダウンロードはこちら。

🔗 Releases · DigiDNA/Silicon · GitHub

起動するとあらわれるウィンドウ内の、「Start Scanning」ボタンを押せば、アプリケーション・フォルダ内のアプリをスキャンしてくれる。

Silicon
Silicon

または、調べたいアプリをウィンドウ内にドロップしてもいいらしい(アプリケーション・フォルダ内のアプリはドロップできないが)。

lipo コマンド

これまた AAPL Ch. さんで知った。

🔗 利用しているアプリがApple Silicon搭載のMacでネイティブ動作するUniversal 2対応アプリかを確認する方法。 | AAPL Ch.

「lipo」というコマンドに「-archs」というオプションをつけることで、アプリのアーキテクチャを調べられる。
 ただし、アプリを右クリックして「パッケージの内容を表示」を実行し、「Contents」>「MacOS」内にある、プログラム本体みたいなやつをドロップしなくちゃならない。

% lipo -archs /System/Applications/Notes.app/Contents/MacOS/Notes
x86_64 arm64e

メモ帳の、パッケージ内のプログラムを調べると、上のようになる。
 いちいちパッケージを開くのはわりとダルいので、シェルスクリプトを書いてみた。

📝 fat.sh

#!/bin/zsh

if test -z "$1"; then
    exit 0
fi
if ! echo "${1}" | grep -sq ".app$"; then
    exit 0
fi

prog=$(echo "$1:t:r")

lipo -archs $1/Contents/MacOS/$prog

 fat.shのあとに半角スペースを入れ、アプリ本体をドロップして使う。

% fat.sh  /Applications/KeepingYouAwake.app
x86_64 arm64

 みたいな感じ。