Chienomi

進化するmmfft9

開発::util

作者が使うために作られているツールというのは、作者がたくさん使っているというのは活発に開発されているのと同義である。

PureBuilder SimplyMy Browser Profile Chooserは私にとってなくてはならないツールなので、これらにバグがあったり、機能が足りなかったりすれば直ちに修正されるだろう。 まぁ実際のところ、PureBuilder Simplyはすでに成熟したソフトウェアであるため修正を必要とすることはかなり少なく、My Browser Profile Chooserは非常にシンプルなツールなので手を加えなくてはならないような機会は少ない。

だが、mmfft9は作られて時間が経っていない複雑なソフトウェアであり、なおかつ毎日ハードに使っているから、毎日のように改良されていく。

前回紹介してからもかなりの変更があった。

Infomation機能

mmfft9-info.rbはサーバーに問い合わせを行い、情報の表示を行う。 これは多くのオプションを持っている。

short long mean
-t TYPE --type TYPE サイト設定の名前を選択する。他と同じ
-y --yaml (ppの代わりに) YAMLで出力する
-j --json (ppの代わりに) JSONで出力する
-f --full キューの中身をすべて出力する (デフォルトでは先頭の5つを出力する)
-c --compact キューとワーカーの情報をエッセンシャルなものに限定する
-s --squashed キューとワーカーの情報を要約された文字列にする
-h --human-readable サイズをMBやGBなどの単位をつけて表示する

従来サーバーのログを読む方式だったのだが、サーバーは省電力などの理由でGNU screenや仮想コンソールで動かしていることが多く、頻度の割にかなり面倒だった。 そこで、別途コマンドで確認できるようにした。

この目的は進捗の確認だが、ワーカーの死活チェックに使ったりすることもある。 終わるまで放置ならなくてもいいのだが、実際どれくらいかかるか私はかなり気にすることが多い。

mmfft9-info.rbはサーバーに問い合わせを行い、サーバーは手持ちの情報をすべて返す。 どのように表示するか、あるいは何を表示するかはmmfft9-info.rb側に任せられている。 これは柔軟性の意味もあるし、サーバーは多くの場合ワーカーを抱える「忙しいホスト」なので、他のホストからも呼び出しやすいようにした。 単にサーバーに接続できれば良いため、ワーカーとして参加しなくても、ホスト設定ファイルを持っていれば使うことができる。

個人的には-s -hで使うことが多いが、場合によっても違う。 デバッグでも活躍している。

処理そのものを確認するときは-cもつけない方が良い。 例えば、Clipの動画が処理されるタイミングを知りたい時などだ。

-cはファイル単位で処理予定を知りたい時に役に立つ。 -sはどのファイルが処理されるかは表示されないため、単純に時間の見通しがほしいときに使う。

-s経過時間 / 予想時間形式での時間表示がされるという点も違う。 -cなどではあくまでtakeした時間が表示される。 経過時間はtakeしてからの時間であり、予想時間はファイルサイズ(実サイズではなくpowerサイズ)をpowerで割ったものだ。 予想時間はパワーレートをそれなりにちゃんと設定していないと機能しないので、経過時間のほうが参考になる。

タイトルパワーの扱い

当初タイトルパワーはtitle単位に集計されていたが、実際にはPCとスマートフォンでプレイした動画はそれぞれ処理方法が違う(私のだとReLiveColorOSになる)ので別ディレクトリがソースだが、出力としては(同一タイトルなので)同じである、といった扱いをするが、この場合動画の解像度が違うために処理にかかる時間が大きく異なったりする。 プレイするPCによって解像度が違うとかフレームレートが違うということもあるので、こうした場合に最適なオプションを設定するためソースディレクトリを分けるのは普通にあることであり、タイトルごとの集計は少し困る。

そのため、source_prefix単位に変更された。 パワーレートの設定もsource_prefix単位で行うものなので、そのほうが自然だ。

時間指定のないClip

Clipスタイルの動画は、動画の一部分を切り抜く関係上、サイズを元にした処理時間推測は困難である。 このことから、Clipスタイルの動画はパワーの機能が働かず、非常にサイズの小さい動画(10バイト)として扱われる。

これ自体は私の使い方には合っている。 Clipはほとんどの場合、音ゲーにおいて利用し、特定の楽曲のプレイ、例えばフルコンボを達成した場合などを切り抜くために使っている。 このようにするのは、音ゲーを「通しで見返す」ことはないと思われるからだ。

だが、音ゲーでも非常に困難な挑戦の記録を残したいとか、ストーリー要素を再生しているとか、そういった理由で最初から最後まで残したい場合もある。 このような場合、通常の一曲よりもかなり処理時間がかかるため、10バイトの動画だと思われるのは困ってしまう。

そもそもサイズを設定できないのは「一部分を切り抜くから」なので、時間指定がなく動画全体を変換するのであれば通常通りサイズを指定して構わないはずだ。 そこで、sstoの両方に-が設定された場合、ちゃんとサイズを入れるようになった。

ワーカー情報

mmfft9-info.rbが作られる少し前から、ワーカーの情報をサーバーが持つようになった。

これは、現在誰がどれくらいのサイズの動画を処理しているか知りたい場合は多いからだ。

相変わらずワーカーが途中で落ちてしまった場合は検出できないが(ラップすれば簡単にできるが、必要性は感じていない)、キュー情報と同レベルで必要なものだと感じている。

失敗時の情報

ffmpegのエラー時はいつ起きたものなのか記録するようになった。 これで、昔のエラーが残っていて慌てるということも減るはずだ。