Microsoft Windows Embedded CE
Windows Embedded Compact （ウィンドウズ エンベデッド コンパクト）は、マイクロソフトが開発した組み込み機器向けの32ビットのマルチタスク/マルチスレッドリアルタイムオペレーティングシステム (RTOS)。一般にはHandheld PCやPocket PC　SHARPBrainなどの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アーキテクチャに対応する。
組み込み用という性格上、機器を開発するメーカがその機器に不要な機能は削除し必要な機能のみを選んで搭載することも可能である。このため、利用者からは、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."（小さく、つなぎやすく、互換性のある、つきあえる、効率的なもの）の意味合いがある」と説明している。
改良により、機能追加のほか、リアルタイムイベントでの応答速度の向上などが行われている。
CE 4.0 から CE 6.0 までのコードネームは有名なウィスキーの名前より取られている。
次世代バージョンとして、Version 6.0が開発された。5.0までは、プロセス数は最大32個に制限され、そして各プロセスの仮想アドレス空間は32MBに制限されていた。6.0ではプロセス数制限は最大32000個までに拡張され、各プロセスの仮想アドレス空間は2GBまでに広げられる。これにより大量のメモリを消費するアプリケーションが実現可能になる。またカーネルは上位2GBのアドレス空間に置かれ、従来ユーザープロセスだったGWES、ファイルシステム、デバイスドライバはカーネル空間に統合される。これにより従来プロセス切り替えオーバーヘッドがAPI呼び出しに伴っていたが、これもシステムコールという形になり高速化される。特にネットワークへのアクセス速度は大幅に高速化されるとしている。
CE 6.0 の発展バージョンとして開発されたWindows Embedded Compact 7 は 8物理コアまでの%E5%AF%BE%E7%A7%B0%E5%9E%8B%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0、3GBまでの物理メモリ空間サポート、NDIS 6.1ベースのネットワークスタック、.NET Compact Framework v3.5 が特徴である。また Silverlight for Windows Embedded によるUI開発が可能になった。
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アーキテクチャがサポートされていたことがある。これ以外に、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)がサポートされている。
当初はマネージドコード開発のみのためにVisual Studio ( Visual C# / Visual Basic ) 2003 が利用された(ネイティブコード開発はできなかった)が、その後の Visual Studio 2005 および Visual Studio 2008 では一つの環境でネイティブコード開発とマネージドコード開発の両方が可能になった。
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をビルドするためにもそれなりのスキルが要求されるため、あまり一般的とは言えない。Windows CE はその初期よりマイクロソフトの組み込み向けOS製品としての利用を計画されていた。やがて出荷された以下のツールキットを使用すると、ユーザーは独自のWindows CE OSを開発しカスタム機器向けの組み込みOSとして利用することができるようになった。
最初の組み込み向けCE開発環境、ベータ版として提供
最初の製品版組み込み向け CE開発環境、独自IDEでOSビルドが可能 (例)Pocket Post Pet
IDEで使用するコンポーネントを選択できるようになった(例)Windows Based Terminal、WebPad
大幅に機能向上。NDIS5.1ネットワーク、MUI機能、VoIP機能など(例)Set Top Box
（例）Portable Media Center
（例）Network Media Device 、Nav Readyなどの派生製品がある
これまでの独自IDEからVisual Studio 2005のアドオンへと変更された
（例）ネットワークプロジェクタ、PND、カラオケ端末
Visual Studio 2008のアドオンとして提供 (例)タブレット
Visual Studio 2012/2013/2015のアドオンとして提供
近年ではこれらのプラットフォーム開発ツールはVisual Studio Professional with MSDNのダウンロード特典を利用して入手する方法が一般的である。
2015年12月現在、MSDN Subscriber Downloadサイトを利用して CE.NET 4.1 から Compact 2013までのすべてのリリースを入手可能である。
上記ツールキットを使用すると、OEMのニーズに応じたOS機能のみを搭載したカスタムWindows CE OSを作成することができるが、これらカスタム機器（通常よりも使用可能API少ない）で正常に動作するネイティブコードアプリケーション開発をサポートするために、ツールキットにはカスタム機器で使用可能なヘッダーファイルとライブラリのみをまとめて出力する、カスタムSDK作成機能が備わっている。この機能を用いて作成されたカスタムSDK は eMbedded Visual C++ やVisual Studio 2005/2008、Visual Studio 2012/2013/2015 + Application Builder環境で使用することができる。
最近のPlatform Builder には再ビルド可能なCEカーネルほかいくつかの中心モジュールのソースコードが付属しており、ツールキットインストール時に簡単なEULAに同意することでOSのビルドツリー内にインストールされる。これを利用してカーネルの処理内容を理解したりデバッグ時にカーネルデバッガから参照したりすることができる。
Windows CE Platform Builderを利用してカスタムWindows CE OSを開発しこれを機器に搭載して製品出荷する場合、組み込みOSとしての使用料をマイクロソフトに支払う必要がある。その際には代理店経由で契約を締結し、COAと呼ばれるシールを製品に貼付して出荷する。Windows CEの組み込みOSとしてのライセンス料は使用OSコンポーネントによりいくつかのカテゴリに分けられるが、およそ1台あたりUS $3 から US$16の範囲とされている。
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 PC2002以降はARM系CPUのみサポートされている。
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というバージョンを出し、携帯電話へのシフトを強めている。