53
Mac 上のすべての Intel ネイティブ アプリを見つける

Intel Macをお持ちなら、Rosettaエミュレーションを使うのではなく、できるだけ多くのアプリケーションをUniversal(つまりIntelベースのマシンでネイティブに実行できる)にしたいとお考えでしょう。Rosettaは実用的ですが、ネイティブアプリケーションよりもはるかに遅くなります。

アプリケーションをチェックして、どれがユニバーサルでどれがそうでないかを調べる方法はいくつかあります。

まず、システムプロファイラ(ユーティリティフォルダ内)を開き、「コンテンツ」列の「アプリケーション」をクリックすると、Mac上のすべてのアプリケーションの一覧が表示されます。「タイプ」列には、UniversalアプリケーションとPowerPC専用アプリケーションが表示されます。PowerPC Macをお使いの場合は、Classicモードで実行できるアプリケーションも表示されます。

ただし、ターミナルからこれを行う方法もあります。

アプリケーションフォルダ内を調べて、Intel をサポートしていないアプリケーションだけでなく、Intel ネイティブではない部分を含むアプリケーションも検出するシェルスクリプトのコードを以下に示します。このスクリプトは、システムプロファイラよりもさらに高度な機能を備えており、アプリケーション自体が Intel ネイティブであっても、アプリケーションの Intel ネイティブではない部分を検出します。

	# !/bin/sh find /Applications -type d -name MacOS -maxdepth 3 2>&1 | while read line do app_home=`find "$line" -type f -maxdepth 1 -perm +a=x` echo "$app_home" | while read app do result=`file "$app"` echo "$result" | grep "executable" | grep -v "universal" | grep -v "for architecture" >> /tmp/$0.notuniversal.$$ done done cat "/tmp/$0.notuniversal.$$" | grep "ppc" | awk -F/ '{ print $3 " nt(" $6 ")" }' >> /tmp/$0.output.$$ echo "次のアプリケーションには、Intel をサポートしない実行ファイルがあります: " echo "-------------------------------------------------------------------" cat "/tmp/$0.output.$$" | sed -n 'G; s/n/&&/; /^([ -~]*n).*n1/d; s/n//; h; P' echo "-------------------------------------------------------------------" rm /tmp/*.$$	

注意すべき点が 1 つあります。このスクリプトはアプリケーション フォルダを検索するように設定されていますが、 find /Applications アプリケーションを他の場所に保存している場合は、そのパス ( を含む行) を別のパスに変更できます (システム プロファイラはアプリケーション フォルダのみをチェックします)。パス を使用して Mac 全体を検索することもできます /が、その場合、処理時間が大幅に長くなります。

上記のコードをテキストエディットなどのテキストエディタにコピー&ペーストし、スクリプトをパスの通った場所に保存します。保存後、ターミナルを開いて以下のコマンドを実行します。

CD

スペースバーを押し、スクリプトを保存したフォルダをターミナルウィンドウにドラッグ&ドロップします。これでファイルがパスに読み込まれます。Returnキーを押して、次のように入力します。

chmod +x

スペースバーを押しながら、ファイルをターミナルウィンドウにドラッグします。これでファイルが実行可能になります。

将来スクリプトを実行するには、 cd そのディレクトリに再度移動し、次のように入力します。

./スクリプト名

、これ scriptname はファイルを保存するときに使用した名前です。