Borland 時代のクロ歴史
■はじめに
これは「Delphi Advent Calendar 2018」19日目の記事です。クリスマスの時期に"黒歴史"という暗いテーマも持ち出すのもナンですが、「まだ空きがあるよ」というツイートを見て、つい何か書いてみるかな、と思ってしまったのが運の尽きでした。最新の Delphi はインライン変数(実行文中の変数定義)ができるそうで、ずいぶん遠いところに行ってしまったものです。残念ながら、そうした新しい Delphi に関する知見はまるでないので、かつての Delphi 関係者として Borland (*)時代のクロ歴史について、ちょろちょろ吐露してみようと思います。なんだかんだ言って自分語り成分が多めになってますので、そういうのが苦手な方は明日の記事をお待ちください_o_
*私が在籍したのは2003年までで、開発ツール部門は2005年にCodeGearとして独立し、現在はIDERAに買収されたEmbarcaderoが製品を扱っています。現行BorlandはMicroFocusの一部門でありALM製品を扱っており、基本的に本記事の扱う製品とは関係ありません。
ところで、よく「消すなら最初っから書くなよ」と思うことがありますが、あらかじめお断りしておくと、この記事は消す可能性がゼロではありません。きっと当時の関係者は温かい目で見守ってくれると思いますが、いちいちお断りをしていないので、問題になりそうなら消します、と予告しておきます。ちなみに、私が Borland に在籍していたのは Delphi 7 の頃までなので、Delphi for .NET とか出てきません。(←オイ)
■Delphi 3.1
「Delphi」のアドベントカレンダーですから、まずは Delphi の黒歴史から紹介していきましょう。いや、そもそも「Delphi」のアドベントカレンダーなのですから、Delphi の黒歴史だけ紹介すればいいという話はありますが:-)
今は IDERA に買収された Embarcadero というブランドで扱われている Delphi ですが、古くからのユーザーの方はよくご承知の通り、Delphi は Borland という会社の製品でした。初期は Borland International という社名で(以降の社名変更も含め、以下では Borland と表記します)、1989年には日本に正式な支社である Borland Japan が設立されました。私は、それまで Borland 製品を扱う代理店のひとつだった MSA(Micro Software Associates)に新卒で入社し、当初は Borland Japan への出向扱いでした。その後正式に Borland Japan の社員になりましたが(Borland Japan の社員は、ほとんどの人が同じ)、その際に「大野さんの社員番号は25。給料日と同じと覚えておいて」と言われたのをよく覚えています。"若手"の社員番号がそれくらいになる規模の会社でした。
当時は、アメリカの Borland 本社が開発した英語版の製品を、日本の技術陣が日本語版に対応・翻訳・修正する、というのが「日本語版」の製品の作り方でした。彼らが作業のために本社に行くことはありましたが、基本的にソフトもマニュアルも完成を待ってから日本語化するので、日本語版の発売までに半年以上かかるのは普通でした。また、C++ 系の製品と Pascal 系の製品があり、それぞれに入門者向けの Turbo シリーズ、プロ向けの Borland シリーズが、一応ありました。一応、というのは Borland Pascal は Delphi が発売される前の最後の Pascal 製品であり、日本語版は出なかったからです。Pascal には厳しい時代で、当時、毎年開催されていた Borland Conference というイベントの、この頃の Anders Hejlsberg(*)のセッションには20人くらいしか参加者がいなかったそうです。
*Turbo Pascalの開発者であり、その後にDelphi、C#、TypeScriptを開発。現在はMicrosoftのテクニカルフェロー。
Borland C++ は人気がありましたし、その後に大ヒットする Delphi や、C++版である C++Builder、Java 開発ツールである JBuilder など、だんだん四半期ごとに主要な新製品や新バージョンを出す状況になっていました。そして、こうした新バージョンを出すことが Borland Japan の(開発ツール部門の)大きな収入の支えでした(ParadoxやQuattroなどは別部門)。Borland Japan はユーザー登録者に対してバージョンアップ料金を(他国に比べても)安めに設定し、多くのユーザーを新バージョンに移行させることに成功していました。こうした特別扱いが日本でだけ認められていたのは、結果としてアメリカに次ぐ売上を達成していたから、ということがあります。売上は正義。
前振りが長くなりました。そんな中である四半期には新バージョンがないという状況になりました。売上が新バージョンの発売に大きく依存していた当時、これは大きな問題です。そこで生み出されたのが「Delphi 3.1」でした。いくらかアップデートし、少しオマケを付けることで「バージョンアップ版」を生み出したのです。これは本家には存在しない日本だけのバージョンです。もちろん本社に無断で作ったわけではなく、ちゃんと許可を得ました。製品担当としては「本社も、そんな許可出すなよ」と思っていたものですが、それこそ売上が達成できないと色々問題になる人たちもいるわけで、背に腹は代えられないということでしょう。
そんなわけで、売り上げのために作られた日本だけの特別版が「Delphi 3.1」でした。消し去りたい:-)
■Turbo C++ 4.0J
少し遡りますが、上記と同じ状況で生み出された日本独自の製品が、もうひとつあります。それが「Turbo C++ 4.0J」です。この製品が発売されたのは1995年です。DOS どころか16ビットの Windows 3.1 から Win32 アプリが動く Windows 95 の発売を間近にひかえ、大いに盛り上がってる頃でした。「今さら DOS 専用の開発ツールですか?」と言われたものです。
前年には「Borland C++ 4.0J」という製品が発売されており、これは Windows と DOS の両方をサポートしていました。とくに DOS 版は「プロテクトモード」で動作するためメモリに余裕があるという魅力がありました。一方、入門者向けの「Turbo C++」という製品には DOS 用の「Turbo C++ 1.0」と Windows 用の「Turbo C++ for Windows」という2つがあったのですが、これらはバージョンアップされていませんでした。入門者向けにはそれで十分と言ってしまえばそれまでですが、メモリに余裕があるのは入門者にとっても魅力だったはずです。なにしろ DOS の通常のメモリ空間は 640KB しかなく、当時のマシン環境に比べれば大きな制約でした。
そこに前述した"四半期の穴"が生じました。この穴を埋めるのに「Turbo C++ 4.0J」はいい発想でしたが、こんな新たなメジャーバージョンになるものを日本独自に作るということが本社から認められるものかとも思いました。でも、認められました。やはり売上は正義。当時はまだ日本語化のために日本に技術陣がいて、作業としては「Borland C++ 4.0J」からざっくり機能を削除するだけということでした。個人的には、この製品が最後の DOS 専用製品になったのはよかったと思っています。意外に人気もありました。だから、個人的には"黒"といいたくないクロ歴史です。
■Turbo C 2.0
ここからが本題です。(←なんと!)
さらに時は遡ります。Turbo C 2.0 は1988年末に日本語版が発売された製品です。この頃、私はただの一般ユーザーでした。まあ、翌年4月には入社するんですが、就職活動って年が明けてからだったんですよ。バブル、真っただ中。4月には......いや5月にずれ込んだ気もしますが、Turbo Assembler&Debugger や、それらを組み合わせた Turbo C 2.0 Professional といった製品の日本語版も発売されました。天皇崩御のせいでマニュアルの印刷が遅れたとか、すごい言い訳するなあ、ということがありました。そこは黒歴史というほどではないですが。
さて、学生の頃から Turbo C を愛用していただけでなく、パソコン通信で情報交換をしていたり、当時の技術雑誌などを読んで色々思い入れていた新入社員(私)にとって、不具合も含めて積極的に情報公開するということはやってみたいことのひとつでした。もっとも当時を知らない人は「何のこと?」と思われるかもしれません。今ではメーカーが不具合に関する情報をネットで公開し、いくらでも検索できますが、当時はメーカー自身がそういう情報を公に提供することはほとんどありませんでした。
当時はライブラリのソースコードですら非公開で、Borland が Turbo C のライブラリを(有償でしたが)公開するようになったのは、それなりに画期的なことですらありました。(UNIX 系の C では、当たり前のことでしたが) Turbo C のライブラリは、とくにメモリや文字列処理などは Cで書いてある部分がコメントになってて、ほとんど組み込みアセンブリ言語を使って書いてあります。当時は、コンパイラ自体がすごい最適化能力を持っているわけでもないのに(レジスタを積極的に扱う程度)ベンチマークで有利だったのは、そのせいです。ちなみに、Microsoft が C のランタイムソースを提供するようになったのは、だいぶ後のことです。
話がそれました。Borland に限らず、たいていの製品の不具合情報はメーカー内で管理されており、問い合わせがあった場合にサポート担当者がそれらの情報に基づいて回答するというような対応が普通でした。
他のソフトを作るための開発ツールですから、ユーザーにしてみれば不具合に関する情報も知りたいし、回避策があるのか知りたい、修正してくれるなら有償でいいから新しいものを提供してほしい、という声がパソコン通信でも、雑誌でも聞かれていました。私自身も、そう主張していた一人です。そういう人間が入社したわけですから、そりゃ社内でも同じ主張をするわけです。空気嫁とかどこの世界の話でしょうね。
今思うと当時の部長は、そういう青臭いことを言う新入社員(←しつこいですが私のこと)の話を無碍にもせず、よく聞いてくれたものだと思います。まあ、半分脅し気味で話していたからかもしれませんが、果たして Borland Japan として不具合情報を公開し、修正版をパソコン通信に流したり、手数料という形での有償ディスクサービスをはじめることになりました。当時、フロッピーディスク付きで販売されていた「Cマガジン」にも協力してもらい、差分を提供してもらいました。私は、これこそがユーザー本位という姿勢なのだと自信満々でした。
その結果......いやぁ、怒られた、怒られた。サポートの電話は鳴りっぱなしとなり――まあ空いてる時間は元々あんまりなかったですが――ほとんどの声は「不具合があるならタダで直して送ってくるのが当然だ」というものでした。ごく一部には、そうした活動を評価してくれることもありましたが、稀でした。中には「Turbo Debugger にバグがあるから納期が遅れることになった」と言ってくる人もいました。デバッガのせいで? 全然動かないわけでもないのに? これ、間違いなくクライアントへの納期遅れの説明材料にされてるってことですよね。
悪いことに、修正した内容にも、まだ修正すべき点がありました(しかも2回繰り返されてしまいました)。この件に関しては「Cマガジン」編集部にも問い合わせが殺到しましたし、各所や社内の開発陣に迷惑をかけることになり、本当に残念な結果となりました。すみません。
とはいえ、それまで雑誌でこうした主張をしていた人たちには支持されると思っていました。そのはずでしたが、あれ、なぜでしょう、評価してくれる声が(あまり)聞こえてきません。甘いと言われたらそれまでですが、一部のユーザーから反発を食らっても、これこそが進むべき道だと支持してもらえると思っていたアテが外れました。なんだ、口先だけの人たちっているんだなと知った個人的には黒歴史......というより苦労の多かったクロウ歴史です。
幸い、信頼できる編集者の方々には恵まれていたのでメディア不信になるということはありませんでしたが、それ以来「ユーザー本位」といういかにも理想的な話を語る"だけ"の人を信用しなくなりました。常に問い続けます。「そこまで言うなら、それ、自分が同じ立場でもやれるの?」
■おわりに
今では、ソフトウェアの規模も大きくなりましたし、ただマニュアル通りに動作するだけでなく、意図しない不正操作によるハッキング被害(脆弱性)などもありますから、情報公開して当たり前の時代です。当時も、本当に製品の使用に影響するほどの不具合なら修正版を提供することはありましたし、逆に、広範囲の利用者に影響しないからこそ積極的な情報公開をしなかっただけです。そもそも利用者が言う「不具合」が、本当に不具合であることは割合としては少ないものでした。
Embarcadero の現状はよく知らないのですが、私が在籍していた頃から「英語版が終わってから各国語版を作る」から「同時に各国語版を作る」という体制に変わりつつありました。もはや日本独自のバージョンを作るということもないでしょう。なにしろタイムラグがなくなりますし、よい面も多くあります。
それでも、日本語化の一つ一つが手の届く範囲に収まっていたあの頃が懐かしく感じられます。