Visual Studio 2005を買う

6.0以来放置していたので6年ぶりくらいでしょうか。Borlandの脅威がなくなり、バージョンアップの値段を引き上げたおかげで個人ユーザがそっぽを向いてしまったという痛い経験をもとに、格安のバージョンアップコースを設けてくれました。6.0もかなり高い値段だった記憶がありますが、これはProfessional Editionを選んだせいでもあります。今回はStandard Ediditonを選びました。W-ZERO3のソフトを作ってみたいというのと、C#がかなり面白い言語だという話を聞いてのチャレンジです。

起動してまず一言。めちゃくちゃ重たいです。なんというのか、これってJavaで作ってないか?なんて思ってしまいました。EQ2を画質優先で動かせるPCでも重さを感じます。メモリは2GBあるんですけどね。一度動き出してしまえば普通通りなのですが、プロジェクトを作るか呼び出すかして、それが表示されるまでの準備時間が妙に長いです。

環境の使い勝手がかなり変わっています。6.0の常識は通用しません。ダイアログを作ってCTRL+Wでクラスウィザードを呼び出そうとしたら、何も起きません。ダイアログにコントロールを配置するツールバーも実に使い辛くなっています。昔、4.0の時代に環境をモノにするのに数ヶ月の修行を要しました。一度身につけてしまえば変わることはなく、使い勝手はよくなる一方でした。しかし、一世代飛ばしただけで別世界です。

C#はクラスライブラリがかなり強力ですが、2005のヘルプが死ぬほどわかりづらく、クラスライブラリがどういう構成になっているのか、全く把握することができません。とりあえず、画面にテキストボックスを配置して、タイマを配置して、タイマイベントハンドラを設置して(C#の関数の置き方はPascalに似てますね)、現時刻をゲットして表示します。ここで問題が発生しました。時刻を取り出すことができないのです。C言語の標準関数が使えないのでお手上げになりました。ヘルプが腐っていて全くわかりませんが、カンを働かせていじり回して、やっとSystem.DateTimeがそれであることがわかりました。あとは芋づる式に情報を引き出して行きます。起動しましたが時計は表示されません。

タイマイベントの動作がFalseになっていたのでTureに切り替えて、無事にダイアログに時計を表示するアプリの作成に成功しました。今度はアプリの終了方法がわかりません。ボタンを押したら何をコールすればいいのかが不明なのです。Exit(), Quit(), Close()と試してみて、Close()でアプリが閉じることを確認しました(笑)。メッセージポンプの構造を知らなくてもアプリを作れるのはいいですね。C++で最初にこれをやる時は苦労しました。

次にMobile 5.0のDSKとエミュレータ環境をインストールしてW-ZERO3で動く時計を作ってみました (Mobile 5.0のDSKを入れないとPocketPC 2003系とWindowsCE 5.0対応のアプリしか作れません)。先程のトライアルと同じアプリをMobile 5.0対応で作成してデバッガを起動すると、エミュレータか実機にアプリを転送して動作させることができるようです。Mobile 5.0 Pocket PCのVGAエミュレータを選んだ所、XGA画面に収まりきれない巨大エミュレータが現れました。SXGAでギリギリ収まります。駄目駄目じゃん(笑) 実機の場合USBでW-ZERO3を繋いでおけば、勝手にプログラム転送して起動します。そしてさくっと時計アプリが動きました。こりゃ凄い。C++でもC#でも同じように作って転送して動きました。Visual BASIC, C#, J#, C++の言語のうち、スマートデバイス対応のアプリケーションが作れるのはJ#を除く3言語のようです。

いろいろ楽しめそうです。寝床でいろいろ勉強するための本を買って来なければいけません。総当たりで試してみるのは大変ですから(笑)