特集
» 2011年11月08日 11時05分 UPDATE

特集・.NET Micro Frameworkのネットワーク機能:.NET Micro FrameworkデバイスとWindows Phoneをつなぐ!! (1/2)

UDPのMulticast Group機能を使って、.NET Micro Frameworkデバイスから「Windows Phone」にメッセージを通知するアプリケーションを開発。その“エッセンス”を紹介する!

[太田 寛,@IT MONOist]

はじめに

 「.NET Micro Framework」は、マイクロソフトがApache License V2.0で提供している、小型組み込み機器向けオープンソースファームウェアです。C#やVisual Basicを使って、小型組み込み機器向けアプリケーションをまるでPCのアプリケーションのように開発することができます。

 .NET Micro Frameworkには、マルチタッチやグラフィックス機能、ネットワーク機能が用意されており、ネットワーク上のサービスやデバイスとの連携アプリケーションを開発するのに非常に適しています。より詳しい情報については、「いまさら聞けない .NET Micro Framework入門」を参照してください。


 本稿では、.NET Micro Frameworkのネットワーク機能を使って、最近ものすごい勢いで増えているスマートフォントとの連携を紹介します。連携するスマートフォン端末は「Windows Phone」です。スマートフォンと聞くとすぐに、“携帯電話の通信事業者が提供する携帯電話向けネットワーク(通信網)を利用する”と、イメージされると思いますが、ここではもっと手軽で簡単な、Wi-Fiルータを介した「UDP(User Datagram Protocol)」の“Multicast Group機能”を使った通信を用いることにします。ユースケースとして、図1のような例を挙げておきます。

UDPのMulticast Group機能を使った通信のユースケース 図1 UDPのMulticast Group機能を使った通信のユースケース

 UDPを使ったMulticast Group通信は、「IGMP(Internet Group Management Protocol)」というプロトコルを使います。IPアドレスとポートで指定されたグループにメッセージを送信すると、Wi-Fiでネットワークに接続された端末のうち、あらかじめグループに“Join”している端末だけにメッセージが届くもので、端末間で同報的な一括通知が必要な場合に便利なプロトコルです。

 最近のWi-Fiルータのほとんどは、このプロトコルに対応しており、Wi-Fiがある場所であればほぼ使えます。また、コンシューマ向け製品のスマートフォンに新しくセンサーデバイスを追加するのは、コスト的にもビジネス的にも難しいので、端末にいろいろとデバイスを追加するよりも、こういった仕組みを利用する方がよりスマートであるといえるでしょう。IGMPの詳細については、マイクロソフトのWebサイト「TechNet オンライン」の記述を参考にしてください。

 本稿では、基本をおさえるため、UDP Multicast Group通信を使って、.NET Micro FrameworkデバイスからWindows Phoneにメッセージを通知するアプリケーションのエッセンスを解説します。ここで紹介する例では、.NET Micro Frameworkデバイス上とWindows Phone上の2つのアプリケーションを開発することになります。

開発の準備

 まず、開発に必要な環境一式を用意します。ここで必要な作業は以下の2つです。

  1. .NET Micro Framework開発環境インストール 
    http://netmf.codeplex.comから最新版「.NET Micro Framework SDK」をダウンロードし、ZIPファイルに入っているインストーラーを起動する。 
    ※有償版「Visual Studio 2010」がインストールされていることを推奨。インストールされていない場合は、http://www.microsoft.com/japan/msdn/vstudio/express/から「Visual C# 2010 Express」をインストールする
  2. Windows Phone開発環境インストール 
    http://msdn.microsoft.com/ja-jp/windowsphoneを参考に、「Windows Phone SDK」をインストール

 有償版のVisual Studio 2010には、開発に便利なさまざまな機能が用意されているので筆者は有償版の利用を強く推奨しますが、無償の“Express Edition”でも開発可能です。また、どちらの開発環境にも、PC上でロジックの実行確認が可能なEmulator(エミュレータ)が用意されているので、実機がなくても開発と実行確認は可能です。

Windows Phone側のアプリケーション開発

 Windows Phone側のアプリケーションは、「MSDN」で公開されているアプリケーションをそのまま使います。

Windows Phone側で使用するアプリケーション:
MSDN−How to: Send and Receive Data in a Multicast Group for Windows Phone

 上記Webサイトにある「Multicast Sockets Sample」からアプリケーション一式をダウンロードしてください。ダウンロードしたZIPファイルの中にある「sdkMulticastCS.sln」をダブルクリックし、Visual Studioが起動したら、[F5]キーをクリックしてWindows Phone Emulatorを起動します。このEmulatorの中でサンプルアプリケーションが実行されます。これを複数のPCで起動すれば、Emulator上のアプリケーションで実際にUDPのMulticast Groupを使ったメッセージの送受信ができます。

Windows Phoneの「UdpAnySourceMulticastClient」クラス 図2 Windows Phoneの「UdpAnySourceMulticastClient」クラス

 Windows Phoneには、IGMPのUDP Multicast Group通信向けに、「UdpAnySourceMulticastClient」というクラスが用意されています。このクラスを使えば、簡単にMulticast Groupへの“Join”、メッセージの送受信が可能です。グループアドレスとグループポート番号は、このサンプルで使われている「224.0.1.1」と「52274」をそのまま利用します。

.NET Micro Framework側のアプリケーション開発

 .NET Micro Frameworkは、少ないハードウェアリソース向けのファームウェアであり、PCやWindows Phone向けの.NET Frameworkライブラリのうち、小型組み込み機器に必要なライブラリしか提供されておらず、Windows PhoneのようにMulticast Group通信をサポートする専用のクラスは用意されていません。そのため、本稿では代わりに「Socket」クラスを使ってロジックを構成していきます。

 まず、.NET Micro Framework SDKをインストールしたVisual Studioを起動し、.NET Micro Frameworkプロジェクトテンプレートの中のWindows Applicationを使って、新しいプロジェクトを1つ作ります。なお、本稿ではC#を利用した開発を前提に説明を行います。

 前述の通り、このアプリケーションでは、Socketクラスを使います。Socketクラスは、「System」コンポーネントに入っているので、プロジェクトの参照設定にSystemコンポーネントを加えます。

プロジェクトの参照設定にSystemコンポーネントを追加 図3 プロジェクトの参照設定にSystemコンポーネントを追加

 プロジェクトに「MulticastSocketClient」という名前で、クラスを新たに追加します。このクラスを、リスト1のようにコーディングします。

「MulticastSocketClient」クラスの実装 リスト1 「MulticastSocketClient」クラスの実装

 ネットワーク通信はベストエフォートのため、常に正常に機能するとは限りません。本稿で紹介しているリストの他の箇所では例外の補足を誌面の関係で入れてはいませんが、Socketをはじめとするネットワーク機能を利用するクラス群を使う場合は、発生し得る“例外”をきちんと捕捉して、適切なフォロー処理を入れるようにしましょう。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.