我が愛しのVisual C++

Advanced IT School
学長 川俣 晶
2001/08/16

開発ツールの個人史

 プログラムを開発するために筆者が最初に使った開発ツールは、マイコンの入門書に付属するインテル8080CPUの命令セット表だったような気がする。つまり、これを見ながら、自分で紙の上にアセンブラのソース・コードをコーディングし、さらにこの表を見ながら人間が自分の手で16進数のマシンコードに置き換えて、また紙に書き込んでいたのである。

 そんな状況からスタートしたので、開発ツールというものの存在意義には非常に敏感である。何しろ、開発ツールが改善されることにより、劇的にプログラミングの労力が軽減されるという事態を何度も体験したのである。プログラムを作るという行為は面白いものだが、何も好きこのんで、苦行まで受け入れる必要はない。楽してプログラムが組めれば、それに越したことはないのである。

 例えば、人間が命令セット表を見ながらソースを16進数に置き換える作業はアセンブラというツールが出現することで自動化され、劇的に楽になった。アセンブラのコーディングが面倒だという問題は、高級言語の出現によってクリアされた。

 ちなみに、この当時、本格的なプログラム言語は、エディタとアセンブラあるいはコンパイラとリンカがすべて独立したツールとして存在し、統合開発環境など存在しないことが普通だった。そのためプログラマは、自分が好きなテキスト・エディタを使うのが一般的で、テキスト・エディタ自身もカスタマイズ機能を競って、どんなプログラマの好みにも適合することを売り物にする時代もあった。

 かく言う筆者も、MS-DOS時代には、国内で人気の高かったMifesやVzをガリガリとカスタマイズして使い込んでいたものである。それで十分という時代も長かった。統合開発環境としては、マイクロソフト製のPWB(Programmer's Workbench)などが存在したが、使う気にもなれなかった。ところが、今や統合開発環境であるVisual C++を手放せない人になってしまっている。いったい、どこで何が起こって、こんなにも違う世界に行ってしまったのだろうか?

開発ツールの泣き所はデバッガ

 過去の経験上、開発ツールのなかで最もキーポイントになるのはデバッガだと感じる。デバッガだけは他のツールと違って特別なのだ。エディタやコンパイラは、通常のOS上のアプリケーション・ソフトの一種であるから、そこでトラブルが起きることは滅多にない。ところが、デバッガは、本来一気に実行するはずのプログラムを中断させ、中を覗き見ることを許している。まず問題になるのは、デバッグ対象のプログラムが画面に何かを表示している状況で中断したとき、デバッガが何らかの情報を画面に表示すると、画面がくずれてしまうことだ。つまり、本質的にデバッガというのは、画面が2個ないと不都合が起きる性格を持ったソフトなのだ。さらにデバッガは、CPUの動作に直接介入するので、OSの構造に強く依存する。いわゆる互換OSでは、デバッガが動かないというケースもよくある話である。

 さて、Windowsのデバッグ環境はどうなっているのかというと、Windowsが普及し始めたWindows 3.0の時代、Windows用CodeViewというデバッガが存在した。このデバッガは、AT互換機がモノクロとカラーのディスプレイ・アダプタを2枚差せるという構造を利用して、2画面モードで動作するようになっていた。例えば、カラー画面でデバッグ中のWindowsアプリケーションを表示し、モノクロ画面にデバッガを表示することが可能であった。しかし、日本独自のNEC98シリーズには、2個のモニタを同時に接続して別々の内容を表示するという機能はなかった。正確に言えば、NEC98シリーズのごく初期のモデルにはあったと記憶するが、Windowsを実行するのに適したモデルでは失われた機能であったと思う。しかし、それでは世界標準のAT互換機を秋葉原で買えば、モニタ2台構成でのデバッグが可能になるのかというと、それも事実上不可能であった。モノクロのディスプレイ・アダプタも、それに適合するモノクロ・モニタも、秋葉原ではほとんど販売されていなかったのだ。また、まだインターネットで通販する時代でもなく、簡単にアメリカにオーダーすることもできなかった。つまり、日本では、Windowsアプリケーション・ソフトをデバッグできない危機的状況に直面したのである。モニタ1台で、画面を切り替えながらデバッグを行うようことも可能は可能だったが、やはり使い勝手や安定性の面で劣ってしまうのは否めない感があった。

 そこで、日本でも安定して確実に動き、しかも使い勝手のよいデバッガを求めて、筆者の試行錯誤が始まった。その結果、行き着いた結論は、まったく予想もしないものだった。それは、Windows上で動作する統合開発環境に統合されたデバッガが、最も確実に動作し、しかも使い勝手も良好であるという結論だったのである。

 最初にMicrosoftから出てきたC言語系のWindows統合開発環境は、Quick C for Windowsという製品だったと思う。日本語版は存在しないので、知らない人も多いと思うが、日本語版のWindows上でもちゃんと動作した。そして、その後継ソフトとなったのが、かの有名なVisual C++と言うわけである。Windows上のデバッグなら、なにもモニタを2台接続せずとも、広い画面のなかに、デバッガとデバッグ対象の2つのウィンドウを並べて表示しておけば十分に用が足りる。しかも、Windows上の統合開発環境と言うことは、MS-DOS用の開発ツールにちょいとオマケ機能としてWindowsデバッグ機能を付けたような煮え切らないものとは違って、1から10までWindows対応だけを考えて作られている。Windowsとの相性はよいし、安定度も段違いに高い。

 つまり、最良のWindows用デバッガは統合開発環境のなかにこそ存在したわけだ。それを発見して、統合開発環境への興味は大きなものになった。だが、そこまで来れば、統合開発環境への移住へのハードルは超えたも同然だった。なぜなら、Windowsはキーボードやマウスによる基本操作を標準化した関係上、それを受け入れてしまったWindowsユーザーの立場から見れば、エディタの好みに関する問題はすでに過去のものだったからだ。むしろ、開発者の趣味で操作体系が作られ、Windowsの標準から逸脱したソフトには腹が立つような状況になりつつあった。

 かくして筆者は、Visual C++なくして生きられない人間にと変貌していったのであった。

Visual Studio .NET

 筆者にとっての最強ツールの座を占有し続けたVisual C++も、ここに来て激変にみまわれようとしている。それが.NET対応と、C#という新しいプログラム言語の導入だ。さらに、C++もマネージド・モード(managed mode:マネージド・コードの生成を行うモード)の開発機能が付け加えられ、これまでとは違うC++プログラミングも可能になる。だが、そのような話は、ちゃんとした技術解説の記事に譲る。ここで話したいことは、もっともっと別のことだ。Visual Studio .NETは、Webアプリケーションの開発をサポートしているが、デバッガまでこれに真正面から対応している。ちょっとしたサーバ・サイドのスクリプトを、実際にWebサーバとWebブラウザを動作させながら、それでいてソースコードデバッグできるというのは強烈な体験と言える。これで、Windows対応で乗り越えたハードルに匹敵する大きなハードルを超えたような気がする。

 だが、これはWebアプリケーションもデバッグできるようになってよかったね、というレベルで終わってしまう話なのだろうか?

 個人的には、もっと大きな変革の引き金になっても不思議ではないように感じている。例えば、今までなら普通にHTMLを記述していたようなサイトを、ついVisual C++で書いてしまうような状況が起きないとも限らない。明らかに、ある種のページは、プログラムを通じて機械的に生成した方が手軽に作れるのである。逆に言えば、このようなページの場合、コンテンツそのものではなく、コンテンツを生成するプログラムを使っていると、修正などを行うのが容易になる。例えば、リストをやめてテーブルを使おう、と思ったときに修正する個所が少なくてもすむ。このような状況もあることを考えると、少なくともプログラムを組めるという前提条件は付くものの、Visual Studioを用いて、C#によってコンテンツを書いていくという状況が行われるようにならないとも限らない。もちろん、トラブルが起きても、すぐにデバッグできるからこそ、そのような方法論にチャレンジしてみようか、という意欲が生まれるのである。

 これは、開発ツールの進化が、開発スタイルまで変えることがあるという1つの例となるかもしれない。End of Article


川俣 晶(かわまた あきら)
 株式会社ピーデー代表取締役、株式会社サンブリッジテックユー取締役 Advanced IT School学長、日本XMLユーザー・グループ代表、日本規格協会 次世代コンテンツの標準化に関する調査研究委員会 委員、日本規格協会XML関連標準化調査研究委員会 委員。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 記事ランキング

本日 月間