妄想です。試してません。十分調べてもいません。勝手な決めつけが大部分を占めています。ご注意を。


Matroskaコンテナが名前のとおり、入れ子にできるのだとしたら。例えば、"天地無用.mka"のようなファイルを想像する。天地無用にはOVA版が1期〜3期とTV版が3種*1ある。まず、CDが準拠しているシリーズごとにmkaを作る。その中には、さらにタイトルごとにmkaがあり、中にはディスクが複数あるものもあるだろう。私が所持しているのはOVA第三期其ノ一〜三。つまり、2段階くらいなら作れてしまうわけだ。もちろん全部持ってる人もいるだろうし。
しかし、実際問題そんな入れ子に対応したプレイヤーはあるのだろうか。なんとなくなさそう。となれば、自作するしかない。*2
おそらくツリー状のコントロールで管理するのがよいだろう。とりあえず、GUIのアプリはJavaでしか作ったことないからJavaで。しかし、困るのは中のファイルを再生するのに外部のDLLを使わないとやってられないこと。まさかTTA再生用のJavaクラスがあるとは思えない。
そこで、Javaから、既存のネイティブコードなDLLを利用できるのか?という疑問が沸く。ちょっとだけ調べてみると、Javaからネイティブメソッドを呼ぶのにはJNIというインターフェイス*3を使うようだ。しかし、これはJavaのクラスコードの一部をネイティブに置き換えるためのもので、既存のライブラリを使うことはできないようだった。
そこで、JNIを使ったJava用のネイティブDLLから、既存のネイティブコードなDLLを呼べばいいんではないかと思いつく。つまり、JNIのDLLは、既存のDLLとJavaクラスとの橋渡し役となる。
ここまで考えてから、そもそもJNIの利用価値ってこれくらいしかないんじゃないかと思った。最近ではJavaC++を実行速度で上回ったりすることもあるようだし。ネイティブで書けばいいってもんでもない*4。結局、既存の資源を利用するために使うのが、もっとも有用な使い道な気がした。


あー長い。

*1:天地無用!」、「新・天地無用!」、「天地無用!GXP」。GXPを前の2つと合わせることには、ちょっと違和感があるけど、一応TVシリーズということで。

*2:このあたりから思考が暴走している。

*3:Javaのinterfaceではない。

*4:もちろん、Javaで書けばいいってもんでもないのだけど。そもそもJavaを使う動機ってのがJavaしか使ったことがないというだけだし。