題名:Java Diary-66章

五郎の入り口に戻る

日付:2005/8/29

目次に戻る


Goromi-TV Part4

さて、何からやりましょう。まず開発環境だが、とりあえずはJavaだ。複数プラットフォームへの対応を求められていることでもあるし。(この”複数”という言葉が何を意味するかについて私はしばし悩むことになるのだが、それは後のことである)

でもって愛用しているPowerBook上でJavaの開発環境であるEclipseを動かすと、素敵に遅い。なのだが今は贅沢を言っていられる場合ではない。本来であれば開発用と称して新しいマシンを買いたいのだがそれはまだできないようだ。契約関係が遅々として進んでいないからである。

最初に実施計画書並びに経費内訳をプロジェクト管理組織に送ったのが6月15日。返ってきたコメントを反映して再送したのが17日。IPAに提出されたのが24日の午前中。IPAからの指摘が連絡されてきたのが7/6、修正版を提出したのが7/7.そのメールに私はこう付け加えておいた。

「 問題点などありましたらご連絡下さい。
ちなみにそろそろ開発用パソコンを購入してもよろしいでしょうか?それとも契約が落ち着くのを待った方がよろしいでしょうか?」

その返事には「おって連絡します」と書いてあった。

ところがその「おって連絡」はなかなかやってこない。こうなると新しいマシンで快適になどと悠長な事は言っていられない。贅沢は素敵だが、今は「敵」である。とにかく作るのだ。

こういう新しい物を作るときにはまず入り口から、ということで番組表データをサイトからダウンロードして使える形にするプログラムから作り始める。さて、問題です。どこからダウンロードしたらいいのでしょう、とあれこれ調べてみる。インターネット上にTV番組表を載せているサイトはいくつかあるのだが、面白いことに情報量が結構異なる。最初あるサイトからダウンロードするように作っていたのだが、そこより格段に情報量が多いサイトを見つけてしまった。今回作ろうとしているプログラムで一番気になっているのは

「情報量が少なすぎると面白くないのではなかろうか」

ということだからこの情報量の多さは捨てがたい。もうサイトからちゃんとプログラムがダウンロードできるようになってはいたのだが、ここは目をつぶって改修というか作り直すことにする。こういう類のプログラムはGoromi 及び本業で何度か作ったから面倒ではあるが淡々と製作が進む。

それが一段落すると今度は「動画を扱う」事に関して悩み始める。Goromiで扱っていたのは基本的に静止画と文字だったが今度は動画を避けては通れない。さて、問題です。どのような手段があるでしょう。

あれこれ調べるとそれほど選択肢が多くないことに気が付く。Java Media FrameworkというものかQuicktime for Javaだ。いろんなサイトを読むと前者はJavaが動くところだったらだいたいOKだが対応しているフォーマットが少ない。おまけにLinuxとWindows以外では性能が今一。後者に関してはWindows+Macでしか使えない。ただしその名が示すとおりQuicktime が使える場所だったらどこでもOKということらしい。さてどっちを使った物やら。まずはサンプルだ、ということでAppleのサイトを観てみる。するといくつかQuickTime for Javaのサンプルプログラムがあるのだが、そのうちの多くは動かそうとするとエラーがでる。どうやら最近仕様が変わったらしく、廃止された関数を呼んでしまっているようだ。ええい、サンプルがなくては物が造れないではないか。

としばらく憤怒の炎を燃やす。こうなったらJMFでいこう、とこちらもサンプルプログラムを動かす。ほどなくして動いたことは動いたが確かに性能が悪い。小さな動画を再生するだけでなんだか動きが今一だし、対応フォーマットも少ない。しかたがないからまたQuicktimeの可能性を探り出す。しかしサンプルがなあなどと考えていたら意外なところに解決方法が有ることがわかった。Macに開発環境をインストールするといろんなファイルがごそごそできるのだが、その中に「比較的まともに」動くQuicktime for javaのサンプルがあることがわかったのである。なるほど、青い鳥はこんな近くに居たわけだ。

それらをあれこれいじるとJavaから動画の再生が(一応)できるようになった。やれうれしや。次にトライしたのは「動画からの静止画切り出し」である。たくさんの映像情報を見せるときに、動画を再生しながらスクロールしたのでは見やすくない、ということは前述した。というわけで「動画から静止画をたくさん切り出し、それをとっかえひっかえ見せてやればいいのではないか」と思い出したわけだ。そのためには静止が切り出しが必要なのだが、どっかにフリーウェア転がってないかしら、とあれこれ探す。既にできている物を使うのはなんといっても楽だ。しかしたしかに切り出しプログラムはいくつか存在しているのだが、どれも帯に短したすきに長しでぴったりするものがない。

しかたがないから自分で作ろう。何か使える物はないか、とQuicktime for javaの仕様をあれこれ眺める。すると映像の任意の時間部分の静止画をPICTというmacには昔からおなじみのフォーマットで切り出してくれる機能があることに気が付く。これを最終的に必要なJPEGというフォーマット(少し調べてみるたび痛感するのだが、世の中には信じられないほど多くの画像フォーマットが存在するのだ)に変換するところで少し躓いたが、とにかく静止画が切り出せるようになった。

今度は少し戻って「ダウンロードした番組表データを検索できるようにするためにはどうするか」を考える。ここで私は珍しいことをやった。いつもは本能の赴くままにプログラムを作り始め、あれも必要、これも居るわな、とあれこれ付け加えるうちに何がなんだかわからなくなる。しかし今回は「本能の赴くままに」作るにしてもちょっと話がややこしすぎるのである。というわけでプログラムの設計図を書き出した。うーんとうーんとやりたいのはこういうことだから、、とやってみるとなんとなく考えが整理できてきた。といったところでごりごり書き出そうとしたところたちまち問題にぶつかった。

何かと言えばGoromi開発の時にもひっかかった「日本語を単語ごとにちょんぎる」日本語の形態素解析プログラムである。あれやこれや試したあげく茶筅でおしまい、となったはずなのだが不思議な事にそれがうまく動かない。特にWindows環境での動作がおかしい。ううむ。これはどうしたことか。

何か探さなくては、とまた"Java+形態素解析"というキーワードで検索などしてみるが、やはり解決策はSenしかないのである。ううむ、と調べてみるとSenもアップデートされているようだ。また試してみるかと思い使い出すとこれが結構ご機嫌に動作する。これでいいではないか、と今回はSenを使うことにした。

というわけで日本語がちょんぎれるようになったのでごりごりと作り始める。作り始める時に気にしていたのが、検索及びデータの読み込みが実用上問題ない速度で行えるかだったのだが、結構高速に動く(今のところは、という大きな条件つきだが)2週間、6ch分のデータを読み込ませ検索してもほとんど問題なしだ。

というわけで予想外に検索機能は早くできた、と私は次のステップに進みだす。しかし例によってそんなに話は簡単に進むはずがないのであった。

前の章 | 次の章


注釈