hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

いまさらのWindowsCEプログラミング(2) - 開発環境について

第2回は開発環境の選択についてです。ちょっとネットで調べればすぐ分かる程度の情報なので、この連載自体いらない気がしてきました。途中中断するかも。TIPSを書いた方がまだ役に立つかもしれませんね。

WindowsCEの種類についての基礎知識

WindowsCEのプログラミングを始めようとして最初に戸惑うのは、OS、形態、CPUの多様さです。基本的に、ベースOS×形態の違い(キーボードの有無)×CPUの組み合わせの種類があります。ただし全ての組み合わせが製品化されているわけではありません。たとえばPocketPC2002以降はCPUはARMのみです。また、PocketPCでキーボード付もありますので、以下の表は概要を理解するためのものと思ってください。

ベースOS  形態   CPU    
  HandheldPC PocketPC SH3 MIPS ARM
WindowsCE1.0 H/PC1.0   -
WindowsCE2.0 H/PC2.0   -
WindowsCE2.11 H/PC Pro 3.0 Parm-sz PC -
WindowsCE3.0 H/PC2000 PocketPC -
    PocketPC2002 - -
WindowsCE4.x ○(Sig3) PocketPC2003 - -
    PocketPC2003SE - -
WindowsCE5.0   Windows Mobile 5.0 - -


なお、WindowsMobileのシリーズには、"Windows Mobile for PocketPC"、"Windows Mobile for Phone Edition"、"Windows Mobile for SmartPhone"があります。いずれもWindowsCEをOSに採用した製品名であり、Windows Mobile Phone EditionはPocketPCに電話機能を付加したバージョン、SmartPhoneはより携帯電話に特化したバージョンです。

開発環境の選択

次に開発環境を構築する必要があります。ターゲットにしたいベースOSのバージョンによって、使用する開発環境が異なります。

ターゲットOS 開発環境 言語
WindowsCE 2.0以前 "Microsoft Visual Studio 6.0" + "Windows CE Toolkit" Visual C++,Visual Basic
WindowsCE 2.11以降 eMbedded Visual Tools3.0 eMbedded Visual C++、eMbedded Visual Basic
WindowsCE 4.0以降 eMbedded Visual Tools4.0 eMbedded Visual C++
  Visual Studio.NET 2003 マネージドコード
WindowsCE 5.0 Visual Studio 2005 ネイティブコード,マネージドコード

バイナリレベルでの上位互換性が確保されているため、例えばeMbedded Visual Tools3.0で作成したPocketPC用アプリケーションは、PocketPC2003以降でも動作します。ただしPocketPC2003やSEで追加された機能を使用するためには、eMbedded Visual Tools4.0が必要です(例えばC++の構造化例外など)。同様に、Windows Mobile5.0で追加された機能を使用するには、Visual Studio 2005が必要です。

注意点として、PCと実機をAcriveSyncで接続してリモートデバックする場合、上表の組み合わせの開発環境でないと接続ができません。PocketPC2003,2003SEをリモートデバッグするためにはeMbedded Visual Tools4.0が必要です。また、Windows Mobile 5.0をリモートデバッグするためには、Visual Studio 2005が必要です。もちろんコンパイルしたバイナリを実機に転送して直接実行することはできます。ただリモートデバッグができないと、例えばWindows上のエミュレータでは動くのにターゲットのCPUで動かないと言った場合の追跡が難しくなります。

  ネイティブ     マネージド  
  PocketPC PocketPC2003 Windows Mobile 5.0 Compact Framework1.0 Compact Framework2.0
eMbedded Visual Tools3.0 × ×
eMbedded Visual Tools4.0 × × ×
Visual Studio.NET 2003 × × × ×
Visual Studio 2005 ×

○ - コンパイル可能 ●リモートデバッグ可能


今後新たに発売されるWindows Mobileは5.0以降ですから、5.0以降を対象にするならVisual Studio 2005でよいことになります。

なお、WindowsCE2.0以前の開発環境であった"Windows CE Toolkit"は Visual Studio 6.0 のアドオンソフトであり、 Visual Studio 6.0とWindows CE Toolkitを両方とも購入する必要がありました。現在は入手が困難ですので、これ以上の説明は省略します。

個人でWindowsMobile用ソフトウェアの開発を行うにあたって考えねばならないことは、eMbedded Visual Tools3.0と4.0は無料で入手できますが、Visual Studio 2005は製品なので、高額の出費が必要になると言うことです。Visual Studio 2005でWindows Mobile用のソフトウェアを開発するには、最低でも standard edition以上である必要があります(Express editionは不可)。教職員や学生であればアカデミックパッケージが購入できますので、出費は最小限に抑えられます。勉強が目的であれば、Visual Studio 2005 β2を使用し、購入するかどうかの判断は先送りするのがよいかもしれません。

なお、マネージドコードというのは、.NET Frameworkを使用したコードであり、機種独立・言語独立の環境で動作するモジュールが生成されます。Windows Mobile用には、サブセットの.NET Compact Frameworkが提供されます。.NET Compact Frameworkで定義されている範囲内で開発すれば、同一のモジュールがWindowsWindowsCEで動くことになります。ただし当然ながら実行速度はネイティブコードよりも遅くなります。

開発言語の選択

さらに、開発言語の問題があります。

C++

C++はeMbedded Visual Tools3.0 , 4.0 , Visual Studio 2005 のいずれでも使用できます。ただしWindows上のVisual C++と比べて一部機能の省略があったり、Windows APIに比べてサブセットだったりするので、WindowsからWindowsCEへの移植は思ったほど簡単ではなかったりします。

Visual Basic

eMbedded Visual BasicはWindowsCE4.0以降はサポートされなくなりました。もしVisual Basicで開発したソフトウェアを4.0以降に移植するには、Visual Basic.NETかC#に移行する必要があります。

C#

C#Microsoftが提唱するオブジェクト指向言語で、C++に似たシンタックスを持ちます。クラスライブラリが豊富なので、C++に比べて短いステップ数でプログラムが書けます。
Microsoftの今後のロードマップからすれば、WindowsもWinodowsCEも.NET Frameworkで統一する予定なので、過去のしがらみがないならば、C#を選択するメリットはあるでしょう。ただし、C#はWinodws系OS以外では使用できませんので、注意が必要です。

(続くかも)