Graphics To Go

.NET Compact Framework 2.0 を使用したモバイル イメージング アプリケーションの作成

Rob Pierry


この記事で取り上げる話題:

  • モバイル アプリケーションのマネージ コード
  • デバイス エミュレータでのテスト
  • .NET Compact Framework での Graphics
  • Pocket Outlook へのアクセス



この記事で使用する技術:
.NET Compact Framework 2.0、Windows Mobile 5.0、Visual Studio 2005

目次

イメージの操作
シェイプとテキストの描画
Device Emulator Manager
カメラの使用
システム ステートのチェック
Pocket Outlook の操作
高度な同期の概念
まとめ


.NET Compact Framework を導入するにあたって、マイクロソフトは、モバイル アプリケーション向けのマネージ コードの開発の利点をすべて利用しました。Windows Forms アプリケーションの記述に精通している開発者は、モバイル デバイスのプログラミングにすぐに慣れるでしょう。現在、Microsoft .NET Compact Framework のバージョン 2.0 がリリースされています。(Device Emulator Manager などの) 新しいツールの導入により、これを使用した開発はさらに簡単になっており、その対象範囲も拡張されています。特に、バージョン 2.0 ではグラフィック関係の処理用のクラスおよびメソッドが追加されています。具体的には、アングル テキスト、カスタム ペン、イメージ操作、およびデバイスのビルトイン カメラへのアクセス機能があります。この記事では、これらの機能、および Visual Studio 2005、 .NET Compact Framework バージョン 2.0 で使用できる、その他の新しい拡張機能について取り上げます。

Windows Mobile 5.0 の開発で .NET Compact Framework を使用する場合には、主に Smartphone と Pocket PC の 2 つのタイプのデバイスを使用できます。これらのプラットフォームを開発するためのツールは同じ場合もありますが、それぞれの開発のエクスペリエンスは、対象のデバイスのクラスに対してカスタマイズされています。Pocket PC は比較的大きい PDA デバイスで、電話機能はオプションで付加することもできます。一方、Smartphone は比較的小さなデバイスで、メインは電話機能であり、PDA 機能を補助的に備えています。一般的には Pocket PC の方がパワフルで、タッチ スクリーン、高解像度の画面、大量のメモリ、および高速プロセッサを備えています。この記事では、Pocket PC 用の開発を中心に取り上げますが、Pocket PC 用の開発方法がわかれば、Smartphone の開発についても簡単に理解できます。

最初に、Windows Mobile 5.0 SDK for Pocket PC をインストールする必要があります。この SDK には、Pocket PC デバイス用のエミュレータ、ドキュメント、およびサンプルが含まれています。インストールが終了すると、Pocket PC を開始することができます。

この記事では、テキストと線が描かれている背景イメージをサポートしている、簡単なイメージング アプリケーションの開発について紹介します。背景イメージは、既存の画像からロードすることも、デバイスのビルトイン カメラを使用してキャプチャすることもできます。画像のオープンおよびキャプチャの両方のタスクでは、Compact Framework バージョン 2.0 の新機能である、標準ダイアログを使用します。オーバーレイについては、新しくサポートされたカスタム ペンとアングル テキストを背景の上に描画し、その機能の使い方を例示します。描画した後の画像をアプリケーションで保存することもできます。その他に、Pocket Outlook の連絡先へ画像を電子メールで送付するためのサポートを追加する方法も説明します。

イメージの操作

基本的なレベルでは、アプリケーションは背景イメージと、テキストおよび線の前景オーバーレイを保存できること、およびこれらの要素を 1 つのイメージにフォームできることが必要になります (図 1 を参照)。内部的には、アプリケーションで最終的な画像を保存するまで、イメージはこれらの要素を別のものとして保持します。これは、オーバーレイを保持したまま背景を変える、背景を保持したままオーバーレイを消去する、という基本的な編集機能をサポートするためです。


メインのフォームをロードすると、Bitmap クラスの 2 つのインスタンスが作成されます。1 つは背景用 (デフォルトは淡いグレー) で、もうひとつはオーバーレイ用 (デフォルトは透明) です。フォーム自身に描画する場合は、背景を描き、その次にオーバーレイを描きます。

透明をサポートするために、アプリケーションでは ImageAttributes クラスを使用します。このクラスは一般的に、色の範囲を透明に設定する場合だけでなく、色を変える、ビットマップ、ブラシ、ペンなどの他の操作を行う、という場合に使用します。ただし、Compact Framework では、透明の設定しかサポートしていません。アプリケーションでは、特定の色を使用して透明を表し、次に ImageAttributes を使用して、フォームを描画するときにその色が表示されないようにします。この例では、Color.AliceBlue を透明として使用しているため、この色は、テキストおよび線を描くための色として使用しないようにします。ここでは 1 つの色の範囲のみを透明にするため、アプリケーションでは、ImageAttributes のインスタンスの SetColorKey メソッドをコールし、両方のパラメータに対して Color.AliceBlue を渡すだけになります。背景の上にオーバーレイを描くためのコードは次のようになります。

図 1 背景と前景の別のレイヤ

private void DrawOverlay(Graphics g, Rectangle region)
{
    using(ImageAttributes attribs = new ImageAttributes())
    {
        attribs.SetColorKey(_transparentColor, _transparentColor);
        g.DrawImage(_overlay, region, region.X, region.Y,
            region.Width, region.Height, GraphicsUnit.Pixel, attribs);
    }
}

簡単にするために、このアプリケーションでは、イメージ サイズをデバイスの画面で見える範囲に制限しています。これは、ClientRectangle プロパティから使用できます。この値は、定数でなくてもかまいません。たとえば、スライドアウト キーボード付きのデバイスでは、キーボードがオープンかクローズかによって、それぞれ (320×188)、(240×268) のようにクライアント長方形が異なります。これに対処するために、アプリケーションでは、アプリケーションの開始時のクライアント長方形のサイズを、イメージにデフォルトにしています。エミュレータはすべてのハードウェアの構成をカバーしていないため、このことは、実際のハードウェアで Windows Mobile アプリケーションをテストすることの重要性を示しています。

濃淡のない淡いグレーの背景は非常に便利で、ユーザーが自分の画像を背景として使用する場合には適しています。アプリケーションでは、SelectPictureDialog クラスを使用してこれを実現します。図 2 は、SelectPictureDialog のインターフェイスを示しています。このクラスは、Microsoft.WindowsMobile.Forms アセンブリで使用できます。このダイアログを使用する場合には、このアセンブリにリファレンスを追加する必要があります。このクラスには、いくつかのプロパティがあります。これを使用して、ダイアログのタイトルを設定する (Title)、ビルトイン カメラで新しい画像を撮れるかどうかを制御する (CameraAccess)、表示するファイルをファイル タイプによってフィルタする (Filter)、Digital Rights Management によってプロテクトされているかどうかによってフィルタする (ShowDrmContent および ShowForwardLockedContent)、表示のための最初のフォルダを設定する (InitialDirectory)、ユーザーが他のフォルダを変更できないようにする (LockDirectory)、といった処理が可能です。ダイアログをクローズすると、FileName プロパティをチェックして、選択した画像のファイル名を取得できます。

図 2 画像の選択

画像を選択すると、現在の背景が選択した画像に変更され、画面に合わせて縮小されます。背景のイメージ用の Graphics オブジェクトを取得したら、DrawImage メソッドを使用して、背景の上に新しく選択した画像を描きます。2 番目のパラメータは、描画する場所の長方形を表しています (この場合には、これは背景全体になります)。3 番目のパラメータは、ソース イメージ (ソース イメージ全体) を表しており、これは目的の場所の長方形にマップされています。この方法は非常に柔軟です。この方法では、背景に合わせて自動的に小さい画像を拡張したり、大きい画像を縮小したりできますが、2 つのパラメータとして背景の長方形を渡すだけで、新しい画像から背景のサイズと同じものを簡単に取得できます。

これで背景とオーバーレイを作成および描画できるようになったので、保存は非常に簡単になります。フォームに描画する代わりに、SaveFileDialog を使用して、新しいファイル名を入力するようプロンプトを表示します。これにより、背景のコピーが作成され、その上にオーバーレイが描画されます。最終的なイメージができたら、(Compact Framework バージョン 2.0 の新機能である) Save メソッド を使用して、イメージを JPEG 形式でディスクへ書き込みます (BMP、GIF、および PNG 形式もサポートされています)。イメージを生成および保存するためのコードは次のようになります。

using (Bitmap newImage = new Bitmap(_background))
{
    using (Graphics g = Graphics.FromImage(newImage))
    {
        DrawOverlay(g, new Rectangle(
            0, 0, _overlay.Width, _overlay.Height));
    }
    newImage.Save(dlgSave.FileName, ImageFormat.Jpeg);
}

シェイプとテキストの描画

ここで、イメージを選択して背景をカスタマイズできますが、オーバーレイの上に描画できるようにする必要があります。シェイプを描画するには、Graphics オブジェクトを使用します。このオブジェクトには、パラメータとして Pen を使用するメソッド (DrawEllipse、DrawLine、DrawRectangle など) があります。Pen は、シェイプを描画するための色と太さを指定します。以前は、特定の色でしか Pen を作成できませんでしたが、Compact Framework バージョン 2.0 では、Width プロパティおよびその他のコンストラクタを公開しているため、使用する太さと色の両方を指定できます。

このアプリケーションでは、SelectPen.cs はフォームを実装しています。これによってシェイプを描画するための色と太さを選択することができます。使用できる色は ComboBox にリストされ、太さは NumericUpDown コントロールを使用して指定します。色と太さを選択すると、メイン フォームで、現在のペンに、指定された色と太さの Pen クラスの新しいインスタンスが設定されます。これ以降、すべての描画ではこのペンが使用されます。このフォームで、オーバーレイの中で透明を表す色 (AliceBlue) を ComboBox にリストしないようにしてください。そうしないと、見えないシェイプをうっかり描画してしまうことがあります。

[Draw] メニューの [Draw Line] オプションで、現在のペンをどのように使用してイメージ上に線を描画するかが表示されます。まず、ユーザーが線の始点と終点を選択します。このようにすると、オーバーレイに描画するための Graphics オブジェクトが取得され、DrawLine メソッドを使用して、ペンで始点と終点を結ぶ線を描画できるようになります。

最後のステップでは、ClientRectangle 全体をパラメータとして Invalidate がコールされます。この結果、フォーム自身が再描画され、背景および更新されたオーバーレイがフォーム上に描画されます。厳密に言うと、フォームで更新する必要があるのは、描画した線が含まれている長方形の部分のみです。したがって、最適化の方法として、クライアント エリア全体ではなく、この長方形の部分のみを無効にする方法が考えられます。

Graphics オブジェクトを見たときに、DrawString メソッドに気がついたかもしれません。このメソッドは、指定された場所に、指定されたフォントおよび色で文字列を描画します。Compact Framework バージョン 2.0 以降はアングル テキストをサポートしているため、ユーザーは線を定義するための 2 つの点を選択し、この線に沿ってテキストを描画することができます。次にダイアログが表示され、ここでテキストを入力し、サイズを選択します。

アングル テキストは、LogFont クラスを介してサポートされます。この名前は、ロジカル フォントを意味しています。これは、Windows Mobile 5.0 がベースにしているオペレーティング システムである、Windows CE で内部的に使用されるストラクチャです。テキストのアングルを調整するには、LogFont インスタンスの Escapement プロパティに、アングル (度数) を 10 倍した値を設定します。たとえば、下から上へ書かれているテキストの場合は、Escapement に 900 を設定します (X 軸の正方向から 90 度)。

LogFont を介して Font を作成するためのコードは、テキスト エントリ ダイアログである TextDialog.cs の GetFont メソッドに提示されます。これは、2 つの点が指定されている場合に、テキストのアングルを算出するために、上部で使用される三角法です。デバイスの Y 軸は反転しているため、0 は画面の下部ではなく、上部になることに注意してください。この調整を行って、アークタンジェント関数の範囲を調整すると、Escapement プロパティが適切なアングルになります。

LogFont を使用する場合には、Orientation プロパティに、必ず Escapement と同じ値を設定してください。LogFont の Height を設定するには、ユーザーが指定したサイズを使用して、デバイスの DPI を調整します (Graphics オブジェクトの新しい DpiX および DpiY プロパティを使用して、DPI を定義できます)。この値を負の値として指定すると、Framework は、このプロパティの絶対値に最も近いポイント サイズのフォントを選択します。ここではさらにオプションがありますが、それについては MSDN のドキュメントで説明しています。図 3 は、LogFont を介してフォントを取得するためのコードを示しています。

LogFont が適切に設定されると、Font クラスの静的な FromLogFont メソッドをコールして、Font インスタンスを作成することができます。これでフォントのサイズ、テキスト、およびポイントが正しく設定できたので、DrawString メソッドを使用して、簡単に出力することができます。

Device Emulator Manager

Visual Studio を使用してモバイルを開発したことがあるなら、多分 Device Emulator に慣れているでしょう。このエミュレータは見た目も動きも Pocket PC に似ており、実際のモバイル デバイス上でプログラムの実行をシミュレートできます。このエミュレータは、さまざまな画面サイズ、メモリ構成、および有効なポートに合わせて構成できます。また、シミュレートされている電話機能に合わせて構成することもできます。

Visual Studio 2005 では、エミュレータは Device Emulator Manager を介して処理されます。Device Emulator Manager は、[Tools] メニューからアクセスすることができます。Device Emulator Manager を開始すると、対象のオペレーティング システムごとに、使用できるエミュレータが一覧で表示されます。Windows Mobile 5.0 Pocket PC SDK に対しては、ベース エミュレータ、電話機能を備えたもの、VGA (640×480) の解像度の画面を備えたものなど、いくつかの選択肢があります。

エミュレータを右クリックし、[Connect] オプションを選択すると、エミュレータが開始されます。Device Emulator Manager で、エミュレータの左側に緑の矢印が表示されます。図 4 は、エミュレータを実行中の Device Emulator Manager を示しています。

図 4 エミュレータを実行中の Device Emulator Manager

Visual Studio 2005 および ActiveSync 4.0 の新しい特徴は、デスクトップ マシンとエミュレータの間で、実際のデバイスのように関係を作成できることです。この関係を作成するには、ActiveSync を開き、[File]、[Connection Settings] を選択します。[Allow connections to one of the following] がチェックされていることを確認し、ドロップダウンから [DMA] を選択します (エミュレータは DMA を通じて ActiveSync へアクセスします)。[OK] をクリックします。次に Device Emulator Manager で、実行中のエミュレータ (左側に緑の矢印が表示されているもの) を右クリックし、[Cradle] を選択します。ActiveSync がアクティブになり、新しいデバイスとの関係を作成するようプロンプトが表示されます。緑の矢印は、デバイスがクレードルされていることを示している別のアイコンに変わります。ActiveSync からエミュレータを切断するには、Device Emulator Manager の一覧でエミュレータを右クリックし、[Uncradle] を選択します。

Visual Studio 2005 では、Device Emulator Manager によってエミュレータの機能も拡張されましたが、まだ制約があります。前述のように、エミュレータは現在、スライド アウト キーボード付きのデバイスをシミュレートしていません。もうひとつの重要な制約は、デバイスのカメラを使用してキャプチャした背景に対する追加サポートを開始する場合に生じます。現在、エミュレータはカメラの機能をサポートしていません。エミュレータを実行したままカメラのダイアログにアクセスしようとすると、Invalid-OperationException が発生します。

カメラの使用

次に、背景として使用できる画像を撮る方法について説明します。アプリケーションで画像を撮る機能を実行するには、カメラ付きの Windows Mobile 5.0 Pocket PC が必要です。デバイスをマシンに接続して、オプションで ActiveSync のプロファイルを作成したら、[Device] ツール バーで、[Target Device] を [Windows Mobile 5.0 Pocket PC Emulator] から [Windows Mobile 5.0 Pocket PC Device] へ変更し、通常どおりにプロジェクトを実行します (実際のデバイスへ配置する場合でも、エミュレータでのデバッグの実行中と同様に、ブレークポイントとデバッグはそのまま機能します)。

[File] メニューから [New Background] を選択すると、新しい CameraCaptureDialog のインスタンスが作成され、表示されます。これは SelectPictureDialog と同じアセンブリである、Microsoft.WindowsMobile.Forms 内にあります。このダイアログを使用すると、カメラの初期設定を完全に行うことができますが、後で通常のオプション メニューを使用して設定を調整することもできます。Mode プロパティは、ユーザーがシングル画像のみを使用するか (CameraCaptureMode.Still)、ビデオを使用するか (CameraCaptureMode.VideoOnly)、または音声付きのビデオを使用するか (CameraCaptureMode.VideoWithAudio) を指定します。ここでは背景イメージをキャプチャしようとしているので、アプリケーションでダイアログに静止画像を設定し、(StillQuality プロパティを使用して) 静止画像の最高の画質を設定したいと思うでしょう。また、ビデオの制限時間を表すオプションのプロパティ (VideoTimeLimit) を設定することも、ビデオがマルチメディア メッセージで送信できることを確認するプロパティ (VideoTypes) を設定することもできます。

キャプチャしている画像のサイズを制御するよう、Resolution プロパティをオプションで設定することもできます。通常は、任意の値を使用できますが、デバイスの大きさに合わせて適切な値 (640×480、1280×1024 など) を使用する必要があります。画面に合わせて画像を縮小できるので、Resolution はデフォルトの値のままにしておきます。

ユーザーが画像を撮ると、ShowDialog メソッドは、DialogResult.OK の結果を返します。ここで新しく撮った画像をロードするために、背景に合わせて既存のイメージ サイズを変更したときと同様のスケーリング テクニックを使用できます。背景イメージのみが変わるため、描かれている線またはテキストはそのまま保持されます。背景の上に画像が描画されたら、クライアント長方形で Invalidate をコールします。このようにすると、新しい画像で画面が再描画され、背景として表示されます。

 

システム ステートのチェック

CameraCaptureDialog が表示されます。デバイスにカメラが付いていない場合は、InvalidOperationException が発生します。ただし、事前にカメラの機能があるかどうかを確認しておいて、デバイスでカメラの機能を提供しない場合は、単純にメニュー オプションを非表示にする、という方法の方がスマートです。このようにするには、デバイスに対して一般的な構成を問い合わせして、リアルタイムのプロパティの変化を監視します。

デバイスの情報は、SystemState クラスによって公開されます。これは、Microsoft.WindowsForms.Status アセンブリに含まれています。アプリケーションでこの情報を使用するには、アセンブリ、およびその下位の Microsoft.WindowsForms へ参照を追加します。SystemState クラスには静的なプロパティのホストがあります。これを使用して、固定の構成情報、およびリアルタイム情報 (現在日付、バッテリーの残量など) を確定できます。

アプリケーションでは、起動時に CameraPresent プロパティを 1 回だけチェックする必要があります。カメラが使用できない場合は、[New Background] メニュー オプションを無効にされます。ただし、SystemState クラスは Changed イベントを公開しており、これによって、要求されたステートが変更された場合に通知されるよう処理できます。この静的なプロパティを使用する代わりに、監視される特定のシステム プロパティをコンストラクタに渡して、Changed イベントにハンドラを追加し、SystemState のインスタンスを作成することができます。たとえば、アプリケーションを拡張して DisplayRotation システム プロパティを監視して、ユーザーがデバイスのキーボードをスライド アウトした場合、および表示が縦から横へ変更された場合にアプリケーションに通知されるようにできます。また、デバイスが同期化されている場合に、ActiveSyncStatus プロパティを監視して、何らかのアクションを行うようにすることもできます。

SystemState クラスは、Changed イベントを発生する前に、ComparisonType および ComparisonValue プロパティについても考慮します。デフォルトでは、監視されているプロパティのすべての変更は、最後に Changed イベントが発生します。ただし、たとえば ComparisonType プロパティを ComparisonType.Greater に設定し、ComparisonValue プロパティを 2 に設定すると、監視しているシステム プロパティの値が 2 より大きい値に変わった場合のみ Changed イベントが発生します。Equals、Contains、または StartsWith などの他の比較を使用すると、アプリケーションで処理するイベントに対して、詳細なコントロールを取得できます。

SystemState では、ステータスが変わったときに、(それを通知するために) アプリケーションが稼動していなければならない、という制約があります。また、ローカルなメソッド変数の代わりに、class-level フィールドとして処理している Changed イベントを持つ SystemState のインスタンスを宣言することも必要です。

Pocket Outlook の操作

Windows Mobile 5.0 には、デバイスに格納されているメッセージング アカウント、タスク、カレンダー アイテム、連絡先にアクセスするための新しいアセンブリ、Microsoft WindowsMobile.PocketOutlook があります。アプリケーションでこのアセンブリを使用すると、電子メールのアドレスで連絡先を選択し、その連絡先へ画像を送信することができます。

新しい ChooseContactDialog を使用すると、ユーザーにプロンプトを表示して、すべての連絡先を選択することも、(図 5 のように) 特定の連絡先の特定のプロパティを選択することもできます。このダイアログの最も便利な機能のひとつに、有効な連絡先の一覧をフィルタできる、というものがあります。この機能は、連絡先へ画像を電子メールで送信するためのものなので、このアプリケーションでは、電子メール アドレスが記載されている連絡先のみを表示したいと思うでしょう。ダイアログの RequiredProperties プロパティには、フィルタリングをコントロールする ContactProperty エミュレーションの配列が含まれています。アプリケーションでは、ContactProperty.Email1Address の値を持つ ContactProperty を使用し、有効な電子メール アドレスを持つ連絡先のみが示されるようにします。このエミュレーションには、Birthday、BusinessAddress、HomeTelephoneNumber など、連絡先のすべてのプロパティが含まれています。RequiredProperties を使用すると、連絡先の一覧を管理可能な一覧へフィルタリングすることができます。この一覧は、このアプリケーションで連絡先がどのように使用されるかに関連します。

図 5 連絡先の選択

Email Message クラスのインスタンスを使用して、メッセージを自動で送信できます。このようにするには、To プロパティのコレクションに新しい Recipient を追加し、Subject および Body プロパティを設定して、Attachments のコレクションにイメージを追加するだけです。メッセージング アカウント、カレンダー、および Outlook のその他の機能への主なアクセスは、OutlookSession を通じて行います。OutlookSession のインスタンスを作成すると、EmailAccounts プロパティを使用して、最初の電子メール アカウントを取得し、メッセージを送信することができます。電子メールは、デバイスのステータスおよび設定に基づいて、すぐに送信することも、次回にネットワークへ接続し、send 処理を開始したときに送信することもできます。図 6 は、電子メールを送信するためのコードを示しています。

高度な同期の概念

電子メール メッセージの送信は、簡潔な例ではうまく機能しますが、データの転送では、必ずしも良い方法ではありません。デバイスとデスクトップの間でデータを移動する必要がある、もっと複雑なシナリオでは、ActiveSync の方が適しています。マイクロソフトは、Compact Framework のバージョン 2.0 で大幅に機能を拡張しましたが、マネージ コードの範囲外では、まだ拡張されていない機能があります。デスクトップ マシンから ActiveSync にアクセスし、デバイスと通信する機能では、まだアンマネージ コードを使用する必要があります。ただし、アンマネージ コードを記述しなくても、このような処理を行う方法があります。

ActiveSync は、パートナーシップおよびさまざまなサービス プロバイダ (メールとカレンダの情報を同期化するための Outlook プロバイダなど) を介して 、モバイル デバイスとデスクトップの間でデータを同期化します。それぞれのプロバイダは、特定の COM インターフェイスを実装している、(デバイスおよびデスクトップ上の) DLL のセットを備えています。これらのプロバイダは非常に有効ですが、開発が複雑です。ただし、複雑な同期化があまり必要ではない基本的なシナリオでは、モバイル デバイスが接続したとき、または切断したときに、サービス プロバイダを実装せずに通知する簡単な方法があります。

レジストリには、デバイスが接続または切断したときに自動的に実行されるプログラムの一覧があります。この鍵は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services\AutoStartOnConnect および \AutoStartOnDisconnect にあります。これらの鍵を利用するには、実行する実行可能ファイルへのパスが含まれている、一意の名前を持つ文字列を作成します。たとえば、NotepadTest という名前で、値が notepad の文字列を AutoStartOnConnect へ追加すると、デバイスをシステムに接続するたびに Notepad が起動されます。コマンド行の引数をプログラムに渡したい場合は、プログラム名を二重引用符で囲みます。"notepad" c:\test.txt のようにすると、デバイスを接続したときに、コンテンツの値が test.txt である Notepad が起動されます。これ以外にも、Windows Mobile 5.0 では、アンマネージ関数の ActiveSyncStart および ActiveSyncStop を使用して、デバイスから ActiveSync プロセスをプログラムで開始および停止することができます。

デバイスが接続されたときに、デスクトップでアプリケーションを開始する方法がわかったので、次にデバイスと通信する方法について説明します。これは、リモート アプリケーション プログラミング インターフェイス (RAPI) を介して実行します。.NET Framework には現在、RAPI の管理バージョンは含まれていません。RAPI はネイティブ API であるため、.NET では、Platform Invoke を介して、管理バージョンが含まれている関数をコールする機能をサポートしています。この API を使用しており、デバイスが接続されたときに自動的に開始されるような .NET ベースのアプリケーションを作成すると、モバイル デバイスとデスクトップ マシンの間でデータをやりとりする場合に簡単です。

 

まとめ

Compact Framework バージョン 2.0 (および Visual Studio 2005) は、最初のリリースの成功をベースにして構築されており、モバイル アプリケーションの開発がさらに簡単になっています。また、生成されるアプリケーションは、さらに機能的になります。開発者は、他のマネージ コード アプリケーションの開発で使用したツールおよびクラスと同じものを使用してモバイル アプリケーションを開発できるため、強力なモバイル アプリケーションを、より短期間で記述できるようになります。

一方、新しい API により、開発者はより強力になったモバイル デバイスのすべての機能をフルに利用できるようになります。たとえば、デバイスのカメラにアクセスするアプリケーションや、他のデバイスと通信する機能を備えたアプリケーションを記述することができます。つまり開発者は、対象のデバイスで適切な機能を利用して、余分な開発の労力やコストをかけずに、自身のニーズに適したソリューションを作成することができます。


Rob Pierry は、サービス指向アーキテクチャに特化した IT コンサルタントのリーディング カンパニーである Geniant のシニア コンサルタントです。連絡先は、rpierry+msdn@gmail.com です。


この記事は、 MSDN マガジン - 2006 年 12 月号からの翻訳です。 .


Back to top