Windows Embedded Compact (ウィンドウズ エンベデッド コンパクト)は、マイクロソフトが開発した組み込み機器向けの32ビットのマルチタスク/マルチスレッドリアルタイムオペレーティングシステム (RTOS) 。一般にはHandheld PCやPocket PC、Dreamcast、SHARP BrainなどのPDAで使われているオペレーティングシステム (OS) として知られている。1996年11月に発表されている。近年はPNDにも採用されている。バージョン 6.0 では Windows Embedded CE 、バージョン 5.0 までは Windows CE(ウィンドウズ シーイー)と呼ばれていた。

## 概要

Windows 9x系やWindows NT系等と共に、Windowsファミリーに属する。パーソナルコンピュータ (PC) 用Windowsと異なりOSのみで一般に販売されることはなく、対象となる装置に組み込んで使用することを前提としている。また、組み込み用OSとしてWindows Embeddedファミリーにも位置する。かつてのPC用のWindows NTのように、複数のCPUアーキテクチャに対応する。

OSとしてはWindows NT 2.Xから仮想記憶やメモリー量を制限し、APIや機能を絞り込むなど徹底的に軽量化されたものに必要な機能のみを付加するシステムになっており、x86系に特化したノンプリエンプティブなWindows 9x系と異なりWindows NTと同様に完全なプリエンプティブ、マルチタスク、マルチスレッドのリアルタイムOSである。このため一部のダイアログがWindows NT 2.Xのものと類似している。

初期のWindows NTの特色である高い移植性が保たれており、ARM、SuperHをはじめとした様々なCPUアーキテクチャーに対応している。Windows CE 6.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 CE 1.0 (Pegasus)
- Windows CE 2.0, 2.11, 2.12 (Mercury)
- Windows CE 3.0 (Cedar)
- Windows CE .NET 4.0 (Talisker)
  - Windows CE .NET 4.1 (Jameson)
  - Windows CE .NET 4.2 (McKendric)
- Windows CE 5.0 (Macallan)
- Windows Embedded CE 6.0 (Yamazaki)
- Windows Embedded Compact 7 (Chelan)
- Windows Embedded Compact 2013

CE 4.0 から CE 6.0 までのコードネームは有名なウィスキーの名前より取られている。

### 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とおり開発手法が用意されている。

### ネイティブコード開発

CPUのネイティブコードでプログラムの実行ファイル(DLLまたはEXE)を作成する方法がネイティブコード開発である。ネイティブコード開発ではデスクトップPC用のWin32 APIのサブセットが利用可能である。またデータベースやリモートツール関連でCE独自のAPIも用意されている。文字列を使用するAPIはほとんどの場合UNICODEバージョンのみが用意され、ANSIバージョンも用意されているAPIはCランタイム系やWinsock関連など一部にとどまる。

Windows CEではこれまでに以下のCPUアーキテクチャがサポートされていたことがある。

- MIPS系CPU - MIPS32、MIPSII、MIPSIIFPなど
- ARM系CPU - ARMv4、ARMv4I、ARMv5、ARMv6、ARMv7
- SuperHシリーズCPU - SH3、SH3DSP、SH4
- PowerPC
- x86 - x86、x86EM

これ以外に、CEFと呼ばれる仮想マシンコードを利用した開発が一時サポートされていたが、このコンセプトはCE 4.0以降のマネージドコード開発へと引き継がれていった。

ネイティブコード開発ツールとしては当初 Visual Studio 6.0にアドオンして使用する Windows CE Toolkit for Visual C++/Visual Basic 5.0や2003 が使用されたが、Windows CE 3.0以降では無償で入手できる eMbedded Visual Tools 3.0 / eMbedded Visual C++ 4.0 が利用されるようになった。CE5 / 6.0 / Compact7 では Visual Studio 2005 / Visual Studio 2008 Pro以上でネイティブコード開発が行われるようになったが、これらの開発製品は有償で入手する必要があった。

Compact 2013 の場合、Visual Studio 2012/2013/2015 のPro以上、または無償で入手できる Community Editionに、Application BuilderをAdd On して利用する。

### マネージドコード開発

マイクロソフトの.NET Framework構想に準じたアプリケーション開発の手法をマネージドコード開発という。Windows CEのマネージドコード実行環境は.NET Compact Frameworkと呼ばれる。これはデスクトップPC向け.NET Frameworkのサブセットであり、一部共通のクラスライブラリが用意される。開発言語としては C#および Visual Basic(.NET)がサポートされている。

- .NET Compact Framework v1.0
- .NET Compact Framework v2.0
- .NET Compact Framework v3.5

当初はマネージドコード開発のみのためにVisual Studio ( Visual C# / Visual Basic ) 2003 が利用された(ネイティブコード開発はできなかった)が、その後の Visual Studio 2005 および Visual Studio 2008 では一つの環境でネイティブコード開発とマネージドコード開発の両方が可能になった。

### 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をビルドするためにもそれなりのスキルが要求されるため、あまり一般的とは言えない。

### その他の開発製品

- Visual CE:データベース・アプリケーション開発ツール。ソフトウエアマネジメントから1998年5月12日に発売。開発元は、アメリカの SYWARE の製品。

## プラットフォーム開発環境

Windows CE はその初期よりマイクロソフトの組み込み向けOS製品としての利用を計画されていた。やがて出荷された以下のツールキットを使用すると、ユーザーは独自のWindows CE OSを開発しカスタム機器向けの組み込みOSとして利用することができるようになった。

- Windows CE 2.11 ETK (Embedded Tool Kit)

最初の組み込み向けCE開発環境、ベータ版として提供

- Windows CE 2.12 Platform Builder

最初の製品版組み込み向け CE開発環境、独自IDEでOSビルドが可能 (例)Pocket Post Pet

- Windows CE 3.0 Platform Builder

IDEで使用するコンポーネントを選択できるようになった(例)Windows Based Terminal、WebPad

- Windows CE.NET 4.0 Platform Builder

大幅に機能向上。NDIS5.1ネットワーク、MUI機能、VoIP機能など(例)Set Top Box

- Windows CE.NET 4.1 Platform Builder
- Windows CE.NET 4.2 Platform Builder

(例)Portable Media Center

- Windows CE 5.0 Platform Builder

(例)Network Media Device、Nav Readyなどの派生製品がある

- Windows Embedded CE 6.0

これまでの独自IDEからVisual Studio 2005のアドオンへと変更された

- Windows Embedded CE 6.0 R2
- Windows Embedded CE 6.0 R3

(例)ネットワークプロジェクタ、PND、カラオケ端末

- Windows Embedded Compact 7

Visual Studio 2008のアドオンとして提供 (例)タブレット

- Windows Embedded Compact 2013

Visual Studio 2012/2013/2015のアドオンとして提供

近年ではこれらのプラットフォーム開発ツールはVisual Studio Professional with MSDNのダウンロード特典を利用して入手する方法が一般的である。
2015年12月現在、MSDN Subscriber Downloadサイトを利用して CE.NET 4.1 から Compact 2013までのすべてのリリースを入手可能である。

### 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用などのアプリケーションを動作させる試みが、ユーザーの間で行われている。

### ペンオペレーション製品名称の遷移

Pocket PC 2002以降はARM系CPUのみサポートされている。

## 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というバージョンを出し、携帯電話へのシフトを強めている。

## PDAの現状

### 日本国内での各種携帯端末への採用

- WILLCOM W-ZERO3シリーズ - 2005年12月に初代機WS003SH(W-ZERO3、シャープ製)が発売。OSにはWindows Mobile 5.0 for Pocket PCが使われている。
- NTTドコモ hTc Z、HT1100、F1100
- SoftBank X01HT - スマートフォン、HSDPAの3G高速通信を初採用。
- イー・モバイル EMONSTER (S11HT)
- シャープ Brain - 電子辞書