Microsoft Visual C++ Express Edition / C++/CLI (2006.4.20)

©2006 Masa. All rights Reserved.
隔世の感

  ふと気づけば Windows の標準開発環境 Visual C++ の無償配布が始まっていたので、早速ダウンロードしてみました。以前は「どこがVisual?」とさえ思ったVisual C++ですが、今回の 2005 年バージョンは、ボーランドの C++Builder と同様の操作感になっています。そして言語のほうも、Java 的な中間言語ベースの C++/CLI になっており、仕様がかなり拡張されています。IDEもC++も久しぶりで、C#はまったくチェックしていない筆者でも、基本的なプログラムがとても簡単に作れました。

ダウンロードとインストール〜ISOイメージは便利

  VisualStudioの無償版は Express Edition という名前がついていて、Visual Basic/C#/C++/J# それぞれマイクロソフトでは珍しく? ISO のイメージで配布されています。Daemon Tools でマウントすると、勝手にインストーラが起動するので、あとは指示どおりに操作するだけでインストールは終了します。

起動すると例によって複数の領域に分かれた統合環境のウィンドウが表示されます。あとは、プロジェクトを新規作成してコーディング開始です。

ビジュアル開発環境〜まるっきりC++Builder

  やっぱりJavaとかではなくWindowsの開発環境ですから、ウィンドウを使うアプリケーションを作ってみないとはじまりません。画面中央のタブを切り替えて右側のツールボックスからボタン等をホイホイ配置していきます。ダイアログボックスなど見えないものもアイコンとしておいていくところもC++Builderと同じです。配置するときにグリッドやガイドラインが自動的に表示されて適当に配置してても綺麗に揃っていくのです。
ボタン等をダブルクリックするとコールバック関数が勝手に出来てきます。コード補完等ができるのは最近の開発環境では当然ですよね。あとはビルドも実行もボタンをクリックするだけです。ただ、ビジュアル環境はマネージド(後述)なWindows Forms専用です。


いまどき一見はどれでも同じかも
C++/CLI〜たとえ妙に拡張されてても、C++ なのは嬉しい

  肝心のコードですが、基本的には Java ライクなマネージドコード(いわゆる.Net)であり見慣れないオペレータや表現が並びます。newの代わりにgcnew、**や&の代わりに^が出てきますが、これを使うことで自前でdeleteやfree、ポインタ値の管理をしなくてもランタイムライブラリが適当にガベージコレクションしてくれるのだそうです。ハンドルというと Mac の Pascal みたいですが、こんなものはわかればそれまで。全般的に当然ながらC++がわかればソースは読めます。

クラスライブラリ(.Net Framework)が充実しているので Perl でよくやるような splitして作った配列にforeach、で正規表現でどうのこうのといった処理も簡単に書けるようになっています(String 型にSplitメソッドがあり、for 文で for each x in xxのような書き方が出来る) 。いまどき当然かもしれませんがHTTPでコンテンツをGetして一行ずつ処理、みたいのも、WebClientオブジェクトをgcnewしてメソッドを叩くだけでコンテンツが取れるので、簡単に書けます。
C++ の流儀のままで、Java のようなモダンなプログラミングスタイルが使えるので、なかなかいい感じです。C++ からVBA(Visual Basic for Applications)のようにOfficeを制御するようなこともできます。

マネージドコードとアンマネージドコード

Visual C++ 2005 では、従来どおりのメモリ管理がプログラマ任せで x86 命令を吐き出すアンマネージドと、メモリ管理がランタイム任せでプロセッサ非依存の CLI 命令を吐き出すマネージドの2つのモードを扱うことができます。
前述のようなビジュアル環境だとか正規表現だとかの便利な機能はすべてマネージドモードでのみ使用できるのですが、このあたりで楽をしつつ、肝心な処理にはインラインでアンマネージドモードを指定すれば、指定した部分だけ x86 コードで実行するバイナリを得ることができますし、もちろん従来通りWindows Formsや.Net Framework を使わずにすべてアンマネージドで記述することもできます。
GUIは楽だけど遅いJavaで書いて、メインは速くてライブラリも多いCで書くというような考え方を、両方同じC++で、しかもインラインで書き分けられるというのはかなり便利そうです。
ただマネージドコードは便利なのはいいのですがバイナリから可読性の高いソースを得られるため実質オープンソースのようになってしまいます。難読化ソフトを使う、実行ファイル圧縮ソフトを使うといった対策はあるものの、個人的なソフト開発以外に使うときは考慮が必要になります。

ほとんど制限なし。単一言語で使うならで無料版で十分

  リソースエディタがないとか一部使いにくくなっているものの、利用期間期限もなく、かなりメタボリック、いや太っ腹の Express Edition です。ただし、1万円台で買える Standard Edition にすると WindowsMobile の開発ができたり、1つのIDEでVB/C++/C#などを使い分けることができるようになります。筆者もC++/VBを併用するのとMobileにも手を染めたいという理由で結局 Standard Edition を買ってしまいました…Microsoft の思う壺でしょうか。

長所:インストールも簡単で使い勝手もいいし機能も高く、これで無料。
短所:普通に作るとマネージドとなり.Net Framework のランタイムがないと動かないしソースコードが丸裸。

 

★★★★☆(2006.4.20)

アクセスランキング
1.
BIBLO MC/30
2.
USB 2.5' HDD ケース
3.
IBM NetVista
4.
VS2005
5.
Apple iPod nano
6.
BIBLO MC/30(2)
7.
sigmarion II
8.
USB for SEGA SATURN PAD
9.
Canoscan FB636U
10.
FLORA 310 DL6