Visual Studio 2012 RCのテンプレート – VC++によるコンポーネント作成とSDK作成

前回のポストに引き続き、Visual Studio 2012 RCの機能を説明しているMSDNサイトの紹介です。 独自に作成したC++の共通ライブラリを提供する場合、SDK化して配布すると使い勝手が良くなります。 SDKの作成方法は、 http://msdn.microsoft.com/en-us/library/hh768146(VS.110).aspx で説明されています。Toolboxに独自の項目の追加やアイテムテンプレートの追加も出来きるので、カスタムコントロールやライブラリを使う時の定型コードの生成機能など、ライブラリを使う際に便利な機能をSDKを通じて提供可能です。 このページでは更に、Walkthrough形式で、C#、C++を使ってSDKを作成する方法が解説されています。 C#http://msdn.microsoft.com/en-us/library/jj127119(VS.110).aspx C++http://msdn.microsoft.com/en-us/library/jj127117(VS.110).aspx#createclasslibrary 画像処理や音声処理などの数理計算ロジック、特定用途のグラフィックス、業界標準IF向けのプロトコルスタックなど、様々なアプリケーションで利用可能なライブラリ開発のスキルを持っている方、このページを参考にSDK作成にチャレンジしてみてください。          

2

Visual Studio 2010 Express Tips

Visual C# 2010 ExpressやVisual Web Developer 2010 Expressのメニューバーは、デフォルトでは必要最低限の項目しか表示されていません。 他のエバも、何かの折に話したり書いていることですが、偶にこのままだとビルドが正常に出来ない場合もあるようなので、製品版のVisual Studioのメニューバーに表示されているその他の項目(全てではない・・・と思う)を表示する方法を紹介します)。 ExpressエディションのVisual Studioを起動します。メニューの””を選択し、”設定”を選択します。表示された項目で”上級者”を選択します。これで設定が変わり、メニュー項目が増えます。例えば”ビルド”メニューなどが追加されます。 製品版をお使いの開発者で、Expressエディションのメニューの少なさに苛立っている皆さんは、早速チェンジ!! 以上、小ネタTipsでした。

2

NuGet?

2011/11/9に担当したTech Fieldersセミナーで、紹介したWindows Azure Toolkit for Windows Phoneですが、オープンソースをベースにした諸々のコンポーネントやアイテムを簡単にプロジェクトに追加できるNuGetなるものを活用しています。 NuGet?”ナゲット”ではなく”ぬげっと”と読むらしいのですが、(http://tools.rightclicksright.net/data/frame_625513.aspx あたりで説明されている)(Bingで検索した時に変なリンクは見ないでね)結構便利なので紹介しておきます。 Windows Azure Toolkit for Windows Phone、これは、http://watwp.codeplex.com/ からダウンロードして、Exeファイルを実行して、解凍して出来上がった、C:\WindowsAzure\WATWindowsPhone.C#にあるSetup.cmdをダブルクリックすると、インストールが開始(事前に、Windows Phone SDKとVisual Studio Tools for Windows Azureをインストールしておくこと)されて、仕込みはOKになるのですが、この過程で、Visual StudioにNuGet Package Managerなるものがインストールされるんですね。 何が出来るかは、https://channel9.msdn.com/posts/Windows-Phone-Push-Notifications-and-Windows-Azure でPush NotificaitonをサポートするWP7アプリ+Windows Azureサービスを作る例が紹介されているので、これを見ていただければわかると思います。 要するに必要なコンポーネントやライブラリ一式、ソースコード一式がインポートされ、プロトタイプの出発点レベルのものが簡単に出来上がります。(まぁ、APIとかは隠蔽されてしまうので、甘やかされ放題な気もしますが…) 私の場合、Channel9で紹介されているようにConsoleでのInstall-Packageは、上手く動かなかったのですが、ソリューションエクスプローラーで機能を追加したいプロジェクトを右クリックして、NuGet Package Managerを選択し、ConsoleでInstall-Packageでキー入力している文字列を検索文字列に入力してやれば、該当するPackageが出てくるので、それをインストールすれば上手く動きました(GUI的な観点からするとこっちのほうが正当な気がする)。上手く動かない場合は、これを試してみてくださいね。 オープンソース系で、皆に色々使ってもらいたいパッケージを提供するにはこの仕組みを使えばよいかも、です。.NET Micro Framework版とか作ってみようかなんて気持ちがむらむらと湧き上る今日今夜です。 まぁ、兎に角、Windows Phone 7 SDKと、Visual Studio Tools for Windows Azure、Windows Azure Toolkit for Windows Phone(のSetup実行中に表示される足りないコンポーネントもね)をインストールして、紹介したURLのビデオストリームどおりにやってみてください。Phoneアプリも、AzureサービスもEmulator上で動きます。

0

ETロボコン2010関連情報 – お疲れ様でございます

夏から秋にかけて…組込みエンジニアにとってこの季節はETロボコンの季節です。 今年は、北海道、北陸、沖縄の3地区大会増と、ますます、盛り上がっていますね。私も、南九州地区大会を皮切りに、南関東大会、北陸大会、関西大会、東海大会と、計測システムのフォローでお邪魔しています。懇親会では学生さん向けにDreamSparkを使うための認証コードを配っていますが、学生の皆さんが嬉しそうにもらってくれる姿は、非常に嬉しいですね。是非実際にダウンロードして活用してください。東海大会では、デジタルセンセーション(株)さんによるSilverlight+IIS Ream-time Streamingによる、実況ストリーミングにも出会い、うれしい限りです。 さて、ずいぶん前にETロボコン参加者向けに書いたブログ投稿、大分時間がたって散発的な感じなので、以下のリストにまとめておきますね。チャンピオンシップに参加されるチームの皆さん、来年リベンジするぞという皆さん是非、見てくださいね。 Visual Studio 2010で、NXTのコードを開発する方法 役立ちそうなVisual Studio 2010の新機能 記述したUMLモデルからいろんなものを生成する方法 ETロボコンのSoftware Factoryを作ってみよう DSL Toolkitで自分独自のモデル言語を作ろう(たとえば走行戦略エディターとか) 最後の二つはVS2005で説明していますが、VS2010でも同様なことは可能です。ここで説明している内容は、私もモデル審査員を務めているMDDロボットチャレンジでも活用できるので、そちらのコンテスト参加者も参考にしてみてくださいませ。 他に、ETロボコン向けに計測システムを提供しているわけですが、こちらは、元々ボランティアを集めて大勢で開発していきたいと思っているので、やってみようかな、とか、コードだけでも見てみたいという方は、embedded-george@live.jp までメールをください。ちなみに今は、酒田sAsさん、東海大の学生さんが参加を表明してくれています。使っているテクノロジーは、 WPF: Windows Presentation Foundation WCF: Windows Communication Foundadation Entity Framework MEF: Managed Extension Framework Office InteropによるExcel拡張 Silverlight その他 です。基盤として Windows 7 SQL Server 2008 Excel 2010 を使ってます。 12月のチャンピオンシップに向けて、見栄えの改造や機能の追加をやっていく予定なので、参加してくれるとありがたし。計測システムについては、別途、投稿の予定です(昔もそんなことを書いたような気がするが・・・)計測システム…Azureやリアルタイムストリームと連携して、競技状況とか配信したいんだよね…

0

.NET Micro Framework V4.1ベータ版公開

数百KバイトのROM/RAM、しかもMMU無しでC#が実行できる環境、.NET Micro Framework のバージョン4.1のSDK/Porting Kitベータ版がMS Connectを通じて公開されています。 https://connect.microsoft.com/netmf SDK/Porting Kitをダウンロードするには、Live IDでサインインする必要があります。Connectサイトの右上の”ディレクトリ”をクリックし、表示されたページの左側の”フィードバック対象外製品を表示”をクリックすると、.NET Micro Frameworkの項目が表示されます。SDK V4.1はVisual Studio 2010でもC#による超小型機器向けアプリケーションを開発する事ができます。また、過去のバージョンの.NET Micro Frameworkライブラリを選択する事も可能になっています。実際にお試しください。 .NET Micro Frameworkは、Apache V2.0ライセンスで提供されています。T-KernelやμITron上にポーティングする事も可能です。ネットワークやタッチパネル機能が必要な家電や車載機器等々で、是非ご活用ください。

0

Microsoft Robotics Developer Studio最新版リリース

先日、マイクロソフトのロボティクス制御技術向けの開発・実行環境のMicrosoft Robotics Developer Studioの最新版がリリースされました。Microsoft Robotics Developer Studio 2008 R3です。(以下MSRDS2008R3と略します) http://www.microsoft.com/robotics いっとき、このプラットフォームは、有償での販売・利用になっていましたが、最新版では、無償提供に変わりました。開発環境だけでなく、多ノードで分散、並行処理を行うための、プロトコル、ランタイムも無償提供になったようです(詳しくは、MSRDS2008R3の使用許諾権説明をご参照ください)。サービスの開発、サービス部品の組み上げが、Visual Studio 2010でもできるようになっています。相変わらず豊富なサンプルが用意されています。サンプルの中には、部屋の中や砂漠、都市など、シミュレートしたいロボット等を配置すればすぐに使えるシミュレーション世界や、空気抵抗をシミュレートするサンプルも用意されています。私はMDDロボットチャレンジ(気球ロボット制御)の審査員も担当させていただいていますが、そちらでも利用可能かもしれません。MSRDS2008R3は、本格的な物理シミュレータを内蔵し、表示はWPF、モーションはXNA Frameworkを使っています。XNAの使い方のサンプルとしても最適です。使い方をマスターしたい方は、サンプルのほかにチュートリアルも豊富(英語Onlyですが)なので、そちらをお試しください。 以前のバージョンではWindows Embedded CE上で動かすためのCompact Framework版のランタイムライブラリーも提供されていましたが、最新版ではなくなり、Windows XP/Vista/7のみが提供されています。Windows以外(CEも含め)で活用したい場合には、公開されているCCR/DSSの仕様を見て、それぞれ実装する必要があります。基本HTTP/SOAPを使ったプロトコルなので、WCFやプロトコル実装に詳しい方でしたら可能なレベルです。 Visual Studio 2010で、サンプルをビルド&実行するには、サンプルの全てのslnファイルをVS2010で開き、VS2010プロジェクトに変換、ビルドを行う必要があります。一部ビルドが通らないプロジェクトが途中で出てきますが、めげずに、他のソリューションのビルドを成功させつづけ、必要なプロジェクトのビルドが終われば、ビルドは可能です。 ロボティクスソフトウェア開発環境を検討されている皆さん、Visual StudioのExpress Editionでも試してみることは可能ですので、まずは、ダウンロード&サンプル実行してお試しいただければと思います。

0

ETロボコンの開発環境としてVisual Studio 2010を使おう!!

ETロボコンに参加を予定されている皆さん。コーディング&ビルド&ロード環境としてVisual Studio 2010を使ってみませんか?単なるテキストエディターよりずっと使い勝手が良いですよ。 ここで紹介する方法は、Visual Studio 2008やExpress Editionでも使えます。 Visual Studioは、外部ツールをあらかじめ登録しておいて、登録した外部ツールをメニューから起動することができます。また、ソースコード一式をVisual Studioの開発作業単位であるプロジェクトとして作っておけば、便利なC++コードエディタやその他もろもろの便利機能を活用することができます。 ではさっそく使い方を以下に説明しますね。 まず、準備として以下を実行します。 1.メニューの”ツール”→”外部ツール”を選択し、”外部ツールダイアログ”を開く 2.”追加”ボタンをクリック([新しいツール1]と表示される)し、”タイトル”、”コマンド”に下図のように入力し、”出力ウィンドウを使用”にチェックを入れる。そして、”OK”をクリックする。  次に、ソースコードをエディット&ビルド&ロードするためのプロジェクトを作成します。 1.メニューの”ファイル”→“新規作成”→”プロジェクト”を選択 2.Visual Studio C++の”全般”を選択し、表示された”メイクファイルプロジェクト”を選択、”名前”を入力し、”ソリューションのディレクトリを作成”のチェックを外し、”OK”をクリック。表示されたダイアログの”完了”をクリック。  プロジェクト一式が出来上がる。その状態で・・・ 3.メニューの”プロジェクト”→”プロパティ”を選択。  4.左ペインの、”構成”→”VC++ディレクトリ”を選択  5.”インクルードディレクトリ”の欄に、以下を記入。 C:\cygwin\GNUARM\arm-elf\include; C:\cygwin\GNUARM\include; C:\cygwin\nxtOSEK\ecrobot\c; C:\cygwin\nxtOSEK\ecrobot\nxtcommfantom; C:\cygwin\nxtOSEK\ecrobot\nxtway_gs_balancer; C:\cygwin\nxtOSEK\ecrobot\bios; C:\cygwin\nxtOSEK\toppers_osek\include; C:\cygwin\nxtOSEK\toppers_osek\kernel; C:\cygwin\nxtOSEK\lejos_nxj\src\nxtvm\platform\nxt; C:\cygwin\nxtOSEK\toppers_osek\config\at91sam7s-gnu; C:\cygwin\nxtOSEK\toppers_osek\config\at91sam7s-gnu\lego_nxt ※cygwin、nxtOSEKをデフォルトでインストールした場合。 6.mk.cmdの作成 ”ソリューションエクスプローラー”の”ETRoboConNXTプロジェクト”を右クリックし、”追加”→”新しい項目”を選択します。そして、ダイアログの左ペインで、”Visual C++”を選択し、リストから”テキスト”を選択し、”名前”にmk.cmdと記入して”追加”ボタンをクリックします。 mk.cmdをエディタで開き、以下の内容をインプットします。 echo off set path=C:\cygwin\usr\local\bin;C:\cygwin\usr\bin;C:\cygwin\bin del /Q *.rxe make all IF EXIST *.rxe sh rxeflash.sh 7.コンパイル対象ファイル群(ソースコード、ファイル、makefile等)をプロジェクトに追加 ※既存ソースコードの追加は、”ソリューションエクスプローラー”の”ETRoboConNXTプロジェクト”を右クリックし、”追加”→”既存の項目”を選択、表示されたダイアログで、追加したいヘッダーファイル(.h)、ソースファイル(.cpp)を選択。…

0

.NET Framework 4.0のCode Contractsを組込み開発で活用する

今、ある講演向けに、再度、Visual Studio 2010、.NET Framework 4.0の新機能をじっくり見てます。昔私はオブジェクト指向とかモデル駆動型開発とか、CMMとかで組込みソフトウェア開発プロセス改善をやっていたこともあり、ソフトウェアの品質や生産性が上がりそうなトピックスを見ると、直ぐに体が反応してしまいます。 次のポストは、UMLから組込み機器向けのC/C++コードを生成する方法を紹介しようと思っていたのですが、Code Contractに惹きつけられてしまったので、そちらを紹介します。 昔々、Bertrand Meyerさんが、“Design By Contract”(以下DBCと略します)という概念を提唱しました。(所謂、「契約による設計」ってやつですな) DBCを簡単に紹介すると、コードを利用する側に対して、このコードを利用する場合、 事前条件(Pre Condition):こういう条件が整っている時に、このコードは正しく動きますよ。 事後条件(Post Condition):このコードが正しく動いたら、こういう条件になりますよ。 不変条件(Invariant):このコードが動いてもこの条件は変化しないよ。 という表明であり、逆にコードを実装する側にとっては、この3種類の条件を満たすよう実装しなければならない、というプラクティスです。こうすることによって、コードの仕様が明確になる、実装側と利用側のコミュニケーションが良くなる、バグが減って品質が上がり、生産性が上がる、というメリットを得ることができます。よく見かける(見かけないか普通?)、C++やJavaのassertを使って、実装のデバッグの利便性を高めているのは、道具は使っているけれど、DBCではないのでご注意。 そしてDBCを.NET上で積極的に活用できるように、.NET Framework 4.0に、Code Contractsという機能が追加されました。 ちょっと紹介すると、 using System;using System.Diagnostics.Contracts; class CFoo {    ….    [ContractInvariantMethod]    // Invariantを使う場合に必要    public int MethodFoo(int x)    {        Contract.Requires(x!=0&&this.Something>0); // 事前条件。引数は非ゼロ、Somethingプロパティは正        Contract.Ensures(Contract.Result<int>()!=0);// 事後条件。戻り値は、非ゼロ        Contract.Invariant(this.Something!=0);      // Somethingプロパティは非ゼロ        ….    } こんな感じになります。詳細は、http://msdn.microsoft.com/ja-jp/library/dd264808.aspxをご覧いただくとして、Code Contractsを記述すると、以下の3つのケースで、品質を上げるのに寄与することになります。 動的テスト時 静的テスト時 ドキュメンテーション これ、TDDのPracticeを廻すのに凄く便利だと思うのですが、残念ながら、Managedコードでしか使えないんですね。 で、これでこのポストを終わらせてしまうと、タイトルに対して嘘をついたことになってしまうので、これから組込みの濃い世界に踏み込んでいきます。私が思うに、Desktop向けやWeb向けのソフトウェアは、開発環境や実行環境がリッチなので、障害解析は比較的楽なのに対して、組込み機器向けソフトウェアは実行環境が何よりプアなので、DBCの様な仕組みがあれば非常に助かると思うんですよね。 さて、組込み機器開発の場合、Windows目線で分類すると、以下のケースが考えられます。 Windows Embedded…

1

Visual Studio 2010のUMLモデルからいろんなモノを生成する – その1

さて、単にモデルにアクセスするだけでは、実につまらないので、早速アクセスして取得した情報を活用して、いろんなモノを生成する方法を説明します。 まずはテキストファイルです。多分すぐ思いつくのは、前回説明したやり方でUMLモデルにアクセスし、TextWriterのWriteLineを使ってテキストを作成し、ファイルに流し込む方法でしょう。しかしこれだと、生成するテキスト一行毎に、 writer.WriteLine(“お名前は?{0}…”,model.Name,…); な感じになり、凄く見通しも悪く、直観的でないですね。こんな時には、ずっと前からVisual Studioの機能として提供されている、T4 Templateを使います。が、なんと、Visual Studio 2010ではText Templatingの機能が大幅に強化されていますっ!!(パチパチパチパチ)。 MDD好きの私には堪りません。前回作成したソリューションをさっそく開いてください。そして、WPFアプリケーションプロジェクトを右クリック→追加→新規アイテムしてください。テンプレートの一覧が表示されますね。ずっと探していくと、“Preprocessed Text Template”というテンプレートがあります。 見つけられましたか?このテンプレートを選択してT4 Templateファイルを作成します。名前はPreTextTemplateRule.ttとしておきます。このファイルには、なんと!、コードビハインドファイル(PreTextTemplateRule.tt.cs)が自動的に作成されているんですねぇ。 VS2008までのT4 Templateは、プログラミングの中で変換を起動するには、結構面倒くさいコードが必要だったのですが、このCSファイルに変換を実行する為のメソッド(TransformText)をはじめとして必要なコードが全て自動生成されているんです。超便利です。 このCSファイルの中に、ファイル名と同じ名前のクラスが作成されています。このCSファイルは、T4テンプレートの記述を変えると、自動的に再生成されるようになっています。C#にはPartialクラスという便利な機能があるので、自動生成されているCSファイルに手を入れなくても、このクラスを拡張できちゃうんです。先ずは、C#ファイルを一個作成(名前はPreTextTemplateRuleCode.csとしておきましょう)します。そして、以下のようなPatialクラスを定義します。 using Microsoft.VisualStudio.ArchitectureTools.Extensibility;using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml; namespace WpfApplModelAccess{    partial class PreTextTemplateRule : PreTextTemplateRuleBase    {        private IModelStore m_ModelStore;        public PreTextTemplateRule(IModelStore modelStore)        {            m_ModelStore = modelStore;        }    }} これで、T4テンプレートの中から、UMLモデルが見れるようになります。 Partial Classって、やっぱり凄いです。この機能がないと、GoFの一人のJohn Vlissidesの本に書いてあった、“Generation Gap”のお世話になる必要があって、コード量も増えてしまいます(実は、Preprocessed Text Templateを新規作成したときにできるコードビハインドC#コードでは、このパターンが使われているようですが)。で、T4テンプレートの変換をプログラムで実行するには、以下のようにプログラムを書きます。 IModelStore modelStore = …PreTextTemplateRule pttr = new PreTextTemplateRule(modelStore);String…

0

Visual Studio 2010のUMLモデルにプログラムからアクセスする – その1

で、舌の乾かぬうちに、ポストします。 私は昔から、UMLでも何でもよいのですが、モデリング技術を使って仕様定義、設計をきちんとしたら、そこから可能な限りの下流成果物を生み出すべきだ(それも足し算的にではなく掛け算的に)と思っている人でした。まぁ、絵をかいてコミュニケーションすれば、言葉だけより何百倍もチーム開発の効率が上がる事は否定しませんけれど。折角、開発でモデリング技術を駆使するなら、コミュニケーションにも役立ち、下流成果物もきちんと生成できるモデルであった方が、そして更にはプログラムもあまり書かないで、高度な機能が実現できた方が、(プログラマーは面白くないかもしれないですけど)、良いと思うんですよね。まぁ、私の私見なので、ご容赦 前置きはこれぐらいにして、Visual Studio 2010でUMLモデルを書いて、プログラムでその内容を取り出す方法を説明していきます。先ず必要なのが、Visual Studio 2010 Ultimateです。ライセンスのない方は、評価版でも良いので、是非、お試しを。 そして、下の二つのSDKをインストールします。 Visual Studio 2010 SDKhttp://www.microsoft.com/downloads/details.aspx?FamilyID=47305cf4-2bea-43c0-91cd-1b853602dcc5&displaylang=en Visual Studio 2010 Visualization And Modeling SDKhttp://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0def949d-2933-49c3-ac50-e884e0ff08a7※RTM版の2010SDKより早く公開されていますが、大丈夫のようです。 これで、準備は完了です。早速Visual Studio 2010を起動しましょう。そして、空のSolutionを一つ作り、アクセス対象のUMLモデルを格納するためのModel Projectを一つ作ります。名前はTargetModelとしておきましょう。そのプロジェクトに、一つUMLクラスダイアグラムを作って、幾つかのクラスを定義しておきます。 まぁ、こんな感じでいいでしょう。 次に、SolutionにWPFアプリケーションプロジェクトを一つ追加します。そして、プロジェクトのプロパティを開き(プロジェクトを右クリック→“Property”)、Applicationタブの“Target framework”を“.NET Framework 4”に設定します。※ここ重要。デフォルトは、.NET Framework 4.0 Client Profileになっていて、これが選択されていると、必要なすべてのAssemblyが表示されないようです。 そして、プロジェクトのReferencesを右クリックして、必要な以下のAssemblyを追加します。 Microsoft.VisualStudio.ArchitectureTools.Extensibility Microsoft.VisualStudio.Modeling.SDK.10.0 Microsoft.VisualStudio.Modeling.SDK.Diagrams.10.0 Microsoft.VisualStudio.Uml.Interfaces System.Component.Composition こんな風になります。  Modeling ProjectのTargetModelプロジェクトを選択するために、System.Windows.Formsも参照追加しておきましょう。 さてと、下図のようにXAMLを定義して、 “・・・”ボタンを押して、アクセスするModel Projectを選択するダイアログを表示して、“Retrieve”をクリックすると、UMLのクラスを抽出して下のTextBoxにクラスを表示します。 “・・・”ボタンをクリックしたときのハンドラーを、 System.Windows.Forms.OpenFileDialog dialog =    new System.Windows.Forms.OpenFileDialog();dialog.ShowDialog();tbTargetModel.Text = dialog.FileName; のように書いて、上のTextBoxに選択したModel Projectのファイルパスを格納しておきます。…

0