はじめて作る UTAU プラグイン(開発チュートリアル)補足編
おまけ
チュートリアル本編では書ききれなかった、背景・考え方・トリビアなどを紹介できればと思います。すでにプラグインは完成していますので、自由な気持ちで興味のあるところから読んでみてもらえればと思います。
プログラミング全般
プログラミング言語
人間の言語に日本語や英語などいろいろな言語があるように、アプリのプログラムコードを書くための言語「プログラミング言語」もいろいろあります。
このチュートリアルでは「C#」(しーしゃーぷ)というプログラミング言語を使っています。なぜ C# にしたかというと、
- 幅広く使われている言語なので環境を整えやすく、情報も豊富
- GUI を作るのが簡単
だからです。
詳細については、おすすめプログラミング言語を考える(UTAU プログラマー向け)をご覧ください。
GUI フレームワーク
C# で GUI を作る場合、大きく分けてやり方が 3 種類あります。
- フォーム(WinForms)
- WPF
- WinUI 3
このチュートリアルではフォームを使っています。なぜフォームにしたかというと、
- C# だけ覚えれば使える
- シンプルで直感的に開発画面を操作できる
からです。
デザインタブのプロパティウィンドウで設定を変更するとすぐに内容が反映され、アプリのイメージが掴みやすいため、フォームは初学者に向いています。
一方、WPF や WinUI 3 は、C# の他に XAML という XML に似た言語を覚える必要があります。いきなり C# と XAML の両方を覚えるのは大変でしょう。加えて、MVVM というプログラミングの概念を覚える必要があります。覚えることのハードルが高いため、今回は採用しませんでした。
もちろんこれらにもメリットがあり、特に大規模アプリ開発に威力を発揮します。また、OpenUTAU はある意味で WPF の親戚ともいえる Avalonia で開発されています。
ステップアップしてきたら、これらにチャレンジしてみるのも面白いと思います。
.NET に関する注意
C# でプログラミングしていると、「.NET」(ドットネット)という単語をよく耳にします。.NET はアプリ開発の基礎部分に当たるところで、.NET に対して直接何かをすることは通常ないので、あまり意識する必要はありません。
しかし、1 つだけ注意してください。.NET には名前が似ているものがいくつかあります。
- .NET(後ろに名前が付かないもの)
- .NET Framework
- .NET Core
この中で、「.NET」が最新です(2024 年 6 月時点での .NET の最新バージョンは 8)。他は古いものなので使わないでください。
ステップアップ
C# の学習
このチュートリアルではプログラムコードの説明はごくごく一部しかできていません。
自分オリジナルの UTAU プラグインを作ろうと思ったら、プログラムコードを書くための C# の学習が必要不可欠になります。例えば以下のような教材で学習してみてはいかがでしょうか。
特に、「メソッド」「クラス」などはしっかりと学習する必要があります。
学習後、あらためてこのチュートリアルのプログラムコードを見てみると、「あぁ、これってこういうことか」という発見があるかと思います。
キーワード復習
このチュートリアルで登場したキーワードが記載されている箇所へのリンクを貼っておきます。
- アルゴリズム
- if(イフ)
- 音符情報ファイル(オンプジョウホウファイル)※このチュートリアルでの便宜上での呼び名です
- コメント
- 真偽値(シンギチ)
- 代入(ダイニュウ)
- try~catch(トライキャッチ)
- 配列変数(ハイレツヘンスウ)
- ビルド
- for(フォー)
- plugin.txt(プラグインテキスト)
- 変数(ヘンスウ)
- Button(ボタン)
- Label(ラベル)
デバッグ実行
前編で簡単にご紹介したデバッグ実行について、具体的な活用方法を少しご紹介します。
例として、変数に記憶されている内容を見てみましょう。
Form1.cs タブの ButtonGo_Click の中にある Boolean canUp = false;
行の左端、行番号よりもさらに左の部分をクリックすると、えんじ色の丸印が付き、行の内容もえんじ色になります。
これは「ブレークポイント」と呼ばれるもので、プログラムの実行をここで止めることができます。
UTAU の[ツール → プラグイン → 半音上げ]メニューで半音上げプラグインを起動した「後」で、Visual Studio の[デバッグ → プロセスにアタッチ]メニューをクリックすると、プロセスにアタッチウィンドウが開くので、HanonAge.exe を選択してアタッチボタンをクリックします。
前編で空っぽのウィンドウを実行した時と同じように、Visual Studio の右側でグラフがぴろぴろしている状態になったかと思います。
その状態から、起動しておいた半音上げプラグインの実行ボタンをクリックすると、Visual Studio の画面に自動的に切り替わります。ブレークポイントが黄色くなって、ぴろぴろも止まっています。
これが、ブレークポイントでプログラムの実行が止まった(ブレークした)状態です。Boolean canUp = false;
が実行される直前で止まっています。
つまり、String[] lines~
までは実行されたわけで、変数 lines には音符情報ファイルの内容が記憶されている状態です。
ここで lines
にマウスカーソルを合わせると、lines の情報がポップアップします。左側の三角をクリックすると、配列変数 lines
の内容が lines[0]
から順に表示されます。
このように、デバッグ実行は変数の内容を確認できて便利です。
ここで、[デバッグ → ステップオーバー]メニューをクリックする(または、ショートカットキー F10)と、プログラムが 1 行だけ実行されてから止まります(for のように 1 行の一部だけ実行される場合もあります)。F10 連打で次々と実行される様子を見ることができます。
プログラムを最後まで実行したい場合は[デバッグ → 続行]メニュー(または、ショートカットキー F5)です。半音上げプラグインが終了し、UTAU の画面で半音上がっています。
再度デバッグ実行したい場合は、再び半音上げプラグインを起動してから、再度プロセスにアタッチしてください(2 回目以降は[デバッグ → プロセスに再アタッチする]でも可)。
他の人の半音上げプラグインを見てみる
他の人のプログラムを見ることも良い学習になります。いろいろな人が半音上げプラグインを作っているので、参考にしてみてはいかがでしょうか。
注意点として、プログラミング言語は C# だけではなくさまざまな言語が使われていますので、そのままコピペでは使えません。しかし、考え方などは参考になることもあるのではないでしょうか。
ライブラリの活用
プログラミングにおいて「自分で作る」というのは非常に重要で、やってみたからこそ分かるというのは良い経験値になります。
一方で、理解した後は「効率的に作りたい」というニーズも出てきます。
プログラミング効率化の一手として、「ライブラリ」(ある程度の処理をまとめてやってくれるプログラミングの部品)を使うという方法があります。
UTAU プラグイン開発用で C# で使えるライブラリとして「UtauPlugin」がありますので、見てみてはいかがでしょうか。
主な改訂履歴
- 2024/06/08 初版。
- 2024/06/18 デバッグ実行を新規作成など。
- 2024/09/18 ライブラリの活用を新規作成。
Discussion