AviUtlのパッケージマネージャapmにContributeして感じた話
AviUtl Advent Calendar 2021
この記事はAviUtl Advent Calendar 2021 14日目の記事です。もうクリスマなんやが??? ・・・遅刻してすみません。
<<13日目 | AviUtlの質問のしかた - ePi || 14日目 | 前処理・中間処理で考える軽量化 - bakegaki >>
はじめに
動画編集ソフトとして有名であるAviUtlだが、それ単体でできることは少なく、数々のプラグインやスクリプトを導入することとなる。これは面倒であり、数多く解説記事があるが、そういうものはパッケージ管理システムで解決されるべきではないか。ずーーーっとそう思ってきた。自分が好きなパッケージ管理システムといえばpacmanだ。ArchiLinuxで使われており、Windowsでもmsys2で用いられている。
しかしどうも人類はそこかしこで独自のパッケージ管理システムをフルスクラッチしがちな傾向にある。AviUtlもそうだ。そこで今回は最近登場したapmについて見ていく。
apm
パッケージ管理システムをAviUtlで組むときの課題
そもそもWindowsというただでさえパッケージ管理システムの恩恵に預りにくい環境で育った開発者たちが勝手気ままに様々な方法で公開している。OneDriveとかGoogle Driveといった自動化が難しい場所で平気で頒布されている。このへん、chocolateyもだいぶ苦戦している。
また再頒布を禁じているものもある。はては直リンク禁止とかいうものもある。どのようなライセンスにするかは当然にして作者の自由では有るが、この世界には自由ソフトウェアの啓蒙が行き届いていない。
またWindowsユーザーはCLIを解さない。Electronとかいう「全員ブラウザになろうぜ」とかいう狂気的理念をもつライブラリを用いてでもGUIを作らなければ使われない。
そんななかElectronでUIをつくりバージョン管理システムを外付けするのをやってのけているapmの開発陣に敬意を評したい。
apmが選んだ道
対象となるスクリプト/バイナリを再頒布することにすればシステムは簡単になる。実際過去にそういうのもあった。
ただこういう方法は長続きしない。当然にしてファイルを頒布する環境の維持にはカネがかかる。容易にミラーサーバーを建てられるようなシステムを組まない限り他人の手を借りることも難しい。また再頒布を禁じているソフトウェアを対象にできない。
そこでなのかどうかはしらないが、apmでは1次配布元から拾ってこれるようなシステムとなっている。GoogleDriveやOneDriveといった安定しづらい一時配布元に対応するためか、ミラーの指定ができるデータ構造となっている。
データ構造: apm-data
apmはUIを司るapm本体とパッケージデータを管理するapm-dataに分離されている。
/data
にパッケージデータがある・・・のだがプラグインとかスクリプトはなぜかpackages_list.xml
にごった煮にされている。なぜ分けないのか、そこに痺れるあこがれる(ないです)。
contributeした
まずは自作のpluginを押し込みに行った。実はもっと高速化の余地があるプラグインなのだが、それはまたそのうちやる。
AviUtlでは盛んにplugin/scriptの引き継ぎが行われてきた。L-SMASH Worksはその典型例で、muken氏はほとんどAviUtlから手を引いてしまっているので、引き継がれ、enccc氏->HolyWu氏->Mr-Ojii氏と引き継がれた。パッケージ管理システムもこれに対応するべきだという課題を立てた結果、muken(VFR-maniac), HolyWu, Mr-Ojii, ぽっぷん氏の4種類のL-SMASH Worksが存在している。
L-SMASH Worksはffmepgに依存している。ffmpegは世界中のcontributerが次々と開発を行っているので、master追従すると日になんども更新が入ることになる。L-SMASH Works自体に更新がなくとも、どのcommitのffmepgを使うかで生成されるbinaryが変わる。Mr-Ojii氏は毎日ffmepgの最新を取ってきてビルドするというCIを組んでいるが、これはバージョン固定しようとしていたapmの構造と相性が良くなかった。そこで議論の結果インストール日ベースの管理ができるようになった。
感想
apmの存在はAviUtl界隈に次第に知られてきているが、「わざわざapm-dataにcontributeしに行くほどではないし・・・」という遠慮の精神がまだ強い様子が伺える。多くのユーザーに使われることで開発者側の心持ちも変わるであろうから、今後の啓蒙に期待したいし、自分もなんかしらの形で応援したい。
MinecraftのModであるGalacticraftで、酸素ゲージの位置を移動する方法
日本語だとこの方法が著しくggrbilityが低いので記事にしました。
というのも多分日本語だと
この5chのスレしか引っかからず、しかも自己解決してなにも示されずに終わってます。
というわけで英語サイトより。
There is an option I know off it is in the config file of galacticraft that you can edit to get the display on the other side.
(press in minecraft before loading a world -> options -> resource packs -> open resource pack folder then go up 1 directory level and go into the config folder then the galacticraft folder)
Inside the galacticraft core config :
# If true, this will move the Oxygen Indicator to the bottom. You can combine this with "Minimap Left" B:"Minimap Bottom"=false (changed this to true myself) # If true, this will move the Oxygen Indicator to the left side. You can combine this with "Minimap Bottom" B:"Minimap Left"=false
というわけで、マイクラのconfigフォルダのなかのGalacticraft/core.conf
のclient
の項目にこれがあるのでこれで各4隅に移せるようです。