2006-08-06

教材がいいと受講者の食いつきが違うね

株式会社アフレルが提供する、エンジニア研修 システム開発体験コース UML・ROBOLAB編を見学する機会があった。この研修については、組込みプレス Vol.4 の LEGOではじめるエンジニア研修事情でも-開発を疑似体験させることの効果-というテーマで記事を書いているのだが、この記事を書いたときは研修をじっくり眺める機会には恵まれていなかった。

LEGOを使った研修の内容と効果の分析については、組込みプレス Vol.4 を読んでいただくとして、この研修のどこが優れているのかについてレポートしたいと思う。

まず、使っている素材。教材のベースとなる LEGO MINDSTORMS は、LEGOブロックでおなじみのデンマークのLEGO社の関連会社が提供している。LEGO MINDSTORMS(レゴ マインドストーム)は、レゴ・エデュケーショナル・ディビジョン社(デンマーク)とマサチューセッツ工科大学が共同開発したロボットを作るキットで、ロボットの頭脳となるCPU内蔵のコントローラRCXには、日本のルネサステクノロジ社製のH8マイコンが搭載されている。

また、LEGO MINDSTORMS を使って、プログラミング言語を使わずにプログラムを作成するために開発されたソフトウェアがROBOLABで、このソフトはナショナルインスツルメンツ社の Lab Viewの技術がほとんどそのまま使われている。ROBOLABでは、「待ち」「モーター順回転」「停止」「今より暗くなるまで待つ」「押されるまで待つ」などのコマンドアイコンをつなぎ合わせてプログラムを作る。プログラムを分岐されることで、並行処理も実現できるので高度なプログラミングも可能だ。

コマンドアイコンの一つ一つは非常によくできたオブジェクトであり、パソコンを使った計測用ソフトで革命を起こした Lab View の技術が活かされている。

この研修の素材の説明で出てきたキーワードを並べてみると
  • LEGO
  • マサチューセッツ工科大学
  • ルネサステクノロジのH8
  • ナショナルインスツルメンツ社のLab View
とこれだけでも高度な技術の集積であることがわかる。Mindstorms の新製品 LEGO Mindstorms NXT ではさらに高度なロボットを作ることができ、コントローラのCPUには ARMが使われているとのこと。

ここまでで、素材がいいことはわかった。次はカリキュラムの内容を見てみよう。まず、この研修では、LEGO Mindstorms を使って写真にあるような、ライントレースができる自動車を2体作る。そして、一つの自動車を収集車とし、もう一つの自動車を配送車として役割分担する。

収集車は楕円の半分の距離をライントレースし、中継地点で配送車へ赤外線通信を使ってメッセージを送り、配送車はメッセージを受け取ったら楕円のもう半分の距離をライントレースして、配達地点に見立てた位置に到達したら中継地点に戻る。

2台のLEGOの自動車を使って、このシステムを作り上げ、顧客に見立てた観客にプレゼンテーションしてこのシステムを買ってもらうことがこの研修のミッションとなる。

研修では、ユーザー要求の分析から始まり、システム設計、外部設計、内部設計、プログラミング、単体テスト、結合テスト、システムテスト、レビュー、障害処理票の起票など、ソフトウェアシステムを作り上げるために必要な全行程を一通り体験できる。

分析、設計のドキュメントは、UML(Unified Mideling Language)の図を描いて作成する。この研修を終えると、ユースケース図、シーケンス図、アクティビティ図、コミュニケーション図などの図を自分で考えた内容で描くことができるようになる。単に問題と答えというやり方ではなく、システム開発に必要な図を、自分自身の設計で描くというところが、単なる講習会にはない Project Based Learning のよいところだ。

この研修は 5日構成で
  1. ユーザー要求の分析と自動車の組み立て
  2. UMLを使ったシステム設計、外部設計、内部設計
  3. デバイスの特性を確認しながらプログラミング
  4. 単体テスト、結合テスト
  5. システムテスト、総合デバッグ、プレゼンテーション
という日程になっている。2日目が実機をさわることがほとんどなく、UMLでシステムを分析するだけの作業が続くテンションが下がる工程なのだが、実はここが大事なポイントとなる。

比較的規模の小さい組込みシステムの開発では、デバイスを動かすプログラムを作りながらできたらつなげていくという試行錯誤的アプローチを取ることで、ユーザー要求分析や、システムのアーキテクチャ設計などがなおざりになりやすい。最初にLEGOで作った自動車とLOBOLABでのプログラミングの使い方を教えてしまえば、受講者が中学生のように夢中で試行錯誤を繰り返してミッションをクリアしようとし、容易にメインテナンスできない継ぎ足し継ぎ足しのプログラムを作ってしまうだろう。

しかし、この研修ではあえてすぐにプログラムを作らせずに UMLを使ってシステムの分析を一日じっくりやらせる。

実は、この後システムの総合テストでうまく動かないときに、プログラムのどこが悪いのか分からずに悩むことになるのだが、初めて使うROBOLABの平行動作が十分に理解できず、デバッガも用意されていないため簡単には試行錯誤的なアプローチでは問題がなかなか解決できない。

このときに、2日目の分析工程で描いたUMLのダイアグラムで、やや抽象度の高い設計ドキュメントを見直すと問題解決の糸口が見つかったりする。

また、3日目で確認する光センサや、タッチセンサの特性をよく調べておかないと、自分の思い描いたように自動車は動いてくれない。光センサーからの入力値を絶対値で指定してしまうと、同じ部屋でも明るさの違いでうまく動かなかったりする。この研修ではPC上でのアプリケーションソフトウェア開発にはない、デバイスの特性を熟知していないとシステムが完成しない組込み系の制約条件の強い開発を体験できる。

また、4日目の単体テスト、結合テストでは本番で使うコースではなく、小さめのライントレースコースしか与えられないため、基本動作の確度を高めることに注力を注ぐ時間がある。

この時間が取ってあると、システムテストで起きた問題について、どこまで前工程に戻ればいいのかのあたりを付けることができる。同時に、単体テストや結合テストで確認できた内容については、やり直す必要がないことがわかるので問題の切り分けにも役立つ。

しかし、なんだかんだいってシステムテストレベルでうまくいかないと試行錯誤が始まる。2人一組で役割が違うので、中継所地点でメッセージの受け取りがうまく行かないと、収集車が悪いのか配送車が悪いのか分からなかったりする。双方が疑いのまなざしで見たりするのだが、受け取ったことが分かったら確認音を鳴らすなどのくふうをして、問題の切り分けをする。(現場のハード屋さんソフト屋さんも見習うべきだろう)

そして、最終日のプレゼンテーションでは、そのシステムがいかに優れているかを顧客に説明し、基本動作のみならず、ライン上に障害物が置いてあっても障害物を避ける動きができるといった実演を見せる。

もちろん、システムテストで確認しているのでキチンと動く筈なのだが、何しろ光センサが微妙だったり、スタートしてから配送車が中継地点に戻るまでの時間制限が40秒だったりするので、研修参加者は実演するときはドキドキしながら自動車の動きを見守ることになる。

この緊張感がいいのだ。

この教材を開発した株式会社アフレルの小林社長は、小学生、中学生、高校生に LEGO Mindstorms を使った教材を提供しつつ、社会人向けのこの教材を3年かけて練りに練って作った。もともと小林さんはビジネス系のソフトウェアを正統な方法で開発していただけあって、この研修の流れも理想的なプロセスになっている。その上で、組込みならではのデバイスの特徴の確認の重要性や、制限時間40秒という制約条件などの設定が巧みにちりばめられており、ところどころで「さすが、よく考えられている」と感じさせられる。

教材がいいと受講者の食いつきが違う。この研修を見てしまうと、Power Point で資料作って講義するだけの教材じゃ太刀打ちできないなあと思ってしまう。

そこまでやってもらわなくても、先輩から技を盗めよ!と言いたいところだが、先輩がUMLのことを知らなかったりすると技を盗みようがないし、最近のソフトウェア工学は本読んだだけじゃ理解が難しいことが多いので、ソフトウェア技術者にこのような研修を受けさせることも必要なんだと感じた。

組込みソフトエンジニアを極める』も仮想プロジェクトで読者に成功体験させることをねらっているものの、やっぱり実際に手を動かしながら進める研修には勝てないかもね。

0 件のコメント: