Windows CE (後にWindows Embedded CEおよびWindows Embedded Compactとして知られる)は、 Microsoftがモバイルおよび組み込みデバイス向けに開発した、現在は開発が終了しているオペレーティングシステムです。当初はハンドヘルドコンピュータのみを対象としていましたが、Windows CEはコンポーネントベースの組み込みリアルタイムオペレーティングシステムへと進化しました。Windows Embeddedファミリー[ 11 ]の一部であり、 Pocket PC、Auto PC、Windows Mobile、Windows Phone 7など、いくつかの製品のソフトウェア基盤として機能しました。
Windows NTをベースにしたWindows Embedded Standard、Windows For Embedded Systems、Windows Embedded Industry、Windows IoTとは異なり、 Windows CE は異なるカーネルを使用しています。[ 12 ] Microsoft は、OEM (相手先ブランド製造業者) にライセンスを供与し、OEM は独自のユーザー インターフェイスとエクスペリエンスを変更および作成することができ、オペレーティングシステムはそのための技術的基盤を提供します。
Windows CE の以前のバージョンはMIPSおよびSuperHアーキテクチャで動作していましたが、 2011 年にリリースされたバージョン 7.0 (このとき製品名も Embedded Compact に変更されました) では、これらのサポートは削除されましたが、MIPS IIアーキテクチャのサポートは残されました。2013 年にリリースされた最終バージョンである Windows Embedded Compact 2013 (バージョン 8.0) では、ボード サポート パッケージ(BSP) を直接サポートするx86およびARMプロセッサのみをサポートしています。[ 13 ]メインストリーム サポートは 2018 年 10 月 9 日まで、延長サポートは 2023 年 10 月 10 日に終了しましたが、OEM 向けのライセンス販売は 2028 年まで継続されます。[ 14 ] [ 15 ] [ 16 ] [ 17 ]

Windows CE は、最小限のメモリしか持たないデバイス向けに最適化されています。Windows CE カーネルは、1メガバイトのメモリで動作できます。[ 18 ]デバイスは、ディスク ストレージなしで構成されることが多く、エンド ユーザーによる拡張を許可しない「クローズド」システムとして構成される場合があります (たとえば、ROMに書き込むことができます)。Windows CE は、決定論的な割り込みレイテンシを備えたリアルタイム オペレーティングシステムの定義に準拠しています。バージョン 3 以降、システムは 256 の 優先度レベルをサポートし[ 19 ] 、優先度の逆転に対処するために優先度の継承を使用します。実行の基本単位はスレッドです。これにより、インターフェイスが簡素化され、実行時間が改善されます。
最初のバージョンは、開発中は「ペガサス」というコードネームで知られており、 WindowsのようなGUIと、Microsoftの人気アプリが多数搭載されていたが、いずれも携帯端末のストレージ、メモリ、速度に合わせて最適化されていた。[ 20 ]
マイクロソフトのAutoPC、Pocket PC 2000、Pocket PC 2002、Windows Mobile 2003、 Windows Mobile 2003 SE、 Windows Mobile 5、Windows Mobile 6、Smartphone 2002、Smartphone 2003 、Portable Media Center、Zune、Windows Phone 7 、その他多くの産業機器や組み込みシステムなど、多くのプラットフォームがコアとなる Windows CE オペレーティングシステムをベースにしています。Windows CE は、セガドリームキャストの一部のゲーム[ 21 ]にも搭載され、Gizmondoハンドヘルドのオペレーティングシステムでもありました。
Windows CEが他のMicrosoft製オペレーティングシステムと比べて際立っている点は、その大部分がソースコード形式で提供されていることです。当初、ソースコードは複数のベンダーに提供され、各社が自社のハードウェアに合わせて調整できるようにしました。その後、Platform Builder(Windows CE OSイメージの作成と統合、またはCEベースのカスタマイズされたオペレーティングシステム設計のための統合環境)などの製品が、ソースコード形式でいくつかのコンポーネントを一般向けに提供しました。しかし、特定のハードウェア環境(CPUファミリーを除く)への適応を必要としないコアコンポーネントの多くは、依然としてバイナリ形式のみで配布されています。
Windows NTのドライバーはWindows Driver ModelまたはWindows Driver Frameworksに基づいているのに対し、Windows CEのドライバーはWindows CE Driver Modelに基づいている。[ 22 ]
Windows CE は、x86 プラットフォームでは第 2 段階ブート ローダーとして WCELDR を使用し、ARM プラットフォームではブート ローダーとして EBOOT を使用します。Windows CE は、ハードウェア デバイスを管理するために、メーカーが事前に構築したレジストリを使用します。[ 23 ]起動プロセスでは、WCELDR または EBOOT ブート ローダーによって NK.BINブート イメージまたは NK.EXE カーネルがロードされます。[ 24 ] [ 25 ]
Windows Embedded Compact 7はマルチコアをサポートしているが、Windows Phone 8ではCEカーネルの代わりにNTカーネルが使用された。 [ 26 ]
Windows CE 2.11は、コンソールとWindows CE版のcmd.exeをサポートする最初の組み込みWindowsリリースでした。[ 27 ]

Windows Embedded Compact は以前は Windows CE と呼ばれていました。Microsoft によると、「CE」は何かの頭文字をとった略語ではありませんが、「コンパクト」、「接続可能」、「互換性」、「コンパニオン」、「効率的」など、Windows 開発者が念頭に置いていた多くの概念を暗示しています。[ 28 ] [ 29 ]この名前は、2006 年にWindows Embedded CE 6.0がリリースされたときに一度変更され、2011 年にWindows Embedded Compact 7がリリースされたときに再び変更されました。
Windows CEは、1996年のコンピュータディーラー展示会(COMDEX)でマイクロソフトによって初めて発表され、ビル・ゲイツとジョン・マギルによってステージ上でデモンストレーションされました。マイクロソフトは1995年初頭にPegasusのテストを開始し、複数のハードウェアパートナーに厳格なリファレンスプラットフォームを提供しました。デバイスは以下の最小ハードウェア仕様を満たす必要がありました。
当時のデバイスは主に480×240ピクセルのディスプレイを備えていましたが、ヒューレット・パッカードの「Palmtop PC」だけは640×240ピクセルのディスプレイを備えていました。各ウィンドウはディスプレイ全体を占有しました。ナビゲーションは、項目をタップまたはダブルタップすることで行いました。ALTキーを押しながら画面をタップすると、コンテキストメニューも利用できました。Windows CE 1.0には、Windows 95やWindows NT 4.0とは異なり、カスケードスタートメニューは含まれていませんでしたが、Microsoftは後にWindows CE 1.0 Power Toysをリリースし、システムトレイに表示されるカスケードメニューアイコンを追加しました。また、いくつかのユーティリティもバンドルされており、最も注目すべきは、システムトレイ用のサウンドアプレットで、これによりユーザーはデバイスのミュート/ミュート解除をすばやく行ったり、音量を調整したりすることができ、またペイントの「ポケット」バージョンも含まれていました。
Windows CE 2.0 のリリースは好評を博しました。Microsoft は Windows CE 1.0 のユーザーからのフィードバックから教訓を得て、オペレーティングシステムに多くの改良を加えました。スタート メニューはWindows 95やWindows NT 4.0と同じカスケード メニューでした。カラー スクリーンもサポートされ、メーカーは最初のカラーH/PC のリリースを競いました。最初に市場に出たのは、Hewlett Packard のHP 620LXでした。Windows CE 2.0 は、より幅広い CPU アーキテクチャもサポートしました。プログラムは CAB ファイルをダブルクリックすることで OS に直接インストールすることもできました。オペレーティングシステムを含む ROM の性質上、ユーザーはデバイスに新しいオペレーティングシステムをフラッシュすることはできませんでした。代わりに、メーカーはアップグレード ROM をリリースし、ユーザーは以前のバージョンを削除した後、デバイスに物理的にインストールする必要がありました。これにより、通常、デバイスのデータが消去され、最初の起動時にセットアップ ウィザードが表示されます。
1999年11月、マイクロソフトがWindows CEをWindows Poweredに改名する計画であると報じられた。[ 30 ]この名称は、Handheld PC 2000とネットワーク接続ストレージデバイス向けのWindows 2000 Advanced Serverのビルド(Windows CEとは無関係)のブランド名にのみ登場した。CES 2001で発表されたさまざまなWindows CE 3.0製品も、「Windows Powered」という包括的な名称で販売された。[ 31 ]
Microsoft Visual Studio 2012、2013、および2015は、Windows Embedded Compact 2013向けのアプリおよびプラットフォームビルダー開発をサポートしています。[ 32 ]
Microsoft Visual Studio 2008 以前のバージョンでは、Windows CE/Windows Mobile の旧リリースのプロジェクトがサポートされており、エミュレータとして、またはケーブルで実際のモバイル デバイスに接続して実行可能プログラムとプラットフォーム イメージを作成できます。CE プログラムの開発にはモバイル デバイスは必須ではありません。.NET Compact Framework は、 C#およびVisual Basic (.NET)のプロジェクトで.NET Frameworkのサブセットをサポートしますが、Managed C++はサポートしません。.NET Compact Framework を使用する「マネージド」アプリは、メモリが大幅に大きいデバイス (8 MB以上) を必要としますが、アンマネージド アプリはより小さなデバイスでも正常に実行できます。Visual Studio 2010 では、Windows Phone 開発者ツールが拡張機能として使用され、Visual Studio 内で Windows Phone 7 アプリを設計およびテストできます。
Free Pascal はバージョン 2.2.0 で Windows CE 版を導入し 、ARM および x86 アーキテクチャをターゲットとしました。その後、Windows CE ヘッダー ファイルは、 Free Pascal をベースとした高速アプリケーション開発(RAD) ソフトウェア パッケージであるLazarusで使用できるように翻訳されました。Windows CE アプリケーションは、Lazarus統合開発環境(IDE)で設計およびコーディングされ、適切なクロス コンパイラでコンパイルされます。[ 33 ]
このプログラミングツールは、プラットフォーム(BSP +カーネル)、デバイスドライバ(共有ソースまたはカスタム作成)、およびアプリケーションの構築に使用されます。これは、システムを起動して実行するためのワンストップ環境です。また、Platform Builder を使用して、ターゲットマイクロプロセッサ(SuperH 、x86、MIPS、ARM など)用のソフトウェア開発キット(SDK)をエクスポートし、後述の関連ツールセットと併用することもできます。
Windows CE、Windows Mobile、Pocket PCは、共通の起源を持つこともあり、しばしば混同して使われます。しかし、これは必ずしも正確ではありません。Windows CEは、複数の種類のデバイスの基盤となるモジュール式/コンポーネント式のオペレーティングシステムです。これらのモジュールの中には、他のコンポーネントの機能のサブセットを提供するもの(例えば、ウィンドウサポートのレベルの違い、DCOMとCOMの違いなど)、独立した機能を持つもの(ビットマップやTrueTypeフォントのサポートなど)、そして他のコンポーネントに機能を追加するものがあります。これらのコンポーネントとカスタムプラットフォームを開発するためのツールがすべて含まれたキット(Platform Builder)を購入することもできます。Excel Mobile(旧Pocket Excel)などのアプリはこのキットには含まれていません。ただし、古いHandheld PC版のPocket Wordやその他の古いアプリはサンプルとして含まれています。
Windows Mobileは、Windows CEを基盤とするプラットフォームのサブセットと表現するのが最も適切でしょう。現在、Windows Mobileの傘下には、Pocket PC(現在はWindows Mobile Classicと呼ばれています)、スマートフォン(Windows Mobile Standard)、Pocket PC Phone Edition(Windows Mobile Professional)の3つの主要プラットフォームがあります。各プラットフォームは、Windows CEの異なるコンポーネントに加え、それぞれのデバイスに適した追加機能やアプリを使用しています。
Pocket PCとWindows Mobileは、マイクロソフトが定義した汎用PDA向けカスタムプラットフォームであり、マイクロソフトが定義した最小限のプロファイル(Professional Edition、Premium Edition)に準拠したソフトウェアとハードウェアで構成されています。Pocket PCデバイスの製造に関する規則は、カスタムWindows CEベースのプラットフォームの製造に関する規則よりも厳格です。Pocket PCの最大の特徴は、主要なユーザーインターフェースデバイスとしてのタッチスクリーンと、極めて携帯性に優れたサイズです。
CE 3.0 は Pocket PC 2000 および Pocket PC 2002 の基盤です。CE 3.0 の後継は CE.net です。[ 38 ]「PocketPCは、コア Windows CE OS の上に構築された別のコード層です... Pocket PC は Windows CE をベースにしていますが、異なる製品です。」また、Pocket PC のライセンス所有者は WinCE 部分を変更することを禁じられています。[ 39 ]
SmartPhoneプラットフォームは、携帯電話端末向けの機能豊富なOSおよびインターフェースです。SmartPhoneは、ビジネスユーザー向けに電子メールなどの生産性向上機能を提供し、一般消費者向けにはマルチメディア機能を提供します。SmartPhoneのインターフェースは、ジョイスティックによるナビゲーションとPhonePadによる入力に大きく依存しています。SmartPhoneを搭載したデバイスには、タッチスクリーンインターフェースは搭載されていません。SmartPhoneデバイスは一般的に他の携帯電話端末の形状に似ていますが、Phone Editionデバイスのほとんどは、より大きなディスプレイを備えたPDAの形状を採用しています。