Windows EmbeddedのMVPコミュニティページがオープン

皆さん、こんにちは。 Windows Embedded MVPコミュニティページの紹介です。 http://msdn.microsoft.com/ja-jp/dn324916 早速このページから7/19に行われた「Windows Embedded Community Day ~ 第 1 回 – 真夏の組み込み Windows 技術セミナー2013」のセッション資料が公開されています。 Windows Embedded Standard 8、Windows Embedded Compact 2013や、Windows XP Embeddedの最新バージョンへのマイグレーションなど、紹介されているので是非ご参照くださいませ!! あ、既にWindows Embedded OSのPreviewやお試し版など色々と公開されているので、そちらもお試しください。 http://www.microsoft.com/windowsembedded/ja-jp/downloads.aspx Windows Embedded Standard 8 Pro Windows Embedded Standard 8 Standard Windows Embedded Standard 8 Indstury Windows Embedded Standard 8 Handheld Windows Server 2012 for Embedded…


.NET Micro Framework + Windows Azure + Windows 7 + Windows Phoneでセンサークラウドプロトタイプ

最近、電力見える化や農業クラウドなど、センサークラウドが実用化の時期を迎えつつあります。タイトルに挙げたテクノロジーを使えば、センサークラウドのプロトタイプが廉価で手軽に実現できるのでは、ということで投稿してみました。想定としては、 このポストで説明した方法でプロトタイプを作成し実証実験 結果をもとに本格稼動に向けて、デバイスやサービス、アプリを構築 といった流れを考えています。 センサークラウドの基本構成要素は、 センサーデバイス+小型組込み機器   センサーノードとしてフィールドにばら撒かれる データ収集用ネットワークストレージ    ネットワーク上で稼動 データ分析・活用ネットワークサービス   ネットワーク上で稼動 システム管理者向けアプリ          PC等で稼動 ユーザー向けデータ活用アプリ       PC、タブレット、スマートフォンなどで稼動 になるかと思います。最初に挙げたセンサー機器で測定対象の各種データ(電力や温度、湿度、大気圧、照度、などなど)を収集し、2番目のストレージに格納、3番目のサービスで活用し、4番目でシステムを管理、5番目でユーザーが見たり指示したり、といった構成です。あい これらとタイトルに挙げた技術をそれぞれマップしていくと、 センサーデバイス+小型組込み機器 プロトタイプを作るなら、.NET Micro Frameworkデバイスが利用可能です。.NET Micro Frameworkが動く市販のデバイスは、GHI Electronics社のFezシリーズやNetduinoがあります。これらは、ボードだけなら4000円~1万円程度、接続可能なセンサーデバイスも多数売られている(数百円から数千円)ので、プロトタイプのレベルなら多額の投資がなくても利用可能です。アプリケーションはC#やVBを使って、.NET Framework系のネットワーク機能が豊富に揃ったライブラリを使えるので、デバイス上のプログラムも容易に作成できます。.NET Micro FrameworkはApache V2ライセンスで提供されるオープンソースなので、ライセンスフィーもいりません。 データ収集用ネットワークストレージ ネットワークストレージには、Windows Azureのストレージサービスや、SQL Azureが利用可能です。Webから申し込み手続きをしてすぐ使え、実験中だけ稼動し、終わったら、契約を終了可能です。実験環境としては最適でしょう。 データ分析・活用ネットワークサービス こちらは、Windows Azureが、データ分析・活用サービスのホスティングサイトとして利用可能です。こちらもSQL Azureと同様、使いたい時だけ使えるので、プロトタイプ向きといえるでしょう。また、Windows Azure上で作成したサービス向けクライアントアプリはWindows系アプリだけでなく、アンドロイドやiPhone向けのものが作成可能です。 システム管理者向けアプリ こちらは、Windows 7 PCが利用できます。Windows Azure上にRIAとして構築しても構いませんし、ネットワークサービスと連携するPC上で動くアプリを用意するのも良いでしょう。特に専用のPCを用意する必要もなく、通常のPCで十分です。もしゲートウェイや専用デバイスが必要であれば、Windows 7の組込み版OSであるWES7や、Windows Embedded Compact 7 デバイスが利用可能です。 ユーザー向けデータ活用アプリ こちらは、Windows 7 PC、Windows Phone 7を使って、RIAサービスや、それぞれのOS上で動くクライアントアプリを作るこことも出来ます。ブラウザ内で動くアプリだけでよいのではと思う方もいるかもしれませんが、画面の大きさや操作性、各デバイスが装備している機能との連携を考えると、今後はむしろネットワークサービスとして連携してデバイス二インストールされて動くアプリのほうが主流になるのではないかと私は予想してます。デバイス側もどんどん進化しますからね。 以上、ざっと紹介しました。上の組合せであれば、開発環境はVisual Studio 2010で全て開発可能ですし、同じ言語、同じ流儀のライブラリーを使える、つまり同一スキルセットでプロトタイプ作成が可能です。本格システムの場合は、認証や暗号化などセキュリティが必要になりますが、App Fabricを使えば、何とかなりそうです。 図にするとこんな感じ 以上、簡単ですが、今後も方々でこの話題は話したり、ブログ書いたりする予定なのでよろしくお願いします。ではまた…


組込みソフトウェアって何

今更ながら…、という気もしますが、組込みソフトウェアって何だっけ、てことでポストします。 朝起きて会社や学校に行くまでのことを考えて見ましょう。目覚まし時計に起こされて、エアコンのスイッチをいれ、リモコンでTVやラジオをONし、冷蔵庫から食材を取り出し、電子レンジや調理器具を使って料理する。食べながら洗濯機で選択をし、支度が出来たら、自動車で信号に従ってカーナビ見ながら運転、或いは駅まで行って改札を通り抜け電車に乗る。電車で携帯電話でメールやソーシャルネットを確認したり、ミュージックプレーヤーで音楽聴いたりゲームしたり。駅から目的地までの途中、コンビニによって電子広告見ながらお買い物、POSレジで支払い。ビルに着いたらエレベータに乗ってオフィスへ到着。IDカードをリーダーにかざして入室。座席にはIP電話があって、パソコン使ってビジネス文書を作って、OA機器でプリントしたり、コピーしたり、…。       限が無いのでこれぐらいでやめておきますが、上の文章のボールドで書いたモノの中には全て、それを制御する為のコンピューターが入っています。更には、毎日電力を送り続けてきてくれている発電所や、身の周りの家具や食品、様々な機器を製造している工場内にも非常の多くの特定用途向けコンピューターがそれぞれの役割を担って働いています。コンピューターと聞くとデスクトップ型のパソコンやノートPC、サーバーを思い浮かべる方は多いと思いますが、実際には非常の多くの特定用途向けで、機器に“組込まれている”コンピューターが、我々の生活を支えているのです。この“組込まれた”コンピューターで動くソフトウェア、それが「組込みソフトウェア」と呼ばれるものです。たとえば自動車の場合、普通車なら60個以上、高級車なら100個以上のコンピューターが入っています。家電やOA機器、様々な身の周りの機器の数を考えると、通常皆さんが思っている所謂コンピューターより、更には最近流行りだしたスマートフォンやタブレットPCの台数と比較しても、組込み機器で使われているコンピューターの方が桁違いに多く存在していることがお判りいただけるでしょう。 また、組込み機器、組込みソフトウェアといっぱひとからげに、括っていますが、冒頭の文から判るように、多種多様な機器、ソフトウェアが存在しています。もう少し具体的な分類は、IPA SECの組込みソフトウェア産業実態調査報告書 http://sec.ipa.go.jp/reports/20100607.html あたりを参考にしてください。この広大な組込みワールド向けにマイクロソフトはプラットフォーム(勿論全ての領域をカバーするわけではありませんが)を提供しています。 マイクロソフトが組込み向けにどんなプラットフォームを提供しているか、その概要は、組込み開発者向け技術情報 http://msdn.microsoft.com/ja-jp/windows/kumikomidev を参照してください。このページでは、.NET Micro Framework、Windows Embedded Comact、Windows Embedded Standard、Windows Embedded Enterprise、Windows Embedded Server、それと複数の特定製品カテゴリ向けのWindows XXXXが掲載されています。ちょっと説明しておくと、大きく分けて、.NET Micro FrameworkからWindows Embedded Serverまでの前半(リンクのページでは左側)は、General Embeddedといって、色々な種類の組込み機器で使える汎用的な組込みOSという位置づけです。大まかに言って最初の方が省リソースロースペックハードウェアで動作し、後ろに行けば行くほどリッチなハードウェアを使う組込み機器向けだと思ってください。 そして、リンクのページの右側のWindows XXXという製品群、これらは、携帯電話やカーナビ、POS端末など、特定用途向けのプラットフォーム製品です。昔々、バラバラのアーキテクチャーが群雄割拠し、やがてWindowsとMACに収束していった様に、そして今また携帯電話の世界で起こっているように、特定用途向けのカスタムなハードウェア、OSで作っていたある分野の製品の市場が拡大し、多くの企業が参入して、競い合って機能が進化してくると、必然的にコモディティ化が進んできます。機能もハードウェアも共通な部分が増え、上から下まで全てを自前で作るのではなく、標準として確立したプラットフォームやミドルウェアや、そのプラットフォームの元に部品化されたハードウェアを集めて組み上げ、アプリケーションを開発すれば製品が出来上がるようになってきます。Windows Phone、Windows Automotive、といった Windows XXXは、これらある程度コモディティ化した製品領域向けのプラットフォーム製品です。 それぞれの製品は、左側のGeneral Embedded OS上で構築されています。詳細は、http://www.microsoft.com/windowsembedded/ja-jp/about/what.mspx を見てください。 また、http://www.microsoft.com/windowsembedded/ja-jp/about/casestudies.mspx には事例が載っているので、参考にしてみてください。


Visual Studio 2010 Launch記念 – 私が凄いと思う3つの機能

今年の春の天気はドラスティックですね。ソメイヨシノはもう終わり、今は、八重桜が満開ですねぇ。昨日は五反田で面白いものを一杯見せていただいて、夜はおばかアプリ勉強会にお邪魔し、はばさんに脳みそ渡し、非常に満足な一日でした。 で、話は変わりますが、Visual Studio 2010が公開されましたねぇ。桜は全く関係ないですぇ。せっかくなので、今回は、私が注目している新機能を3つ、紹介しようと思います。他にも沢山良い機能はあるのですが、きっと他の誰かが書いてくれるでしょう 先ず、一つ目!!、UML Editorです。Ultimate版でしか使えないのが残念なんですが…。皆さん、ただ単にUMLのお絵かきツールだと思ってないですか?実は、幾つかのSDKをインストールすると、プログラムから図の内容にアクセスして、記述内容を取出して、文書を生成したり、自分の好きな設計ルールを適用してプログラムを生成したり、プログラマブルにUML図を作成したりできるんです。私は元々、設計図をきちんと書いたら、最終プログラム自動生成されるだろぅ、系のプロフェッショナルだったので、こういう機能には魂が燃えます。(これ、今年も協賛するETロボコン支援ネタで、このブログで連載の予定) 次、二つ目!!、MEFです。これは凄いです。Managed Extension Frameworkです。プログラムの理想形はOCP(Open Closed Principle)とは、よく言われますが、MEFを使ってExtension Pointを仕込んでおけば、既存のプログラムコードに全く手を入れずに、機能をアプリケーションの実行時に拡張できるんです。Visual Studio 2010のIDEは、WPF/Managedで作られていて、デフォルトでMEFのExtension Pointが沢山仕込まれています。これに合わせて拡張部品を作れば、“Extension Manager”で、簡単にVisual Studioの機能を拡張できます。Visual Studio 2010を既にインストールしている方は、ぜひ、ツール→Extension Managerでダイアログを開き、Online Gallaryを選択してみてください。既に沢山の拡張モジュールがあるのが見れると思います。現在、他のエバと、勝手にMEF FUNという、ネット上のグループを立ち上げて、VSの拡張ポイント探す、作る、共有する・・・みたいなことを始めようかな、などと、画策しているところです。実はETロボコンの計測システムのソフトの部分は私が皆さんの協力のもとに開発して提供しているのですが、今年は、MEFを使って、Extension Pointを仕込んで、途中経過の表示とか、最終順位の表彰表示とか、募集しようかな、などと思ってたりします。 最後に3つ目!!、Parallel & Concurrentです。CPUの周波数はもう頭打ちです。何故かというとこれ以上周波数を上げてしまうと、CPU内の熱密度が核融合炉並みになってしまうからなんですね。性能向上を図るにはコアを増やすしかないんですね。しかし、マルチコアの前に、マルチスレッドのプログラミングでも、効率的かつハイパフォーマンスなマルチスレッドプログラムを作るのは、シングルスレッドに比べて、格段に難しいんですね。スレッドにどんな風に処理を割り付けるか、これ結構難しくて、下手にスレッド増やしただけだと、スレッド間通信のビハインドや、実行メモリ量が増えたり、最悪よく判らないところでデッドロックを起こしたりして全然性能が出なかったりします。処理の割り付けには、RMT(Rate Monotonic Theory)をはじめとする理論なんかもあるんです(実は効率的なパターンもあったりするのですが・・・)が、これまではスレッドを幾つ用意するか、それらにどう処理を割り付けるかを考えて最適化するのは兎に角難しいものだったんです。更には、スレッド2つの場合とスレッド3の場合では、最適な配置は違ってたりします。そんなこんなで、コアが2の場合、4の場合、8の場合、数に合わせて最適化を考えようとする(SMPを想定)と、凄く大変なわけです。最悪同じ事をするプログラムなのに、別々のプログラムを書かなければならないんです。その製品が売れて、機能拡張しようとかバグ対応しようとか、後々のことを考えるとこれは悪夢だ。Parallel & Concurrentはこれを解決してくれるテクノロジーなんですね。基本的なプログラミングモデルは、私が好きなShlaer-Mellor法のADFD(Action Data Flow Diagram)と同じで、これがC#の関数型拡張で実現されているところが、凄いなぁと感じている今日この頃です。 と、ここまで読んできて、“私は組込み系の技術者だから関係ないや・・・”とか思ってませんか?実は、もう直ぐ、組込み向けのWindows 7(Windows Embedded Standard 7)がリリースされます。WES7ご利用の皆様、是非、ご活用くださいませ。 おぅ、久しぶりにおバカネタに振れずに、書ききったぁ。

1

Windows Embedded Standard 7で新しいデバイスができないか

もう直ぐWindows 7の組込み向けOS、Windows Embedded Standard 7(略してWES7)がリリースされます。もともとWindows 7は、省電力、省リソース、ハイセキュア、Multi-touch(もちろんこのブログで多く紹介しているSensor & Location Platformも忘れちゃいけない)なので、組込み機器向けのOSだよなぁ・・・と常々思っているのですよ。一方で、最近、この間発表されたWindows Phone 7も含め、電子書籍用の端末など、これまでとはちょっと違った用途向けとフレーバーの、コンシューマー向けデバイスが出てきてますね。Netbookのような小型携帯向けのPCのハードウェアに、Multi-touchパネルといろんなセンサーを付けて、外見は特定用途に適した形にしてWindows 7の新しい機能を使うと、WES7で、結構面白いデバイスができるのではないかと、桜色の絨毯の上を滑っていて思った次第です。最近関わっているおばかアプリ選手権の影響も、ありですね。 私は、新しいデバイスを色々といぢくりまわしたい欲求を横に置いておくと、本は従来通り書店で、どれにしようかなと一冊づつ手に取って選んで、買って読みたい方なので、実は電子書籍端末にはあまり萌えないのですが、”こんなデバイス欲しいな”というイメージを以下に紹介しますね。 今はやりのTwitter専用端末で持ち運びできるデバイス。インラインスケートでロングランを(所謂苦行系ですね)していると、アー気持ちいい(え?苦行なのに)と思うポイントとか、道が二つに分かれていて遊水地の森に踏み込んでしまう(それも楽しいんだけど)とか、ちょっと休みたいんだけど見渡す限りのどかな風景だなとか、完走した後に、結局今日どこ滑ったんだっけ、っていうのを振り返るとか、したいわけですよ。なので、その端末は、 通信機能付き 風景を撮る為のカメラ機能付き 位置を知るためのGPS付き 音声認識機能付き 心臓の鼓動を計測するセンサー付き スカウター付 滑りながらでも操作できるタッチ機能付き 後、マイクとイヤホンも必要だ。デバイスは、体(胸あたり)に装着して、目にスカウター、耳にマイク付イヤホンをつけてるイメージね。声で呟いて、音声認識(クラウド側に認識アルゴリズムを置くことにしよう)して、ツウィートする。胸に手を伸ばしてタッチセンサーに触れると簡単な操作ができる。電池が持つように、タッチして呟いてタッチした後はスリープする。携帯がつながらない場所も滑るので、その時はいったんデータを貯めておいて、繋がったら通信開始。インラインスケートは、日没後は滑れないので、現在スピードも表示してくれて、これまでのペースも記録していて、そこから後どれぐらい頑張って滑ればよいかを示してくれる機能も必要。大抵インラインでロングランなどを試みる人間は、無理しがちなので、脈と脳波で、そろそろ休まないと死にますよ、ぐらいの警告を発する機能もあるとよい。 …真面目にWES7の情報が取れると思って読まれている方…ごめんなさい。このポストはおばかアプリコンテストネタになってしまいました。 滑り終わった後には、その日のロングランをPCで振り返り、同好者と共有。温度センサーと湿度センサーで記録しておいて、その日のロングランの過酷さを自慢する。滑った軌跡を、BingMapに重ね合わせて3D表示で、鳥になった気分で振り返るとか・・・と、以上書いてきましたが、現実的にはコスト的に無理ですかね。他にも、別にWES7でなくても、Windows Embedded CEや、.NET Micro Frameworkの方が、適しているのでは、という声も聞こえてきそうです。確かにその通り。まぁ、クラウド時代なので、バックエンドにサービスを置いておいて、そこにデータを蓄積&そのデータを活用するサービスは、用途に応じて色々なデバイスで使えばいいわけです。 ここに書いた機能を持っていて、軽くて装着感の良いデバイス、半ば本気で欲しい(どこかの技術系大学さん、PBLの題材として使っていただけませんか?)のですが、それはさておき、ポイントをまとめると、 デバイスを差別化するには、コンセプト/アイデアが重要 特定のコンテキストやシーンを想定すると、そのデバイスに必要なUXが出てくる アイデアを膨らませ、必要機能やUXが出てきた後、そのデバイスを実現するプラットフォームを選択する デバイス単体で考えるのではなく、サービスや他のデバイスとの連携も視野に入れる  HWコスト、技術者のスキル・人数で、できることとできないことの折り合い(トレードオフ)をつける ビジネス的に成り立つか検討する あたりでしょうか。このポストは、私が書いているコラム“デバイス+クラウド”の話(あ、そろそろ3回目書かなきゃ)に通じていますが、もう一段ブレークダウン&現実的なレベルでテーマを取り上げて、今後、継続的に語ろうと思ってます。 日本は平地が少なくて、インラインスケート流行っていないので、ビジネス的には無理か。でも米国やヨーロッパでは結構人口いるんだよね。ジョギングやウォーキングでも使えそうだぁ。 最後に、Twitterのアカウントは、embedded_georgeでございます。私のチームのリーダーと同じで独り言は多いんですが、あまりつぶやいていませんのでご注意。


Windows 7 Sensor & Locationを使ってみよう Series !!

今までブログにポストしてきた関連項目の目次です。 Windows Mobile 7 Seriesの発表にあやかり、最後にSeriesをつけてみました。(でへ) では早速過去のポストへのリンクを、まとめて一挙公開です。 「Windows 7 Sensor & Locationを使ってみよう!!」シリーズ http://blogs.msdn.com/hirosho/archive/2009/11/22/windows-7-sensor-location-platform-1.aspx先ずは準備を兼ねて肩慣らしの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/26/windows-7-sensor-location-platform-2.aspxManaged Code(Windows API CodepackのSensor)で、センサーを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/28/windows-7-sensor-location-platform-3.aspxManaged Code(Windows API CodepackのSensor)で、センサーからデータを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/29/windows-7-sensor-location-platform-4.aspx.NET 4のSystem.Device.Locationでロケーションをいぢるの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/08/windows-7-sensor-location-platform-5.aspxNative CodeでSensor COM APIごりごり開発、VC++ Native Codeが書けるなんてかっこ良~いの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/22/windows-7-sensor-location-platform-6.aspx.NET 4 WPF Chartを使って、取り出したデータを見える化だぁ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/02/05/windows-7-api-codepack.aspxサイドスト~リー(番外編):Windows API Codepackに新たな秘密兵器を装着しようぜっ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/03/10/neurosky-mindset-windows-7-sensor-api.aspxサイドスト~リー(番外編):Mindsetで頭の中を覗いてみようっ、の巻ぃ 新しくネタが出たら、順次追加の予定なので、偶にチェックしてねっ!!


Windows EmbeddedベースのデジタルサイネージPlatform登場

最近街角やショッピングセンターで見かける動画広告。ああいったものをデジタルサイネージ(Digital Signage)と呼びます。Digital Signage、今、結構ホットになってきてます。Windows 7ベースのWindows Embedded Standard(WES2011)が今年リリースされる予定ですが、この組込み向けOSと、Intelさんとの共同により、Digital Signage用のWindows Embedded Platformが、先日アメリカで開かれたNRFで発表されました。デモ画像が、Intelさんから公開されているので、紹介します。 http://www.intel.com/en_US/assets/video/resources/consumer-chromeless-video-player-popup.htm?id=f785d230813116225ef74ca6623202d89b6bb35e   このプラットフォームと日本のメーカ各社が持つ優れた技術を組み合わせると、凄いDigital Signageが出来そう。


Managed、Native、.NET Framework?

皆さん、あけましておめでとうございます。 昨日(1/8)は、CEST技術セミナー@名古屋で1セッション、VS2010、TFS2010、.NET4.0等に関する講演させていただきました。ご参加いただいた皆さん、ありがとうございました。参加されていたのは組込み業界の皆さんだったにも拘らず、F#を使っている方が何人かいらっしゃって、ちょっとびっくりです。 参加者の皆さんが一番興味を持たれたのは、おまけで紹介した.NET Micro Frameworkでした。これ、WPFのサブセットのGUI(マルチタッチやジェスチャーを含む)、ファイルシステム、ネットワーク機能を、MMU無の小規模HW上で、無償で使えるミドルウェアなんですね。ソースコードもApache V2.0ライセンスでほぼすべて公開されています。アプリケーションはVisual StudioでC#で開発でき、シミュレータ、実機の両方でソースコードレベルデバッグが出来る優れモノ。是非、使ってみてください。SDKは、http://www.microsoft.com/downloads/details.aspx?FamilyId=77dbfc46-14a1-4dcf-a809-eda7ccfe376b&displaylang=en から、Porting Kitは、http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=16fa5d31-a583-4c0d-af74-f4d5e235d5bc からダウンロードできます。日本でかなり引きが強いので、日本独自のユーザー会を立ち上げようかな、と考えているところでございます。 さて、セミナーやお客様先で良く、.NET とか NativeとかManagedとかっていう用語を何気なく使っているのですが、そういえばWindows系の開発をしたことがない人には馴染みがないんだよなぁと、昨日のセミナーで気付き、じゃぁ簡単に説明してみっかと思い付き、この投稿をしています。 まず、Windowsを使ったシステムでの開発を簡単な図にすると、 こんな感じになります。この図の、Managed Code、Native Codeの部分がアプリケーションや開発者が作るミドルウェアの部分です。この構造は、Windows Embedded CE系でも同じです。 まず、Native Code。これは、OSが提供するWin32API(古くからあるC言語のAPI)や、COM(OSが提供するコンポーネント部品)を使って、おもにVC++を使って開発するものです。メモリ管理(必要なワークメモリの確保や解放)はプログラマーが責任を持って行います。Native Codeはその名の通り?、コンパイルするとCPUで直接実行できるバイナリーコードに変換されます。システムの制御やハードウェアと密に連携する機能(MultimediaやWSD、Sensor & Location、等々)は、Windows OSからCOMでだけ提供されるものが多く、これらの機能をフルに使ったアプリケーションを作る時などはNative Codeでのプログラミングが一般的です。メモリもアドレス指定でアクセスできます。COMはNative Codeでのコンポーネントで、VC++を使って独自に作成して、再利用可能部品として使うことができます。システムフォルダー等を覗くとDLLという拡張子が付いたファイルがありますが、COMはDLL(Dynamic Link Libraryの略)なので、この拡張子の付いたファイルとしてシステム上に存在します。 次にManaged Code。こちらは、.NET Framework上で動作するプログラムです。Native Codeとは違い、CLRというバーチャルマシン上で実行される中間コードにコンパイル時に変換され、CLR上で実行されます。メモリ管理はCLRがやってくれるので、あまり気にする必要はありません。プログラミング言語は、VC++、Visual Basic、C#、F#、その他(Iron PythonやIron Rubyなど動的スクリプト言語)が使えます。.NET Frameworkには、様々な部品が用意されていて、通常のアプリケーションを開発するのに必要な部品がほぼそろっています。加えて、部品群がアッセンブリーという単位でコンポーネント化され、どんなクラスがあって、それらのクラスが何のメソッド、イベント、プロパティを提供しているかという情報(メタデータという)を持っていて、開発環境(Visual Studioのこと)がそれを使ってプログラミングを支援するいろんな機能を提供してくれます。だから、Native Codeに比べて実にプログラムを書きやすい。個人的な体感速度でいうと、数十倍は生産性が違います。特に動的にリソースの確保解放が必要な文字列操作では威力が大きい。ただ、中間コードで動くこと、メタデータを持っていることのために、Native Codeに比べて処理速度は遅く(最近は十分早い気もしますが)、プログラムのサイズは大きくなってしまいます。加えて、メモリのアドレス指定によるアクセスができなかったり、OSが提供するWin32やCOMのすべての機能が.NET Frameworkで提供されてもいないので、濃ゆいプログラムは書けません。ただ、COMやWin32のAPIをManaged Codeで使うためのInterop機能が.NETでは用意されているので、それらをManaged Codeで利用することはできます。この場合、Native Code側でのデータ保持形式とManaged Code側でのそれが異なるため、CLR内で、一々変換(マーシャリングといいます)処理が発生するので、注意が必要。 以上、説明したような特性のため、組込みシステムのようなハードウェアリソースが少ない、CPUパフォーマンスが低いといったような場合は、アプリケーションのどこをManaged Codeにして、どこをNative Codeで構成するかを熟考する必要があります。まぁ、システムのすべてがパフォーマンスが厳しいシステムなんてそうそうないので、一般的には、パフォーマンスを考慮しなければならない基本処理の部分をそれぞれ括ってNative Codeで部品化し、アプリケーションのロジック部分等は、Managed Codeでというスタイルになります。更には、最近のリッチなUIを定義するために、XAML(WPFやSilverlight)を使うのが、最近のWindows系開発のトレンドです。 で、.NET Frameworkですが、これはManaged Codeを書くのに必要なライブラリー群の総称名であり、また、単なるライブラリーだけではなく、それを使ってプログラムを書くためのフレームワークも提供しています。.NET Frameworkには、Windows 7やServer向けの.NET Framework(ふつうFull .NETって呼んだりします)と、Windows…


Windows Embedded Server

皆さん、Windows Embedded Serverという製品をご存知ですか? 今年新たにWindows Embedded 製品ファミリーに加わった製品群です。 http://www.microsoft.com/windowsembedded/ja-jp/products/server/default.mspx Windows Server 2003、2003 R2、2008、2008 R2を、工場の制御システムをはじめとする各種機器制御、ルーターその他、特定用途向けのライセンスです。使用形態が限定目的に限られますが、中身は通常と同じで、通常のライセンスより安く購入できます。この製品の最大の特徴は、サポート期間がその他のWindows Embedded製品群と同様に、15年間と長く設定されているところにあります。一度稼働したら長期間使用される特定用途向けとしてお使いください。専用システム用のWebサービス、ストレージのほか、仮想機能を利用したプライベートクラウド的な使い方もできます。 他にも、Windows 7のEmbeddedライセンスも販売開始しています。 http://www.microsoft.com/windowsembedded/ja-jp/products/weenterprise/default.mspx こちらも中身はデスクトップと全く同じで、デスクトップ上で開発したプログラムはすべて動作可能です。


ET2009の特別セッションC-3でお見せしたビデオのありか

ET2009 特別セッションC-3にお越しいただいた皆様、ありがとうございました。 「組込み機器とクラウドの融合による新しい未来」でお見せしたビデオは、 http://www.officelabs.com/Pages/Envisioning.aspx で公開されております。このビデオに描かれた機器、サービスをWindows Embedded、.NET Micro Framework、Windows Mobile、Windows Azureで実現していきませんか。