BASP21 小史

1999.10.28 初版
2001.04.01 更新

BASP21 を初めてお使いになる方、もっと知りたい方、または暇な方はお読みください。

はじまり

1996年4月、会社でWebにアクセスできるようになる。 仕事が楽しくなり、会社に感謝。Perl に出会う。 SunのサーバでPerlをでCGIを書き始め、ホームページのgifカウンターに感激。

Windows NT 4.0

1997年1月、Solaris(SunのOS)で掲示板などを作って喜んでいたが、NT 4.0でIISを使い始める。 まずは、Perlで書いた掲示板をASPに移植することにする。 ところが ASP ではメールを飛ばせなくてがっくり。

しかたなくメールの勉強を始めた。 最初に買った本、INSIDE ISAPI (Kevin Clements他著)は英語であるが、メール送信を ISAPI で実装しているサンプルがあったので買う。 ところが CD-ROMにはメールのソースが抜け落ちていた。 作者にメールを打ってソースをもらう。
SMTPは、MFCのCSocketクラスで書いた。 COMプログラミングも始める。

babaqobj

1997年7月、やっとメール機能が動き出したので、The Palace of ASP(閉鎖?)の 掲示板でBASP21の前身となるメール送信コンポーネントを紹介。
babaqobj.dll COM
smtpmail.dll SMTP処理
ばばきゅーおぶじぇ というとんでもない名前。おはずかしい。 このころは、ホームページを持っていなかったため、希望者にはメールで配布してました。 前のメールをとってあるので ちょっとだけ紹介。
=============================================================
Date: 1997/07/28
Subject: SMTPゲートウェイ
こんにちわ。はじめまして。
ASPの殿堂を拝見しました。現在、NT4.0+SP3 SQLServer6.5+SP3で開発中で
す。
SMTPを通して、メールを送る方法を模索中でした。
babaqさんの作ったSMTPゲートウェイサーバコンポーネントに興味があります。
よろしければ、送っていただけるとありがたいのですが。
よろしくお願いします。
=============================================================

BASP10

1997年9月、babaqobjの評判がまずまずで気をよくする。 Perlの正規表現も欲しいということで、Perl5 ソースをハックして DLL にした。
basp10.dll COM
bsmtp.dll SMTP処理
bregexp.dll 正規表現処理
びーえーえすぴーじゅう と改名する。10は、バージョン番号のつもり。
=============================================================
Date: 1997/09/10
Subject: ASP正規表現コンポーネント希望
はじめまして、
http://www.nse.co.jp/ASP
にて拝見しました。

私もASPを用いてホームページの作成を行っています。
まさにほしいと思っていた機能を実現するコンポーネントを
お作りになったのですね。

特にSplit命令で文字列領域が不足するエラーが多発して困って
いました。

是非お譲り願いたいと思います。
よろしくお願いいたします。
=============================================================
正規表現もヒットしたので、メールで配るのも面倒になり、 プロバイダーASCIIにホームページを始めて作ったのもこの頃。 当時の私のURLは: http://pweb.pa.aix.or.jp/~babaq/ (おなつかしや)

このころに参考書「 インターネットのためのWinsockプログラミング」(Dave Roberts著) を買いました。SMTP/POP3 などのサンプルがありためになります。

バージョン21

1997年11月、バージョンを21にする。10の次に20があったけどすごく短命だった。 21という数字がなんとなく気に入ったのでそのままコンポーネント名にする。
ここから、BASP21の旅が始まったといえるかもしれない。 このときに、私は一つの間違いを犯した。 「びーえーえすぴーにじゅういち」 という読み方を公開しなかったために、 「ばすぷにーいち」とかいろいろに呼ばれることになる。

ちょうど、ひと昔まえ、新聞はレーガン大統領をはじめはリーガンと書いていて、 後で一斉にレーガンと書く様になったような感覚かも。 (後で気がついたけど、レーガンの話はおこがましすぎ。気にしないように)

gifカウンタをBWebCtr DLL として実装したのもこの頃。

Response Center

ところが、1997年12月、あーる日突然♪(トワエモア)ASCIIはプロバイダー事業から撤退。 ASCIIを追い出され、ASCII推薦のHi-Hoに引越し、 Baba Centerfolds 再スタート。 似たような境遇の方のページ、 「闘わないプログラマ」が面白いです。

久々にCGIを書き、 Response Centerを立ちあげる。 でも、Hi-Ho は、まだ Perl4なのね、昔Perl5で作った掲示板がなかなか動かず、しくしく。

でもあとで考えると、この引越しでCGIが使えるようになって、 Response Centerを作ったことは、BASP21のだいじな転換点だった。 いくらいいソフトでも、いいサポートがないとそのソフトは死んでしまう。 そういう意味でサポートとコミュニティを作るのにResponse Centerの 果たした役割は大きかった。
で、そのCGIには投稿すると面白い仕掛けがしてあり、みんながびっくりするやら喜んでくれるのを 感じるのはすごくいい気分だった。このへんの話は、 投稿後のアレを参照。

ちなみに Response Centerという名前は、HP(Hewlett Packard)のサポートサービス(レスポンスセンタ)から もらいました。会社でHP-UXを使い始めたときに、ここに電話するとなんでも親切に 教えてくれたんで。もちろん、有料だけどね。
ということで、初代センター長として現在に至るわけです。 最近のLinuxビジネスからわかるように、今後はソフト販売よりもサポートに力をいれなきゃダメでしょうね。

ファイルアップロード

1998年9月、ファイルアップロード、POP3によるメール受信機能を追加。 ファイルアップロードは、最初、そういう機能があるとは知らずにいて、Response Centerで 初めて知った次第です。で、作りかけのPOP3をほって、実装しました。
このファイルアップロードの機能は、ことに重宝しているようです。

次にPOP3 をBSMTP.DLLに実装しました。BPOP3.DLL っていうのにしてもよかったけど、 Winsock部分が重複しても面倒だしね。ファイルアップロードは、もともとシンプルな仕様でコードが単純だったけど、 POP3はちょっとコードが複雑になってしまい、いまだにバグが多いのが悩み。いまだにバグの80%近くは、BSMTP.DLLだもんね。

Visual Basic からのBSMTP.DLL呼出し

1998年11月、Visual Basic からAPI呼出し出来るよう修正。 そういえば、Visual Basic向けのAPIをまるで考えてなかった。 Visual Basic からC++で書いたDLLの関数を呼出すためには: C++のほうで、APIENTRY (_stdcall) でスタックの積みかたを指定しておきます。 DEFファイルにもエントリをいれておかないとだめです。
このへんの話は、VB5 についてくるVB5dll.txt というテキストファイルに 書いてあるが、VB6には対応するファイルがないようだ。MSDNにあるかも。
'Visual Basic での定義
Private Declare Function SendMail Lib "bsmtp" _
      (szServer As String, szTo As String, szFrom As String, _
      szSubject As String, szBody As String, szFile As String) As String

// C++ での定義
extern "C"
__declspec(dllexport) 
BSTR APIENTRY SendMail( BSTR* Server,	// smtp server name
               BSTR* To,		// TO  split by tab char
               BSTR* From,	// FROM
               BSTR* Subject,// SUBJECT
               BSTR* Body,	// BODY
               BSTR* File)   // Attach Files  split by tab char
{

Visual Basic から直接 BSMTP.DLLやBREGEXP.DLLを呼べるようになったことで、 Visual BasicプログラマがCenterfoldsを訪れるようになったようだ。 これは、VB関係のリンク依頼メールや投稿の傾向をみてもわかった。 不具合とユーザ数は、正比例するっていうのもこのころから感じてた。
ASPやC++プログラマの数を合わせても Visual Basic のプログラマ屋さんの数には到底およばないからね。

BASP21 紹介本

1998年12月には、「 Acive Server Pages 2.0 実用サンプル集」 秀和システム。著者 山田祥寛さん。
1999年1月、「 ASP 実践プログラミング入門」(株)技術評論社。著者 生形 洋一さん。
などで、紹介されてASP界では名を知られるようになる。著者のみなさんには、お世話になりました。

1999年8月に出た VBScript ポケットリファレンス という本には、BASP21リファレンスが載ってます。

1999年11月には、山田さんの第2弾の本が出る予定です。

MFCからの脱出

1999年3月、Visual C++ 6.0でビルド。 BSMTP.DLLのソケット通信部分をMFCライブラリを使わないように書直す。 MFC(Microsoft Foundation Class)というのはクラスライブラリで、 これを使うとC++ でWindowsプログラムを作るのが楽になります。
反面、次のような欠点があります。
CString のような文字列クラスを使っただけでも巨大なサイズ(900KB以上) の MFC42.DLLを必要とします。 古いマシンだとMFC42.DLL を配布しないと動かないケースもあります。
ということで、BSMTP.DLLは、MFC と別れを告げました。

また、BSMTP.DLL/BREGEXP.DLLの遅延ロードによるDLLロード時間短縮。これは、実際のメソッド呼出しまで、 DLLをロードしないでおくという機能です。C++6.0の新しい機能です。正規表現メソッドを使わなければ、BREGEXP.DLLは、 ずーーとロードされません。 また、fopenなどのC関数をWin32関数に書直しました。

Web自動イメージGet をWSHでやりたくて、ソケットオブジェクト追加しました。

全く関係ないが、地域振興券6万円もらって、早速BS付きのビデオデッキを購入したのもこの頃。

漢字変換

1999年4月、なんとなく漢字変換機能など追加。

会社からノートを持ち帰り使っていたが、我が家にも遂に専属のPC登場。
Dual Bootにして私がWindows NTで使い、娘二人とが息子が Windows 98を使う。 これから、電話代が気になる暮らしが始まる。Windows NTの稼動率は、10%以下です。
最近、一番上の娘は、あまり使わない様だが、そのかわりに友人と長電話をするようになり、 我が家は、テレホタイム開始 = 消灯時間なので、NTTへの支払いはかさむ一方である。

BREGEXP を秀丸で

1999年5月、Arimacさんという方から秀丸エディタでBREGEXP.DLL を 使えるようにしたとメールをもらう。

秀丸には もともとJRE32.DLLという正規表現エンジンがあるのですが、 JRE32.DLL のスタブを作って、そこから BREGEXP.DLL を呼出す方式です。 これは私も使っていますが、なかなか重宝してます。

Arimacの部屋に その DLL があります。

InstallShield

1999年6月、Counterメソッドなど3メソッド追加。Counterメソッドは、BCOUNT.DLLとして 実装しました。Perlもそうだけどいいツールは、最初はUNIXで書かれることが多いね。 それをWindowsに移植するんだけどスレッドセーフ(リエントラント、同時実行可能)に直す のがしんどいです。慣れたけど。

InstallShieldを使って、やっとインストーラをアップ。インストーラを使うのは便利だけど、作るのは面倒です。 InstallShieldは、参考書やサイトが少ないので一苦労。
http://www.imasy.or.jp/~m-mitsui/ml/installshield/にInstallShield ユーザ メーリング リストがあります。

英語ページ公開

1999年8月、英語ページを公開。Thanks Upperfield さん、Hippo2000さん。 ご両人には、大変お世話になりました。また、飲みに行きましょう。

FTPオブジェクトおよびスライドショー登場

1999年9月、FTPオブジェクトを追加しました。Windowsを開いてFTPクライアントを 使ってのワンパターンの転送がすこし面倒になってきていたので。 WSH を使ってFTPオブジェクトで転送すれば、1クリックですむからね。

最初、無条件にインストーラの背景にBMPイメージを出してたら、困る人がでてきたので、 インストーラを別に作って、スライドショーバージョンをアップしました。 ご迷惑をおかけしました。このへんがわたしの思慮に欠けるところ。反省。

InstallShieldでは、BMPファイルしか表示できないけど、世のイメージファイルは、 JPEG形式がほとんど。BMPファイルに変換してからパッケージングしたら サイズがあきれるほどに大きくなる。 しかたなく、インストール中にJPEGファイルからBMPファイルに変換しながら 表示することにしました。

古いコードを引っ張り出して、InstallShield向けにBMP変換DLLを作りました。 これが我ながらよくできて満足。詳しくはInstallShield Tips。それにしても、こういうのをわざわざ作るひとはあまりいないでしょうね。使う人もいないかも。ダウンロードして使った人、メールください(笑)。

BASP21紹介書籍

1999年10月にはBASP21収録本第三弾。「 Webアプリケーション構築技法 for Windows」 著者 山田祥寛さん。Webグループウエア「webWare」で使うコンポーネントとして紹介。

2000年11月、には同じく山田さんの「標準ASPテクニカルリファレンス」登場。 ここでBASP21リファレンスという形で紹介されたので、ついにBASP21がMicrosoftの ASP標準コンポーネントに!!と勘違いするひとも(なんとなくうれしい)。

2001年3月、またまた山田さんの「今日からつかえるXMLサンプル集」でも紹介。

山田さんのページは、こちら。

BASP21 Pro登場

2001年4月、記念すべき新世紀にBASP21 Pro誕生。 作成開始は、2000年11月ころ。正月休みは、伊南村に帰らずコーディングざんまい。

みんなの悩みやBASP21の要望などが参考になっているので自分ではかなりの自信作。 まぁ、「BASP21が使えない理由のひとつにフリーソフトである」ということが いつも僕の頭のどこかにあって、今回、それがとれてひとつ楽になれた気分。たとえ売れなくてもね(笑)。

一番力を入れたのは、エラーメッセージとログ関係。というのは、 Web系のソフトは、他のソフトウエアとどこかでつながっているので うまくいかないときに、原因を追求する手段が少しでも多くあったほうがいいから。 これはBASP21で僕が学んだことのひとつ。

二番目は、BASP21P.INIファイルを導入してスクリプト内からサーバ名などを 排除してなるべくスクリプトを変更しないで済むようにしたこと。 UNIXやLinux ではテキストファイルに設定情報を書込む(Windowsスタイルからいうと古くさい)ソフトウエアが主流で、 僕もそのスタイルが気に入っているし。 Envプロパティで簡単に環境をダイナミックに変更できるのも便利だと思う。

三番目は、ActiveX Control としてクライアントでも使えるようにイベントや 進捗ダイアログ表示機能をつけたこと。BASP21 ってサーバサイドのメール送信や ファイルアップロードだけで使うのはもったいないってこと(笑)。 IE 3.02 でも使えるし、MFCはもちろん、Wininet.dll とかVBランタイムなど 一切使っていないので古い95マシンでも動くよ。さすがに 3.1 では無理だけどね(笑)。

ドキュメントとかも製品らしく気を使って書いてまして、 「アプリケーションガイド」 なんかはどんどん項目を増やしていくつもり。

製品版の出荷で、かえってフリー版のBASP21利用者が増えたりして(笑)。

更新履歴

Home


Copyright 1999 Tatsuo Baba,All rights reserved.