WindowsCE DevCon99編 利用者・開発者へ朗報

MIPS用? SH用?
ひとつの実行ファイルで大丈夫
期待の新技術 CEF とは?

1999年06月10日版

WindowsCE Developers Conference 記事一覧に戻る
← 戻る 進む →

■ はじめに

 WindowsCE は、たくさんの CPU タイプをサポートしている。メジャーな系列だけでも、MIPS系、SH系、StrongARM系、PowerPC系、Intel x86系の5種類があり、同じ SH系でも SH-3 と SH-4 では互換性のない部分があることが指摘されている。

 こうなると、フリーソフトウエアなどを開発しているプログラマは大変だ。いくら簡単に作れるといっても、5種類も、6種類もある実行ファイルを管理するのは大変だし、配布するのも大変だ。

 一般ユーザーも、ソフトウエアを利用する際に、自分の WindowsCE マシンが何の CPU で動いているのか知らなくてはならない。Windows95/98 しか使ったことがない初心者には、考えたこともないだろう問題だろう。しかも、StrongARM など最近実機が登場したマシンを使っていると、自分の CPU が分かっていても、なかなかフリーソフトなどでは実行ファイルが用意されていなくて困ってしまうことになる。

 さて、こんな状況を解決するのが、CEF だ。これからは実行ファイルは、CEF形式の1種類だけ用意すればいい。いったい、CEF とは何なのだろうか? WindowsCE Developers Conference で明らかにされた期待の新技術を紹介しよう。

■ CEF とは?

CEF というのは、Common Executable Format の略である。

CEF 形式の実行ファイル名は、foo.cef となる。

 この *.cef ファイルが1本あれば、MIPS 系のマシンも、SH系のマシンも、さらに今見ぬ新しい CPU のマシンもすべてこのファイルをインストールして実行することが可能だ。しかも、これは、EXE形式のファイルに限らない。DLL や OCX ファイルにも適用できる万能の技術なのである。

■ どういう仕組みで実行できるのか?

 では、どうして CPU が異なるマシンで、同じ実行ファイルを共有することができるのだろうか?

 その仕組みはいたって簡単で、

 「実行前に、各 CPU のネイティブ形式に変換する」

のである。

変換のタイミングは、現時点で2種類が明らかになっている。

  • WindowsCEサービスでファイルをコピーするタイミング
  • WindowsCEマシンで実行するタイミング

の2種類だ。

 CEF がサポートされる、WindowsCE2.12 以降では、特に実行時のタイミングで、自動的に CPU ネイティブ形式に変換される機能がカーネルレベルでサポートされるので、ユーザーはまったく意識することなく、CEF形式で作られたファイルを実行することができる。

 変換も、マイクロソフトの中で 第3世代のコード生成技術と呼ばれているものが利用されており、Register/Slot シェアリングなどの高度な最適化技術が利用されている。

■ CEF によって、新しいマシン、新しい CPU が活躍しやすくなる

 WindowsCE の開発のひとつの問題点は、新しい CPU や、新しいマシンが登場するまで、アプリケーション・プログラムの開発が進められないことだ。このため、高性能な RISC プロセッサを搭載した WindowsCE マシンが発売されても、アプリケーションソフトなどがそろわないため、すぐには実力を発揮することが出来ない。通常、3ヶ月から半年くらいかかってしまう。技術の進歩が早い現在、これだけ遅れるのは致命的だ。

 しかし、CEF を使えばこの問題は解決する。

 CEF を利用して開発したアプリケーションは、WindowsCE2.12 さえ動けば、どんな環境でも動くことがマイクロソフトによって保証される。このため、新しい CPU を採用したマシンが登場しても、CEF アプリケーションは全部利用できることになり、すぐにフルパワーを発揮することが出来る。

 また、CEF は、コンパイラでいうところの、一種の中間言語的なものであるため CPU ネイティブ形式に変換する部分のアップグレードにより、再コンパイルなしにパフォーマンスの向上を期待することが出来る。

 従来では、コンパイラを改良すると、ソースファイルを再度コンパイルする必要があったが、CEF ではこうしたわずらわしさもなくなる。

 登場しはじめの CPU から1年 〜 2年は、急速にコンパイラの改良が進むため、CEF の変換プログラムさえ入れ替えればよいのは便利だ。NEC の MC-R500 シリーズなどでは、ROM の交換によるマシンのアップグレードサービスをマメに行っているが、こうした作業により、CEF 形式のフリーソフトなどは高速化してくれる可能性を持っている。

 別の記事で紹介する Platform Builder を利用して、さっとハードウエアを作って、CEF 製のソフトウエアをすぐに利用することが出来る。テストやマーケティングのための準備期間を除けば、半年くらいかかっていた開発期間が1ヶ月くらいに短縮されるかもしれない。(と無責任なことを書いてごめんなさい > 各メーカー様)

■ CEF の作り方

 開発者の方なら、CEF 形式のファイルを作成する方法も気になるだろう。

 作成方法もいたって簡単で、CEF 形式というのは、CPU タイプのひとつとして扱われるため、コンパイル時に CEF 形式を指定して、プロジェクトのビルドを行うだけである。これまで、MIPS用と SH用にコンパイルしていたのと同じ感覚で、「CEF用」にコンパイルしてやればいい

 実際、マイクロソフトは、下記のような利用方法を推奨しているようだ。

  1. CPU ネイティブコンパイラ (例えば、MIPS用) を利用して、アプリケーション・プログラムを開発
    (初期は、CEFの変換プログラムにもバグがあるかもしれないため)
  2. メインターゲット向けのネイティブ・コードのパッケージを作成する
  3. CEF用も合わせて作成する
  4. CEF形式のプログラムの実行テストを行う
  5. 両方のファイルか、CEFのみを公開し、配布を行う

■ CEF は万能か?

 さて、以上のように CEF は、技術的にも優れたものだが、WindowsCE ユーザーにとっては、まさに革新的な使い勝手 = Windows9x/NT と同等のソフトウエアの使い勝手をもたらすものだ。

 しかし、果たして CEF は万能なのか、実行性能とサイズからも CEF の特徴を見てみよう。

◎ 実行性能

 実行性能は、CPU ネイティブコード用にコンパイルされたプログラムよりも、約 20% 程度の性能ダウンとなるらしい。

◎ サイズ

 一方サイズは、20% 増程度になるといわれている。

◎ こんなところには使わないほうがよい

 以上のような状況を考えてみると、例えば、メーカーが ROM に焼きこんで出荷するようなアプリケーションには、CEF 形式を利用すべきではないだろう。やはり、CPU ネイティブな形式で配布を行うべきだ。また、有料のアプリケーションを開発しているソフトウエアベンダーは、存在するすべての CPU 用にネイティブ・コードの実行ファイルを提供した上で、将来に備えて CEF ファイルを合わせて提供するべきだろう。

 また、こうした優れた手段を提供しているマイクロソフト社にも、できれば、CEF 形式ではなく、ネイティブ形式のプログラムも合わせて公開してほしい。WindowsCEサービスを利用して、アプリケーションソフトのインストールを行う場合は、インストーラーが自動的に接続されている WindowsCE マシンの CPU 形式を選択すればよいのだ。

■ 登場時期は?

 さて、最後に、気になる登場時期だが、一応、

コードネーム Birch = WindowsCE2.12 でサポートされる予定

になっているので、実際の登場は今年後半だろうか。

 仕事でアプリケーションを書く場合はある程度やむを得ないが、ボランティアで作成されているフリーソフトなどでは、作者の負担を減らす意味でも、この CEF はありがたい。また、ユーザーにとっても、さまざまなフリーソフトが利用できるようになるばかりか、変換ソフトのアップグレードにより、既存のソフトがスピードアップするというのは魅力的だ。

ぜひ次期 WindowsCE で期待したい技術のひとつである。


■ 感想・コメントは、Windows CE FAN の掲示板 (BBS) 

へお願いします。


■ 更新状況

  • 1999/06/10 (木) 作成

Written by けいたん

(C)1999 Windows CE FAN

GO TOP