第2回
Cプログラミングのお膳立て

環境について

まず環境の問題を明確にしておきましょう。『環境問題』と言っても、CO2排出とかオゾン層破壊とか、そういった問題ではありません(分かっているとは思いますが(^^;ゞ)。開発環境と実行環境の問題です。

様々なOSと様々な開発環境

前回『コンソールモードでC言語プログラミングを』と声高に呼びかけましたが、実はこれは、案外面倒なことです。いや、読者のみなさんにとってはさほど手間のかかる作業ではありません。執筆している僕の側の問題なんです。

例えば、このコラムの前に連載していた「データベース千夜一夜」のように『SQL Serverでデータベースの操作を学ぶ』というテーマだったら、こちらの説明も読者のみなさんの実行環境も自ずと限定されます。

「僕はPostgreだから」「私はOracleなのよね」と言われても(例外的に補足することは可能だとしても)、テーマ自体が動作環境を規定してしまっているのですから、そこから外れる環境を取り上げることはできませんし、基本的に読者のみなさんもそれを了解して読んでくれるはずです。

ところが「コンソールモードのC言語」という括りはあまりに広すぎて、すべての読者のみなさんに共通する環境を提示するのは非常に困難です。前回の記事を読んで、ある人はMS-DOS(DOS)のCを連想するかもしれません。それだけでも、MS-C、Lattice-C ※1 、Turbo Cなど各種処理系が存在します。さらにコンソールモード→UNIXのCということで、GCC(GNU C Compiler)を思い浮かべる人もいるでしょう。

そういった各種各様の環境に対応した記事では、当然のことながらすべての環境に共通した『通り一遍』の決まり事しか書けなくなってしまいます。あるいは、『この処理系ならこうで、あのOSだったらああいう具合に……』と、処理系ごと、環境ごとに書き分けることになり、非常に読みづらい内容となるでしょう。

初期のMS-C(Microsoft C)はLatticeのOEMでした。その後マイクロソフトは独自のCコンパイラシステムを開発したのですが、両者はライブラリ関数の名前や仕様が微妙に異なっていて、両方を使い分けるときによく混乱したものです

実行/開発環境あれこれ

そのような事情から、このコラムではある程度実行環境を限定しておこうと思います。但し、特定の環境だけに絞りきることはせず、場合によっては他の環境での説明も加えていくつもりです。

ここで、コンソールモードのCプログラミングを試せる環境を紹介しておきましょう。

・DOSで古典的処理系を使う

もしあなたがDOSとMS-CやLattice-Cを今でも使える状況にあるなら(処理系のフロッピーディスクと有効な使用権を持っているなら)、DOSまたはWindows 95、98などのDOSモードでそれらを動かすことができます。

当然のことながら、DOSモードで動作するテキストエディタも必要になります。レトロな感覚でノスタルジックなプログラミング……。いいかもしれません。古いパソコンでも十分な処理速度が得られるでしょう。

・DOSで現行の処理系を使う

DOSまたはWindows 95、98などのDOSモードで動作する現行のC処理系として、エル・エス・アイ ジャパンの提供している無償のC処理系「LSI C-86試食版」が存在します。

無償版ではコードとデータそれぞれを64Kバイト以内に収めなければならないSmallモデルという形式のプログラムしか作れませんが、体験・練習には十分です。

ライブラリも充実しており、しっかりしたヘルプファイルも付属しています。これもまた、十分に使える環境です。

・LinuxまたはBSD系OSでGCCを使う

Linuxの各種ディストリビューションやFreeBSD、OpenBSDなどのBSD系OSを使えるなら、フリーのC処理系であるGCCが利用できます。

UNIX系OSには標準でコンパイラシステム ※2 が付属しているため、インストール時にそれらを選択すれば利用できるようになります。

前回も触れたようにMac OSXはBSD系OSなので、ターミナルからGCCを動かせます。

・Visual Studioでコンソールモードのプロジェクトを作る

Visual StudioでもDOSのコンソールモードで動くプログラムが作れます。Visual C++ 2005のExpress版でも可能です。C++はCを拡張した言語なので、Cのソースを処理して実行形式ファイルを作れます。

但し、Visual Studioの統合環境(IDE)は「ソースを記述してビルドすればプログラムが出来上がる」という簡便さがウリなので、このコラムで追い追い取り上げたいと思っている、コンパイルやリンクなどの仕組みを実感することはできません。

その場合には、コマンドライン版のビルドツール“VCBUILD.EXE”を使います。Windowsアプリケーションの開発ではGUIを使った統合環境の方が便利ですが、コンソールモードのプログラムを作る場合には、コマンドライン版のツールを使う方が手っ取り早い場合があります。

コンパイラやリンカ、ライブラリ、デバッガなどプログラミングに必要なツールがまとめられたもの

とりあえずVisual C++で

さて、そんな訳でこのコラムを始めるにあたって、僕は色々考えました。で、やはり

基本的には『Visual C++ 2005 Express版』を使う

のがいいだろうという結論に達しました。なんと言っても無償で入手できる開発環境ですし、当然のことながらWindowsアプリケーションやWebアプリケーションの学習にまで利用できるのですから、読者のみなさんにとっても好都合です。

但し、連載を進めていく中でコンパイルの仕組みなど深い部分に触れる場合は、UNIX系OSのGCCなどを引き合いに出すかもしれません。もちろん、その都度ことわりを入れ、混乱のないように配慮します。

このコラムの目的は、プログラミングの初心者にCの作法を初歩から学んでもらうことではなく(それも、ある程度は考慮していますが)、既にVisual Basic(VB)やVisual C++などのプログラミング経験をお持ちの方に、プログラミングのもっと深い部分を知ってもらうことです。ですから、『この環境ではこう、あの環境ならああして』……といった多少の揺らぎについてはご容赦願いたいと思います。

Visual C++ 2005 Express版の入手

Visual C++ 2005 Express版(以降「VC++ Exp.」と略します)は、以下のマイクロソフト社のサイトからダウンロードできます。

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

同じページから簡易版ヘルプの「MSDN Express Library」もダウンロードできるので、併せて入手しておくといいでしょう。但し、市販製品版で提供されるMSDN Libraryとは異なり、情報の多くはインターネットを介してマイクロソフト社のサイトを参照する仕様になっています。

インストール時の注意事項なども同じサイトから参照できるので、ここではインストール手順の説明などは省きます。もちろん、市販製品版のVisual Studio 2005をお持ちの方は、それを使って構いません。

なお、繰り返しますが、このコラムはいわゆる『Cの入門』がテーマではないため、逐一紹介するソースをコンパイルする必要はありません。従って、VC++ Exp.の入手も必須ではありません。

なお、Visual C++ 2005 Express版という名称は長いため、先述したように「VC++ Exp.」と略しますが、.NETなど他のバージョンを含むVisual C++は「Visual C++」、2005の市販製品版は「VC++ 2005」と書き分けることにします。基本的にコンソールアプリケーションは、どのバージョンでもほとんど同じスタイルで開発可能ですから、バージョンの違いを気にかける必要はありません。