Tech Daysで講演しました!!

今週の火水(1/27、28)、パシフィコ横浜で開催された、Tech Daysで、OsloとVisual Studio Team Systemのセッションを担当しました。
来ていただいた方、どうもありがとうございました。

社内外から、何故エンベデッドエバンジェリストの太田が、Oslo?、VSTS?という質問を多数いただきました。このブログを全部見ていただいている方は薄々気づいていると思うのですが、私は、組込み製品開発でのモデル駆動型開発の導入推進・開発の実践を長らく経験し、実は、モデル駆動型開発は私のライフワークということで、今回Osloのセッションを是非にも担当したい、ということで、今回セッションを受け持ちました。モデル駆動型開発の経験者から見ても、Osloは、正統派のモデリングプラットフォームであり、使い勝手も非常に考えられた技術ですので、今後が非常に楽しみです。
それから、組込み製品開発へのCMMやAgileによるプロセス改善の経験もあり、また、UMLの機能を紹介することもあり、こちらも担当させていただきました。開発プロセス改善は、筋の悪い担当者に任せると、ガイドライン的な文書が山のように増え、本来担当者がしなくてよい仕事がどっと増えることがあります。効率よく開発プロセスを回すには、開発環境やツールの助けが必須です。VSTS2010は、プロセスを回すために必要な機能を山ほど提供してくれるので、この経済危機の中、うまく使えば、ドラスティックに生産性を上げることができると思います。セッションでは、中々うまく機能が動かなかったりして、VSTS2010の素晴らしさを伝えきれていなかったら、ごめんなさい。

 今回のセッション2つは、組込みにのみフォーカスしたものではなく、IT全般の話として構成しました。しかし、OsloやVSTSが組込みに関係ないかと言われれば、そんなことはありません。組込み機器開発は、総合格闘技です。OSの知識や、デバイスの知識、ミドルウェアなどの知識だけでなく、開発環境や開発プロセスの知見も必要です。
紹介したOsloのQuadrantは、Workflow Designerで、Wcfコンポーネントを、接続し、アプリケーションを構築していくことができます。最近では、デバイスがWebサービスを提供することも珍しくなくなってきています。デバイスが提供するWebサービスをWorkflow Designerで組み合わせ、分散デバイスシステムを構築する日もそう遠くないでしょう。・・・というより、これから1年の間に、そんなデモを作ろうと思ってますので、うちのデバイス使ってよ、という方いましたら、ぜひご連絡を。

2つとも、公開されているPPTが更新される予定なので、通知が来たら変更内容を確認してみてください。

さて、Osloのセッションで、デモで実演したM Languageや、WPFアプリのコードを以下に紹介しておきます。Osloを試すときの参考にしてください。

M Language Intellipadの巻:

まずは、CTRL+SHIFT+Dで、SetMode('MScriptMode')し

Company & Businessesのスキーマ定義
>>>type Business {>>>Name: Text;>>>Memo: Text*;>>>};
>>>type Company {>>>Name: Text;>>>Businesses: Business+;>>>};
>>>Companies: Company* {>>>{Name="Microsoft",>>>Businesses={>>>{Name="OS"},>>>{Name="Cloud"},>>>{Name="Tool",Memo="Oslo is so cool!"}>>>}>>>}>>>}>>>Compnanies <- 上で定義したインスタンスが表示される

M Grammarの巻:

Contactの言語定義
module GrammarSamples {    language Contacts {        token Alias = ("a-z")+;        token Delimiter = "-";        token AreaCode = ("0"-"9")#3;        token DialCode = ("0"-"9")#4 Delimiter ("0"-"9")#4;        token Contact = "Contact";        token Colomn = ":";        syntax Phone = AreaCode Delimiter DialCode;        syntax ContactEntry = Contact Colomn Alias Delimiter Phone;        syntax Main = ContactEntry*;                token CR = "\u000D";        token LF = "\u000A";        token SP = "\u0020";        interleave Ignorable = CR | LF |SP;    }}

MGXファイルをプログラムで参照するの巻:

プロジェクトに、OSLO SDKインストールディレクトリのBINフォルダにある、Microsoft.M.Grammar.dll、System.Dataflow.dll、Xaml.dllを参照として追加。

パーサー生成:
using System.Dataflow;
...
DynamicParserFactory factory = DynamicParserFactory.LoadFromMgx(new FileStream("mgxFileName",...),"GrammarSamples.Contacts");
DynamicParser parser = factory.Create();

テキストのコンパイル:
TextReader reader = ...;
var rootNode = parser.Parse<object>("",reader,ErrorReporter.Standard);
GraphBuilder builder = new GraphBuilder();
foreach (var child in builder.GetSequenceElements(rootNode) {
...
};

こんな感じです。OsloやVSTS関連は折にふれて、また、ポストします。

※コードはあくまでも現時点のバージョンのサンプルです。今後変わる可能性があるので、あくまでも参考ということで。