題名:Java Diary-41章

五郎の入り口に戻る

日付:2003/10/21

目次に戻る


GLBrowser-Part2(Ver0.2)

勢いだけでGLBrowserを公開はしてみたものの、抜けている点が山のようにある。まず気になりだしたのが開くことができないページが結構あることだ。

そのうちの多くはリンクをクリックすると新しいウィンドウが開いて表示されるタイプのページ。これをちゃんと表示させようと思えば、それなりに処理を追加しなくてはいけないらしい。ちょうどそのころNagaraBrowserというソフトが改訂され、その問題を解決したという。どうやってんだろう、と思ってそのサイトを見ると懇切丁寧にやり方が書いてある。ああ、ありがたやと思いさっそく機能を追加する。

すると確かに新しいウィンドウを要求するページも表示できるようになる。やれ、うれしやと思っていられた期間は短かった。悪名高いポップアップ広告というのがあるのだが、それまで表示してしまう。更にそうした広告というのはウィンドウのサイズを指定することが多い。普通のブラウザだったら指定された大きさのウィンドウが開くだけなのだが、GLBrowserでそれをやるとウィンドウ全体のサイズが変わってしまう。これは大変うれしくない。またもやWeb kitのドキュメントをひっくりかえし(電子媒体だからこれは比喩的な表現)ポップアップ広告を遮断する機能を設定する。

などとやっているとあることに気がつく。なんとGLBrowserの位置が変更できないではないか。タイトルのところにマウスを持っていきぐいっと動かせば、、動かない。げげえ。こんな妙なプログラムをリリースしてしまったか。(過去何度この台詞を口にしたことだろう)とにかく対処をせねば。しかしこんな妙な問題には遭遇したことがない。ええーっとええっと。何がおかしいのだろうとやることしばらく。画面上にあれこれ配置した部品のサイズがとんでもなく間違っていることに気がついた。ウィンドウの中にある部品がウィンドウをはみだしており、それが悪さをしていたらしい。サイズをえいえいっと直すとちゃんと動くようになる。

他にもいくつか恥ずかしいバグはあったのだが、それらをいちいち書いていたらきりがない。よくフリーウェアのリリースノートでlots of bug fixとか書いてあるがああいう風にまとめてしまいたい気持ちがよくわかる。しかしそうまとめることができない問題も出てくる。なんだかこのソフトにはおもしろい機能がないではないか。ただ(機能の劣る)ブラウザ画面に検索窓をつけただけだ。こんなのでいいのか、という声が自分の中でだんだん大きくなってくる。

その声を消すには、、と考え出す。元々やりたかったことは

「Webページを見ているうちに”この言葉って何だろう”とか”この人でどんな人だろう”と思ったとき簡単に検索できる」

であった。これをやるためにはたとえばブラウザ上で選択された文字列を取り出し、それを自動的に検索窓に放り込み、、という処理を行えばよい。しかしこの「ブラウザ上で選択された文字列を取り出す」というところをどうやったものやら、と立ち止まっていたのだ。

これを書いているのはその処理を追加してから二日後ぐらいだが、それでも自分がどこからきっかけをつかんだのか覚えていない。とにかくコンパイル時にWarningは二つほどでるが、その処理ができるようになったのである。NagarBrowserのページに書かれていた「コンテクストメニューを追加する」という内容を参考にしょこしょこ機能追加している最中に思いついたのかもしれない。そこができれば、あと一息。コンテクストメニューもしくはキー操作(面倒なのでControl-Fに固定)で選択した文字列をGoogleで検索できるようにする。

などとあっさり書いているが「そういえばキーイベント調べるのってどうやるんだっけ」とGMailのソースなど見直しながらやっている。見ていると自分でも「よくもこんなに作ったものだなあ」と感嘆する。そんなことを言っているうちにこのGLBrowserの方もなんだか大きくなりつつあるのだが、まあそれはそれ。

さらに検索した文字列が、表示されたページの中でどこにあるのかをボタン一発で調べることができる機能も追加した。小さなページだったらほしい情報がどこにあるかすぐわかるが、文字がどわーっと並んでいるページだとそうもいかない。実はこの機能には未だに問題があり、検索する言葉の数が変わると表示がおかしくなるのである。あれこれいじってみたが直らない。ああ、どうしたものかなあ、とあれこれやっているうちに、あることに気がついた。

ある日を境にGLBrowserダウンロードページのアクセス数がとても増加しているのである。これはどうしたことか、と飛んでくる元を観てみれば私がGLBrowserを作るとき大変参考にさせていただいたHappy Macintosh Developing Timeというページで紹介されているではないか。これはまずい。たくさんの人がアクセスしてくれるのに、今あるのは何の変哲もなくおまけに恥ずかしいバグまで含んだVer0.1だ。泡を食いバグには目をつぶってVer0.2をリリースする。

さてとりあえずリリースしてしまった。次の機能拡張は、と考えるとはたと詰まる。そもそも想像力が貧困な私にはこの次どうしたからいいのか途方に暮れる。細かいところでは、検索結果がPDFファイルの場合には、題名一覧にその旨表示するようにする、なんて改善が思い浮かぶし、簡単に追加できたのだが、これだけで新バージョンというのも気が引ける。

ではどうしよう。Cocoaはやっぱり!というこれまたCocoaでの開発に必要な情報を多数掲載してくれているサイトで、作者の方が「Web Kitを使ってこんな機能を実現できればいいな」というのをいくつか書いていた。その中に私も実現したいとおもっている「閲覧したページを保存しておく」というのがあるのだが、これは簡単にはできそうにない。Safariにもページを保存、という機能はあるが、テキストしか保存してくれないのだ。画像までセーブしようと思えば自分であれこれやらなければならない。

他にできそうなことはないかな、、、と思っているうち

「検索結果リストにあるページから、テキストだけ先読みでダウンロードする。でもって選択されたページが表示されるまでその先読みファイルを表示しておけば(画像は表示されないとはいえ)結構役にたつかもしれぬ」

と思いついた。

思いつくとさっそくコードを書き始める。Googleの検索結果が帰ってきたところで全てのページのテキストファイルをダウンロードする。元々ページが表示されていたところには、TabViewを使い、2画面のWeb Pageを切り替えて表示する。まず先読みされたデータを表示しておき、裏画面でしょこしょこページをダウンロード&表示。できあがったところで画面を切り替える、という塩梅である。

かちゃかちゃキーを叩いているうちから

「検索結果リストから選択されたページが”瞬時に”表示される。画像はちょっとかかるけど、面白そうなページならそのままにしていればそのうち画像が表示されるし、いらないページだったら他のページに移ればよい」

などと自画自賛の宣伝文句を考える。このように結果がわかる前から宣伝文句が頭の中で響き渡るときは絶対ろくな結果にならない、とそろそろ学習してもいいもの、と自分でもあきれるのだが。

さて、コーディングは思ったよりスムーズにできた。さて試験だとやってみると確かに意図したとおりプログラムは動作しているように見える。しかし私は全く幸せではない(いや、何度も「これでページの閲覧が快適」と自分に言い聞かせはしたのだが)

理由は簡単だった。今や大坪家もASDLで接続されているがその威力はすさまじい。確かに接続してからページのダウンロードが始まるまで待たされる事もありはする。しかし大抵の場合テキストデータだけだったら瞬時にダウンロードが終わっているようなのだ。ではどこで時間を食っているかと言えば、そのテキストデータを画面に表示する処理である。

今回のしかけは、テキストのダウンロードまでを事前にやっておき、表示までの時間を短縮しようというものだった。ところが結果として短縮できたのはもともとあまり時間がかかっていなかったところで、時間がかかる処理はそのまままのである。平たく言えば私の努力は全くむだだったわけであり、新しい工夫は快適性の向上に何の寄与もしていなかったのだ。

しばし呆然とした私はその機能をお蔵入りにした。しばらくはGLBrowserにさわりもしなかったがそのうち前述のページから

「自分が閲覧したページを過去にさかのぼって検索する機能がほしい」

と書いてあったことを思い出し、

「閲覧したページのテキストデータだけとにかく記録していく」という機能を付け加えた。しかし肝心な「そのデータを検索する」という機能はどうやったらいいかわからないためほったらかしたままである。おまけに時々は「こんなページを観たことがばれてはまずい」こともあるだろうから、この記録機能はOn/Offできるようにすべきだ。しかし私は(いつものことながら)そうしたまっとうな機能追加をほっぽらかし、全く違った構想に突き進んでいったのである。

前の章 | 次の章


注釈