BlatJを巡る困った人たち

株式会社ピーデー 川俣 晶
2001/03/13

隠れた大人気ソフトBlatJ

 筆者はこのあたりを始め大量のオンラインソフトを公開しているが(本人も数を把握していない)、そのなかでもダントツで人気が高いのがBlatJである。知らない人は名前も聞いたことがないソフトだと思うが、ネットワーク管理者などの関係では定番ソフトの一つである。

  このソフトは、Windows NT/2000のコマンドラインから、インターネット・メールを送信可能にする。ここではコマンドラインに関する説明は省くが、BlatJが真に活躍するのは実はコマンドライン上ではなく、バッチのなかである。バッチとは、あらかじめ定めた手順の処理を自動実行させる機能である。いちいち操作しなくても手順が進んで便利なので、定型作業を山ほど抱えたネットワーク管理者なら(楽をするために)使いこなせて当然、というぐらいのものだ。そして、いちいち人間が結果を見守っているわけではないから、結果は電子メールで管理者に送りたいと考えるのが自然だ。

 UNIX系OSなら、いともカンタンに実現できるが、Windows NT/2000にはその機能が標準で入っていない。というわけで、こんなソフト欲しいなといわれて、筆者も欲しかったので、英語版のBlatというパブリックドメイン・ソフトウェアを日本語化した。これがBlatJだ。

Perlスクリプトを送ってくる人たち

 BlatJを公開してしばらくすると、奇妙なメールを何度も受け取るようになった。互いに無関係と思われる人たちが、奇妙に似通った質問メールを送ってくるのだ。

 内容はどれも、「CGIのフォームから電子メール送信できない」というものであった。実現方法として、PerlのCGIスクリプトからBlatJを呼び出しているという点で共通していた。コマンドラインから直接BlatJを呼び出せば送信できるが、CGIスクリプトから送信しようとするとエラーは出ないのに送信されないという。

 最初に筆者が思ったのは、スクリプトからのBlatJの呼び出しが失敗しているのではないか、ということだ。CGIスクリプトはユーザー自身の権限と違うアカウントで実行されることが多く、環境変数などが同じとは限らない。アクセスされるレジストリも同じではない。だから、きちんとBlatJが呼び出されているか確認してくれ、という返事を書いていた。「自分で書いたスクリプトなんだから、それぐらいできるでしょう?」と私は思っていたからだ。

 ところがである。驚くべきことに、質問者たちはPerlスクリプトの意味を理解していなかったのである! 何という衝撃。質問者たちは、他の誰かが作ったスクリプトを意味も分からないまま業務に使おうとして、問題のスクリプトのことなどカケラも知らない私に質問してきていたのだ。これで問題が解決できるはずがない。どう考えても社会常識のある人間のすることではない。技術知識のあるなしの問題ではない。常識の問題だ。

エラーが起きていない?

 それでも、BlatJの欠陥という可能性も否定できないので、大嫌いなPerlなのに、質問者から来たソースを調べてみた。そして、さらなる衝撃が私を襲ったのである。「エラー発生時を想定したコードがぜんぜんない……」

 しばしば勘違いする人がいるが、エラー・メッセージはエラーが起きたときに自動的に出てくるものではない。エラーが起きたことを検出して、その結果としてメッセージを出力するようにプログラムを組まねば、出てこないものである。もし、それが組み込まれていないプログラムは、エラーがあってもメッセージを出さずに黙って終了することになる。これは、常識的に考えれば欠陥プログラムである。正常に動作したのか失敗したのかもはっきりしないプログラムなど、怖くて使えるものではない。

 だが、まさに送られてきたPerlスクリプトは、その「怖くて使えるものではない」ものだったのだ。この件に関していえば、エラーは出ないのに送信されないのではない。エラーが起きているのに、その事実をユーザーに伝達する機能が最初から欠落しているだけなのだ。

真相を突きとめる

 あるとき筆者は、このパターンで質問してきた者に逆質問して、どうしてこのような事態に立ち至ったのかを問いつめた。その結果、さらに驚愕の事実を知ることになった。

 エラー処理機能を欠いた欠陥スクリプトは、インターネット上で堂々と公開されていた。初心者でも手順どおりにやれば誰でもできます、という雰囲気で、一見優しく懇切丁寧に説明されている。確かに何のトラブルも起きなければ、その手順どおりでCGIのフォームから電子メールが送信される。ところが、トラブルが起きたときに対処する方法については触れられていない。

 現実の問題として、CGIにも、Perlにも、コマンドラインにも、インターネット電子メール・システムにも、素人がいきなり触れるとはまりやすい罠が存在する。そういう意味で、このCGIスクリプトを、誰でもカンタンに使えますというのは適切ではない。

 そのうえ、BlatJが出力するエラー・メッセージをどこにも保存せず、ユーザーにも伝えないのでは、いったい何が悪くて電子メール送信に失敗したのか、調査する手がかりすらないことになる。こんな状況で、「電子メールが送信されません。どうしてでしょう?」と聞かれても答えられる者などいないだろう。

 だが、これは真相の前半でしかない。これだけでは、CGIスクリプトの実行に失敗したユーザーが、どうしてスクリプト作者ではなく、筆者に質問メールを送ってきたのか、その説明がつかないからだ。

 真相の後半とはズバリ、問題の欠陥スクリプトの作者が、いっさいの質問を拒否していたという事実である。スクリプト作者が質問を拒絶しているため、スクリプトの動作に失敗したユーザーは藁をもつかむ気持ちで、筆者に質問メールを送っていたのであった。しかし、BlatJに関する質問ならともかく、自分で作ったわけでもないスクリプトのことなど、訊かれても答えようがない。

 結論としては、素性も定かではない、責任も放棄している怪しげなスクリプトに、大切な業務システムを任せるという社会常識を欠いた行動に出たことが問題の根本原因といえるだろう。一言でいえば、「タダより高いものはない」ということだ。

 もちろん、きちんと役に立つ無料のソフトも世のなかには存在するが、万一動作しなかったときに誰かがタダで助けてくれるという保証はない。絶対に動かさねばならない業務システムなどを運用する場合は、誰が動作を保証するのかが重要な問題である。そのためには、無料のソフトでも有償サポート業者と契約するのが王道である。つまり、確実を求めるなら、無料のソフトでも金は掛かるのが、本来あるべき常識である。

 以下は余談だが、このような事実に気付かずLinuxなら無料だと思い込んでいる困った人たちが多いと言う嘆きをLinuxの有償サポート業者から聞くこともある。また、サポート費用などの付帯コストを含めて考えると、LinuxとWindows 2000の価格差は決定的なものではない。見た目の値段に惑わされず、きちんとTCO(Total Cost of Ownership)という言葉を思い出そう。End of Article

2005年9月27日付記
 この記事内で使用されている「常識」という言葉は、筆者の意図からすると過剰に強い意味で受け取られる可能性がある。この記事で使われる「常識」は「好ましい選択」という程度のニュアンスで受け止めていただきたい。なお、過去の記事でもあり、本文の修正は行っていない。
(川俣 晶)

関連リンク
公開オンラインソフト一覧
BlatJの解説とダウンロードのページ

川俣 晶(かわまた あきら)
 株式会社ピーデー 代表取締役、日本XMLユーザーグループ代表、INSTAC XML SWG 委員。1964年東京生まれ。東京農工大化学工学科卒。学生時代はENIXと契約して、ドラゴンクエスト2のMSXへの移植などの仕事を行う。卒業後はマイクロソフト株式会社に入社、Microsoft Windows 2.1〜3.0の日本語化に従事。退職後に株式会社ピーデーの代表取締役に就任し、ソフトウェア開発業を始めるとともに、パソコン雑誌などに技術解説などを執筆。Windows NT、Linux、FreeBSD、Java、XML、C#などの先進性をいち早く見抜き、率先して取り組んできている。代表的な著書は『パソコンにおける日本語処理/文字コードハンドブック』(技術評論社)。最近の代表作ソフトは、携帯用ゲーム機WonderSwanの一般向け開発キットであるWonderWitch用のプログラム言語『ワンべぇ』(小型BASICインタプリタ)。

 「Insider.NET - Opinion」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間