今更ながらにW-ZERO3を買ったので、とりあえずテストプログラムを1本書いてみました。
一応「本気」なので、冗談レベルの実用性しかないプログラムなど書かず、そのかわりCabファイルの作成までやってみました。(つまり、冗談レベルではない実用ソフトを書く気があるということですね)
作ったもの §
以下のようなアプリです。C#で書いて、.NET Compact Framework 2.0で動きます。
機能は以下の通り。
- テキストボックスに文字列を入力できる
- 大文字にするボタンと小文字にするボタンを付ける
- メニューを追加して、それにも大文字と小文字の機能を付ける。ここはアクセラレータのニモニックも指定する
- 意味のない画像を入れてみる
- アンカー指定で縦置き、横置きを切り替えても破綻しない画面構成を実現する
- Cabファイルを作成して、それを使ってインストール可能にする
- Cabファイルにはスタートメニューへのショートカットを入れる
ちなみに、横置きにすると以下のような表示になります。
ファイル一式 §
作成したソリューション一式をZIP圧縮したものを以下に置きます。中にCabファイルも入っています(CabプロジェクトのReleaseディレクトリ内。
Cabファイルをインストールして実行する場合には.NET Compact Framework 2.0もインストールする必要があります。
準備 §
Visual Studio 2005はそのままではWindows Mobile 5.0アプリケーションに対応していないので、Windows Mobile 5.0 Pocket PC SDKを落としてインストールします。
エミュレータもあるので実機は必須ではありませんが、使う場合はActiveSync経由で接続しておきます。
プロジェクト作成 §
Visual Studio 2005で、「Visual C#」の中の「スマートデバイス」のなかの「デバイスアプリケーション」を選んでプロジェクトを作成します。
プログラムの作成 §
難しい話はありません。普通のWindows Formsの要領でアプリを作成します。
実行とデバッグ §
F5キーを押すと、どのデバイスで実行するか質問されます。用意されたエミュレータと、実機が接続されていればそれの名前がリストされます。そこから実行対象を選ぶと実行されます。
最初の1回は.NET Compact Framework 2.0をインストールする関係上、待たされる可能性があります。そうではないケースでも多少待つことがあります。待っていれば自作プログラムが走るので待ちましょう。
この状態で、デバッグモードで走っています。ブレークポイントを仕掛ければ停止します。変数の値も見られます。実機上で実行していても可能です。
プログラムの終了 §
ここはまだ良く分かっていません。
下手な操作で終了させると、Visual Studio側は実行が終わったと認識しているにもかかわらず、エミュ/実機上ではプロセスが生きていることがあります。この場合、意図した操作ができないこともあるので、設定→システム→メモリ→実行中のプログラムで止める必要が生じる場合があります。
とりあえず、Visual Studioの「デバッグの停止」ボタンで止めておけばプロセスが残ることはないようです。
Cabファイル(インストールパッケージ)の作成 §
ソリューションにCabプロジェクトを追加します。そのためには、プロジェクトの作成ダイアログで、「その他のプロジェクトの種類」→「セットアップと配置」→「スマートデバイスCABプロジェクト」と選びます。
プロジェクトを作成すると、ファイルシステムのウィンドウが表示されます。
ここで、アプリケーションフォルダを右クリックし、「追加」→「プロジェクト出力」を選び、OKをクリックします。あとは、Cabプロジェクトを明示的にビルドすれば、実行ファイルをインストールできるCabファイルができます。
スタートメニューに登録する §
ファイルシステムのウィンドウで、「対象コンピュータ上のファイルシステム」を右クリックし、「特別なフォルダの追加」→「スタートメニューフォルダ」を選択してスタートメニューフォルダを追加。
ファイルシステムのウィンドウで、アプリケーションフォルダを選択し、その右側に表示されたプロジェクト名で始まる名前(このケースでは1つしかないので間違わないと思う)を右クリックし、「……へのショートカットを作成」を選択。
そのショートカットを「スタートメニューフォルダ」へドラッグして移動させます。
その後、このショートカットを選択してからF2キーを押して名前を適切に書き換えます。
Cabプロジェクトを明示的にビルドすれば、スタートメニューに登録されるCabファイルが出来上がります。
このCabファイルを使うと、デバイス側で「メニュー」を使ってスタートメニューとプログラムへの登録の選択もできるし、「プログラムの削除」で綺麗に消すこともできます。
感想 §
ずっと昔、初期のWindows CEをいじった頃と比較すると、格段に出来が良くなっていますね。
それはさておき。
実は最近になって、プログラム開発に関する考え方を変えつつあります。ちょっと前までは、多少開発ツールの効率が悪くても、小さなプログラムを書くだけなら関係はないだろう……と思っていました。
しかし、これは間違いだったと感じます。
たとえば、片手間(1時間程度?)で書けるプログラムを作るとします。
もし、良質なツール抜きで書くなら、込み入ったバグが出た瞬間にデバッグに数時間取られる可能性が出てきます。しかも、それは疲れる作業となります。
あるいは、MS製品のライバル、特にオープンソース系に見られるような気がする「機能拡張ソフトが無数にあって何でもできるぜ!」的な開発ツールは、実は環境構築に時間を取られます。setupを流せばとりあえず一通りの機能がインストールされてすぐ使える……という世界と比較すると、余計な手間と時間を取られるという印象があります。自由の代償は手間の増加として跳ね返ってきます。
当然のことを繰り返すなら、ここで期待されることは「効率よくプログラムができる」ことであって、子供っぽい自己主張を開発環境に反映させることではありません。自分の流儀とツールの流儀が違うなら、ツールに合わせるぐらいは大した損失ではありません。しかし、プログラムを作成するための手間や時間が増えることは明確な損失です。
そういうことを考えたとき、実はVisual Studioとは最も役立つ開発ツールなのではないか……と思うようになってきたわけです。
実際、昨日はWindows Live Writerのプラグインを片手間で書けたし(キーワード一発でブログにWikiPediaの参照を挿入する! Windows Live Writerのプラグインを作成!!参照)、今日はこれを片手間で書けたわけです。
まあ、考えてみれば生涯で最も感動した開発ツールであるVisual C++ 1.5(日本語版は存在しない)の直系の子孫なのだから、悪いはずがありません。それにも関わらず判断がぐらついていたのは、Visual Studioの存在があまりに当たり前になりすぎて、その有り難みが分からなくなっていたからなのでしょうね、たぶん。