W-ZERO3 用アプリケーションを開発する
開発環境: Visual Studio 2005
1.目次
2.目的
3.参考書
4.開発環境
5.開発手順
6.開発上の注意点
7.VS2005 のリモートツール群
8.まとめ
W-Zero3を買いました。Windows Moble
アプリケーションを作ったことがないので、試しに遊んでみましたが、とても簡単にC#でのWindows Moble
アプリケーション開発ができます。一度試してみてはいかがでしょうか。
-
C#研究室.Live
Space / W-ZERO3
-
MSDN
.NET Compact Framework 向けの表示方向切り替え対応および高dpi対応アプリケーションの開発
W-Zero3 でWindows Moble アプリケーションを開発するには、
-
Visual Studio をインストール
-
Windows Mobile 5.0 SDK
for Pocket PC (英語)をインストール 約174MB
READMEによると、SDKを入れる前に、"Please disable any virus
checking software prior to installation."
という注意書きがあるので、ウィルス対策ソフトは一時的にディスエーブルにすること。
-
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のインストールは必要なく、そのまま接続できます。
-
PC と
W-Zero3 をUSBで接続する。
これで準備は完了です。
【新規プロジェクトの作成】
Visual Studioのメニューからプロジェクトの新規作成で、プロジェクトの種類で [スマートデバイス] →
[デバイスアプリケーション] を選択します。
【ターゲットデバイスの設定】
すると次のようなデザイナーが立ち上がります。このとき、下の図のように [ターゲットデバイス]
を確認します。デフォルトでは、[Windows Mobile 5.0 Pocket PC Emulator]
になっていると思いますが、この状態で実行すると、エミュレータモードで起動します。開発するうえでは、エミュレータでも問題ありませんが、エミュレートしているので、エミュレータの起動や、動作が遅いので、かなりかったるいです。このため、ファイルの操作やレジストリの操作など、危ないアプリケーションでなければ、直接実機上で実行するようにしたほうが楽です。また、実機上でもデバッグが可能です。
実機で実行するには、 [ターゲットデバイス] を [Windows Mobile 5.0 Pocket PC Device]
に変更してください。ファイルの操作やレジストリの操作など、プログラムミスで実機にダメージを引き起こす可能性がある場合には、エミュレータで確実にテストをしてから実機に展開しましょう。
【実行とデバッグ】
では、実機上で、簡単なアプリケーションを作って、動作を確認してみます。ツールボックスから、TextBoxとButtonをそれぞれフォーム上にDragAndDropして、ボタンを押したらメッセージを表示するイベントハンドらを書いて実行してみましょう。実機上で次のように表示されると思います。デバッグもVS2005のWindows.Formsと全く同じ操作性で、実機上でのデバッグができます。
ところで、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]
になっていると思います。
これは、Formの [FormFactor]プロパティが [Windows Mobile 5.0 Pocket PC]
が選択されているためです。W-Zero3では、VGAモードで動作しますので、Formの
[FormFactor]プロパティを[Windows Mobile 5.0 Pocket PC VGA]
に変更しないと、正しく動作しない場合があるいます。フォームファクターを変更すると、次のようにレイアウト画面が大きくなります。
[インストーラの作成]
インストーラの作成も、Windows.Formsと同じ要領で作ることができます。W-Zero3に直接配布可能なCABファイルを作成するには、ソリューションエクスプローラから、[追加]→[新しいプロジェクト]
で、[新しいプロジェクトの追加] ダイアログを表示します。そこで、[その他のプロジェクトの種類]→[セットアップと配置]→[セットアップ
ウィザード]を選択します。セットアップ ウィザード2枚目の画面で、[ダウンロード可能な CAB ファイルを作成する]
を選びます。セットアップ
ウィザード3枚目で含めるプロジェクト出力グループを選択します。プライマリ出力は、EXEとDLLのことなので、最低限[プライマリ出力]にチェックを行います。あとは必要に応じて、ファイルを追加します。あとはビルドするだけで、CABファイルが作成できますので、これをW-Zero3に配布してあげればOKです。
いくつかアプリケーションを作ってみましたが、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)に詳しく書かれています。
Visual Studio 2005 のプログラムフォルダーの中に、Visual Studio Remote
Toolsがあり、.NET + Windows Mobile
でも使えるようになっています。便利な機能がいくつかありますので覚えておくとよいでしょう。
【リモート ズームイン】
スクリーンキャプチャーをリモートで取得できます。
※ 本体でのスクリーンキャプチャは、Fn を押してから、Shift +
Cで、ルートフォルダーにSCRN0001というBMPファイルが作られる。
【リモート スパイ】
【リモート ヒープウォーカー】
【リモート ファイルビューアー】
【リモート プロセスビューアー】
【リモート レジストリーエディター】
自分自身、これほど簡単に Windows Mobile
アプリケーションが開発できるとは思ってもみませんでした。Visual
StudioとW-Zero3をお持ちであれば、あとはSDKなどをダウンロードするだけで開発可能です。一度試してみて
はいかがでしょうか。