Microsoft Windows Embedded CE

概要

Windows 9x系やWindows NT系等と共に、Windowsファミリーに属する。パーソナルコンピュータ (PC) 用Windowsと異なりOSのみで一般に販売されることはなく、対象となる装置に組み込んで使用することを前提としている。また、組み込み用OSとしてWindows Embeddedファミリーにも位置する。かつてのPC用のWindows NTのように、複数のCPUアーキテクチャに対応する。
OSとしてはwindowsNT2.Xから仮想記憶やメモリー量を制限してしメモリー量を制限、APIや機能を絞り込むなど徹底的に軽量化されたものに必要な機能のみを付加するシステムになっており、86系に特化したノンプリエンプティブなWindows9Xと異なりWindowsNTと同様に完全なプリエンプティブ、マルチタスク、マルチスレッドのリアルタイムOSである。このため一部のダイアローグがWindowsNT2.Xのものと類似している。
初期のWindowsNTの特色である高い移植性が保たれており、ARM、SuperHをはじめとした様々なCPUアーキテクチャーに対応している。WindowsCE6.Xからはカーネルが近代化され、メモリーは2GB、プロセス数は32000までに拡張され、プロセスのカーネル階層への移動など負荷の重いタスクへの対応や高速化が図られている。
組み込み用という性格上、機器を開発するメーカがその機器に不要な機能は削除し必要な機能のみを選んで搭載することも可能である。このため、利用者からは、Windows CEが搭載されていることを意識することなく使える機器を作ることもできる。業務用専用端末や、セットトップボックス等で用いる場合は、このようにして必要な機能を搭載する。また、実装した機能によって対価のロイヤリティが変動する。
必要な機能のみを選択して搭載することができるという特徴を生かして、Windows CEを搭載するPOSレジや、ビデオプロジェクタ、カーナビ (Windows CE for Automotive)、ゲーム機（ドリームキャスト）、ポータブルAVプレーヤー (Portable Media Center)、シンクライアント端末 (Windows-based Terminal、Smart Display) なども存在する。これらにはPDAに見られるようなOSとしてのGUIを実装していないものも多いが、レジでは最近タッチパネルを搭載してボタンと組み込みOSの操作で作業の効率化を図る傾向がある。
なお、これらの端末にもパーソナルコンピュータ (PC) 用Windowsと同様にWindowsのライセンスシールが貼り付けられる。

名称

「CE」の名称は家電を意味するConsumer Electronicsの略と言われているが、マイクロソフトによると、「CEは何かしらの略語ではないが、"Compact," Connectable," Compatible," "Companion," and "Efficient."（小さく、つなぎやすく、互換性のある、つきあえる、効率的なもの）の意味合いがある」と説明している。

Windows Embedded CE 6.0

次世代バージョンとして、Version 6.0が開発された。5.0までは、プロセス数は最大32個に制限され、そして各プロセスの仮想アドレス空間は32MBに制限されていた。6.0ではプロセス数制限は最大32000個までに拡張され、各プロセスの仮想アドレス空間は2GBまでに広げられる。これにより大量のメモリを消費するアプリケーションが実現可能になる。またカーネルは上位2GBのアドレス空間に置かれ、従来ユーザープロセスだったGWES、ファイルシステム、デバイスドライバはカーネル空間に統合される。これにより従来プロセス切り替えオーバーヘッドがAPI呼び出しに伴っていたが、これもシステムコールという形になり高速化される。特にネットワークへのアクセス速度は大幅に高速化されるとしている。

Windows Embedded Compact 7

CE 6.0 の発展バージョンとして開発されたWindows Embedded Compact 7 は 8物理コアまでの対称型マルチプロセッシング、3GBまでの物理メモリ空間サポート、NDIS 6.1ベースのネットワークスタック、.NET Compact Framework v3.5 が特徴である。また Silverlight for Windows Embedded によるUI開発が可能になった。

Windows Embedded Compact 2013

Compact 7の後継として、2013年6月に一般利用可能となった。
サポートするCPUの種類としてはx86およびARMv7T2が必要とされ、MIPS系、およびARMv5、ARMv6までのアーキテクチャサポートは削除された。
開発環境として Visual Studio 2012 update2  以降および  Visual Studio 2013 、 Visual Studio 2015 が利用可能である。ARMコンパイラは Windows RT 用に用意されたものと同じARMコンパイラが利用される。そのため(ARMでもx86でも) C++0x 拡張が利用可能である。
UI開発手法として上記Visual Studio 同梱のRAD開発ツール、Blend for Visual Studioの利用が推進された一方で、これまでのHPC Shell機能やコントロールパネルUIはサポートが削除された。.NET Compact Frameworkとしては v3.9がサポートされている。

アプリケーション開発環境

Windows Embedded CEのアプリケーション開発は、現在ではネイティブコード開発とマネージドコード開発の2とおり開発手法が用意されている。

RAD開発

Windows Embedded CE 6.0 R3 や Compact 7 / 2013 ではアプリケーション開発手法として Silverlight for Windows Embedded が利用可能である。これはExpression Blend または Blend for Visual Studio を利用して作成したデザインにC++で開発した処理コードを組み合わせるという、ハイブリッドな開発手法である。

デバッグ手法

作成したアプリケーションの動作確認は、PC上で実行するCEエミュレータ、またはシリアルケーブルやLAN経由でActiveSyncやWindows Mobile Device Centerにより接続したターゲット機にリモートで、それぞれダウンロードして行う。
Windows CE 2.x/3.0の時代には、Windows PC上のWin32 APIに変換する形で動作するWindows CEエミュレータが用意されていた。このAPIエミュレータを利用するには、デバッグ時に一時的にx86コードを生成する必要があった。
Windows CE 5.0/6.0 や Windows Mobile 5.0/6.xの世代では ARMコードで動作するエミュレータが用意され、ARM実機用と同じバイナリをエミュレータでそのまま動かすことができた。
Compact7 や Compact 2013ではWindows Virtual PCを利用して動作するデバッグ用OSイメージ作成用のBSP(VCEPC)が提供され、実機と接続するのと同じイーサネット接続を利用してデバッグすることができる。ただしWindows Virtual PCで動作するデバッグ用OSをビルドするためにもそれなりのスキルが要求されるため、あまり一般的とは言えない。

Export SDK機能

上記ツールキットを使用すると、OEMのニーズに応じたOS機能のみを搭載したカスタムWindows CE OSを作成することができるが、これらカスタム機器（通常よりも使用可能API少ない）で正常に動作するネイティブコードアプリケーション開発をサポートするために、ツールキットにはカスタム機器で使用可能なヘッダーファイルとライブラリのみをまとめて出力する、カスタムSDK作成機能が備わっている。この機能を用いて作成されたカスタムSDK は eMbedded Visual C++ やVisual Studio 2005/2008、Visual Studio 2012/2013/2015 + Application Builder環境で使用することができる。

Shared Source

最近のPlatform Builder には再ビルド可能なCEカーネルほかいくつかの中心モジュールのソースコードが付属しており、ツールキットインストール時に簡単なEULAに同意することでOSのビルドツリー内にインストールされる。これを利用してカーネルの処理内容を理解したりデバッグ時にカーネルデバッガから参照したりすることができる。

ライセンス料

Windows CE Platform Builderを利用してカスタムWindows CE OSを開発しこれを機器に搭載して製品出荷する場合、組み込みOSとしての使用料をマイクロソフトに支払う必要がある。その際には代理店経由で契約を締結し、COAと呼ばれるシールを製品に貼付して出荷する。Windows CEの組み込みOSとしてのライセンス料は使用OSコンポーネントによりいくつかのカテゴリに分けられるが、およそ1台あたりUS $3 から US$16の範囲とされている。

PDAでの利用

PDAと呼ばれる製品群にはWindows CEをOSとするものがあり、これらPDA用に必要なデバイスドライバやウェブブラウザなどの機能をマイクロソフトがまとめた製品が「Handheld PC」や「Pocket PC」である。「Handheld PC」や「Pocket PC」はOSを示すものではない。例えば、NECの「モバイルギア」の「MC-R530」という製品の場合は、Windows CE Ver.2.11を搭載した、Windows CE Handheld PC Edition Ver.3.01仕様の製品というようになる。
初期の頃、Windows CEの利用形態の一つとして、携帯用端末での使用が検討され、その結果x86ベースのノートパソコンよりも小型化されたキーボード付きの形状のものと、タッチパネルへのペン（スタイラス）による入力操作を基本とするキーボードを持たない小型のものが登場した。前者を「Handheld PC」（ハンドヘルド・ピーシー＝H/PC）、後者を「Pocket PC」（ポケット・ピーシー）と呼ぶ。
どちらの場合も、Windows 95以降でウィンドウを「最大化表示」で使用した状態に似たユーザインタフェースとなっており、Windowsユーザであれば、あまり違和感なく操作することができるよう配慮されている。また、携帯用という点を重視し、小型軽量で電池（バッテリ）による長時間駆動が可能である。キーボード付きのものでもペン操作が出来るものが多い。多くはハードディスクを持たず、メモリカードスロットを実装する。
キーボード型やペン型PDAであっても、マイクロソフトが提供する上記のプラットフォームを使わず、Windows CEカーネル上に独自のユーザモード層を構築した製品もある。カシオのl'agenda（ラジェンダ）、NTTドコモのポケットポストペットやシグマリオンIII、日立のNPD-10JWL/20JWL、au（KDDI・沖縄セルラー電話）のトリコメール、サイバーバンクジャパンのPC-EPhoneIIなどがこれに当たる。その理由として、GUIを独自実装することでロイヤリティを下げられることが挙げられる。また、キーボード型の製品ではH/PCの開発が既に終息していること、ペン型の製品ではARM以外のCPUのサポートを中止したことも挙げられる。これらの機種の一部では、足りないモジュールを独自に補完してPocket PC用などのアプリケーションを動作させる試みが、ユーザーの間で行われている。

PDAの発展と終息

H/PCについては、かつてはNECの「モバイルギア」、シャープの「テリオス」、日本ビクターの「インターリンク」、日立製作所の「ペルソナ」、ヒューレット・パッカードの「Jornada」、NTTドコモが販売する「シグマリオン」などの機種があったが、いずれも生産を終了している。マイクロソフトもH/PC向けの製品をリリースしておらず、H/PC市場は事実上終息している。
Pocket PCについては、国内メーカではカシオ計算機の「カシオペア」や東芝の「GENIO e」、NECの「ポケットギア」、富士通の「Pocket LOOX」、NTTドコモが販売する「muséa」等がある。この他に、ヒューレット・パッカード（旧コンパック）の「iPAQ」やデルの「Axim」など海外メーカー製品もあり、かつては選択の幅も広かったが、各メーカとも法人用途向けに注力するようになったことや、通信販売でのみ販売する手法に切り替えたこともあり、店頭でこのタイプの端末を見ることも少なくなっている。
携帯電話の高機能化がPDA全体の販売数が減少した一因、という意見もある。Windows CEはスマートフォン向けのWindows Mobile for Smartphone（日本未発売）やWindows Mobile for Pocket PC Phone Editionというバージョンを出し、携帯電話へのシフトを強めている。