マニフェストファイル

コンピュータプログラミングにおいて、マニフェストファイルとは、一連のファイル群(セットまたは一貫した単位の一部)のメタデータを含むファイルです。例えば、コンピュータプログラムのファイルには、プログラムの名前、バージョン番号ライセンス、および構成ファイルを記述したマニフェストが含まれる場合があります。 [ 1 ] 「マニフェスト」という用語は、貨物輸送手続きから借用されており、船舶のマニフェストには船舶の乗組員や貨物が記載されます。

マニフェスト ファイルは、他のコンピュータ プログラムによって使用されるコンピュータ プログラムの想定される構造を指定するという点で、宣言ファイルと本質的に似ています。これにより、システムソフトウェア、ソフトウェア定義ツール (コンパイラリンターなど)、開発環境、またはその他の開発者が、特定のリソースまたはコードと対話する方法を理解できるようになります。宣言ファイルとは異なり、マニフェストは異なる方法と異なる目的でこれを行います。たとえば、マニフェスト ファイルは、コードの実行を制御する依存関係、アクセス許可、ランタイム設定などを記述します。宣言ファイルは、コードの構造 (型、インターフェイス、関数など) を記述して、コードの変換を制御し、静的型チェックをサポートし、オートコンプリートや自動コード リファクタリングなどの便利な機能を有効にします。

ビルドシステムやオペレーティングシステムは、コンピュータプログラムをセットアップ、実行、または既存のシステムに統合する方法を理解するために、マニフェストファイルを使用する場合があります。さらに、マニフェストファイルはプロジェクトレベルまたはシステムレベルの情報(ランタイム設定や依存関係など)に重点を置いているのに対し、宣言ファイルはコードレベルの詳細(関数やオブジェクトの型やシグネチャなど)に重点を置いています。

種類

パッケージマニフェスト

Linux ディストリビューションは、ソフトウェアの配布にパッケージ管理システムに大きく依存しています。このスキームでは、パッケージはマニフェスト ファイルを含むアーカイブ ファイルです。主な目的は、さまざまなパッケージ化ツールで処理するため、または人間が使用するために、ディストリビューションに含まれるファイルを列挙することです。マニフェストには追加情報が含まれる場合があります。たとえば、JAR ( Java プログラミング言語で記述されたソフトウェアを配信するためのパッケージ形式) では、バージョン番号と実行のエントリ ポイントを指定できます。マニフェストには、オプションで各ファイルの暗号ハッシュまたはチェックサムが含まれる場合があります。このようなマニフェスト ファイルに暗号署名を作成することで、ディストリビューション パッケージの内容全体の信頼性と整合性を検証できます。ファイルのいずれかを変更すると、マニフェスト ファイル内のチェックサムが無効になるためです。

アプリケーションとアセンブリのマニフェスト

Microsoft Windowsでは、Windows Side-by-Side( WinSxS )を利用するソフトウェアには、アプリケーションマニフェストが必要です。これはXML文書であり、実行ファイルに埋め込まれるか、実行ファイルに付随する別のXMLファイルに格納されます。アプリケーションマニフェストには、名前、バージョン、信頼情報、実行に必要な権限、および他のコンポーネントへの依存関係が記載されています。[ 2 ]

アセンブリマニフェストはアプリケーションマニフェストと非常に似ていますが、「アセンブリ」と呼ばれるコンポーネントの識別情報を記述します。これらのアセンブリはアプリケーションマニフェストで参照されます。[ 3 ]

アプリケーションマニフェストの例を以下に示します。このアプリケーションマニフェストは、セキュリティと依存関係という2つの主要な部分で構成されています。セキュリティ部分では、アプリケーションが「asInvoker」セキュリティレベルを必要とすることを示しています。つまり、アプリケーションは実行されるセキュリティレベルに関係なく動作可能であるということです。依存関係部分では、アプリケーションが「Microsoft.VC90.CRT」というコンポーネント(バージョン番号「9.0.21022.8」)を必要とすることを示しています。

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns= 'urn:schemas-microsoft-com:asm.v1' manifestVersion= '1.0' > <trustInfo xmlns= "urn:schemas-microsoft-com:asm.v3" > <security> <requestedPrivileges> <!--セキュリティ権限レベルは何でも構いません--> <requestedExecutionLevel level= 'asInvoker' uiAccess= 'false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <!--実行にはMicrosoft Visual C++ 2008 Runtimeが必要です--> <assemblyIdentity type= 'win32' name= 'Microsoft.VC90.CRT' version= '9.0.21022.8'プロセッサアーキテクチャ = 'x86'公開キートークン = '1fc8b3b9a1e18e3b' /> </依存アセンブリ> </依存関係> </アセンブリ>

HTML5 キャッシュ マニフェスト

HTML5のキャッシュマニフェストは、ウェブアプリに付随するプレーンテキストファイルで、ネットワーク接続がない場合でもアプリの実行を支援します。ウェブブラウザのキャッシュ機構はこのファイルを読み取り、そのコンテンツがローカルで利用可能であることを保証していました。HTML5のキャッシュマニフェストは、コンテンツタイプを「text/cache-manifest」に設定して提供する必要があります。[ 4 ]主要なウェブブラウザはキャッシュマニフェストのサポートを削除しました。[ 5 ] [ 6 ]代わりにサービスワーカーの使用が推奨されています。[ 7 ]

キャッシュ マニフェストの例:

キャッシュマニフェスト /テスト.css /テスト.js /テスト.png 

ウェブマニフェスト

ウェブマニフェストは、プログレッシブウェブアプリで使用されるJSONファイルです。これにより、PWAはURL経由で簡単に共有でき、検索エンジンで検出され、複雑なインストール手順が簡素化されます。さらに、PWAはネイティブアプリのような操作性とナビゲーションをサポートしており、ホーム画面への追加やスプラッシュスクリーンの表示などが可能です。 [ 8 ]

WebExtensionマニフェスト

WebExtensionマニフェストは、ブラウザ拡張機能のmanifest.json設定に使用されるファイルです。この標準は現在バージョン3ですが、Mozilla FirefoxなどのGeckoベースのブラウザではバージョン2も引き続きサポートされています。

参考文献

  1. ^ Ashwin (2015-08-01). 「研究者ら、Google Playストアで配布された12個のAndroidアプリにHiddenAdsマルウェアを発見」 . ghacks.net . G Hacks . 2015-08-19閲覧.このDirectoryクラスには、マニフェストファイルに特別なメタデータが含まれています。このデータはContact Providerによって認識され、開発者はこれを使用してカスタムディレクトリを作成したり、デバイスとオンラインサービス間でデータを転送したりできます。
  2. ^ 「アプリケーションマニフェスト」サイドバイサイドアセンブリリファレンス。Microsoft 2015年12月23日閲覧
  3. ^ 「アセンブリマニフェスト」サイドバイサイドアセンブリリファレンス。Microsoft 2015年12月23日閲覧
  4. ^ 「7.7 オフラインWebアプリケーション」 . HTML標準. W3C . 2015年12月22日.
  5. ^ 「AppCache削除の準備」 . web.dev . 2020年5月20日時点のオリジナルよりアーカイブ2021年9月2日閲覧。
  6. ^ 「アプリケーションキャッシュの使用 - HTML: HyperText Markup Language | MDN」 . developer.mozilla.org . 2019年2月15日時点のオリジナルよりアーカイブ。 2021年4月11日閲覧
  7. ^ "Window.applicationCache" . MDN Web Docs . Mozilla. 2023年5月2日時点のオリジナルよりアーカイブ2020年12月29日閲覧。
  8. ^ "「Web App Manifest」、ワーキングドラフト「Web App Manifest」、ワーキングドラフト。W3C 2016年9月12日。