C# Programming

ImageW-ZERO3 用アプリケーションを開発する

開発環境: Visual Studio 2005 

1.目次

1.目次
2.目的
3.参考書
4.開発環境
5.開発手順
6.開発上の注意点
7.VS2005 のリモートツール群
8.まとめ

2.目的

W-Zero3を買いました。Windows Moble アプリケーションを作ったことがないので、試しに遊んでみましたが、とても簡単にC#でのWindows Moble アプリケーション開発ができます。一度試してみてはいかがでしょうか。

3.参考書

  1. C#研究室.Live Space / W-ZERO3
  2. MSDN .NET Compact Framework 向けの表示方向切り替え対応および高dpi対応アプリケーションの開発

4.開発環境

W-Zero3 でWindows Moble アプリケーションを開発するには、

  1. Visual Studio をインストール
  2. Windows Mobile 5.0 SDK for Pocket PC (英語)をインストール 約174MB
    READMEによると、SDKを入れる前に、"Please disable any virus checking software prior to installation." という注意書きがあるので、ウィルス対策ソフトは一時的にディスエーブルにすること。
  3. Windows Mobile 5.0 Pocket PC Emulator Images (英語)をインストール 言語ごとにあるので、Windows Mobile 5.0 Emulator Images for Pocket PC - JPN.msi を選択。約106MB
    インストール時に、SDKとActiveSync 4.0 が必要と表示されます。XPの場合は、ActiveSync 4.2をインストールしてください。Vista の場合はActiveSyncのインストールは必要なく、そのまま接続できます。
  4. PC と W-Zero3 をUSBで接続する。

これで準備は完了です。

5.開発手順

【新規プロジェクトの作成】

Visual Studioのメニューからプロジェクトの新規作成で、プロジェクトの種類で [スマートデバイス] → [デバイスアプリケーション] を選択します。

Image

【ターゲットデバイスの設定】

すると次のようなデザイナーが立ち上がります。このとき、下の図のように [ターゲットデバイス] を確認します。デフォルトでは、[Windows Mobile 5.0 Pocket PC Emulator] になっていると思いますが、この状態で実行すると、エミュレータモードで起動します。開発するうえでは、エミュレータでも問題ありませんが、エミュレートしているので、エミュレータの起動や、動作が遅いので、かなりかったるいです。このため、ファイルの操作やレジストリの操作など、危ないアプリケーションでなければ、直接実機上で実行するようにしたほうが楽です。また、実機上でもデバッグが可能です。

Image

実機で実行するには、 [ターゲットデバイス] を [Windows Mobile 5.0 Pocket PC Device] に変更してください。ファイルの操作やレジストリの操作など、プログラムミスで実機にダメージを引き起こす可能性がある場合には、エミュレータで確実にテストをしてから実機に展開しましょう。

【実行とデバッグ】

では、実機上で、簡単なアプリケーションを作って、動作を確認してみます。ツールボックスから、TextBoxとButtonをそれぞれフォーム上にDragAndDropして、ボタンを押したらメッセージを表示するイベントハンドらを書いて実行してみましょう。実機上で次のように表示されると思います。デバッグもVS2005のWindows.Formsと全く同じ操作性で、実機上でのデバッグができます。

Image

ところで、C# ということは、.NET Framework が必要ですが、Windows Mobile デバイスでは、.NET Compact Framework というコンパクトサイズのフレームワークが必要になります。W-Zero3に .NET Compact Framework がインストールされていない場合は、初回のプログラムの配置時にVisual Studioが自動的にインストールしてくれます。

以下が、初回アプリケーション配置時の .NET Compact Framework 配置時の出力ウィンドウのメッセージです。

------ ビルド開始: プロジェクト: DeviceApplication6, 構成: Debug Any CPU ------

DeviceApplication6 -> C:\Users\uchukamen\Documents\Visual Studio 2005\Projects\DeviceApplication6\DeviceApplication6\bin\Debug\DeviceApplication6.exe

------ 配置開始: プロジェクト: DeviceApplication6, 構成: Debug Any CPU ------

'C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\windowsce\wce500\armv4i\NETCFv2.wm.ARMV4I.cab' を配置しています。

========== ビルド: 1 正常終了または最新の状態、失敗、スキップ==========

========== 配置: 1 正常終了、失敗、スキップ==========

【フォームファクターの調整】

ところで、フォームの [Size] プロパティを見てください。デフォルトで[240, 268] になっていると思います。

Image

これは、Formの [FormFactor]プロパティが [Windows Mobile 5.0 Pocket PC] が選択されているためです。W-Zero3では、VGAモードで動作しますので、Formの [FormFactor]プロパティを[Windows Mobile 5.0 Pocket PC VGA] に変更しないと、正しく動作しない場合があるいます。フォームファクターを変更すると、次のようにレイアウト画面が大きくなります。

Image

[インストーラの作成]

インストーラの作成も、Windows.Formsと同じ要領で作ることができます。W-Zero3に直接配布可能なCABファイルを作成するには、ソリューションエクスプローラから、[追加]→[新しいプロジェクト] で、[新しいプロジェクトの追加] ダイアログを表示します。そこで、[その他のプロジェクトの種類]→[セットアップと配置]→[セットアップ ウィザード]を選択します。セットアップ ウィザード2枚目の画面で、[ダウンロード可能な CAB ファイルを作成する] を選びます。セットアップ ウィザード3枚目で含めるプロジェクト出力グループを選択します。プライマリ出力は、EXEとDLLのことなので、最低限[プライマリ出力]にチェックを行います。あとは必要に応じて、ファイルを追加します。あとはビルドするだけで、CABファイルが作成できますので、これをW-Zero3に配布してあげればOKです。

6.開発上の注意点

いくつかアプリケーションを作ってみましたが、Windows Mobile 特有の注意すべき点がいくつかあります。
 

【初回起動が遅い】

.NET Framework を使っており、ネイティブコードではなく中間言語がつかわれており、アプリケーションのサイズにもよりますが、起動時に数秒待たされます。Windows Mobile の場合、一度アプリケーションが起動してしまえば、Xボタンを押してもプログラムとしては終了しません。次回起動時は瞬時に表示されますが、瞬時に起動することが要求される場合にはC++によるネイティブコードでの開発が必要になります。

[メモリ消費量が大きい]

ネイティブアプリケーションに比べて、メモリの消費量が大きいです。上記のテキストボックスとボタンだけのアプリケーションでも、1−2MB程度消費します。もともと、W-Zero3 (WS004SH) 自体の空きメモリが20MB程度しかありませんので、画像等を多用したアプリケーションを作ると、あっという間にメモリを食いつぶしてしまいます。見た目の美しさとメモリの大きさとのトレードオフが必要です。

また、W-Zero3のCPUも非力ですから、複雑な処理には向きません。しかし、W-Zero3はインターネット接続が可能ですし、.NET Compact Framework でも Web サービスへの接続はサポートされており、簡単に実装できます。Web サービスのと組み合わせで、重い処理やデータベースなどの大量のデータの処理は、サーバ側で実行し、処理結果を受け取るようにすれば、かなりの処理ができます。

[サポートされていないネームスペースやクラスやメソッドがある]

.NET Compact Framework では、サイズをコンパクトにする必要があることから、.NET Framework のすべてのネームスペースやクラスやメソッドがサポートされているわけではありません。このため、Windows アプリケーションからの移植の場合、制約が出る可能性があります。

[相対パスでの指定ができない]

意外な落とし穴で、Windows Mobile デバイスの制限として、ファイルパスの相対指定ができず、絶対パスで指定する必要があります。ファイルアクセスに失敗している場合、ファイルパスの指定をチェックしてみてください。

[表示方向切り替え、および高解像度対応]

W-Zero3をお持ちの方はお分かりのように、表示方向を縦、横で切り替えが可能です。このため、縦、横にレイアウトが変更されても画面のコントロールが正しく表示されるように注意する必要があります。

また、4章で述べたように解像度もVGAでの高解像度表示が可能ですが、W-Zero3以外のWindows Mobileデバイスでも動作するアプリケーションを作成する場合は、解像度に応じてレイアウトを変更しなければならないケースもあります。これらの対応方法に関しては、参考文献(2)に詳しく書かれています。

7.VS2005 のリモートツール群

Visual Studio 2005 のプログラムフォルダーの中に、Visual Studio Remote Toolsがあり、.NET + Windows Mobile でも使えるようになっています。便利な機能がいくつかありますので覚えておくとよいでしょう。

Image

【リモート ズームイン】

スクリーンキャプチャーをリモートで取得できます。

※ 本体でのスクリーンキャプチャは、Fn を押してから、Shift + Cで、ルートフォルダーにSCRN0001というBMPファイルが作られる。

Image

【リモート スパイ】

Image

【リモート ヒープウォーカー】
 

Image

【リモート ファイルビューアー】

Image

【リモート プロセスビューアー】

Image

【リモート レジストリーエディター】

Image

8.まとめ

自分自身、これほど簡単に Windows Mobile アプリケーションが開発できるとは思ってもみませんでした。Visual StudioW-Zero3をお持ちであれば、あとはSDKなどをダウンロードするだけで開発可能です。一度試してみて はいかがでしょうか。