Mac
 Computer >> コンピューター >  >> システム >> Mac

macOSアプリバンドルの構造とは?中身のファイルと役割を徹底解説

macOSアプリバンドルの構造とは?中身のファイルと役割を徹底解説

macOSのアプリの中には何が入っていて、それぞれどんな役割を果たしているのでしょうか?macOSのアプリは一見すると単一のファイルのように見えますが、実際には「バンドル(bunble)」と呼ばれる、アイコンの付いた特別なフォルダのようなものです。このバンドルを開けば、アプリケーションの動作に必要なさまざまなファイルが格納されているのが分かります。バンドルの仕組みを理解しておくと、開発者やシステム管理者、ゲームのMod制作者、Hackintosh構築者、セキュリティに関心のあるユーザー、そしてアプリのトラブルシューティングを行いたいすべての人にとって大きな助けになります。

macOSのアプリバンドルとは?

Appleの定義によれば、バンドルとは「実行可能なコードと、そのコードが使用するリソースを格納した、標準化された階層構造を持つディレクトリ」のことです。言い換えれば、それこそがアプリケーションそのものなのです。アプリが正しく動作するよう、開発者は特定の構造と形式に従う必要があり、この規約を破るとアプリが正常に動作しなくなる可能性が高くなります。逆に言えば、何かがうまく動作しないとき、アプリケーションバンドルの中身はトラブルシューティングの出発点として非常に有用だということです。

バンドルが使われるのはアプリだけではありません。「.framework」「.bundle」「.plugin」「.kext」などの拡張子を持つファイルにもバンドル形式が採用されています。バンドルはFinder上では単一のオブジェクトとして表示され、「パッケージの内容を表示」で中に入らない限り、その内部構造を目にすることはありません。

アプリケーションバンドルを開く方法

通常のフォルダとは異なり、アプリケーションバンドルを開くには少しだけ手順が必要です。

1. 「/Applications/」内にあるアプリケーションのアイコンを右クリックします。

2. コンテキストメニューから「パッケージの内容を表示」を選択します。

macOSアプリバンドルの構造とは?中身のファイルと役割を徹底解説

3. 「Contents」フォルダをダブルクリックして、アプリのメインディレクトリに入ります。

macOSアプリバンドルの基本構造

バンドルの「Contents」フォルダ内には多数のファイルが格納されています。すべてのmacOSアプリには、最低限以下のファイルが含まれている必要があります。

  • Info.plist:必須の設定情報と、アプリケーション識別子の文字列が含まれます。
  • MacOS/実行ファイル:ユーザーがアプリを起動したときに実行されるコードで、「MacOS」フォルダ内に格納されています。実行ファイルがなければ、バンドルとして成立しません。
macOSアプリバンドルの構造とは?中身のファイルと役割を徹底解説

さらに、以下のような一般的なフォルダには、追加のファイルが数多く含まれていることがよくあります。

  • Plugins(プラグイン):拡張機能のような小さな実行ファイルで、コアとなる実行ファイルの機能を拡張します。静的なリソースとは異なり、プラグインはアプリケーションに動的に機能を追加します。
  • Resources(リソース):アプリケーションが依存するサポートファイル群です。画像、アイコン、サウンド、フォント、nibファイル、ローカライズファイル、データストアなどが含まれます(ただしこれらに限定されません)。プラグインとは異なり、これらのリソースは実行ファイルのコア機能を支える役割を担います。
  • Frameworks(フレームワーク):プラグインと同様に、アプリが必要とする上位フレームワークも、それぞれが独立したバンドルとなっています。ただし、階層構造はやや異なります。
  • CodeSignature(コード署名):アプリケーションの各部分に対するコード署名を提供するための、構造化されたplistファイルです。この署名によって、アプリ自身とmacOSがアプリケーションの整合性を検証し、アプリ乗っ取り攻撃を防ぐことができます。

iOSのアプリバンドルも同じ基本構造とファイル形式を採用していますが、階層の組み方が異なる場合が多い点には注意してください。

Info.plist

macOSアプリバンドルの構造とは?中身のファイルと役割を徹底解説

Info.plistは、アプリケーションの基本的な情報をひとまとめにした重要なファイルです。ここには、他のすべてのバンドル識別子と重複してはならない「バンドル識別子(bundle identifier)」が含まれます。この作業を簡単にするため、Appleは「com.apple.siri.launcher」や「org.videolan.vlc」のような逆ドメイン表記を推奨しています。Info.plistについて詳しく知りたい方は、Appleが公開しているキーの一覧を確認し、各キーがどんな役割を果たすのかを調べてみるとよいでしょう。

このファイルには、アプリのアイコン、アプリ名、バージョン番号、著作権情報、エラー報告用のリンク、デフォルトの言語といった基本情報も含まれています。なお、慣例およびシステムのルールにより、「Info」の「I」は常に大文字で表記されます。

実行ファイル(Executable)

ここには、アプリケーションの主要なコードが格納されています。アプリケーションが起動されると、macOSはバンドルの「MacOS」ディレクトリ内にある実行ファイルに含まれたコードを実行します。ほぼすべてのアプリケーションは単一の実行ファイルのみを持ちますが、ヘルパー実行ファイルとして2つ以上が使われるケースもあります。このファイルはユーザーが簡単に閲覧・編集できるものではないため、ソフトウェアの開発者以外にとってはあまり触る機会のない部分と言えるでしょう。

リソースとその他のサポートファイル

アプリケーションに不可欠なものは、すべてそのバンドル内に含める必要があります。実行ファイル自体の一部でない場合は、バンドル内のいずれかのリソースフォルダに配置します。これらのリソースは、メインの「Resources」フォルダにまとめて保存してもよいし、用途ごとに複数のフォルダへ分割して保存することもできます。

  • 迷ったときは、ほとんどのリソースを「Resources」フォルダに置きます。
  • フレームワークは「Frameworks」フォルダに置きます。
  • プラグインは「Plugins」フォルダに置きます。
  • ローカライズファイル(.lprojディレクトリ)はResourcesフォルダに置きます。

これらの要件以外にも、Appleから多くのガイドラインや規約が提示されており、正当な理由がない限りはそれらに従うことが推奨されます。

まとめ

macOSアプリケーションは、バンドルと呼ばれる階層型のコンテナに格納されています。その基本構造はすべてのアプリケーションで共通しており、ユーザーにとって特に興味深いファイルは、アプリのバンドル内にある「Resources」フォルダで見つかることが多いのです。バンドルの仕組みを知っておけば、アプリのカスタマイズやトラブルシューティングの幅が大きく広がります。

  1. MacのSafariにおすすめの広告ブロッカー3選!無料・有料を徹底比較

    昨今、ウェブ閲覧はストレスフルな体験になりがちです。最新のスポーツニュースを読みたいだけなのに、ホテル予約やファッション、自動車などの広告が次々と表示され、うんざりした経験はありませんか?中には恥ずかしい内容の広告や、読みたいコンテンツを覆い隠してしまう広告もあります。広告ブロッカーの存在はご存じの方も多いでしょう。しかし、MacのSafariユーザーにとって、どの広告ブロックツールがベストなのでしょうか?結論から言うと、有料でも構わないなら「1Blocker」、無料で使いたいなら「Adblock Plus」がおすすめです。元Macシステム管理者であり、日々Macを使い続けている筆者が、数ある

  2. macOSでファイルのパスを確認・コピーする5つの方法

    Macでファイルを作成またはコピーすると、そのファイルには「パス」が割り当てられます。パスとは、Mac上におけるファイルの実際の保存場所を示すものであり、いわばファイルの完全な住所のようなものです。パスがわかれば、Mac内の任意のフォルダやファイルに簡単にアクセスできます。 さまざまな理由から、Mac上のファイルのパスを確認したい場面があるでしょう。例えば、ファイルパスを入力値とするプログラムを書いている場合や、インストールしたアプリにファイルのパスの入力を求められた場合などが挙げられます。 目的が何であれ、Macにはファイルのパスを表示する方法が複数用意されています。macOSには標準で