.NET Gadgeteer(いかす.NET Micro Frameworkの発展版)紹介


新年一発目の投稿は、.NET Micro Frameworkをベースに、マイクロソフトリサーチが提供(勿論オープンソース)している.NET Gadgeteerの紹介です。

勿論私はアナウンスされた当初から存在を知っているし、Visual Studio 2010用のSDKもインストール済みだったのですが、実は、Visual Studio 2010の.NET Gadgeteer向けプロジェクトを見たのは今日が初めてなんです。いやぁ抜かったぁ。もっと早くに試してみるべきだったぁ、やっぱり新しく出てきたイケテそうなテクノロジーは直ぐに試さんとだめだぁ・・・と思った次第。

Visual Studio 2010(Express版でも可)を持っている方は、

http://www.tinyclr.com/support/

から、GHI NETMF v4.1 and .NET Gadgeteer Packageをダウンロード&解凍&インストールすれば直ぐに使えます。インストールすると、C#カテゴリの下に、Gadgeteerという分類が追加され、.NET Gadgeteer C# Applicationというプロジェクトテンプレートが新たに追加されます。

早速それでプロジェクトを一個作ります。すると、以下の様なプロジェクトが作成されます。

真ん中に、皆の大好きな裸のボードが表示されていますね。(ちょっと興奮しますね)
左を見てください。AccelerometerとかBarometerとかCompassとかGPSとかGyroとか、皆の大好きな名前が並んでいますね。試しにどれかをマウスで選択しドラッグアンドドロップで、ボードが表示されているビューに持っていってみてみましょう。

お、更に裸のボード(加速度センサー搭載ボード)が追加されました。もう後、二三個追加して、右クリックすると、

表示されたコンテキストメニューのConnect all modulesを選択すると、

おっ、配線が現れたぁ!!

つまり、AccelerometerボードはFez Hydra上の6番のソケットに、GPSは7番に、Moistureセンサーは14番に、WiFiドングルは4番に接続しなさい…て訳です。判りやすいですね。間違ってつないで動かないよぅ…なんてことはない訳です。
ソリューションエクスプローラーを覗いてみると

従来の.NET Micro Frameworkなら、使いたいデバイスや機能に併せてマニュアルで、必要なアセンブリーを追加しなければならなかったのに対して、ツールボックスからドラッグアンドドロップして追加すると、それに併せて必要なアセンブリーが追加されます。更にソリューションの下の方を見ると、”Program.generated.cs”という、非常に気になる名前のファイルがあるじゃないですか。このファイルの中身を覗くと

追加された周辺デバイスを初期化するコードが、ダイアグラム上でのデバイス追加に併せて自動生成されているですねぇ。Main()メソッドが最初に実行されるので、処理を追うと、

  1. InitailizeModules()メソッドがコールされる → 各周辺デバイスが初期化される
  2. ProgramStarted()メソッドがコールされる →Proguram.csファイルで定義されているProgramStarted()が実行される。

となっているので、開発者はProgram.csの方を編集していけばよい。C#に詳しくない人向けに補足しておくと、C#ではパーシャルクラスという文法があって、同じクラスのメンバーを2つ以上のファイルに分けて定義することが出来る。この場合は、Program.generated.csは、ダイアグラム上の定義を元に自動生成されるファイルなので、開発者は編集する必要が無く、アプリケーションロジックはProgram.csやもっと他のC#ソースファイルで記述しておくということが出来るんですね。Visual Studioの開発環境は定型的なソースコードはかなりの範囲自動で生成されるので、このパーシャルクラスは、結構使い出がある。.NET Gadeteerのホームページhttp://www.netmf.com/gadgeteer/what-is-gadgeteer.aspx をよくよく下まで読むと、ここで説明している、図によるデバイスの接続からコード生成のことまで、ちゃんと紹介されているじゃないですか。見落としていたのは返す返す、”不覚”の二文字。皆さんに紹介するのが遅れて大変申し訳ない。
MSリサーチ、小型組込み系デバイスの開発環境でここまでやるのねぇ~、へ~、と感心しきり。

残念ながら、このブログの図で使っているFez Hydraは、この環境では動かないらしいですが、GHI Electronics社(日本の代理店はデバイスドライバーズ(株))から出ているFez Spyderならちゃんと動くらしい。それから、昨年(2011年)の@IT Monoistの記事で紹介したように、.NET MFの最新バージョンは4.2で、Gadgeteerは4.1というのもちょっと残念だ。ただ、もう直ぐどちらもきちんと対応してくれるはずなので、それまで若干の待ち。従来の.NET Micro Frameworkのプロジェクトテンプレートを使って作ったアプリケーションは、問題なくFez Hydraで動くそうなので、そっちで色々試して時間をつぶすのが良いでしょう。

幾つか問題はあるが、まぁ、そのうち新しいものが出てくるはずなので、それを期待するとして、図のツールボックスでリストされているセンサーや各種デバイスは、実際にばら売りされているし、まぁ数千円~数万円で一セットが揃えられる。WiFiなどインターネットにも簡単につなげられるので、中学や高校、高専、大学の教養課程あたりで、センサーやモータを使ったプログラミング講習や、Windows Azure辺りと組み合わせて今流行のセンサークラウド実習などに、.NET Gadgeteerは最適だと思うが、いかがだろう?

Comments (0)

Skip to main content