チュートリアル:配布用にアプリやプラグインをパッケージ化する
さまざまなマーケットプレイスで配布するためにオーディオアプリケーションやプラグインを準備する方法を学びます。異なるOSプラットフォームですべてのプラグインタイプのインストーラーを作成します。
レベル: 上級
プラットフォーム: Windows, macOS
プラグインフォーマット: VST, VST3, AU, AUv3, RTAS, AAX
導入
完璧なプラグインを実装し終わったところで、すべてのラッパーでバグフリー、最高の最適化を達成しましたが、傑作を配布する際にどこから始めればよいかわからない?
それならこのチュートリアルはあなたのために作られました!アプリケーションを配布用に準備することは、複数のプラットフォームにわたるユーザーのシステムへのインストールに関しては非常に困難な場合があります。マーケットプレイスはレビュープロセスがますます厳格になり、わずかな見落としでバイナリの再提出が必要になる可能性があります。
このチュートリアルでは、まずプラグインのインストール場所を見て、次にMacとWindows用のインストーラーの作成に飛び込み、最後にマーケットプレイス提出のベストプラクティスで終わります。
このチュートリアルを最大限に活用するには、パッケージ化のためにビルドされたプラグインとバイナリを準備しておいてください。
インストール場所
プラグインのインストールは、ユーザーのマシン上の適切なフォルダの場所にプラグインをコピーするだけの簡単なステップです。
プラグインを配布する際には、さまざまなプラグインラッパーのインストール場所を理解することが重要です。以下の表は、ターゲットOSに応じてインストーラーがファイルをコピーする必要があるディレクトリを示しています:
Macインストールディレクトリ
| プラグインタイプ | ディレクトリタイプ | パス |
|---|---|---|
| VST | ユーザー | ~/Library/Audio/Plug-Ins/VST |
| VST | システム | /Library/Audio/Plug-Ins/VST |
| VST3 | ユーザー | ~/Library/Audio/Plug-Ins/VST3 |
| VST3 | システム | /Library/Audio/Plug-Ins/VST3 |
| AU | ユーザー | ~/Library/Audio/Plug-Ins/Components |
| AU | システム | /Library/Audio/Plug-Ins/Components |
| RTAS | システム | /Library/Application Support/Digidesign/Plug-Ins |
| AAX | システム | /Library/Application Support/Avid/Audio/Plug-Ins |
Windowsインストールディレクトリ
| プラグインタイプ | ディレクトリタイプ | パス |
|---|---|---|
| VST | 共有 | C:\Program Files\VstPlugins |
| VST | 共有 | C:\Program Files\Steinberg\VstPlugins |
| VST | 共有 | C:\Program Files\Common Files\VST2 |
| VST | 共有 | C:\Program Files\Common Files\Steinberg\VST2 |
| VST3 | 共有 | C:\Program Files\Common Files\VST3 |
| RTAS | 共有 | C:\Program Files\Common Files\Digidesign\DAE\Plug-Ins |
| AAX | 共有 | C:\Program Files\Common Files\Avid\Audio\Plug-Ins |
64ビットシステム上の32ビットプラグインの場合は、「Program Files」フォルダに「(x86)」サフィックスを追加してください。
プラグインをシステムフォルダまたは「Common Files」ディレクトリにインストールすることが一般的に推奨されます。これはほとんどのプラグインメーカーがインストールする場所であり、システム上のすべてのユーザーがプラグインを使用できるようになるという利点があります。ただし、インストールを実行するには管理者権限が必要です。
AUv3やAAXなどの特定のプラグインフォーマットでは、インストールプロセスを成功させるためにコード署名や証明書などの追加手順が必要です。
Mac用インストーラー
Windowsのみの配布に興味がある場合は、次のセクション「Windows用インストーラー」にスキップしてください。
インストーラーを手動で作成することは可能ですが、このタスクを簡単に実行できる多くのツールがあります。そのような例の1つが、このセクションでMacインストーラーを作成するために使用するフリーソフトウェアPackagesです。
ウェブサイトからソフトウェアをインストールし、アプリケーションを起動します。作成するプロジェクトのタイプを求めるウィンドウが表示されるはずです:

「Distribution」を選択し、Nextボタンをクリックします。次の画面で、プロジェクトを保存する名前と場所、および必要なリソースを選択できます:

Createをクリックしてインストーラーの組み立てを開始します。メインプロジェクトウィンドウが開くはずです。
メインウィンドウで、ユーザーのコンピュータにインストールしたいプラグインフォーマットの数だけ、左パネルの**+**記号をクリックしてパッケージを追加します。例えば、VST/VST3/AU/RTAS/AAXをインストールするには、以下のスクリーンショットに示すように、対応する識別子を持つ5つのパッケージを追加します:

次に、左パネルで各パッケージを選択し、「com.yourcompany.pkg.format」などの一意の識別子を割り当て、「Require admin password for installation」チェックボックスがチェックされていることを確認します(これは、ユーザーディレクトリではなくシステムフォルダにプラグインをインストールするために必要です)。

次のステップは、プラグインをコピーする場所をインストーラーに伝えるペイロードの構成です。プラグインが参照しやすいようにプロジェクトディレクトリのどこかにコピーされていることを確認してください。インターフェースの上部にあるPayloadタブを選択し、このチュートリアルの前のセクションで説明した対応するプラグインフォーマットのインストールディレクトリに移動します。ナビゲーションウィンドウに必要なフォルダ構造が表示されない場合は、Hierarchy > New Folderを使用して不足しているフォルダを追加し、適切な名前を付けることができます。次に、**Hierarchy > Add Files...**をクリックし、プロジェクトフォルダから以前にコピーしたプラグインを選択して、目的の場所にプラグインを追加します。

では、左パネルからProjectエントリを選択し、ここに示すようにPresentationタブを選択して、インストールプロセス中に表示されるメッセージをカスタマイズしましょう:

この画面では、インストーラーの紹介画面にカスタムメッセージを表示するために使用されるテキストファイルの場所を指定できます。右側のテーブルに**+**記号をクリックしてエントリを追加し、**Choose...**を選択してテキストファイルの場所を指定します。テキストファイルが参照しやすいようにプロジェクトフォルダにコピーしておいてください。プレビューインターフェースの対応するラベルをクリックすることで、「Read Me」および「License」ステップについてもプロセスを繰り返すことができます。
インターフェースの「Installation Type」ステップを選択すると、インストールされるパッケージ名の順序を変更したり、説明を追加したり、デフォルトの状態や表示/非表示を指定したりできます。

配布とパッケージの設定に満足したら、最終段階に進むことができます。File > Saveを押してからBuild > Buildを押してインストーラーのビルドを開始します。手順がエラーなしで成功すると、以下のような画面が表示されるはずです:

これにより、プロジェクトフォルダにプロジェクト名の.pkgファイルを持つbuildというフォルダが作成されます。ダブルクリックしてインストールプロセスをテストしてください。
ディスクイメージの作成
ユーザーがダウンロードするためのより包括的でカスタマイズ可能なパッケージを提供するには、前のステップで作成した.pkgファイルからディスクイメージまたは.dmgファイルを作成することが一般的にベストプラクティスです。これは、Applications/Utilitiesフォルダにある組み込みのMacアプリケーションディスクユーティリティを使用して簡単に行うことができます。
.pkgファイルを使用する準備ができたら、.pkgファイルと「License」や「Read Me」ファイルなど、含めたい追加のドキュメントを含むフォルダを作成します。このフォルダはディスクイメージを作成するために使用され、解凍されたときに表示されるコンテンツになります。
ディスクユーティリティを起動し、メニュー項目から**File > New Image > Image from Folder...**に移動し、作成したフォルダを選択します。

新しいディスクイメージを.dmg拡張子で保存し、Image Formatフィールドから「読み/書き」オプションを選択します。Saveを押すと、次のステップでカスタマイズできる変更可能なディスクイメージが生成されるはずです。新しく作成されたディスクイメージを開くと、作成に使用されたフォルダの内容が表示されるはずです。アイテムを移動したり、メニュー項目からView > Show View Optionsに移動してFinderの表示オプションを開くことで、オプションで背景画像を選択したりできます。

ディスクイメージの外観に満足したら、変更は自動的に保存されるため、単にイメージを取り出すことができます。ディスクユーティリティに戻り、 Images > Convert... に移動して .dmg ファイルを選択します。ユーザーに表示させたい最終的な名前を .dmg 拡張子を追加して付け、Image Formatフィールドから「読み取り専用」オプションを選択します。

Convert を押すと、自信を持って顧客に配布できる最終的なディスクイメージが得られるはずです。
ドラッグアンドドロップインストーラーの作成
.pkg配布を作成してインストーラーにプラグインインストールのすべてのコピー/ペーストアクションを実行させる代わりに、ユーザーをもう少し巻き込むディスクイメージのシンプルなバージョンを作成することもできます。この方法は、インストールが本質的にユーザーによって行われるため、エラーが発生しやすいですが、インストール場所をより制御できます。
ドラッグアンドドロップインストーラーは、ユーザーのシステム上のインストール場所へのフォルダエイリアスを提示し、これらのエイリアスを通じて適切なフォルダにプラグインをドラッグアンドドロップするようユーザーを招待する方法で機能します。
このタイプのディスクイメージを作成するには、前のセクションで説明したのと同じ手順に従って、必要なすべてのプラグインを含むフォルダでディスクイメージを作成します。次に、外観をカスタマイズするために以前と同様にディスクイメージを開きます。
サポートしているプラグインフォーマットのシステム上の目的のプラグインインストール場所に移動し(参照としてチュートリアルの冒頭の表を使用)、フォルダを選択し、メニュー項目からFile > Make Aliasに移動してエイリアスを作成します。新しく作成されたエイリアスはディスクイメージに移動でき、フォルダはシステム内の場所を引き続き指します。

これで、ユーザーはディスクイメージウィンドウ内のエイリアスにプラグインをドラッグアンドドロップするだけでインストールを実行できます。
このチュートリアルのこの部分で説明したすべての手順は、アプリケーションのパッケージ化にも適用できます。
Windows用インストーラー
Macのみの配布に興味がある場合は、前のセクション「Mac用インストーラー」を参照してください。
インストーラーを手動で作成することは面倒ですが、幸いなことにこのタスクを簡単に実行できる多くのツールがあります。そのような例の1つが、このセクションでWindowsインストーラーを作成するために使用するフリーソフトウェアInno Setupです。
ウェブサイトからソフトウェアをインストールし、アプリケーションを起動します。独自のインストーラースクリプトを記述できるコードエディタを持つウィンドウが表示されるはずです。

WindowsでVST/VST3/RTAS/AAXプラグインをインストールするためのInno Setupスクリプトまたは.issファイルの例は以下のようになります:
[Setup]
AppName=TestPlugin
AppVersion=1.0.0
DefaultDirName={cf}
DefaultGroupName=TestPlugin
OutputBaseFilename=TestPlugin-windows
[Files]
Source: "TestPlugin.dll"; DestDir: "{app}\\Steinberg\\VST2"
Source: "TestPlugin.vst3"; DestDir: "{app}\\Steinberg\\VST3"
Source: "TestPlugin.dpm"; DestDir: "{app}\\Digidesign\\DAE\\Plug-Ins"
Source: "TestPlugin.aaxplugin\*"; DestDir: "{app}\\Avid\\Audio\\Plug-Ins\\TestPlugin.aaxplugin"; Flags: recursesubdirs
ここでは、スクリプトの[Setup]セクションで設定できる一般的なプロパティと、[Files]セクションで特定のフォルダにコピーしたいプラグインがあります。
一般的なWindowsパス場所のショートカットは、目的の変数を中括弧で囲むことでこの構文形式で利用できます。
- {pf}:
C:\Program Filesにある「Program Files」のショートカット。 - {cf}:
C:\Program Files\Common Filesにある「Common Files」のショートカット。 - {app}:インストール中にユーザーが選択した宛先アプリケーションディレクトリのショートカット。
デフォルトのインストールディレクトリを指定するために、DefaultDirName変数を「Common Files」ディレクトリに設定しますが、ユーザーは以下のようにセットアップインストーラーを実行するときに別の場所にプラグインをインストールすることを選択できます:

インストーラーに各個別のプラグインフォーマットを正しいディレクトリにコピーするよう指示するには、[Files]セクションで個別の行として、作業ディレクトリからのソースファイルをSourceとして、目的のインストール場所をDestDirとして指定します。
AAXプラグインは他のプラグインフォーマットとは異なりフォルダとしてパッケージされているため、すべてのディレクトリコンテンツをコピーするよう指示するためにrecursesubdirsフラグを設定する必要があることに注意してください。
スクリプトの設定に満足したら、Build > Compileを押してインストーラーを作成します。これにより、作業ディレクトリにデフォルトでOutputという名前のディレクトリにSetupアプリケーションが生成されます。このインストーラーの名前は、スクリプトの[Setup]セクションのOutputBaseFilename変数から選択されます。
Inno Setup内で直接インストーラーをテストするには、コンパイルが成功した後にRun > Runを押して、生成されたインストーラーを起動します。
セットアップインストーラーの最終ステップでユーザーがInstallボタンを押すと、プラグインはスクリプトで指定された適切なフォルダにコピーされます:

このチュートリアルのこの部分で説明したすべての手順は、アプリケーションのパッケージ化にも適用できます。
ランタイムライブラリのリンク
最近のWindows 10アップデートにより、ランタイムライブラリの静的リンクは非推奨となり、代わりに動的リンクが推奨されています。
Windows用のプラグインをビルドする場合、JUCEはデフォルトでランタイムライブラリの動的リンクを選択します。このユニバーサルランタイムはWindows 10からシステムコアの一部になったため、プラグインがWindows 10のユーザーのみを対象としている場合、問題は発生しないはずです。ただし、8.1からVistaまでのWindowsバージョンでは、顧客のコンピュータにユニバーサルランタイムライブラリがインストールされていない可能性があり、プラグインが正しく動作しない場合があります。
この問題を解決するには、Windows Update経由でユニバーサルランタイムをインストールするようユーザーに促すか、プラグインとともにこれをダウンロードしてインストールするインストーラーを提供することができます。あるいは、静的リンクでプラグインをビルドすることもできますが、これは推奨されません。Windowsは、DAWにロードできるプラグインの数を64に制限するためです。
JUCEがランタイムライブラリをリンクする方法は、Projucerでここで変更できます:

マーケットプレイス提出
アプリを配布したいストアによって、異なるタイプの要件が存在します。ただし、これらのストアのほとんどでレビュープロセスを加速するために従うことができる一般的なガイドラインがあり、これらには以下が含まれます:
- 最も曖昧なユースケースでもクラッシュやバグを示さないアプリケーションを提出する。
- アプリケーションが正確に何をするかを反映した正確な説明を書く。
- マイクやカメラアクセスなど、アプリケーションが必要とするすべての権限と資格の説明を提供する。
以下に示すように、Projucerのエクスポーター設定からマイクやカメラアクセスを使用するときに説明テキストを簡単に提供できます:


「アプリ内購入」や「プッシュ通知」機能など、macOS/iOSに必要なすべてのCapabilities/Entitlementsをリストしていることを確認してください:

Androidでは、関連するProjucerフィールドを有効にすることで、Androidマニフェストに必要なすべての機能をリストすることを意味します:

アイコンの正しい画像サイズを提供しないことは、アプリが却下される一般的な理由です。小さいアイコンと大きいアイコンなど、必要なすべてのリソースが含まれていることを確認してください:

最高のユーザーエクスペリエンスを提供するために、iOSの「iOS Deployment Target」やAndroidの「Minimum SDK version」など、最小OSバージョン要件を設定していることを確認してください。


最後に、JUCEはインターフェースデザインにネイティブUIを使用しないため、アプリの外観にも注意する必要があります。ネイティブデザインを模倣しようとしないでください。これらは却下されます。
まとめ
このチュートリアルでは、アプリケーションやプラグインを配布する方法を学びました。特に、以下のことを行いました:
- プラグインのインストール場所について学びました。
- MacとWindows用のインストーラーを作成しました。
- マーケットプレイスにバイナリを提出する際の一般的な間違いについて議論しました。