作曲・指導・C言語・Linux

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。


124)プレイヤーを改修した話

当サイトで使用しているオーディオプレイヤーを改修した(「プレイヤーを作った話」)。今までは、外部のhtmlファイルにオーディオデータを一つだけ埋め込み、それをiframeで読み込んでいた。つまり、オーディオデータの数だけhtmlファイルを読み込んでいたことになる。これでも動いてたが、いつくか問題があった。たとえば、外部htmlの数だけスクリプトが実行されるので、処理に大きな無駄が生じること。また、それに関連してか、オーディオデータが読み込めないこともあった。

今回の改修では、1つのhtmlファイルですべてのオーディオデータを読み込み、スクリプトを1回実行するだけでよいものにした。むしろ、これが自然な形である。とはいえ、手続き型と呼ばれる古臭い書き方で作ったので、まだまだ改善の余地はありそうだ。そのうちデータを公開したいが、まともな形になるのがいつになるか分からない。ならば、「ノート」で「Webプレイヤーの作り方」という記事を勉強がてらに書いてみるのも面白いかもしれない。

ところで、新型コロナウイルス接触確認アプリ「COCOA」が話題になった。4100万円をかけて作成されたこのアプリは、ボランティアが無償で(!)作ったそうである(元々は有志が作っていたものらしい)。鳴り物入りで公開されたCOCOAであるが、不具合(バグ)が多すぎる、とボランティアの開発者が非難されている。しかし、バグのないプログラムなど不可能である。画面に文字を出力する関数のprintf()を使っただけで簡単にバグが発生するのがプログラムの世界だ。

何が言いたいかというと、今回改修したプレイヤーも理想通りに動いてくれるという保証はやはりない、ということだ。たとえば、プレイヤーの数が多いページでは、シークバーの色が初期値の灰色でなかったり、曲長が取得できない場合があるだろう(回線速度や応答速度の問題かもしれない)。つまり、バグは発生するものである、という前提のもと、修正しやすいコードを書くことが要請される。このような作業をリファクタリングという。以前のプレイヤーのコードも、一つの仕事は一つの関数がする、ということを意識していたため、今回の改修は比較的容易であった。

2020-06-28