連載
» 2011年02月03日 00時00分 UPDATE

3つの設計アプローチで見るETロボコン参戦記録(1):ボクらがETロボコンに参加した理由 (1/2)

富士ゼロックスのETロボコン参戦記録を基に、チーム運営や技術的チャレンジ、参加メリット・課題などを考察していく

[土樋 祐希 富士ゼロックス,@IT MONOist]

はじめに

 私たち富士ゼロックスは、2010年の「ETソフトウェアデザインロボットコンテスト(以下、ETロボコン)」に3チームを結成して参戦しました。その目的は若手エンジニアの育成です。実際、モデリングに注力することと、業務で行っていない開発手法にチャレンジすることで、通常業務では得られない教育効果を生み出すことができました。

 本連載では、そのときの運営方法や各チームの体験および今回行った技術的なチャレンジについて紹介し、こうしたコンテストに参加することで企業側が得られるメリットや課題などの考察をしていきたいと思います。特に、今後ETロボコンに参加しようと考えている企業の方や、企業の教育を検討されている方の参考になればと思います。

 記念すべき連載第1回では、筆者らがETロボコン参加活動を行った背景と、参加目的、そしてチーム構成について紹介していきます。

ETロボコンについて

 本題に入る前に、ETロボコンについて簡単に説明します。ETロボコンは、社団法人 組込みシステム技術協会が主催する“組み込みソフトウェアのコンテスト”です。課題は、「LEGO Mindstorms NXT」を使用した自律型ライントレースロボット(図1)で、図2に示すコース上のラインを走行してゴールまでの時間を競うというものです。ロボットは全チーム同じ構成と決められているため、その上に載せるソフトウェアの優劣で勝敗が分かれます。

大会で使用するロボット「LEGO Mindstorms NXT」 図1 大会で使用するロボット
「LEGO Mindstorms NXT」
※協力:ETロボコン実行委員会

 コースの中には「難所」と呼ばれるポイントがあり、それらをクリアすることでボーナスタイムが与えられます。ボーナスタイムは、走行タイムから引かれるので成功すれば時間短縮が可能です。ただし難所にチャレンジして、失敗してしまうとリタイアとなる可能性を高めてしまうため、難所を通らず安全に行くのか、それともあえてチャレンジするのかは各チームの作戦・判断となります。

ETロボコンのコースと難所の説明 図2 ETロボコンのコースと難所の説明
※協力:ETロボコン実行委員会

 ロボットのソフトウェアをどのように作るかということを通じて、組み込みソフトウェアの開発スキルを向上させていこうというのが本コンテストの目的です。ソフトウェアの教育が目的なので、実際に走らせて時間を競う「競技部門」だけではなく、ソフトウェアをどのように作ったかを評価する「モデル部門」が用意されています。モデルという主に図的な表現で設計意図を表現し、設計段階における妥当性や正確性などを競います。モデルを含む設計資料は、大会が行われる約1カ月前までに提出し、事前に審査員により審査が行われ、大会表彰式にてその結果が発表されます。

 競技部門、モデル部門それぞれの表彰もありますが、総合の順位はこの2つを併せた結果で行われるため、「総合部門」で上位を狙うには設計と実装の両方をバランスよく仕上げる必要があります。


なぜ「モデル」が必要なのか?

 ETロボコンは、「UMLロボットコンテスト(UMLロボコン)」と呼ばれる大会が前身で、“UMLを使った組み込みソフトウェア開発の普及”という側面があり、現在の名称になってからも多くのチームがUMLを使用してモデルを作成しています。

 いまでは、UML以外の各種モデルを使った表記が許されるようになってきましたが、そもそも“なぜ組み込みソフトウェアでモデルが必要”なのでしょうか? その答えの大きな要因は、“組み込みソフトウェアの大規模化・複雑化”にあります。

 現在では、メモリやCPUの価格が十数年前と比べても格段に安くなっており、性能も高くなっています。また、いろいろな製品が世の中に出回っており、ユーザーの組み込みソフトウェアに対する要求も高くなっています(携帯電話などを考えれば容易に想像できるかと思います)。そのような状況では、ソースコード量の増加とともに、UIやネットワーク、セキュリティ、エコといったさまざまな技術要求が入り込んでいき、組み込みソフトウェアはより一層複雑なものとなっていきます……。

 そうすると、かつてのように「残っている設計資料はソースコードだけ」とか「いつ書いたか分からないメンテされない設計資料だけ」といった状態では、新たな機能を入れようとしても、どこに変更を入れてよいのかも分からなくなってしまいます。当たりを付けて、変更を加えたとしても抜け・漏れがあったり、予想外の動きをしてしまったりして不具合につながることがよくあります。従来型の設計・開発手法のままでは、テストによってモグラたたきのように不具合をつぶしていくしか品質を保てません(ソフトウェアが大規模化・複雑化する中、その作業は困難を極めるでしょう)。

 こうした事態にならないようにするために、「モデル」を使用します。抽象度の高いモデルを作成しておくことで、大きなシステムでも全体を俯瞰(ふかん)することができ、変更点もつかみやすくなります(図3)。また、モデルをきちんと記述することで、ほかの開発者とのミスコミュニケーションを防ぐこともできるようになり、レビューを通じ、上流工程で早期に不具合をつぶすことが可能となります。つまり、大規模化・複雑化が進む組み込みソフトウェアにとって、モデルはなくてはならない存在といえます。

ソースコードとモデル 図3 ソースコードとモデル

モデル教育機会としてのETロボコン

 しかし、実際には抽象度の高い厳密なモデルを作ることは難しいものです。さらに、そのようなモデルを作ったとしても実際のソースコードと乖離(かいり)してしまっては意味がありません。モデル間、そしてモデルから実装へのトレーサビリティーを保つことが必要になります。そのためには、モデルを作るだけでなく“維持する訓練”が必要になります。

 開発現場で新規のソフトウェアを作る機会が多い方は、こうした訓練を積むことができるかもしれませんが、大規模なシステム開発では派生開発が多く、そうした機会が得られない現場も多いと思います。特に、若手の方は“一から作る”という経験が少ないのではないでしょうか。

 ETロボコンは、一からソフトウェアを作るにはちょうどよい規模ですし、作ったモデルを第三者に評価してもらえます。さらに、ほかのチームも同じ課題に対してモデルを作成していますので、上位入賞したチームのモデルを参考にすることで、モデルを作成する力を養うことができます。そして、何より順位が出ますので、やる方もモチベーションを高く維持することができます。

 こうした理由から筆者は“ETロボコンには社内研修では得られない効果がある”と考えています。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.