特集

モバイル開発を支援する.NET Compact Framework、.NETの世界を小型デバイスに

― .NET Compact Frameworkは、デスクトップ・アプリケーションの作成に使われる.NETツールとAPIを用いてモバイル・アプリケーションを開発することを可能にする ―

Greg DeMichillie
2003/03/06
Copyright(C) 2003, Redmond Communications Inc. and Mediaselect Inc.

Page1 Page2 Page3

 本記事は、(株)メディアセレクトが発行する月刊誌「Directions on Microsoft日本語版」 2003年2月15日号 p.21の同名の記事を許可を得て転載したものです。同誌に関する詳しい情報は、本記事の最後に掲載しています。

 .NET Frameworkの小型デバイス(端末)対応バージョンである.NET Compact Framework(CF)は開発者向けに提供されているが、対応する開発ツールはまだベータ段階にある。小型デバイス用のカスタム・アプリケーションを計画しているITプランナーやISV(独立系ソフトウェアベンダー)は、Microsoftのデスクトップ、サーバ、小型デバイスの各プラットフォーム間での一貫性を備えるツールとAPIを利用できる。だが、小型デバイスはストレージ容量や処理能力が大きく異なり、CFは「一度書けばどこでも動く」ソリューションを目指してはいない。さらに、Pocket PCとSmartphoneのプラットフォームの違いから、CFの最初のリリースはSmartphoneと互換性がない。

デバイス開発の敷居を下げる

 .NET CFは、モバイル・デバイスの分野で企業開発者をWindowsに引きつけるためのMicrosoftの最新の試みだ。Pocket PC(PPC)のようなデバイスは、ネットワークに接続していないときも業務を続ける必要のあるモバイル・ワーカー(外回りの営業担当者や配送ドライバーなど)を支援する企業アプリケーションのプラットフォームとして魅力的だ。だが、大半の企業はそうしたアプリケーションの開発と保守を専任するモバイル開発者グループを抱えたがらない。

 こうした状況に対応し、Microsoftの最初のデバイス・プラットフォームであるWindows CEは、Microsoftのデスクトップ/サーバOSに搭載されているWin32 APIと可能な限り共通に設計されたAPIを備えている。これにより、開発者がデスクトップ・アプリケーションに関するスキルを小型デバイスのアプリケーションの開発に応用できるようになっている。さらに、同社は広く普及した開発ツールであるVisual Basic(VB)とVisual C++(VC++)にモバイル用の変更を加え、embedded Visual Basic(eVB)とembedded Visual C++(eVC++)を開発した。

 だが、Microsoftが進めるデスクトップおよびサーバ用Win32 APIの.NET Frameworkへの移行に伴い、Windows CEはほかのプラットフォームから取り残されることになった。しかも、同社のWindows CE対応開発ツールの「embedded」バージョンは、ほかのツールとは別のチームがメンテナンスしており、通常、デスクトップ対応ツールより少なくとも1バージョン遅れている。

 .NET CFと対応開発ツールはこうした問題に対処しており、Microsoftのデバイス・プラットフォームとデスクトップおよびサーバ用開発プラットフォームの足並みを再びそろえさせる。また、同社がこの2つのプラットフォームについて、開発ツールとAPIのセットを共有するという位置付けをアピールすることを可能にする。

.NET Frameworkをスマート・デバイス用にチューニング

 Microsoftは.NET CFを開発するにあたり、.NET Frameworkのサイズを大幅に縮小する一方で、開発者が既存の知識を生かせるようにそのAPIを可能な限り多く維持することを目指した。Microsoftが「一度書けばどこでも動く」ソリューションを構築しようとしなかったことは注目に値する。実際、従来のPCと小型デバイスとの著しい装備の違い(画面サイズ、プロセッサの速度、使用可能なメモリ容量など)を考えると、そうしたアプローチは全く実現性がない。同社はその代わりに、開発者が小型デバイス・アプリケーションを開発する際の学習負担を最小限に抑えることに主眼を置いた。

 .NET Frameworkは、デスクトップPCやサーバ上で.NETアプリケーションを動作させるのに必要なすべての要素を備えているが、約20MBのディスク容量を必要とする。これでは大半の小型デバイスでそのまま使用するには大きすぎる。大半の小型デバイスのストレージ容量は最低で32MBしかないからだ。CFを小型デバイスに適したものにするため、Microsoftは一部のAPIを削除し、残したAPIを簡素化して冗長性を減らすとともに、不要なテキスト・メッセージを除去した。

■APIの削除
 .NET Frameworkを構成するAPIの一部は、CFには搭載されていない。そうしたAPIの中には、Windows CEにないWindows OSの機能(ウィンドウの透明化や、色を滑らかに混ぜるグラデーション機能など)に依存するものが含まれる。

 また、小型デバイス用としては重要度が低いという判断から削除されたAPIもある。例えば、Windows CEとPPCプラットフォームでは印刷がサポートされているが、CFには印刷をサポートするAPIは一切含まれていない。このほかに削除されたAPIには次のようなものなどがある。

  • COM相互運用性:CFは、アプリケーションがOSにアクセスすることを可能にするが、アプリケーションはWin32 APIとしてパッケージされた関数にのみアクセスし、COMオブジェクトとしてパッケージされた関数にはアクセスしない。

  • XMLのフルサポート:CFはWebサービスの呼び出しをサポートするが、XMLの妥当性検証やXML変換などの高度なXML機能はサポートしない。

  • Windowsで使用できるGUIコントロールの一部(ツールチップやチェックリスト・ボックスなど)はWindows CEでは使用されないため、それらのAPIはCFには含まれていない。

■APIの簡素化
 CFでは特定のAPIがまるごと削除されているだけでなく、.NET Frameworkの冗長性を部分的に排除することで一部のAPIが簡素化されている。こうした冗長性は多くの場合、基本的に同じ機能を果たすものの開発者が使いやすいように個別に設計された複数のAPIという形で提供される。例えば、.NET Frameworkは、長方形を描画するためのAPIを幾つか備えているが、それぞれが異なるパラメータを取る。開発者はあるバージョンでは、長方形の左上と右下の頂点の位置を指定する必要があり、別のバージョンでは任意の1つの頂点の位置と、幅、高さを指定すればよい、といった具合だ。こうしたAPIのバリエーションは、記述する必要があるコード量を減らし、当面のタスクに最も合ったバリエーションを選べるようにすることで、プログラマーの作業を簡易化する。

 CFでは、こうしたバリエーションの多くがなくなり、2つのバージョンだけが用意されている。「最も実用的な」バージョン(広く使われる可能性が高い)と「最も汎用的な」バージョン(最も多くの選択肢を提供する)だ。この簡素化により、これら以外のバリエーションを使い慣れた開発者が多少不都合を感じることもあり得るが、CFのサイズが縮小する一方で、開発者は(若干複雑なコードを書くことにより)同じ機能性を利用できる。

■エラー・メッセージの削減
 .NET Frameworkには、アプリケーションが要求する関数の多くを実行するためのコードだけでなく、データも含まれる。このため、.NET Frameworkのサイズを縮小する試みでは、データも考慮に入れることが不可欠となる。

 .NET Frameworkに含まれるエラー・メッセージは、データ節約の格好の対象になる。エラー条件(APIが不正に使われたり、アプリケーションが存在しないファイルを開こうとするなど)が発生すると、.NET Frameworkはアプリケーションに通知し、アプリケーションがエラー処理を行わないと、.NET Frameworkはユーザーにエラー・メッセージを表示する。このエラー・メッセージには数字コードのほか、エラーの一般的性質を説明するテキストが含まれる。だが大半の開発者は、こうした一般的なエラー・メッセージに頼ろうとしない。その代わりに、アプリケーション自体がエラーを処理し、必要な場合はよりカスタマイズされたエラー・メッセージをユーザーに表示するようにコードを記述する。

 CFでは、一般的なエラー・メッセージ・テキストを削除し、数字コードだけを残すことにより、含まれるデータが削減されている。だが、完全なエラー・メッセージは開発者がアプリケーションを開発する際に有用なことが多い(アプリケーションがどのエラー条件の処理を行わないかを突き止めるのに役立つため)。このため、CFはエラー・メッセージ・テキストを含む特別な「デバッグ」バージョンで提供されている。これにより、開発者は自分のアプリケーションのエラーをより容易に突き止めて修正できる。

 

 INDEX
  [特集]
  モバイル開発を支援する.NET Compact Framework、.NETの世界を小型デバイスに(1)
    モバイル開発を支援する.NET Compact Framework、.NETの世界を小型デバイスに(2)
    モバイル開発を支援する.NET Compact Framework、.NETの世界を小型デバイスに(3)
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間