やっぱり、もう一日
今は、AmuseGraphics Ver1.4.4の開発フェーズで、AGMPlayerを更新中だ。一応、完成した感じなのだが、夕方くらいから熱が出てきた感じでもあるので、リリース作業は明日に順延する事にした。
今回、AGMPlayerに追加した「Webリモコン」機能は、簡易Webサーバーを利用する! という事以外、特に何も考えずに実装を始めたのだが、仕上げ段階に入ると、色々と問題がある事が判った。
具体的には、同じ事をやっていても面白くないので、Webリモコン機能では、AGMServerなんかとは違って、プレイビューとライブラリビューの両方を一つのページに同時表示する感じにした。
これは、その方が、便利かなあ、と、思ったりもしたからなのだが、その結果として、色々と問題が出た訳だ。
何故なら、AGMPlayerでは、基本的な構造から、プレイビューとライブラリビューが同時動作可能にはなっていないので、プレイビュー相当の操作をする時に、ライブラリビュー相当の操作が同時に行われてしまうと、クラッシュしたりもする訳だ。
なので、動作的には、基本的にはプレイビュー相当の動作をメインにして、バックグランドで、ライブラリビュー相当の操作も行える様にしたのだが、AGMPlayerには、本家のライブラリビューと、プレイビュー時に使えるファイルセレクタもあったりする訳だ。
まあ、実用上は、Webリモコンの操作中にライブラリビューだとかファイルセレクタを同時操作する事はない筈なのだが、プログラムのコード的には、これらの同時動作でも、クラッシュしてしまう可能性がある。
と、言う事で、リリース直前になって、上記の様な問題があるなあ、という事に気がついたので、それらが同時動作できない様なプログラム的な制限なんかも入れてみたのだが、もう一つ別の問題として、AGMPlayerには、元々、出力音声をWebブラウザに飛ばす機能もあった訳だ。
音声を飛ばす機能も、簡易Webサーバーを使って実現しているのだが、今回、Webリモコン機能を追加するにあたって、簡易Webサーバーのインスタンスを増やす! という方法も鑑みたのだが、そこまでする必要もなかろう、という事で、簡易Webサーバーのインスタンスは一つのままにした。
なので、音声出力とWebリモコン機能は、同一の簡易Webサーバーの別ページで提供する格好にしたのだが、その気になれば、Webリモコン機能に、音声出力機能を取り込む事もできる訳だ。
このため、リリース間際になって、Webリモコン機能用のページに、音声出力用のコードも載せてしまおうか、と、思ったりもしたのだが、前述の様に、Webリモコン機能は、ライブラリビューだとかファイルセレクタと同時動作できない。
これに対して、音声出力機能は、それらと同時動作できるので、少なくとも、音声出力機能とWebリモコン機能を合体させれば音声出力機能は削除できる! という事にはならない訳だ。
それでも、Webリモコン機能を使う時には、音声くらいは手元で鳴らしたいかなあ、というケースも多いかもしれない事を鑑みれば、Webリモコン機能を使う時には、音声出力も、同時に行えるオプションはあっても良いかなあ、と、思った訳だ。
しかし、そんな事をしなくても、Webブラウザで二つのページを同時に開けば問題ない? という感じでもある訳だ。
と、言う事で、悩ましかったので、どうしようかなあ、と、思っていると、何だか熱っぽくなってきたので、今日のリリースも順延する事にした次第だ。
ちなみに、二つのページを同時に開くやり方で、使い物になるのかは確認してみたのだが、Android機器では問題ない感じだ。
しかし、iOS・iPadOS機器では、音声出力ページをフロントで表示していないと、ちょっとした無音時間があると、それ以降、音声出力されなくなる感じだ。
macOSだとかiOS機器用にプログラミングした経験がある人なら、さもありなん! という感じかもしれないのだが、実際問題として、Appleのこういった省電力手法は、迷惑な人も多い筈だ。
と、言う事で、まだ、この問題に対する対策は鑑みていないのだが、普通に鑑みれば、転送する必要がないデータを転送して無駄に消費電力を費やすくらいしか、対処方法はないかもしれない。
つまり、Appleが要らぬ事をやりさえしなければ、無駄に消費されなかった電力が、音声出力を継続されるために、無駄に消費される事になるかもしれない今日この頃だ。
まあ、音が途切れたら、また、ページを読み直して、画面タッチして再度音声出力させれば良いと言えば良いのだが、何が悲しくて、そんな事をしなければならないんだ? と、思うのは作者だけではない筈だ。