なぜこの警告が表示されるのか?
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には標準で同等の仕組みはありません。
