この週末は、デジカメからの画像取り込みプログラムの改良(同一カメラで1万枚以上への対応)や掃除や散歩やドライブなど、有意義なことをしようと思っていた。

のであるが、実際には、したかったことは何もできなった。

昨日は、疲れのせいかだるかったので、家にこもってEvernoteからDropbox Paperへの移行をした程度だ。移行は、本文はコピー・ペーストでできるのだが、埋め込んだ画像はできないので、それを手作業で復元する(元のファイルがPCに残っているのはそのまま、オリジナルがあるものはリサイズして、Paperに埋め込む。ないものは、EvernoteからダウンロードしてリサイズしてPaperに埋め込む)必要があって、結構時間が掛かった。日記1個に30分くらい掛かった。全部で7本を移行して、日記の残っていた分は終わった。が、あとドライブ関係が44本もあるので、移行プログラムを作りたくなって来た。

今朝は、「今日こそは」と思っていたのだが、思わぬ落とし穴にはまった。発端はgmusicbrowser(GMB)の、次のリストだ。

Something wrong!

何の変哲もない、普通の(と言うには重複が多いがw)ビートルズのアルバムの一覧の一部に見えるが、常々感じていた不満(何が悪いかすぐに気付いた方は、ちょっとした愛好家ですね)を思い出して、余計なことを考え付いてしまった。

同じ年に出たアルバムをちゃんと発売順にできないものだろうか?

説明すると、上の図の上半分の黄色いのは"Magical mystery tour" (1967年11月発売)、下半分のごちゃごちゃしたのは"Sgt. Pepper's lonely hearts club band" (1967年6月発売)である。それぞれ同じ年に出たのではあるが、気に入らないことに、リストには発売の逆順に出ているのだ。タイトルがアルファベットの順だとM→Sなので、上のように並んでしまっているのだ。

まあ、「そんな細かいこと、自分で分かってればいいじゃん」とは思うし、今まで我慢して来たのだが、他の例では、デビューアルバムの前にセカンドアルバムが出ることもあった覚えがある。さすがにそれはどうかと思う。要は、元になったMP3の仕様(ID3)が安直で、現実に対応できていないのだ。それを見なかったことにして使い続けるのは、技術者としてはやっぱり嫌なのだ。

技術的な問題以外にも、仮に上のリストの順で「全曲再生」したら、曲順がおかしくて、それこそ話にならない。

ソートに使われる発売日の情報は音楽ファイルに格納されているのだが、基本的には年だけしか格納できない。せめて月まで入れられればいいのだが、仕様上は無理だ。

それで、いくつかの案を考えた(それだけで数時間掛かった気がする)。

  1. 余り使っていないフィールド(例: Mood(TMOO), Grouping(TIT1), Rating, Discname(TSST)など)を流用する。
  2. GMBにカスタムフィールド(例:リリース日(例: "19670601"), 同じ年の時の順番(例: 1, 2))を追加する。
  3. GMBにAlbum sort order(TSOA)フィールドを実装する。
  4. GMBに他のフィールド(例: Original release time(TDOR))を実装する。
  5. 新しい独自フィールドを実装する(TXXXを使う)。
  6. GMBに2個の追加フィールド(1: リリース日、2: リリース日があればリリース日、なければ年)と、後者のフィールド(2番)を使うソート条件を追加する。

検討したところ、最後の6が残り(正確には、1-5の検討の結果、6のように2段階にしないとうまく行かないことが分かった)、「ちょっと試しに」実装に着手してしまったのが運の尽きである。半分は意外にすんなりできて、下のように、「リリース日または年」のフィールドが表示できたのだが、例のリストのソート順に反映することができなくて、(昼寝もしたけど)気付いたら外は暗くなっていて、とてもがっかりした。

「リリース日または年」が出るようになった (年はアルバム名の右の<<の右にも表示されている。上のエントリのアルバム名とリリース日は、テスト用の架空のもの)

随分時間を掛けてうまく行かない理由を調べたのだが、どこを直せばいいのか、まだ分からない。ソート時に、追加したフィールドをどうしても参照できない。この辺りのプログラムは、他と比べて今ひとつ直感的でなくて分かりにくく、GMBの暗部を見た気がした。まあ、何にでも触れて欲しくないことはあるだろうから、仕方ないね(僕のプログラムにだって、結構ある)。

試行錯誤の結果、何がどうなっているのは分からないが、どうにか、リリース日(なければ年)でアルバムをソートできるようになり、問題の"Magical-"が"Sgt. Pepper's-"の下に出るようになった。

リリース日でアルバムをソートできるようになった。

ところが、一難去ってまた一難。今度は、次のような、ちょっと困った状況に陥ってしまった。

"Baby it's you"はどこに置けば?

一番上の"Baby it's you"は、近年発売されたシングルなのだが、録音は1963年なので、入手した時に年に録音の年を入れた。これをどこに配置すべきなのか、結論が出ない。正しいリリース日にすると、初期の曲なのに最後の方に出るし、録音日にすればそれらしい場所に出るが、リリース日を入れるべき箇所に録音日を入れるのは掟破りな気がする。

規則に従ってリリース日を入れて、最後の方に出すのがまっとうなのだろうが、もっといい規則を決めたいところだ。「録音年」のフィールドを作ると、何かいいことがあるだろうか? (12/13 23:00)

"Baby it's you"の「リリース日」の解決策が見つかった。放送日をリリース日に入れることにした。ただ、シングルとして発売されたこの曲は、アルバム"Live at the BBC"に入っているのとはバージョンが違うので、調べても放送日が良く分からない。ただ、録音日は3日しかなく、そのうちアルバム版と同じ日に収録されたと推測できる。そして、もしかしたら放送されなかったのかも知れない。が、いくら考えても埒が明かないので、アルバム版の放送日とした。(12/15 5:09)

  •   0
  •   1

11件のコメント

  1. naoki:

    そういうものなんですか。
    プログラムなんて理系またはデジタルの極みで,「触れてほしくない」という文系的なものなんて無いものだと,私みたいな(工学部に行っただけの)人間には思えてしまうのです。不思議な気分です。

    •   0
    •   0
  2. PiuLento:

    ●実はそうなんです。不本意な作りになっているとか、無理な動きをしているとか、分かりにくいとか、「とりあえずは動いているけど、あとで何とかしたい」というコード(プログラムの部分)があるものです。

    そういうのって、大体時間がないし、書き直すと結構大変なので、ずっとそのままになることが多いですが、たまに、問題の巣窟になる場合があります。

    •   0
    •   1
  3. PiuLento:

    ●追伸です。

    そうなる原因は、人間が有限の時間でプログラムを作るからなんでしょうね。機械が作れば、きっとそんなことはなくなるはずです。ただ、そういうプログラムを見ても全くおもしろくなさそうです。そもそも読めないと思います。

    •   1
    •   0
  4. naoki:

    機械が機械のプログラムを書く……何だか目が回ってきました。

    •   1
    •   0
  5. PiuLento:

    ●ええ、今でもプログラムを自動生成できているものはあります。簡単なものでは、ゲーム生成ツールなどだと思います。あと、今流行りの、機械の学習も、広い意味ではそうかも知れません。

    プログラムで一番重要なのは、仕様(それは何をするのか)とか、どういう順序で何を実行するかです。それが決まれば、後はカーナビとか自動運転のようなもので、人間がやるのは面倒で、間違いが出ます。僕も、いい加減打ち込むのは止めて、考えたことをそのままプログラムにしたいですw

    それに、仕様決め以降は機械ができそうですから、問題は、「ちゃんとした仕様」を機械に提示できるかどうかです。それも、そのうち容易になると思います。

    •   0
    •   1
  6. naoki:

    浪人時代,予備校の物理の先生が「運動方程式を立てるまでが人間のシゴト。計算は機械がやる」(←「数学屋に任せればいい」という人もいました)と仰っていたのを思い出しました。ええ。白衣を着た,ドクのような方でした。

    https://goo.gl/kS6Ee3

    実際はこんな笑顔じゃなかったです。
    マジでマッドサイエンティスト風。

    •   0
    •   2
  7. PiuLento:

    ●Precisely! やっぱり、機械が得意なことは機械にやらせたいです。そのうち、ニュータイプとかいって、考えるだけでピピピッとコンピュータに何でもやらせられる人がでるのかも知れません。

    先生、いい風貌ですね。マジでマッドサイエンティスト風ってところが怖そうですが、分かって付き合えば大丈夫そうなw いや、僕はそういう人になりたいのですがww

    •   0
    •   0
  8. naoki:

    喋りは吹替版のドクみたいでした。

    •   0
    •   1
  9. PiuLento:

    ●naokiさん、いいですね!(とはいえ、僕は吹き替え版は知らないのですがw)。

    •   0
    •   0
  10. naoki:

    あー……,言葉を誤りました。吹き替えでなくてもいいんです。

    字幕版の,あのドクの喋りの雰囲気で授業をしたのだと思って頂ければw

    •   0
    •   1
  11. PiuLento:

    ●naokiさん、そうでしたか。それなら、本当にうらやましいです。毎日と言わず、毎年出たくなりますw

    •   0
    •   0

コメントを書く

名前    

メール 

URL