セミナー開催のお知らせ

直近ですが、来週9月19日に、「組み込みシステム開発入門」と題して、MSDN オフラインセミナーを開催します。このセミナーは、シリーズものとして2か月に一回ぐらいを目安に連続して、組込みシステム開発の視点から、レクチャーを行っていく予定です。参加は無料ですので、是非ご参加ください。http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032349233&culture=ja-JP また、再来週の9月27日に、「Mobile Client Software Factory」をアーキテクトの皆様を対象に開催します。こちらも参加は無料です。ぜひご参加ください。http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032349785&culture=ja-JP  

0

T4 Templateを使ってみよう!

このページの記載事項を試すには、Visual Studio 2005 Professional以上が必要です。また、Visual Studio 2005 SDKのインストールもお願いします。Visal Studio 2008でも使用可能です。 先ずは、Visual Studioで新しいプロジェクトを作成しましょう。そして作成したプロジェクトに、拡張子を”tt”として、テキストファイルを新規に追加します。ファイルの名前は、”sample.tt”として話を進めます。ソリューションエクスプローラーでsample.ttを選択し、プロパティを表示してみてください。カスタムツールの項目の値が、”TextTemplatingFileGenerator”に自動的に設定されているのがわかるでしょう。この設定により、sample.ttファイルを変更し保存するたびに、TextTemplatingFileGeneratorによって解釈され、sample.ttの内容に従ったテキストファイルが生成されます。 sample.ttの内容は、T4 Templateで決められた文法に従って記述します。T4 Templateでの記述内容は大きく5種類に分類できます。3種類とは テンプレートに関するDirective宣言 テキスト部分 変数のテキストへの変換  テキストへの変換に必要なロジック メソッドの定義 以下に順番に説明していきましょう。 先ず1番目の「テンプレートに関するDirective宣言」です。テンプレート内で、<#@ directive variable=”value” ・・・#>の形式で書かれた部分がDirective宣言です。Directive宣言は、テンプレートの先頭に位置します(テキスト部分は先に定義されていても良いようです)。Directive宣言は、テンプレートをコントロールする様々な宣言です。例として、DSL Designerで作成したDSL Modelに対するテンプレートの場合は、 <#@ template inherits=”Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation” debug=”true”#><#@ output extension=”.txt” #><#@ DSLName processor=”DSLNameDirectiveProcessor” requires=”fileName=DSLModel.sdfd'” #>の様な記述になります。最初のtemplateは、テンプレートがModelingTextTransformationクラスを継承して定義すること、デバッグモードで実行することを指定しています。二番目のoutputは、このテンプレートを実行したときに生成されるファイルの拡張子を指定しています。3行目の宣言と合わせ、このテンプレートはDSLModel.txtという名前のファイルを生成します。3行目は、このテンプレートにデータを供給するプロセッサーを指定します。DSLNameやDSLNameDirectiveProcessorは、DSLNameの部分がそれぞれのDSLの名前を指定します。DSLNameDirectiveProcessorは、DSLを定義した時に自動的に生成されるクラスです。この3行でfileNameとしてDSLModel.sdfdを指定していますが、これは、このファイルが変更される度に、子の変換テンプレートが実行されることを意味します。他に、使用できるDirectiveには、ImportやIncludeなど多数あります。詳しくは、 MSDN→MSDN Library→Development Tools and Languages→Visual Studio 2005→Visual Studio→Visual Studio SDK→Domain-Specific Language Tools → Creating Domain-Specific Languages →Generating Artifacts Using…

0

DSL Designerで構築したDSL Editorで描いたモデル内容へのアクセス方法

Visula Studio 2005 SDKをVisual Studio 2005(Professional Edition以上)にインストールすると、DSL Toolkitという、独自のモデル(DSL:Domain Specific Language)向けモデルエディタを構築するためのツールが使えるようになります。※DSL ToolkitはVisual Studio 2008ベータ版でも使えます。 独自のモデルエディタの構築方法は、http://www.microsoft.com/japan/msdn/architecture/dsl/default.aspxの最後の方で紹介されている、3つのホワイトペーパー DSL Toolsのライフサイクル全体の作業に関するホワイトペーパー DSL Toolsで作成したグラフィカルデザイナのカスタマイズ方法について DSL Toolsで表現できるグラフィカル表現とモデルの関係について を参考にしてください。では、構築したモデルエディタを使って描いたモデルから、モデルの定義情報を取り出して、様々な別の成果物に変換する方法を紹介していきましょう。 モデルエディタは、モデルの意味を定義する“メタモデル”とモデルの見栄えを定義する“グラフィカル要素”の二つを定義することによって構築することができます。DSL Toolkitでメタモデルを定義すると、モデルにアクセスするためのライブラリが自動的に生成されます。このライブラリを利用することにより、モデルエディタを使って描いたモデルの記述内容を全てプログラマブルに参照することができます。モデルの内容を参照するライブラリは、メタモデルの定義のときに指定した、名前空間で定義されます。その中に、メタモデルのルートモデルのドメインクラスの名前を持つクラスが用意されています。モデルエディタを使って描いた各モデル図の内容は、このルートモデルを通じて参照することが可能です。また、メタモデル上に定義されたドメインクラスは、それぞれメタモデル上で定義されているドメインクラス名と同じ名前のクラスが、自動的に同じ名前空間で生成されています。加えて、メタモデル上で定義されたDomain RelationshipのRole名と同じ名前のプロパティがそのRole名が付いている側のドメインクラスから生成されたクラスに用意されています。例えば、前述のホワイトペーパー1で説明されている例の場合では、名前空間がFabrikam.DSL、ルートモデルがWizardUIPModelという名前になっています。このクラスには、メタモデル上で定義されている、WizardUIPModelとWizardPageElement間のEmbedding RelationshipのWizardUIPModel側に記載された”Elements”というロールに対応した、”Elements”というプロパティがあり、WizardUIPModelのオブジェクトのElementsプロパティをコールすると、WizardUIPModelオブジェクト内で定義されているWizardPageElementオブジェクトのリストを取り出すことができます。これらメタモデル定義から生成されるクラス群は、DSL DesignerでSolutionを作成した際にそのSolution内に用意されるDslプロジェクトのGeneratedCodeフォルダー内に、密かに生成されているDomainClasses.csで定義されています。 では、以上を踏まえ、WizardUIPのモデルエディタで作成されたモデルファイルを読み込み、モデルの記述内容を取り出すサンプルコードを紹介しましょう。モデルファイルの名前を、ModelFile.uipと仮定します。 StringBuffer buf = new StringBuffer();using (Store store = new Store()){    store.LoadDomainModels(        typeof(CoreDesignSurfaceDomainModel),        typeof(WizardUIP)));    using (Transaction t = store.TransactionManager.BeginTransaction(“LoadModel”))    {        WizardUIPModel root = WizardUIPSerializationHelper.Instance.LoadModel(store,”ModelFile.uip”,null,null);        buf.AppendLine(“**** WizardUIP Model Contents ****”);        foreach (…

0

Robotics Studio

皆さん、Robotics Studioをご存知でしょうか?Robotics Studioは、Microsoftが提供するロボット制御向けプラットフォーム環境です。昨年Version1.0が公開され、5月に1.5(CTP)が、そして7月に1.5がリリースされています。ロボット向けアプリケーションは、疎結合コンポーネント群が並行して実行するアプリケーションであると特徴付けし、その様な特徴をもつアプリケーションを構築するための、実行環境とオーサリング環境、そして、シミュレーション環境を提供しています。 Robotics Studioでは様々な新しい技術が取り入れられています。疎結合コンポーネント間のメッセージのやり取りはSOAをベースとしたDSSSP(Decentralized Software Service Protocol)が使われ、並行実行環境は、.NET Frameworkのライブラリとして提供されるCCR(Cuncurrency and Coordination Runtime)を使っています。また、プログラミング言語としては、VPL(Visual Programming Language)というデータフローを基本とした新しい言語が用意されています。プログラミングはVPL以外にもC#やVBなど.NET言語群も使えます。他にSimulation環境ではWPFやXNAといった技術が使われています。 Robotics Studioは、以下のサイトからダウンロードして使うことが可能です。 http://www.microsoft.com/robotics/ ここから1.5をダウンロードしてインストールすると、デフォルトで、C:¥Microsoft Robotics Studio(1.5)というディレクトリに必要ファイルが格納されます。このディレクトリーの下にsamplesというフォルダーがあり、各種チュートリアルやサンプルコードが入っているので、色々と試してみることができます。最新バージョンのひとつ前のCTP版ではいくつか不具合があり、動かせないサンプルがあったので、CTP版をインストールしてうまく動かなかった方は、一旦アンインストールして、最新バージョンをインストールしなおしてみてください。また、samples¥simurationtutorials¥tutorial2を試す場合、そのままビルドして動かない場合は、以下の手順を踏んでください。 samples¥misc¥simpledashboardのSimpleDashboard.slnをVisual Studio 2005で開く。 ソリューションを全てリビルドする デバッグ実行してみる コマンドウィンドウに赤字でエラーが表示される場合は、SimpleDashboardの参照設定の下のGameController.Y2006.M09.Proxyを一旦削除して、リビルドされたGameController.Y2006.M09.Proxy.dll(sample¥misc¥GameController¥Proxy¥obj¥debugにあります)を参照に追加しなおして、リビルドしてください。 デバッグ実行するとDashboardとSimulationウィンドウが現れます。 Dashboardの右上のRemote Nodeにlocalhostと入力して、Connectボタンを押すとサービスリストが表示されます。LegoNXTMotorBaseをダブルクリックし、左のDriveボタンをクリックします。その後、十字が描かれた球をマウスで動かすとSimulator上のロボットが動きます。 この後、tutorial2のソリューションをVisual Studioで開き、ソリューションのビルド、実行するとうまく動きます。Simulation環境で、Physics→Settingで表示されるダイアログで、Gravityを0にして実行してみてください。面白いことが起こります。また、Mode→Editで表示されている物体の属性を変えることができます。私も全ての属性の意味を把握しているわけではありませんが、設定を変えるとSimulationの世界の設定が変わります。 Lego MindstomrsやRoombaなどデフォルトでいくつかのロボットが用意されていて制御することができるのでお手持ちの方は実際に試してみてください。また、既に布留川さんという方が書かれた本(「Microsoft Robotics Studioプログラミング」ISBN978-4-8399-2383-9)も出版されていますのでそちらも参考にしてみてください。 Robotics Studioで使われている基本技術は興味深いものが多いのでまた後ほどこのブログで紹介しようと思います。  

1

MDDイニシアティブ学習会

7月27日の金曜日に、MDDイニシアティブ学習会で、MDDロボットチャレンジ参加者向けにSoftware Factoriesの説明を行ってきました。20分と短い時間でSoftware Factoriesの全容を説明することはできませんでしたが、今回はDSL(Domain Specific Language) EditorやDSLで記述されたモデル情報を使ってプログラムなどへ変換するためのテンプレートについて、主に紹介しました。 MDDロボットチャレンジは、情報処理学会が主催する気球型ロボットの制御コンテストです。このコンテストはMDD(Model Driven Development)がつくことからもわかるように、単に気球型ロボットの実演を競うだけでなく、モデル駆動型開発により開発したソフトウェアの設計内容や開発プロセスをモデルで可視化し、そちらも評価の対象になります。コンテストに参加される皆さん、がんばれ。説明の中で紹介したツールは、Visual Studio 2005のProfessional Edition以上で、以下のURLからダウンロードできるVisual Studio 2005 SDKをインストールすることによって使うことができます。 Visual Studio 2005 SDK DSL Designerの使い方は、こちらにドキュメントがあるので参考にしてください。また、T4テンプレートやガイダンスオートメーションの話は、こちらを参考にしてください。分散アプリケーション開発に焦点が当てられていますが、組込み開発でも十分参考になるでしょう。

0

ETロボコン本選終了

去る、7月14日と15日の両日、ETロボコン本選が開催されました。14日にはディファ有明で競技が行われ、15日は墨田リバーサイドホールでモデリングワークショップが開催されました。競技に参加された皆様、本当にお疲れ様でした。 関西、東海、関東A、関東B全ての予選会と本選大会を、本部モデル審査員として見させていただきました。また、7月6日、7日は本選出場チームのモデル審査合宿にも参加しました。 弊社が推進している組込み向けSoftware Factoriesの観点から各チームのモデルを観ると、 関西予選IRC(ライン認識のDSL)、パープルピープル(スクリプト:自動生成、DSL)、CINCS(実装に関する考察)、バック2ザフューチャー(ライン認識&制御のDSL)、WEST-RCX(フィーチャーモデル) 東海予選サヌック(パラメータ自動計算)、プッシュ☆スタート(プロダクトライン、自動生成)、ブンブン(ソフトウェアファクトリ、アーキテクチャフレームワーク) 関東予選うみねこ、GODO-TypeR、Ukay(見える化ツール)、StrayCab02、GALAPAGOS(ゴール志向分析)、ペンギンの輪舞(ゴールモデル、SPIN/PROMELA)、メガボーイズ(マインドマップ)、Dolphin6、松浦Lab、アズライト(シーケンス図&DSL)、Alliance(シミュレーション、自動生成)、AEK Runner(ゴール志向、マインドマップ、DSL)、DarWIN、Divertiment(シミュレータ)、JPD青梅(会社組織のヒエラルキーをメタファーとして扱っている)、TeamBILL(ソフトウェアファクトリ) 本選サヌック(ユースケースのDSL)、こがっツ(品質工学)、後ろ向き98%(状態遷移図のDSL)、アズライト(DSL:タスク&走行パターン)、はじめてのLM(魚の骨)、鳳(モデルの使い方、プロセス) といったように、Software Factoriesを構成する要素を使ったチームが多数ありました。以上、リストに挙がったチームのメンバーの方、このページへのコメントや、メールなど頂けると嬉しいです。大会のときに連絡先を頂いている皆さんには、私の方から連絡させていただきます。許可を頂いたチームのモデルは、今後の組込み向けSoftware Factoriesの事例構築に活用させていただきたいと考えています。 14日の競技会では、システムクリエイト様と共同で作った走行時間計測システムを、提供させていただきました。こちらの方は、別スレッドでSoftware Factories風に解説していく予定です。 それから、MSから参加したTeamBILLのメンバーである山畑さんが作成したVisual Studioを使ってETロボコンのSWを開発するための方法を公開します。興味のある方は、こちらからダウンロードして参考にしてください。  

1

久々のポストです

いやぁ、月日の経つのは早いもので、最初のポストから2か月近く経ってしまいました。これからは、もっと頻繁にポストしようと思います。 最初のポストからこれまで、いろんな事がありました。ざっと挙げると5月24日福岡QUEST設立記念セミナーでのパネル展示、6月6日のMEDC Japanでの.Net Micro FrameworkのキーノートデモとMobile Client Software Factoryセッション、6月27日のWIPSE設立記念セミナーでのOpen XMLセッションなどを行いました。これらで取り上げた話題は、今後、順々にご紹介していく予定です。 そして、マイクロソフトがゴールドスポンサー協賛、各種協力をしているETロボコン2007が始まり、6月10日の大阪での関西地区予選を皮切りに、6月16日浜松での東海地区予選、6月30日、7月1日東京での関東地区予選と、すべての予選が終わりました。私は本部モデル審査員として協力させていただいており、全ての予選を観戦、参加者の皆さんへのコメントをしてきました。予選に参加された皆さん、本当にお疲れさまでした。予選を勝ち抜いて本戦に参加される50チームのみなさん、いよいよ7月14日は本戦です。モデル審査員の面々も地獄のモデル審査合宿を乗り越え本戦当日に備えています。本線参加の皆さん、ベストをつくして頑張ってください。私はモデル審査員として会場にいますので、お気軽に声をおかけくださいませ。実は、関東予選Aにはマイクロソフトからも1チーム参加していました。やはりコースには魔物が住んでいるようで惜しくも予選突破ならずでした。チームメンバーは来年の大会での雪辱に燃えています。 このETロボコン、今年は180チームが参加しました。私は全チームが提出した全モデルを拝見しました。なかなかの力作揃いで見ていて非常に楽しかったです。私はETロボコンを通じて、組込み向けのSoftware Factoriesの基本を確立することを一つの目的としていました。Software FactoriesではDSL(Domain Specific Language)をうまく活用してモデル駆動型開発を行います。今現在ETロボコンのLego Pathfinderロボット向けのDSLを検討中なのですが、そういう目で提出されたモデルを見ると、結構DSL一歩手前の図や絵が描かれているモデルがたくさんありました。今後、皆さんの許可を得て、それらの図、絵のDSL化を図っていきたいと思います。また、マイクロソフトのチームが大会参加向けに作成したクロスコンパイル環境なども、今後紹介していこうと思います。 ・・・ということで今日はこれまで

0

Try Software Factories on ET Robot Contest!

ETロボコンは、Lego Pathfinderロボットを使って、あらかじめ決められた黒線で描かれたコースを疾走し、走行タイム、課題のクリアを競います。それら実技に加え、走行を制御するソフトウェアの設計内容も審査の対象になるコンテストです。 ソフトウェアはGNUをLego Mindstorms向けに移植した、brickOSというOS上で開発します。コンパイラも当然GNUのコンパイラです。通常は、viやemacs、eclipseなどを使って開発するかとは思いますが、日頃使っているVisual Studioを使いたい方もいるでしょう。加えて、マイクロソフトが提供する、Software Factories実現を支援するDSL DesignerやGAT/GAXといったツール群は、もちろん、Visual Studio 2005で動作します。他にも、各プロジェクトの事情に合わせて、プロジェクトテンプレートのカスタマイズを行いたい開発者もいるでしょう。 ここでは、プロジェクトテンプレートのカスタマイズ方法の説明を兼ねて、brickOS向けクロスコンパイル環境を作り、今後のSoftware Factoriesの様々なプラクティス導入への準備をしましょう。 事前準備:Visual Studio 2005がインストールされていない場合、以下のどちらかをインストールしてください。 Visual Studio 2005 VC# Express Edition Visual Studio 2005 Professional Edition以上(評価版でも可) Cygwin、BrickOSもインストールしてください。インストール方法は、ETロボコン事務局から公開されているドキュメントを見るか、インターネット上で調べてみてください。 説明を簡単にするために、サンプルを作成しました。 URL※注)あくまでもサンプルです。各自の責任において使用してください。※注)中身は非常に簡単なので、後述する方法で自作も可能ですので、是非トライしてみてください。 このサンプルでは、.NET Frameworkのユーティリティも使うので、.NET Framework SDKもインストールする必要があります。 ZIPファイルをダウンロードし、解凍してください。以下の二つのファイルが入っています。 BrickOSConfigSetupDialogInstaller.msi legobrickosapptemplate.vsi 最初のファイルは、Visual Studio上で、プロジェクトを生成する際に、cygwinやbrickOSなどの場所を指定するためのダイアログ表示用クラスをインストールします。二番目のファイルは、Visual Studioにプロジェクトテンプレートをインストールするためのファイルです。拡張子のvsiをzipに変えて解凍すると中に入っているファイルを見ることができます。それぞれダブルクリックしてインストールしてください。プロジェクトテンプレートは、各ユーザーの設定が格納されている %user%\My Document\Visual Studio 2005\Templates\ProjectTemplate の下に、vsiファイルに入っているzipファイルがコピーされます。名前はLegoBrickOSApp.zipです。2つのファイルのインストールが終わったら、Visual Studioを起動してください。 Visual Studioのメニューから、ファイル→新規作成→プロジェクト…を選択し、”新しいプロジェクト”ダイアログが表示されます。テンプレートの項目の”マイテンプレート”のところに、”LegoBrickOSApp”というテンプレートが表示されます。そのテンプレートを選択し、適切なプロジェクト名を付けて、プロジェクトを生成してください。 すると、以下のダイアログが表示されます。   cygwinがインストールされているディレクトリと、brickOSがインストールされているディレクトリを入力してください。テキストボックスの右隣のボタンをクリックすると、グラフィカルにフォルダーを選択できます。一通り設定したらOKボタンをクリックします。インストールしたファイル群は、サンプルのため、署名等がなされていないため、現状では以下のアラートが表示されます。 図のように、ラジオボタンを選択し、OKボタンをクリックしてください。 そうすると、srcフォルダに4つのファイルが格納されたプロジェクトが出来上がります。srcフォルダー以下にソースファイル群を作成します。メニューから、ビルド→プロジェクトのビルドを選択すると、コンパイルが開始され、Lego Mindstormsにダウンロード可能なProject.lxファイルが、binフォルダー直下に作成されます。それを、brickOSのdllツールでダウンロードしてください。※現状のバージョンでは、残念ながら、コンパイル時のエラーが表示されません。Visual Studioのコマンドプロンプトから、プロジェクトが存在するディレクトリで以下のコマンドを実行してください。エラーが表示されます。ここは今後の改善ポイントですねぇ。 %ProjectDir%> msbuild…

0

Software Factories Initiative for Embedded

皆さん、Software Factoriesをご存じですか?Software Factoriesは、マイクロソフトが2005年に提唱した次世代開発方法論です。Software Factoriesは、ソフトウェアプロダクトライン開発の一種で、モデル駆動型開発、アーキテクチャフレームワーク、ガイダンスオートメーションこれまで、ITシステムの開発向けにSoftware Factories普及啓発活動がおこなわれてきましたが、昨年の12月から、組込み向けにSoftware Factoriesを適用する活動を進めています。 日本は組込みソフトウェア開発のメッカであり、組込みソフトウェア開発に関する膨大なノウハウが蓄積されています。また、本活動は日本独自の活動であり、日本の知見者の皆さんと一緒に、組込みへのSoftware Factories適用方法を検討、実践し、世界に向けて発信していきたいと考えております。この活動を通じて、組込みソフトウェア開発の生産性と品質の向上、及び、組込みソフトウェア技術者の地位向上の一助になればと思っております。 Software Factoriesに関する情報は、http://www.microsoft.com/japan/msdn/architecture/sf/default.aspxをご覧ください。このブログでも、詳細や組込み向けの説明を行っていく予定です。 組込みソフトウェア開発へのSoftware Factories適用方法は、MAAC(Microsoft Architect Advisory Council) 組込みWGという集まりで、ソフトウェアプロダクトラインや、モデル駆動型開発、開発プロセス等の、知見者や実践されている方々の協力の下、進めています。活動に興味のある方は、ご一報ください。 組込みソフトウェアは、携帯電話などのモバイル端末から、家電、セットトップボックス、カラオケ、POS、自動車、OA機器、FA機器、・・・など非常に多岐にわたっています。将来的には、各事業領域のSoftware Factoryを考えていく予定ですが、まずは”シンプルな例題で実践し公開可能な事例を作ろう”ということで、今年はETロボコン2007(http://www.etrobo.jp)の場を借りて、Software Factoriesを実践しています。ETロボコン2007には、マイクロソフトからも1チーム参加の予定です。活動の経過や、結果は順次公開していく予定ですので、乞うご期待。 実は・・・私はETロボコン2007のモデル部門の審査員でもあります。地区大会は全て現地に行きますので、会場ではお気軽に声をおかけくださいませ。    

0

Blog開設のごあいさつ

皆さんこんにちは。組込みエバンジェリストの太田です。エバンジェリストとという職種になじみのない方も多いとは思いますが、それは後のお楽しみということで。 このブログでは、マイクロソフトが提供する組込み製品や技術に関する情報を中心に、開発・設計方法論なども含め、組込みソフトウェアに関する様々な情報を提供していく予定です。 皆さん、よろしくお願いします。

1