Microsoft Windows Embedded CE

**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物理コアまでの%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開発が可能になった。

### 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](https://learn.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2012/jj171012(v=vs.110)?redirectedfrom=MSDN) を利用して作成したデザインに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用などのアプリケーションを動作させる試みが、ユーザーの間で行われている。

### キーボード型製品名称の推移
; Handheld PC 1.0
: 1997年6月25日発表。Windows CE 1.0ベース。
; Handheld PC 2.0
: 1998年3月11日発表。Windows CE 2.0ベース。
; Handheld PC 3.0 (Handheld PC Professional Edition)
: 1999年2月22日発表。Windows CE 2.11ベース。
; Handheld PC 2000
: 2000年10月10日発表。Windows CE 3.0ベース。

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

; Palm PC
: 1998年に発表した際の名称。
; Palm-size PC 1.1
: 1998年12月3日発表。Palm OSと酷似するということで改称。白黒インタフェース。（読み：パームサイズPC）（略称：PsPC）
; Palm-size PC 1.2
: 1999年2月22日発表。カラー表示対応。
; Pocket PC (2000)
: 
: 2000年7月13日発表。Windows CE 3.0ベースになったことを機に改称。ウェブブラウザ (Pocket Internet Explorer)、ファイルエクスプローラ搭載。左下にあった「スタート」ボタンが廃止され、左上のプルダウンボタンからタスクを開く形態となった。プラットフォーム準拠のアプリには終了ボタンが付かなくなった。略称：PPC。
; Pocket PC 2002
: 2001年10月5日発表。Windows XPに準じた インタフェースを採用し、若干高速化した。これ以降はARM系CPUのみをサポートするようになった。アプリに終了ボタンが付くようになったが、実際には終了せず、Windowsの最小化ボタンに近い。
; Pocket PC 2003
: 2003年6月30日発表。Windows Mobile 2003 software for Pocket PCが正式名称。Windows CE.NET 4.2ベース。
; Pocket PC 2003 Second Edition
: 2004年7月6日発表。Windows Mobile 2003 Second Edition software for Pocket PCが正式名称。VGA画面をサポート。
; Windows Mobile 5.0
: 2005年8月23日発表。インタフェースを若干変更。Officeアプリケーションの機能向上。Windows Media Player 10 Mobile搭載など。.NET Frameworkのサブセットである.NET Compact Frameworkの実行環境が搭載されている。
; Windows Mobile 6
: 2007年2月12日発表。インタフェースを刷新し、Vista風デザインとなる。Officeスイートを改良。HTMLメールをサポートしWindows Live Mailに対応。このバージョンからWindows Mobile StandardとWindows Mobile Professional、そして機能面ではWindows Mobile Professionalと同じだが、通信機能がオプション扱いの主にPDA向けのWindows Mobile Classicの三つのエディションに分けられる。バージョン番号はCE 5.2で、CE 6.0カーネルの搭載は見送られた。

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  - 電子辞書

## 関連項目
* Windows Mobile
* Pocket PC - 主流はWindows Mobile搭載のスマートフォンにタッチパネルを組み合わせたもの。
* Windows Automotive - カーナビゲーションシステムにおける採用例（Pioneer「サイバーナビ」「楽ナビ」、Panasonic「*Strada」、Clarion「Smoonavi」など）がある。
* Microsoft Zune  - OSとしてWindows CEベースのPortable Media Centerを採用している。
* ドリームキャスト - Windows CE搭載ゲームコンソール。
* タブレットPC
* iPhone、iPod touch - Pocket PCおよびZuneの競合商品。Mac OS Xから派生したOSを搭載。
* BlackBerry - カナダ Research in Motion社のスマートフォン。マイクロソフトによる買収の噂もあった。
* Android
* Palm - 上記Pocket PCの競合商品。Treoの一部機種ではWindows Mobileを搭載していた。現在では終息しつつあり、後継のWebOSを待つ段階である。
* Zaurus - Pocket PCのかつての競合製品。現在は終息。
* ITRON
* REX OS

## 脚注

### 注釈

### 出典

## 外部リンク

* 
* WindowsCE FAN