「まいるめいる」開発履歴^H^H日記


1998.11.某日、 フロッピーディスクを持ってこないとメールを読めないという、東和大学の学生の不便を解消するため、私(森口)と小金丸さんとの話し会いで「Web上で使えるメールソフトを作ろう」、と決まる。これができれば、フロッピーを持ち歩かなくてすむし、ブラウザさえインストールされていればUNIX,Mac,Windowsのどのマシンからでも使用可能という非常に便利なメール環境ができあがることになる。

1998.11 - 12.10、 全然方針が定まらず。夢だけが膨らむ。けどなーんにもしない。

1998.12.11、perl を使って作ることにする。perl の勉強を始める。

1998.12.20、やっと、perl が通信に向いてなく、かつ、使用メモリーが莫大で、 さらに、遅い事に気づく。

1998.12.21、C言語を勉強したくないというただそれだけのために、Fortran で作ろうと思い立つ。

1998.12.25、もともと科学技術計算用の Fortran を通信や文字列処理に使おうという無謀さに気づき、しぶしぶC言語を勉強しはじめる。使用教科書「落ちこぼれに捧げるC言語」ナツメ社、堀越一雄著

1998.12.28、1ページ目だけ作って、このソフトの名前を何にするかという、どうでもいい部分に凝る。

1999.01.11、C言語で初めて通信に成功する。うれしくて部屋を走り回る。
小金丸さんに「初めてCを勉強して、作る最初のプログラムが通信用という奴は 世界中探しても森口先生だけだ!」と笑われる。

1999.01.14、SMTP コマンドを送信するのに四苦八苦する。だって int, char, void さえ知らないんだもん。ポインタって何?

1999.01.16、authentication に成功する。うれしくて部屋を走り回る。けど、どうやってメール一覧を表示させて、操作したらいいのかわからず途方に暮れる。

1999.01.17、日本語を送信できるようにする。うきうき。しかし、たった3文字しか送れないことに気づき、ショックを受ける。

1999.01.18、バッファを増やし、50kbまで送信できるようにした。ver.0.02

1999.01.23、ポインタを避けて通っているためと、極力Cの本を読まずにやってるので 目茶苦茶悩む。メールを取ってこれないー! "sprintf" という便利な関数があることを発見。"for" の使い方を勉強する。 ver.0.03

1999.01.25、"if" の使い方を習得する。やっとメールを読むことができるようになった。ぜぇんぶ表示しちゃうけどね。まだまだ返信などという高度なことは出来ない。また、送信時に Subject に日本語を書くと変になる。Mime に対応してないから当然ね。 当面「Subject は英語で書け」という注意事項を書いておく。

1999.01.25夜、うぴぴぴっ! 巨大メール(50kb以下)もちゃあんと表示できるようにしたもんね。でへでへ、うれしうれし ver.0.04

1999.01.25-02.04、ひらがなの「か」が正常に送信されない! 修正しようと思うが、教務関係や後期試験の用意、センター広報などの「クソ雑用」で忙しく何もできず。

1999.02.08、「か」問題解決!!!! やったー! へへへへ、うれしうれし。 これで、まだ削除機能はないが、「メールを読む」「メールを送信する」という機能は 満たされるようになったので、これを ver.0.10 とする。

1999.02.08午後、でへでへ。Subject,差出人,日付を一覧表示して、読みたいメール をチェックしてボタンを押すとそのメールの内容を表示するようにした。ふふ。好調好調。

1999.02.08夜、削除もできるようにしたもーん。これを ver 0.20 とする。

1999.02.10、「アドレス帳、返信機能がほしい」というユーザからの要望を聞き、 どうしたら実現可能か悩みまくる。---> [脳みそ過熱のため一回休み] ver0.25

1999.02.12、ちょっとバグ修正をした。ver0.26
うーん。。。。。たまーにハングアップするんだよねー。なんでだろ?

1999.02.12夜、またちびっとバグ修正をした。ver0.27
おそらくこれでハングアップはしなくなるはず。はず。。。

1999.02.13、返信機能付加 ver0.30
Macで削除モード移行ボタンが見えないという情報を得て慌てるが、センターのMacでは問題無かった。削除モード移行ボタンが見えないのは、どうもそのMacだけのようです。

1999.02.13昼、ユーザインタフェース大幅変更 ver0.35
ログイン後、ページの一番上だけで全ての操作(メールを書く、メールを読む、返信) をできるようにする。 Thanks Nanako, for your helpful suggestions.

1999.02.13夕方、返信機能を使うとメール番号がぐちゃぐちゃになるのを修正する ver0.37

1999.02.13夜、メール書き込みエリアを WRAP="hard" にする。 ver0.38
絶好調!どーんどんバージョンアップしちゃうよ〜ん。今のうちにどんどんやっとかないと、自分のプログラムがわかんなくなっちゃうからね。Cの本を最初3分の1しか読んでないので、未だにポインタ、サブルーチン、関数の使い方を知らない。だってこれだけできるんだもん。必要ないない。
残されている問題:アドレス帳、日本語Subject、署名、Outbox機能。どれも技術的に難しいのよね。次期バージョンアップは相当先になるかも。

1999.02.15、ユーザインタフェースの小改良。保存用に自分にもCCすることを選択可能にした。ver0.40
大体機能的に満足できる内容になったので。これを公開バージョン ver 1.00 とする。

1999.02.17、朝、日本語SubjectをRFCに準拠した形式で送信することに成功する。
夕方、日本語Subjectを受信した時、decodeして表示できるようになった。ver 1.10
めっちゃ疲れた。Subjectに日本語を書くことがどれほど危険なことか、そしてその日本語Subjectを安全に送信するためにソフト開発者がどれだけ苦労しているのか、普通のユーザは知らないんだろうな。

1999.02.18夕方、「まいるめいるについて」を書く。使用上の注意等の修正。最初のメール選択画面や削除モードで内容確認用にメール内容を3行だけ表示するようにした。ver 1.11

1999.02.18夜、いくつかの点でRFCに違反したヘッダを持つメールも扱えるようにした。ver 1.12
しかし! そもそもRFCに違反しているということは、インターネットで正常に送信されなくても構わないと宣言しているのと同値なのだ! Microsoft OutlookExpress を作った奴はそこんとこどう考えてんだろ?

1999.02.19、小修正。ver 1.14  ログイン画面で自分のサーバをプルダウンボタンじゃなく、クリックできるようにした。自分宛てにメールを送信すると表示の際、To フィールドがなくなるのを修正。たまにハングアップするバグを修正。(配列が1つずれていた!) これで正しく使えばハングアップする危険性はだいぶ減ったはず。はず。。。。

1999.02.22、セキュリティー対策。ver 1.20  もともと端末のディスクキャッシュにデータが残らないようにしていたが、メモリーキャッシュにもデータが残らないようにした。当然まいるめいるを使用中はブラウザの「BACK」ボタンが使えないようになった。

1999.02.23、ver 1.20 で、メールの宛先が間違っていると、せっかく書いた内容が全て失われるバグを修正。ver 1.21
うう。。。疲れた。。。 雑用がのようにたまっとるので、しばらく「まいるめいる」から離れます

1999.02.24、先日『しばらく「まいるめいる」から離れます』と書いたにもかかわらず、今日も雑用の間をぬってやってます。あらゆるへんてこなヘッダに対応。ver 1.22
RFC822に違反するヘッダや日本語Subject,日本語From Toに対応するために、プログラムの長さが1.5倍になった。よって今後は明らかにRFC違反のヘッダはもう無視することにした。けど、OutlookExpress は例外ね。使ってる人多いもん。ちょっとくやしい。。。
どーんどんプログラムが肥大化しています。現在2200行!!! 自分でもわかんなくなってきた。

1999.02.25、行頭に半角スペースを入れると正常に送信されず、その行が消えてしまうバグ修正。ver 1.23
こんな致命的なバグに今までなんで気がつかなかったんだろ?

1999.03.01、RFC822 に準拠しないメールヘッダの内、昔のEudora-J や 昔のMHの付けるメールアドレスなど比較的ポピュラーなものは許すことにした。ver 1.24
最近Happy99とかいうメールに添付されてくるウイルスが流行しているらしいが、この「まいるめいる」はファイルを添付したメールの送受信が出来ないので、そのような経路でウイルスに感染する危険がなく安全です! もし、ウイルスが怖いのなら、真っ先にファイルをメールで送受信する習慣を是正すべきですね。

1999.03.02、ちょーむかつく! ロード中ストップボタンやリロードブタンを押すとハングアップし、サーバ上にまいるめいるのプロセスが残ったままになって管理者権限で消さない限り、永遠に走り続けるのはなぜだろうと思ってたら、OSのバグだった! これだから **** は嫌いだよ。バグ、セキュリティーホールだらけ。今後WSを導入する場合、無意味な労力を費やしたくないのなら、###社製以外のサーバを使うことをお勧めします。
仕方ないので、コンパイルオプションを変えて対処した。処理速度は大幅に低下したが、安定性は向上した。へへーんだ! ロード中にいろいろボタンを押してもハングしないもんねー!

1999.03.05、「返信」で何回もメールのやり取りしているとサブジェクトが、
  Subject: Re: Re: Re: Re: レレレのおじさん〜 ありんこの行列〜。ずんずんずんずん
となっていたのを
  Subject: Re^4: レレレのおじさん〜 ありんこの行列〜。ずんずんずんずん
となるようにした。もちろん、OutlookExpressの"RE:"にも対応しています。 その他小修正。ver 1.25

1999.04.14、やっぱしごくまれにハングアップする。そして一旦ハングアップするとそれ以降のまいるめいるプロセスもハングしやすくなる。普通はあまり気にしなくてもいいのだが、実習などで数十人が同時に「ずしずし」やるとハングの嵐でサーバ上はハングアップしたまいるめいるプロセスだらけになり、サーバ自体が窒息してしまう。Oh! My Buddha!
とにかく引き金になるハングがすぐに消えればいいので、起動して30秒たってもプロセスが終了しない時はプロセス自身が「自爆」するようにした。根本的な解決策じゃないんだけどね。ver 1.26
 いやー、久しぶりにプログラム見たけどさっぱりわからんですな。自分が書いたブログラムなのにね。目茶苦茶凝ったアルゴリズム使ってて、解読に時間かかりました。プログラマー達に言い伝えられている格言:   「三日前の自分は他人」

1999.04.17、つつつつつついに! 「アドレス帳機能」と「署名機能」をサポートすることに成功!! ver 1.30 ずしずしずしずしずし!!!!  プログラムの全行数、2645行! めっちゃ疲れたぜぃ。けど、うれしくって、と〜ってもハッピー!!
欲しい機能は全て付加したので、今後はちょっとしたユーザインタフェースの改良や、バグ修正しかやらない予定。 よっしゃ! 家に帰って爆眠するぞ!

1999.04.28、「アドレス帳機能」でニックネームとしてある種の漢字(例:松崎)を使うと、化け化けになってしまうバグを修正した。ver 1.31
この不具合を指摘してくれた東和大学電気工学科マルチメディア工学コースの松崎先生に感謝!

1999.05.13、何らかの理由でメールサーバの「Real Name field」が設定されていない場合、返信ボタンを押すと宛先メールアドレスを取り込んで表示できない場合があるのを修正した。(バグじゃないよ。仕様です。) その他、ちょっとしたセキュリティーアップ修正。 ver 1.32
(いやはや。まさかメールサーバでユーザの「Real Name field」が設定されてないサーバなんてはじめて見ました。ユーザの本名でなくとも、少なくともアカウント名くらい入れるものだと思ってましたから。)

1999.05.21、最新の IE, Linx でアクセスすると「パスワードが違う」と怒られる不具合を修正した。 ver 1.33
これまでのブラウザはHTTP/1.0仕様に従った方式でPOSTを行なうが、上記の新しいブラウザはHTTP/1.1仕様でPOSTするからです。この不具合を指摘してくれた東和大学電気工学科マルチメディア工学コースの松崎先生に感謝!

1999.05.29、「まいるめいる」ver 1.33 を「ぱすわどちぇいんじゃ」ver 1.03 とともにVectorに公開する。
まいるめいるぱすわどちぇいんじゃ作者紹介 ね。

1999.06.01、WWWサーバとして Apache を使用した場合の不具合(cgi が実行できない)を修正。ver 1.34
うちの大学のWWWサーバが全てNCSAだったのが災いしました。Apache ではテストしてなかったのです。まさかNCSAとApacheで受取るコマンドの解釈が違うとは思わなかった。 (^_^;;;;
この不具合を指摘してくれた北里大学の佐藤さんに感謝します!

1999.07.15、WWWサーバのOSが Solaris の場合、目的のメールサーバではなく、自分にアクセスしに行くバグを修正。ブラウザがHTTP/1.1仕様だった場合、メール削除ができない不具合修正 ver 1.36
この不具合を指摘してくれた北海道文化放送 メディア開発室の相良さんに感謝します!

1999.07.24、まれにハングアップ(最終的にはタイムアウトする)や RETR command fail エラーが起こる不具合を修正。少し高速化した。んで、今までは巨大メール(50kb以上)を受取るとエラーメッセージを表示するだけで、削除も表示もできなかったが、削除できるようにした。 ver 1.37
原因はサーバが連絡して来るメールサイズと実際のメールのデータサイズが3バイトだけ異なるためです。なんで3バイトだけ違うんだろ??? そういう決まりなのかな?
これでハングアップする危険性はだいぶ減ったはず。はず。。。。
その数日後: あ、そうか!サーバが最後に「これでデータは終わりでっせ」という意味の[00101110 00001101 00001010] 3bytes データを余分にくっつけて送って来ているのを忘れてました。

1999.07.24夕方、さらに少し高速化。ver 1.38 ちょっとしか変更がないので、この バージョンは公開しません。ヒ、ミ、ツ。


1999.07.27夕方、まれにハングアップ(最終的にはタイムアウト)する不具合を修正。 popサーバが普通は区切ってデータを送って来るべきところを、時たま一気に送って 来るせいです。そのため「まいるめいる」がメールサイズをゲットできなかった。 ver 1.39
この不具合の指摘と、修正に協力していただいた北海道文化放送 メディア開発室の相良さんに感謝します!
これでハングアップする危険性は無いはず。はず。。。。びくびく。

1999.07.28夕方、ver 1.39 に返信表示がおかしくなるなどの不具合(プログラムミス)があったため、修正した。たった一日。ああ、短い命だったねぇ。その間にダウンロードした人が数人いました。ごめんなさいごめんなさい。
ついでに YAT にも対応させました。プログラム全行数 2819行  ver 1.40


1999.09.24、20通以上のメールを同時に削除しようとした時の不具合修正。
また、パスワードに空白文字(スペース)が含まれている時、「パスワードが違う」と認識されるので、「使用上の注意」にその旨記述した。これは、ブラウザがPOST時に空白文字" "と"+"を両方とも"+"記号として送信するためで、「まいるめいる」側では修正不能です。だーって、データが縮退しちゃってるんだもん。 ver 1.41
これらの不具合を指摘してくれた東和大学電気工学科マルチメディア工学コースの松崎先生に感謝!

2000.03.14、昨年9月に第59回情報処理学会(岩手県立大学)で「まいるめいる」と「ぱすわどちぇいんじゃ」について
「教育機関に適したWebメールクライアント等の開発」
というタイトルで発表したのですが、その論文が第59回情報処理学会奨励賞を受賞しました。
なんかしらんけど、うれし〜い。

2000.05.29、メール本文にhtmlタグが書かれている際に発生する不具合を修正。処理がちょっと遅くなっちまったぜぃ。 この不具合を指摘してくれた東和大学電気工学科マルチメディア工学コースの児玉先生に感謝!
ついでに、標準の一覧表示メール数を20個にし、メールの最後につく"."を見えないようにした。「これはいったいなんですか?」と気にする人が多いため。 ver 1.51d