AviUtlのプラグインを作る際にやったこと、やらなかったこと
アドカレ九日目です。
カレンダー→AviUtl Advent Calendar 2022
前の記事→AviUtl1.10で追加された共有メモリキャッシュ関数の扱い方
概要
みなさん、AviUtlつかってますか?
最近の情勢に詳しい方ならわかると思うんですが、AviUlは数年前と比べて凄まじい進化を遂げてます。それもこれも有志の方々の素晴らしいプラグインのおかげです。そんなプラグイン、僕も作りたい!!!→つくりました。パチパチパチ。
ということで、プラグインを作った際にやったこと、やらなかったことを箇条書きにしようと思います。
そもそもどうやってプラグイン作るの?
プラグインの作り方は簡単です。
ざっと書くと、
1. コードを書く。
2. AviUtlのお部屋からsdkをダウンロード。
3. コンパイラとsdkのパスを繋ぐ。
4. コンパイルする。
これで終わり。ですが、僕は最初コードを書く段階で躓きます。残念。
…という訳で、一般人がプラグインを作るのはなかなか大変なのが現状です。
プラグインを作る際にやったこと
はい、本題です。ポインタのポの字も知らなかった僕がやったことを箇条書きで書いていきます。
・c++の習得
AviUtlのプラグインはc++というもので作られています。goとかrustでも作れるらしいですが、あまり情報が出回っていないのでおすすめしません。やるならc++一択です。
そんな訳で、僕はc++の簡単ver.であるc言語を勉強した後に、c++を勉強しました。これだけでトータル一年と半年ぐらい。
cとc++を勉強したいなら、以下のサイトがおすすめです。他のサイトよりも分かり易すぎて昇天します。
・一週間で身につくC言語の基本
・一週間で身につくC++言語の基本
・win apiを知る
僕はウィンドウの出てくるプラグインを作りたかったので嫌々ながらもwin apiについて調べたりしました。win apiというのは、Windowsで使用できるいろいろ便利な関数のことです。
・一週間で身につくWIN32プログラミングの基本
・Visual Studio 2022の使いかたを学ぶ
AviUtlのプラグインはVisual Studioというソフトで開発されることが多いと思います。僕も例にもれず、Visual Studioを使ってプラグインを作りました。ところがどっこい、このソフト、ゴミ難しい。まるで分からない。googleが手元にないと爆死確定演出です。困ったらとにかくググりましょう。
・画像処理について調べまくる
僕はウィンドウを出すプラグインを作りたかったのですが、同時に画像処理もやりたかったのでいろいろ調べました。そこで出てきたのが数学。微分、積分、行列、二次関数、なんちゃら展開。お勉強って大事なんやね。
・ブレゼンハムの線描画アルゴリズム
・ベジェ曲線
・ベジェ曲線を等間隔で分割したある点を取得する
・スクリプトを作りながらプログラミングに慣れる
今振り返ると、僕はスクリプトを作っていたときにプログラミングの基礎を学んだんじゃないかぁ~と。とにかく、プログラミングに慣れる。これ、大事だと思います。
プラグインを作る際にやらなかったこと
はい、今度はやらなかったことをまとめていきます。
やらなかった理由はめんどくさい&ハードル高い、が殆どです。
・アンチエイリアス
ウィンドウを表示する際に、アンチエイリアスをかけていないのでクソださウィンドウになってしまいました。配色センスが無いのもあり、かなり残念なものに…。アンチエイリアスかければ少しはましになったんかな。
・メモリ安全性の高いプログラミング言語への移行
AviUtlのプラグインはc++で作られることが多いです。ですが、c++にはやばめの問題がいくつか存在します。なので、rustなどの安全な言語を使うのが理想なんでしょうけど…rust、難しすぎます。
・高速化
c++にはマルチスレッドやsimdなどの高速化手段がたくさんあります。ですが、僕はそれらの手段を一切つかいませんでした。僕が作ったプラグインは重い処理がなかったので、高速化しても旨味がなかったんですよね。
・バグがあってもほっといた
これは僕が悪い。バグがあるのに、そこで妥協してしまいました。よくないね。
最後に
こんなつまらん記事を最後まで読んでくれてあざます。
次はもう少し有益な記事かきまする。
ばいび~