いまさら聞けない .NET Micro Framework入門組み込みソフトウェア開発 技術解説(1/2 ページ)

超小型機器向けファームウェア「.NET Micro Framework」をご存じですか? 概要から事例、今後の展開までを分かりやすく紹介します!

» 2011年01月05日 00時00分 公開
[太田 寛,@IT MONOist]

 「組み込みソフトウェア開発」と聞くと、テキストエディタとコマンドラインのコンパイラ、限定的なデバッガによる昔ながらの“しんどい開発”を思い浮かべる読者は多いと思います。

 一方で、「Windows PC上のアプリケーション開発」はというと、「Visual Studio」という高性能な統合開発環境を使い、「C#」や「Visual Basic」といった抽象度の高い言語で、高品質のアプリケーションを高い生産性で開発できます。

 ただ一口に「組み込み機器」といっても、Windows XPやWindows 7をベースにした「Windows Embedded Standard」や、小型リアルタイム制御機器向けOSの「Windows Embedded CE」といった組み込み向けOSを使った機器のソフトウェア開発では、Windows PC上のアプリケーション開発と同じようにC#を使うことができ、PCアプリケーションと近い環境でソフトウェア開発を行うことができます。

 では、どんな組み込み機器のソフトウェア開発でも、Windows PC系の環境が使えるのでしょうか?

 残念ながらこれまで、メモリが数十K〜数百Kバイト、MMUなしといった、より小規模のハードウェアの領域はカバーできていませんでした……。そう「.NET Micro Framework」が登場するまでは。

 本稿の主役である.NET Micro Frameworkは、いままでWindows系の環境がカバーできていなかった、より小規模の組み込み機器でもPCアプリケーション並みの便利さ・快適さを開発者に提供することを目的とした「ファームウェア」と「開発環境」です。

.NET Micro Frameworkの概要と歴史

 マイクロソフトは、WindowsやWebアプリケーションを効率よく開発するための言語としてC#やVisual Basicを提供しています。皆さんご存じのとおり、これらの言語はいったん中間言語にコンパイルされ、実行時にバーチャルマシンに送られ、ジャストインタイムコンパイラでバイナリコードに変換されて実行されます。また、使われなくなったメモリ領域は自動的に解放されるなど、組み込みで一般的に使われているC/C++言語に比べると、より少ない記述でより多くのロジックを実現できます。このバーチャルマシンや各種ライブラリ、ミドルウェアを総称して「.NET Framework」といいます。

 マイクロソフトは、Webサーバ、デスクトップ、ブラウザ、組み込み機器……などのプラットフォームの特徴や使用目的に応じて、それぞれに適した.NET Frameworkを提供しています(表1)。

.NET Framework Windows XP/Vista/7、Windows Embedded Standard、Windows Embedded Server
.NET Compact Framework Windows Phone 7、Windows Mobile、Windows Embedded CE
そのほか Silverlight用の.NET Frameworkなど
表1 .NET Frameworkの種類

 今回紹介する.NET Micro Frameworkは、これら.NET Frameworkの仲間の1つであり、小型組み込み機器向けに開発された.NET Frameworkです。

 .NET Micro Frameworkは、

  • 最小セットの場合、64KバイトRAM、256KバイトFlash ROM、MMUなしで動作可能
  • ARMやX86、SHなど、さまざまなCPUアーキテクチャで動作
  • リアルタイムOSやOSなしのファームウェア上にポーティング可能
  • UIやネットワーク、ファイルシステム、ローレベルのハードウェアインターフェイスにアクセスするライブラリを提供

といった特長を有し、Windows Embedded CEがカバーする領域よりさらに小型の組み込み機器向けのファームウェアです。.NET Micro Frameworkを活用することにより、.NET Micro Frameworkが提供するリッチなライブラリを活用しながら、C#でアプリケーションをプログラムすることが可能です。

 .NET Micro Frameworkは、昔ビル・ゲイツが時計で動くWindowsとして紹介していた「SPOT(Smart Personal Object Technology)」という製品の中で使われていたファームウェアが基になっています。バージョンアップの歴史を年表で示します(表2)。

2007年9月 Version 2.0 正式版リリース
2008年2月 Version 2.5 ネットワーク対応
2008年10月 Version 3.0 Visual Studio 2008 SP1対応
2009年11月 Version 4.0 オープンソース化
2010年7月 Version 4.1 Visual Studio 2010対応
表2 .NET Micro Frameworkの歴史

 筆者は、2007年に開催された「Microsoft Mobile and Embedded Conference 2007」というイベントの基調講演で、フリースケール・セミコンダクタの評価ボードを使ってデモしたのを覚えています。バージョンが上がるごとにネットワークやUI、ファイルシステムなど、さまざまな機能が拡充されてきました。バージョン3.0までは、ほかのマイクロソフトのOS製品群と同じように、製品搭載には有償のライセンスフィーが必要でしたが、2009年11月のバージョン4.0から、Apache License V2.0によるオープンソースとしての提供になりました。製品版に搭載する場合にも特に契約などは必要ありません。もちろん、バーチャルマシンやライブラリのソースコードも開示されています。

 ただし、有償提供の時代には、マイクロソフトからの有償サービスがありましたが、オープンソース化後は提供されていません。開発は、マイクロソフトの米国本社が主導していますが、サードベンダや開発者が参加して共同で開発する“コミュニティ開発”という開発形態に移行しています。コミュニティ開発には、誰でも参加可能なので、腕に覚えのある開発者はぜひ参加してみてください!


 ちなみに日本では、MSDNに開発者向けの「.NET Micro Framework フォーラム」が用意されているので、そちらもご活用ください。

関連リンク:
.NET Micro Framework フォーラム

.NET Micro Frameworkの利用シーン

 .NET Micro Frameworkの特徴は何といっても、必要ハードウェアの軽量性と、ネットワークプログラミングの容易さ、グラフィックスやタッチを駆使したUIの作成のしやすさにあります。

 活用の場としては、

  • ネットワークセンサノード
  • 家電や車載機器のパネル
  • リモコンや健康器具などの超小型端末
  • おもちゃ

などが挙げられます。

 ITの世界では最近、“クラウド”がキーワードになっていますが、ネットワークの発達、普及により、これまであまりネットワークとは関係がなかった組み込み機器群も、今後はネットワークにつながる機会が増えていくと予想されます。また、売れに売れているスマートデバイスに代表されるように、小粋なグラフィックスやマルチタッチ機能を活用したUIも小型組み込み端末に求められるようになってきています。.NET Micro Frameworkは、必要な下周りの機能の取捨選択が可能なので、あまりリッチなハードウェアを採用できない小型端末にネットワーク機能やグラフィカルなUIを追加するのに最適です。

 また、.NET Micro Frameworkは、「T-Kernel」をはじめとする各種リアルタイムOS上にポーティングが可能なので、ネットワークやいま風のUI機能の拡充が求められる既存デバイスに対し、既存資産をそのままミドルウェアとして活用しつつ、必要な新規機能を加えることができます。

 さらに、.NET FrameworkとC#によるプログラミングスキルは、小型機器が連携する先のネットワークサービスやWindows系の各種OSでも一貫して使えるので、ネットワークやPC、各種組み込み機器が連携する分散システム開発時に、同じ開発環境、同じ開発スキルをすべての領域にわたって活用できるというメリットもあります。

.NET Micro Frameworkを使ったアプリケーション開発

 .NET Micro Frameworkを使ってアプリケーション開発を行うには、以下の環境が必要です。

Visual Studio 2010
※無償版のExpress Editionでも可。

.NET Micro Framework SDK 4.1
※PCのOSやハードウェアのスペックなどは、マイクロソフトのダウンロードページで確認してください。

 SDKのダウンロードは以下の関連リンクから行えます。


 SDKをインストールすると、.NET Micro Framework上で動くプログラムを開発するためのプロジェクトテンプレートや、PC上でアプリケーションの動作を確認するためのエミュレータが「Visual Studio 2010」に追加されます。アプリケーション開発は、Visual Studio 2010のメニューから、プロジェクトの作成を選択し、.NET Micro Frameworkのカテゴリを選択します。そして、「Windows Application」プロジェクトテンプレートを選択します。

プロジェクトテンプレート 図1 プロジェクトテンプレート

 すると、パネルに「Hello World」が表示される(定番の?)アプリケーションの最少セットが作成されます。その状態でデバッグ実行すれば、ソースコード一式がビルドされ、Windowsで動作するエミュレータが立ち上がり、ビルドされたアセンブリがエミュレータに配置され、ソースコードレベルデバッグが可能になります。

デフォルトエミュレータ 図2 デフォルトエミュレータ

 実機で動かすためには、プロジェクトのプロパティを選択し、.NET Micro Frameworkタブを選択して表示された画面で、デバイスを選択します。実デバイスとの接続方法にもよりますが、Device Solutionの「Tahoe-II」や「Fez Mini」などのUSBで接続するタイプのデバイスは、PCにボードをUSB接続して、プロジェクトプロパティの接続項目でUSBを選択すると、一覧に表示されます。

プロジェクトプロパティ 図3 プロジェクトプロパティ:.NET Micro Frameworkタブ

 この状態でデバッグ開始を選択すれば、エミュレータのときと同様に、実機上のアセンブリが配置され、ソースコードレベルデバッグが可能になります。

 SDKをインストールすると、ユーザードキュメントの「Microsoft .NET Micro Framework 4.1」というフォルダ以下に「Sample」が用意されます。このサンプルには、UIやネットワークをはじめとする数多くのサンプルが用意されているので、アプリケーション開発をはじめる前に一通り内容を確認するとよいでしょう。

クロックパズル 図4 クロック(左)/図5 パズル(右)

冷蔵庫 図6 冷蔵庫

 また、実際にハードウェアを使いたい方には、手ごろな値段でボードを購入でき、オプションの購入でさまざまな機能を追加できる「FEZ Mini Robot Kit」をお勧めします。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.