VEGAS Pro 20のスクリプトをVisual Studio 2022で作れるようになるまでの手順

# はじめに

こんにちわ、お久しぶりの投稿です。

最近、動画編集をやろうかと思ってVEGASを使っているのですが、VEGASには「スクリプト」という機能があり、C#で実装できるということでとりあえず作ってみることにしました。

VEGASの「スクリプト」は、C#で実装したdllファイルを所定の場所に置くことで機能させます。

さて、この実装方法については、それ用のドキュメントが準備されているのですが、対象がかなり古く、当方が使いたいVEGAS Pro 20+Visual Studio 2022では一苦労してしまったのでその点をメモとして残しておきます。

https://www.vegascreativesoftware.com/us/downloads/

# 実装の手順

## 1.プロジェクトを作る

VS2022のプロジェクトを作ります。
テンプレートは「**クラスライブラリ(.NET Framework)**」を選択します。

![スクリーンショット 2023-01-16 001104.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/3345a738-69ba-372f-9e5b-f4e970105073.jpeg)

Vegasで使われている.NET Frameworkのバージョンはかなり新しいの方なので、フレームワークは現段階で最新の「`.NET Framework 4.8`」を選択します。

![スクリーンショット 2023-01-17 145631.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/b3f9a2a1-32e0-982f-3825-4a544fd4c01d.jpeg)

## 2.デバッガ設定を変更

プロジェクトが出来上がり、メイン画面が現れたら、デバッガをVEGASに変更します。

メニューの「プロジェクト」－「(プロジェクト名)のプロパティ」を選択して、「デバッグ」タブを開きます。

そこの設定で「開始動作」内にあるチェックボックスのうち、**「外部プログラム開始」のチェックボックスをオン**にします。

入力エリアにVEGASにのパスを入力するのですが、当方はVEGASを標準のディレクトリにインストールしていますので、VEGASの実行ファイルパスは以下になります。

```
C:\Program Files\VEGAS\VEGAS Pro 20.0\vegas200.exe
```

最終的なデバッガの設定は以下のようになります。

![スクリーンショット 2023-01-16 152958.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/7c606822-1abb-b3f2-d817-177b2ef47c10.jpeg)

## 3.初期クラス名を変更

最初に作られるクラスは`Class1`という名前ですが、これを`EntryPoint`に変更します。

ソリューションエクスプローラーの`Class1.cs`を右クリックして、ポップアップメニューの「名前を変更」を選びます。
![スクリーンショット 2023-01-16 152500.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/f650ebda-cc59-71c0-a5c0-8a7fcfec6f84.jpeg)
ファイル名を`EntryPoint.cs`に変更するとクラス名も変更するのか促されます。
![スクリーンショット 2023-01-16 152533.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/90d66dcc-8227-e9d5-ce40-c172df960868.jpeg)
「はい」を選択すると、**コード中のクラス名も変わります**。
![スクリーンショット 2023-01-16 152522.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/d2b169dd-9805-fde4-8aba-eff42574e2fc.jpeg)
![スクリーンショット 2023-01-16 152548.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/99a3f419-e0da-62c1-ba36-7ca0b7848ca8.jpeg)

## 2.参照を作る

VEGASのスクリプトに必須のアセンブリ参照を作ります。
![スクリーンショット 2023-01-16 153740.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/b4d9f225-287c-5762-cb70-8fbfc2d20783.jpeg)
「参照...」ボタンをクリックします。
![スクリーンショット 2023-01-16 153806.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/4212c949-f75c-ac7f-4f72-3f7e6c541248.jpeg)
ファイル選択ダイアログが現れますので、以下のファイルを選択して「OK」ボタンをクリックします。
```
C:\Program Files\VEGAS\VEGAS Pro 20.0\ScriptPortal.Vegas.dll
```
![スクリーンショット 2023-01-16 153847.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/29c3b7a0-b61c-e7e2-9bb6-2b164e32bdb9.jpeg)
![スクリーンショット 2023-01-16 153909.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/ddb0435b-4ca0-e3e5-89c0-8adb9bef88bc.jpeg)
参照が読み込まれたので、「OK」ボタンをクリックします。

また大体の場合、設定画面やフォーム、ダイアログボックスが必要になりますので、`System.Windows.Form`も参照しておきます。

これで、コードを実装する準備ができました。

## 3.エントリメソッドを実装する

VEGASでスクリプトを読み込む際に最初に呼ばれるエントリメソッドを実装します。
メソッド名は`FromVegas`で、引数として、`Vegas`クラスのオブジェクトを受け取ります。

```C#
using ScriptPortal.Vegas;
using System;

namespace VegasScript_SplitSilentArea
{
    public class EntryPoint
    {
        public void FromVegas(Vegas vegas)
        {

        }
    }
}
```

ここまでできれば雛形は完成です。一旦**テンプレートとしてエクスポート**すると、後々便利です。

当方の場合、テンプレートをVegasScriptとしてエクスポートしていますので、次に作成するときは設定した内容の大部分が反映されます。
（デバッガの設定はリセットされてしまうため、再設定が必要です）
![スクリーンショット 2023-01-17 145504.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/7eeaa9ca-0dda-d2f4-46c5-d0426d2043c1.jpeg)

エクスポートが終われば、次はなにか実装してみましょう。

とりあえず、FAQと同じく、バージョン情報を出力するダイアログボックスを表示させてみます。

```C#
using ScriptPortal.Vegas;
using System;
using System.Windows.Forms;

namespace VegasScript_SplitSilentArea
{
    public class EntryPoint
    {
        public void FromVegas(Vegas vegas)
        {
            MessageBox.Show(vegas.Version); // とりあえず、メッセージボックスの表示を追加
        }
    }
}
```

## 4.ビルドする

これはもう単純ですね。
とりあえず、エラーがないことを確認します。

## 5.デバッグする

デバッグを開始すると、先程の指定通りにVEGASが立ち上がります。
(ブレークポイントも可能です)。

ただし、起動した際に自動的にスクリプトが実行されるわけではなく（まず、トラックやクリップを選択する必要がある場合がありますからね！）、「ツール」メニューの「スクリプトの実行...」を選択して実行対象のdllファイルを選択する必要があります。

![スクリーンショット 2023-01-16 000751.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/7eb7886c-3201-c5ab-72bd-8abe6f9f245a.jpeg)
![スクリーンショット 2023-01-17 033133.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/33b0129d-86e1-1068-4eb4-0fcb6400b767.jpeg)

ここで、動作に問題がないか確認してみてください。
今回のコードの例の場合、バージョン番号が表示されたダイアログボックスが現れます。
![スクリーンショット 2023-01-17 033153.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/595fec2a-802b-b19d-ab31-eb735c1ea0cb.jpeg)
これで、スクリプトが出来上がりました。

## 6.Releaseでビルドして、dllファイルをスクリプトファイルのフォルダにコピーする

出来上がったdllファイルを以下の場所にコピーします。

```
(ドキュメントのフォルダパス)\Vegas Script Menu
```
![スクリーンショット 2023-01-16 000232.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101034/041b8037-0d58-e918-306a-bc0bf6db3034.jpeg)

## 7.VEGASを立ち上げ、スクリプトが登録されているか確認する

「ツール」－「スクリプトの作成」の一覧に自作のスクリプトがあれば成功です。

# おわりに

これで、ひとまずの雛形ができあがりました。
この雛形をもとに、たくさんスクリプトを作っていけますね！