題名:Java Diary-39章

五郎の入り口に戻る

日付:2003/4/28

目次に戻る


GMail-Part11(Ver0.51)

Ver0.5のリリースを知らせるメールに私はこう書いた。

「というか送受信処理のところをかなりいじっているので、不安がいっぱいです。問題点などありましたらお知らせくださいな。」

その後特にメーリングリストにバグレポートがでることもない。はて、みなさん使っているのだろうと思っているうちユーザーの方からメールがいただけた。0.5は無事動いているという。よかったよかった。

さて、そうなるといくつか次にやることを考え出す。いくつもたまっているなあ。まずいただけたメールにあったOME_Moveとの連携というのを考え出す。このアプリケーションはだいぶ前に発表されていたがとりあえず関係ないから、と知らんぷりをしていたのである。どんな風に使うのだろうと思って使ってみるとこれがご機嫌である。メールの振り分けに関しては最低限の機能しかGMailにはもたしていない。しかし確かにもう少しいろいろな条件で振り分けたいこともあるだろう。このアプリケーションはそれをきっちりやってくれる。

これは確かに連携を考えなくては。一番簡単なのはメニューからOME_Moveを呼び出すことである。最初それをやりかけたのだが、もう少し慎重にやるべきだと考え出した。いかん、他のことをやろうとしていたのにこんなことを書いていたらこの件が気になりだしたではないか。

いや、そうではない。結局今何をしようとしているかといえば、長い間ほったらかしにしてきた「htmlメールの既読と未読を区別する」というやつだ。当初私がOMEを使い出したときHTMLだけのメールの既読未読区別には決まった方針がなかった。それが決まり一度はちゃんと区別をしようかと思ったのである。しかしそれをやろうとした途端あれやこれやの問題が発生し後回しにしていたのだった。

しかしいつまでもTo do list にその項目が残っているのも鬱陶しい。ここらでなんとかしてみようかと思いコードを見る。すると以前にトライしたときのコードがそのまま残っている。これでなんの問題があるのだ、とにかくそのコードを復活させてみる。すると以前何が起こったかを知ることになる。メーラーの中にはテキストと同内容のHTMLファイルを添付ファイルとして送ってくるものがある。ただコードを追加しただけでは、そうしたメールをすべて「単独HTMLファイルのメール」として解釈してしまうのだ。そのせいで私は4000通以上の未読メールを抱えていることにされてしまった。

前回はこの未読メール数を見て「こりゃあかん。もうちょっとちゃんと考えなくちゃ」と思いコードをコメントにしてしまったのだった。さて、どうしたものかと思いコードをじっと見る。えーっとここがいけないのかな?と思いちょこちょこ直すとそれなりに動くようになる。すると今まで着信したけど読まなかったHTMLメールがずいぶんあったことに気がつく。(未読メールと認識されなかったからだ)ほとんどは宣伝メールだからいいのだけど、Appleからのニュースを見逃していたのはちょっともったいなかったかもしれない。すぐリリースしようかとも思うが、ここらへんをいじるとトラブルがでることが多いのでしばらくテストを続ける。するとやはりおかしいところに気がつく。HTMLメールというのはファイル構成で見ると二種類あるのだが、そのうち一種類しか認識していなかった。ちょこちょこと直すと表示されるようになる。すると今まで表示されていなかったタイプのHTMLメールは海外から来るアダルト関係のメールばかりだということにきがつく。あんれまあ、こんなことをして、全く最近の若い者は。おじさんは許しませんよ、と言いながらごそごそ削除する。

どうやらそれっぽく動いているようだ。しかし処理を結構変えたからしばらくテストしなくちゃと思っているうちに日ははたはたと過ぎていく。まあHTMLメールってあまり使われていないからのんびりリリースでいいだろう、などと考えながら。

そんなある日GMailを使っている方からメールをもらう。HTMLメールが読めないのですが、という内容だ。私は泡を食う。ここにちゃんとHTMLメールを読む機能を必要としている人がいるではないか。ええっとアップロードしてちゃんと読めるかテストして、とあれこれやったあげくVer0.51としてリリースする。直後にMLで「やっぱり読めません」というメールが流れる。あら、何かたりなかったかしら。あれがいけないかこれがいけないか、、と2分くらい悶々としたあげく

「遅いから明日症状を細かく聞いて対処しよう」

と思って寝てしまう。翌日その人から「ちゃんと読めました」というメールが来てほっとする。

さて、次の機能と行きたいところだが(例によって)そうはいかない。使っていて「あれ、このメールには写真が添付されてなかったか?なぜ表示されないのだろう」と思うようになる。とにかく自分が作ったプログラムのバグには寛容だから見て見ぬ振りをしていたがそのうちそうもいかなくなる。ええい、とコードを見ると、、なんと以前「ファイル名に空白が混じっている」写真を表示しようとしてあれこれやったこの副作用がでていた。この問題は結局「あんまり頻繁にあることじゃないし」と放り出していたのだが、そのための処理ルーチンだけは残っており、それが悪さをしていたのだ。

ええい、とそこを直しVer0.511としてリリースしようと考える。しかしそのとき別の問題も(これも前からあったものだが)目を背けていることができないくらい大きくなってきていた。日本語のフォルダ名、もしくはファイル名があると「時々」メールへの添付時に問題がおこるのである。たとえばあるメールについてきた写真を別の人に転送しようとしても、うまくいかない。これは結構鬱陶しい問題だが添付書類をつけるということ自体あまりやらないからいいや、と思い放置していたのだった。

ところがこの時期私は人にたくさん写真を送る状況に置かれていたのである。そのたびに写真をアルファベットだけの名前に直し、、なんてのはとても面倒だ。しかしどこで問題が生じているのやらとあれこれ調べる。ファイルへのパス名がところどころ「?」という文字になってしまっているのだが、その「ところどころ」が何かわからない。Javaで生じる文字化け、というキーワードで検索をかけるとたくさんのページがひっかかるがそれを読んでも当てはまる物はみつからない。そのうちどうやら濁音とか○がついた音がひっかかっている、ということがわかった。つまり「フォルダ」が「フォルタ?」になってしまうのだ。

状況はわかったが、そもそもなぜ濁音が文字化けするのか、対処はどうしたらいいのかさっぱりわからない。思いあまってMLで質問してみる。するとすぐに回答が返ってきた。

どうやらMac OSの方の仕様で、「だ」という一文字を二つの文字に分割して扱っているらしい。でもってその二つの文字をメールに書き込むときに[?]がでてきてしまう、ということのようだ。ふーんと思う。その問題を教えてくれた人は丁寧に「こんなサイトがあります」といくつか対処に使えそうな情報を教えてくれた。まずAppleのサイトを見ると

「この文字はこの文字とこの文字に分割します」

という一覧表がある。すさまじい数だ。これを実装するクラスを作るのが正攻法だ、というコメントの後に(笑)という文字がついている。

次に二つほどサイトがあげられており、そこではそうした変換をしてくれるクラスがライブラリとして提供されているらしい。それをしばらく読む。首をひねる。何かそのライブラリは別の大きなライブラリと関係があるらしく、なんとかをインストールしなんとかをどうとか、とか読んでいると気力がつきてくる。

クラスライブラリが使える時は、そちらを使え 」というのは私の数多い信条のうちの一つだ。それに従えば当然後者のライブラリの使い方を理解すべきなのだが、とにかく年をとると面倒がいやになってくる。考えること数分私は決心した。Appleのサイトにのっていた変換表を読み込み、変換してくれるクラスを作ろう、と。

サイトのページからコードをコピーし、それをプログラムで読み込んで、ということをかちゃかちゃやる。一番野蛮な方法だけどなあ、、まあ作っている人間も野蛮な人間だからいいか、と思いぱたぱたキーをうつ。そのうち変換クラスは動き始め、どうやら動作しているようだ。「なんとかフォルダ」はちゃんと「なんとかフォルダ」と認識される。添付ファイルもちゃんと処理されるようになった。この二つの改良を反映したバージョンをVer0.511としてリリースする。

さて、今度こそ新しい機能を、、といくはずなのだが、例によってそうはいかない。私はそのころ別の考えにとりつかれ始めていたのだ。

前の章 | 次の章


注釈