特集
» 2012年01月10日 12時07分 公開

担当者が明かす、ETロボコン計測システム開発“秘話”実録・ETロボコンの裏舞台(3/3 ページ)

[太田 寛,@IT MONOist]
前のページへ 1|2|3       

使用したテクノロジーとその効用

 以上、ETロボコン計測システムを開発していく過程で遭遇した問題を紹介してきました。最後に、システムで使用しているテクノロジーと、その効用を紹介して終わりにしたいと思います。

EF:Entity Framework

 計測システムは永続ストレージとしてRDBのSQL Serverを利用しています。RDBを利用する場合、通常はSQL文を書いてデータスキーマ(テーブルの定義)やクエリ(データの検索)を記述し、クエリの場合には取得したデータをそのデータ型に合わせた変換を行うなど、面倒なコーディングが必要です。しかし、EFでは、ER図を描いてテーブルを定義すれば、その図を基にRDB内のテーブル生成、テーブルにオブジェクト指向的にアクセスするラッパーコードを生成してくれます。LINQと呼ばれるテクノロジーと相まって、RDBを使っているにもかかわらずSQL文の記述や間違いやすいデータ変換を一切せずにプログラムを作成でき、システム開発効率向上に寄与しています。

Entity FrameworkによるDB開発 図8 Entity FrameworkによるDB開発

WPF:Windows Presentation Foundation

 Web上で公開されているコンテンツの見栄えの良さはいうまでもなく、デバイス製品においても、直感的に見やすく操作性が良く、親しみやすいUIを提供することは非常に重要です。

 しかし、私も含め、一般的な開発者のデザインセンスのレベルではなかなか難しいものがあります。ロジックコードは開発者が、見栄えや操作性は専門のデザイナーが担当し、同時並行的に開発できることが理想でしょう。

 WPFでは、見栄えを「XAML」と呼ばれるXMLベースの言語で定義し、ロジックはコードビハインドと呼ばれる裏側のコードで記述する仕組みを持っています。2011年大会の開発では、この特性をフルに生かした分担並行開発を実践しました。見栄えの作成用ツールとして「Expression Blend」というツールが用意されており、デザイナーは一切コードを書くことなくデザインすることができます。ロジックコードの開発はもちろんVisual Studioです。筆者はこれまで「同時並行開発可能ですよ」と方々で話してきましたが、あらためてWPFの威力を実感した2011年でした。

Windows Presentation Foundationによる“見栄え”と“ロジック”の分離 図9 Windows Presentation Foundationによる“見栄え”と“ロジック”の分離

WCF:Windows Communication Foundation

 組み込み系ソフトウェアエンジニアの方は、「Webサービスを使ったプログラミング」と聞くと、ハードルが高いと感じられるのではないでしょうか。WCFを使えば、C#でインタフェース定義を行い、[ServiceContract]など[…]形式の属性を付けるだけで、簡単にWebサービスを作成できます。

 Webサービスをホストする環境のセットアップもほとんど必要ありません。また、Webサービスが提供されるURLを基に、Webサービスにアクセスする側のプログラムに対するWrapperコードも自動生成されるので、Webサービスへのアクセスコードも通常のオブジェクトに対するメソッドコールと何ら変わらないコーディングが可能です。

 また、Socketによるプロセス間通信の場合に必要なメッセージ交換プロトコルの定義・作成もいらないので、今回のような疎結合プロセス群から構成されるシステムを容易に開発できます。2011年チャンピオンシップ大会で行ったクラウド化実験でも、単に参照先のURLを変えるだけで、問題なくクラウド連携に移行できました。

Windows Communication FoundationによるWebサービスプログラミング 図10 Windows Communication FoundationによるWebサービスプログラミング

MEF:Managed Extension Framework

 “計測、表示、コンソールプロセス”は、本物のスイッチボックスからの入出力、テスト用のスイッチボックスエミュレータ、競技場向け表示画面、裏での操作用画面、など多くの部品から構成(図11)されています。

 各部品はそれぞれ固有の要件を持っており、部品の置き換えや差し替えが容易でなければなりません。図11に記載した部品間の結合は、全てMEFを使って接続しています。MEFを使うことにより、部品間の疎結合性はさらに高まり、表示部品の容易な差し替えや、複数担当者による開発分担を容易にしています。

Managed Extension Frameworkによる部品の組み立て 図11 Managed Extension Frameworkによる部品の組み立て

Excel拡張

 参加チームの情報、走行順、走行結果、モデル評価結果、総合結果などを一覧形式で表示させるには、当たり前のことですが“表形式”が用いられます。計測システム開発“外”の関係者とやりとりされているファイルもExcelファイルなので、裏側で各種データの入力・修正を行うツールには、どうしてもデータのコピー&ペーストや並べ替え、数値計算処理やグラフ化などが必要になります。

 これらを一からコーディングしていったら、いくら時間があっても足りません。計測システムでは、Excelを拡張したツールを作成して使っています。Excelへの拡張ロジックは、Visual Studio 2010(有償版)で簡単に開発が可能です。Excelを拡張したツールもWebサービスを通じてデータベースに格納されているデータを参照・更新できます。

Office Toolsを使ったExcelアドイン開発 図12 Office Toolsを使ったExcelアドイン開発

 以上、計測システムの概要、これまでの歩み、開発裏話について紹介してきました。計測システム導入以前と2011年大会の計測・結果計算で必要な人的リソースを表2にまとめておきます。また、現状の計測システムのコード量を参考までに挙げておきます(表3)。

項目 導入以前 2011年現在
必要人員 ストップウオッチ4人 
紙への記録2人
ストップウオッチ2人(予備)
必要時間 集計・最終順位決定:60分程度 集計・最終順位決定:10分程度
役割変更 主審、副審:指示判定のみ 主審、副審:スイッチボックス担当
表2 計測システム導入前後の人的リソースの違い

サブシステム名 コード行数
ETRoboConTrackingServer 約3500行
ETRoboConTrackingSystem 約2500行(XAML部分は除く)
ETRoboConResultEditorExcel 約1800行
表3 現状の計測システムのコード量



 本稿で取り上げた、ETロボコンの計測システムに関する内容が、ご自身の業務に「直接関係がない」と感じられた方もいるかもしれません。しかし、ETロボコン計測システムには“デバイス+クラウド”の要素が全部そろっています。

 WES7を使った組み込み機器の開発では、当然ダイレクトに関係してきますし、開発対象がWindowsではない方であっても、昨今増えてきているネットワーク連携によるサーバサイドのプログラミングに関係する内容が含まれています。また、ソフトウェア開発をWindows PCで行っている場合も、当てはまる部分が十分にあると思います。ETロボコンの計測システムに関するソースコードは、http://etrcrts.codeplex.comで全て参照可能なので、ぜひ目を通してみてください。

 既に次回のETロボコンに向けた計測システムの開発活動が始まっています。本稿を読んで興味を持たれた方は、ぜひ開発ボランティアとして、その腕を奮ってみませんか? また、本稿で紹介した内容が少しでも皆さんの業務や知識の向上に役立てば幸いです。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.