macOS「アプリが破損しています」警告:原因と修正方法

macOS「アプリが破損しています」警告:原因と修正方法

Apple macOS Gatekeeper4分で読了

なぜこの警告が表示されるのか?

macOSは、ユーザーを悪意のあるソフトウェアから守るためにGatekeeperというセキュリティ機構を使っています。Gatekeeperは、インターネットからダウンロードされたアプリがApple Developer証明書で署名され、Appleによって公証(notarize)されていることを前提とします。これらの検証を通過できないアプリについて、macOSは起動を拒否することがあり、その際に表示されるのが「破損しているため開けません」という不安をあおるメッセージです。

OpenGnothiaについて:現在のビルドはApple Developer証明書で署名され、Appleによって公証されています。そのため警告も追加の操作もなく、通常どおり起動します。以前のリリースは未署名で配布されていたため、手元に残っている非常に古いダウンロードではこの警告が出ることがあります。以降の内容は、この警告を一般的なケースとして説明します。Gatekeeperが検証できない、あらゆる開発者のあらゆるアプリに当てはまります。

この警告は、ファイルが本当に破損していることや、マルウェアが含まれていることを意味するものではありません。署名を検証できないアプリに対するmacOSの標準的な反応にすぎません。ダウンロードが実際に壊れている可能性もありますが、署名に起因する問題に比べればはるかにまれです。

macOS Gatekeeperとは?

GatekeeperはmacOSの組み込みセキュリティ機能の一つです。macOS Catalina(10.15)以降、セキュリティポリシーはさらに強化されています。Gatekeeperは3つのレベルで動作します:App Storeからダウンロードされたアプリ(最も信頼度が高い)、確認された開発者からの署名済みアプリ、不明なソースからのアプリ。

インターネットからファイルをダウンロードすると、macOSはファイルにcom.apple.quarantine(拡張属性)と呼ばれる特別な属性を追加します。アプリを最初に開くとき、Gatekeeperはこの属性をチェックし、アプリケーションの信頼性を評価します。

未署名のアプリの場合、Gatekeeperは2つの異なる警告を表示する場合があります:「[アプリ]は悪意のあるソフトウェアかどうかをAppleでは確認できないため、開けません」、またはより深刻な「[アプリ]は壊れているため開けません。ゴミ箱に入れる必要があります。」2番目の警告はmacOS Ventura以降で特に一般的です。

解決策:ターミナルで隔離属性を削除する

解決するには、ダウンロード時にmacOSがファイルへ付与した隔離属性を削除します。この操作は安全で、ダウンロードの目印を消すだけです。アプリ自体は変更されません。

ステップ1:ターミナルアプリを開きます。Command + Spaceでスポットライトを開き、「Terminal」と入力してEnterキーを押します。

ステップ2:次のコマンドを、AppNameの部分を実際のアプリ名に置き換えて入力し、Enterキーを押します:

xattr -cr /Applications/AppName.app

アプリがアプリケーションフォルダではなくダウンロードフォルダにある場合は、コマンドの宛先をそちらに変えてください:

xattr -cr ~/Downloads/AppName.app

便利なコツ:末尾に半角スペースを入れて「xattr -cr 」と入力し、Finderからアプリをターミナルのウィンドウへドラッグします。macOSが正確なパスを補完してくれるため、入力ミスを防げます。

ステップ3:コマンドを実行したら、アプリを通常どおり開けます。macOSはそのアプリを隔離対象として扱わなくなります。

コマンドは何をするのか?

xattrコマンドはmacOSでファイルの拡張属性を管理するために使用されます。コマンドのフラグの意味は以下の通りです:

-cフラグ:ファイルからすべての拡張属性をクリアします(clear)。これにはcom.apple.quarantine属性が含まれます。

-rフラグ:サブフォルダにも操作を適用します(recursive)。.appファイルは実際にはフォルダ構造であるため、すべてのサブファイルもクリアする必要があります。

このコマンドはファイル属性のみを変更します — アプリケーション自体やシステム設定には影響しません。使用しても完全に安全です。

代替方法:システム設定

ターミナルを使いたくない場合は、macOSのシステム設定から解決を試すこともできますが、この方法は必ずしも成功しません。

ステップ1:アプリを開こうとして警告を表示させ、その警告を閉じます。

ステップ2:システム設定 > プライバシーとセキュリティに移動します。

ステップ3:ページ下部に「[アプリ]は開発元を確認できないため、使用がブロックされました」といったメッセージが表示されます。その横の「このまま開く」ボタンをクリックします。

ステップ4:確認ダイアログがもう一度表示されるので、「開く」をクリックします。

注意:「確認できません」ではなく、より厳しい「破損しています」の警告が出ている場合、この方法はたいてい機能しません。macOSがそもそも回避ボタンを表示しないためです。その場合は上記のターミナルの方法を使ってください。

よくある質問

xattrコマンドを実行しましたが、まだアプリが開きません。どうすればいいですか? まずパスが正しいか確認してください。ターミナルでls /Applications/を実行し、アプリが実際にそこにあるかを確かめます。また、マウントしたDMGの中からアプリケーションフォルダへドラッグしたかも確認してください。DMGの中から直接アプリを起動すると、それ自体が問題を起こします。それでも駄目な場合はダウンロードが本当に壊れている可能性があるので、もう一度ダウンロードしてください。

この操作は安全ですか? コマンド自体は安全です。xattr -crはmacOSがファイルに付与したメタデータを削除するだけで、アプリのコードやシステムのセキュリティ設定は変更しません。判断が必要なのは、何に対して実行するかです。隔離の目印を消すことは、まさにGatekeeperによる検査を止めることを意味します。本当に信頼できる入手元のソフトウェアにのみ使ってください。

アップデートのたびに実行する必要がありますか? 未署名のアプリの場合だけです。macOSは新しいダウンロードごとに隔離属性を付け直すため、未署名のアプリではアップデートのたびにコマンドが必要になります。適切に署名・公証されたアプリ(OpenGnothiaの現行バージョンを含む)では、一度も必要ありません。

WindowsやLinuxでもこの問題は起きますか? いいえ、この警告はmacOS固有のGatekeeperによるものです。WindowsにはSmartScreenという似た機能がありますが、表示される警告は異なり、独自の「実行する」オプションが用意されています。Linuxには標準で同等の仕組みはありません。