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

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

知られざるETロボコンの裏舞台。ETロボコンの審査員を務める筆者が中心となり、開発・提供を行っている「ETロボコン計測システム」にフォーカスし、開発概要やこれまでの道のりなどを紹介する。「常に最新技術を取り入れる」というポリシーとその開発スタイル、そして、ボランティア開発ならではの苦労話は必見だ!

[太田 寛,@IT MONOist]

 皆さん、ETソフトウェアデザインロボットコンテスト、通称「ETロボコン(Embedded Technology Robot Contest)」をご存じですか? ETロボコンとは、初級技術者や学生を対象にしたロボットコンテストのことです。

 ETロボコンは、通常のロボットコンテストとは異なり、参加者全員が同じロボット(LEGO Mindstorms)を使い、ライントレースを基本としたタイムレースと幾つかの難所をクリアしていく“競技の実技”と“ソフトウェア設計の内容”の双方を競うソフトウェア開発スキルアップを目的としたコンテストになっています(ご興味のある方は、ETロボコンの公式Webサイトを参照してみてください)。

 ETロボコンの前身である「UMLロボットコンテスト」が2002年にスタートし、2011年に10回目の節目を迎えました。筆者自身、記念すべき第1回大会に出場した経験があります。そして、第2回大会以降(2006年大会を除く)は、設計内容の審査員としてETロボコンの運営に携わっています。

 さて、前置きはここまでとし、本題に入りたいと思います。タイトルにある通り、本稿では、ETロボコンで用いられている計測システムにフォーカスし、その取り組み、開発の概要、道のりなどの“裏話”をご紹介します。

 ETロボコンの大会会場に行ったことのある方であればご存じかと思いますが、競技(ロボットのレース)中、走行タイムや難所と呼ばれる難易度の高いコースのクリア状況が会場のスクリーンに映し出されていると思います。その情報を計測しているシステムこそが、今回紹介する「ETロボコン計測システム」なのです。なお、このシステムは、著者を中心とするボランティアで開発・提供しています。

ETロボコン計測システムの会場表示用画面 図1 ETロボコン計測システムの会場表示用画面

ETロボコン計測システム概要

 ETロボコン計測システムは、システムクリエイト社が作成した実時間計測用スイッチボックス(以下、スイッチボックス)と、USB接続されたWindows PC上のアプリケーションから構成されています。

 「Windows PC上のアプリ」と聞くと、普通のアプリケーション? と思われるかもしれませんが、組み込み機器向けOS「Windows Embedded Standard 7(以下、WES7)」上であれば、基本的にPCと同じアプリケーションをそのまま動かすことができます。つまり、専用のWES7デバイスとスイッチボックスでシステムを構成しさえすれば、それはもう立派な組み込み専用機器になるのです。

 計測時間は、0.1秒単位での精度が要求される一種のリアルタイム制御機器(まぁ、“ソフトリアルタイム”ではありますが)です。ETロボコン計測システムは、図2のような構成になっています。

ETロボコン計測システムの構成 図2 ETロボコン計測システムの構成

 大会会場では、図3のようにそれぞれの機器・装置を配置します。もともとスイッチボックスの配置の自由度や、ネット上のWebサービスなどとの連携を意識して基本設計がなされているので、PC内部のソフトウェアは、疎結合なコンポーネントで構成されています。

ETロボコン計測システムの配置 図3 ETロボコン計測システムの配置(※コースの図は、ETロボコン実行委員会提供)

 なお、開発環境は「Visual Studio 2010」の有償版を使っていますが、無償の“Express Edition”でも一部の機能を除いて開発が可能です。

 ETロボコンは、北は北海道、南は沖縄までの多くの地域で地区大会が行われ、そこで勝ち上がったチームがチャンピオンシップ大会に臨みます。先の第10回(ETロボコン2011)大会では、全12カ所の地区大会、そして、チャンピオンシップ大会でこのETロボコン計測システムが使用されました。

計測作業のフロー 図4 計測作業のフロー

これまでの歩み

 実は、計測システムが最初に登場したのは2007年大会のことでした。以来、毎年のルール変更の対応と、競技運営に必要なさまざまな機能の追加・改良を加えながら今に至っています(先の2011年大会で5回目の登場となりました)。図5は、2007年当時の計測システムの表示画面と開発風景です。

2007年当時の画面と開発風景 図5 2007年当時の画面と開発風景

 今でこそ全大会(地区大会+チャンピオンシップ大会)で稼働しているこの計測システムですが、初期は不具合も多く(ボランティア開発なので)、一部の地区大会とチャンピオンシップ大会でのみ採用されるという限定的な使用状況でした。中には、独自に趣向を凝らした計測や表示を用意している地区もあり、「誰あんた?」的な視線を浴びながら会場入りしたことも……(笑)。

 今では“ごくまれに”おかしな動きが発生することもありますが、運用上問題のないレベルで稼働しています。

 “ボランティアによる開発”ということもあり、あまり開発に時間はかけられませんでした。そこで、ある程度見栄えの良いものを素早く開発できるということで、使用するプラットフォームに、C#、.NET Frameworkをベースとしたマイクロソフトのさまざまなテクノロジーを選択し、今に至っています(これにはいろいろ異論のある方もいらっしゃるでしょうね……)。

 ETロボコンの趣旨(参加者に課せられる使命?)からすると、“要求はきちんと明確化し、設計もきちんとやってモデル化して開発を進める”とよいのでしょうが、われわれのミッションは、限られた時間の中で、取りあえず使えるシステムを開発するということで、以下の6つのポリシーに従い、開発をスタートさせました。

  1. PCのHDDが壊れない限り、競技結果と進行状況を保持(再起動して続きを実行可能)する
  2. 計測ミス、入力ミスがあっても後で正しい値に直せる
  3. 競技中に発生するさまざまなアクシデントや特殊な運用に対応できる
  4. 要望に応じて容易にカスタマイズできる
  5. 複数人の開発者で並行開発が可能
  6. 常に最新技術を取り入れる

 最後の「常に最新技術を取り入れる」というポリシーについては、必要なアプリケーションやOS、PCのバージョンアップが伴う場合もあり、賛否両論があります。しかし、最新技術を取り入れる際は、“以前より生産性や品質が上がるかどうか”を基準に採用の可否を判断することにしています。また、計測システムの開発の場は、いろいろな人に参加してもらい、日常の製品開発(業務)ではなかなか難しい新技術を取り入れて試す場にしてほしいという筆者自身の強い願いが込められています。ですので、この“常に最新技術を取り入れる”というポリシーは絶対に外せませんでした。

 2011年現在で、計測システムで採用している技術を表1に示します。表1を基に他のプラットフォームや技術の選択でどう変わるのか、対応する他の技術を具体的に想定して比較してみるのも面白いかもしれません。

競技ロジックプロセス 計測、表示、コンソールプロセス データ修正ツールプロセス
WPF
WCF ○:サーバ側 ○:クライアント側 ○:クライアント側
EF
MEF ○:各種機能パネルの追加・切り替え
Office Tools ○:Excelアドイン
表1 2011年現在、計測システムで採用している技術 
※それぞれ、WPF:Windows Presentation Foundation、WCF:Windows Communication Foundation、EF:Entity Framework、MEF:Managed Extension Frameworkの略

 開発を始めた当初から私1人の楽しみでなく、いろんな技術者が自由に参加でき、やりたい範囲をできる範囲で開発できる“オープンソース開発”を目指してきました。2008〜2009年はテスト要員として何名か協力してもらったり、2010年には東海大学の学生さんが各ターン開始時のチーム表示のアニメーションを開発してくれたり、第10回大会(2011年)ではクラスメソッド社の杉浦さん(プロのWebデザイナー)が、会場向けの表示画面(さきほどの図1)を担当してくれたりと、徐々にボランティアメンバーも増えてきました。ちなみに、先の大会では図6のような担当で開発を進めました。

ETロボコン2011大会での開発担当 図6 ETロボコン2011大会での開発担当

 計測システムのユーザーインタフェース(以下、UI)は、「Windows Presentation Foundation(以下、WPF)」で作られており、見た目とロジックを分離開発できるというメリットがあります。2011年の開発はまさにその実践の場となり、特に問題なく開発を進めることができました。

 さらに、先のチャンピオンシップ大会では、技術者の梶原さんの協力を得て「Windows Azure」を使ったクラウド対応の実験(図7)も行っています。

クラウド対応実験 図7 クラウド対応実験

 この実験では、競技ロジックプロセスをWindows Azure上に、競技データをSQL Azure上にほぼそのまま移行し、“計測、表示、コンソールプロセス”と“データ修正ツールプロセス”内のWebサービスへの参照先URLを書き換えるだけで動作することを確認しています。競技データをネットワーク上で参照できるようになれば、同日他会場で開催されている競技状況や競技結果を参照できるようなスマートフォン向けアプリケーションの開発も容易に行えます。実際、第10回チャンピオンシップ大会では、クラウド化実験の傍らでWindows Phone上で動く走行順位表示アプリケーションもひそかに開発し、その動作を確認しています。

 2010年大会までの「Windows Live」のグループ機能と「SkyDrive」を使ったソフトウェア共有を、2011年の大会ではhttp://www.codeplex.comというオープンソース開発用サイトに移行し、担当者同士の緩い連携による同時並行開発が可能になりました。

 計測システムは、現在、http://etrcrts.codeplex.comというサイトで開発を行っています。次回(2012年大会)のETロボコンでも計測システムのエンハンスは継続的に必要なので、開発に参加してみたいという方は、是非著者までご連絡ください(筆者のブログ)。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.