第 5 章 ケーススタディ:複合現実環境による IoT 教育システム教育システム
5.4 実装
第
5
章 ケーススタディ:複合現実環境によるIoT
教育システム79
第
5
章 ケーススタディ:複合現実環境によるIoT
教育システム80
㻾㼛㼎㼛㼠 㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚
Ͳ ͙ н^ƚĂƌƚƉƉ;Ϳ н^ƚŽƉƉƉ;Ϳ н/ŶŝƚŝĂůŝnjĞƉƉ;Ϳ н&ŝŶĂůŝnjĞƉƉ;Ϳ нDĂŝŶ>ŽŽƉ;Ϳ
㻲㼞㼍㼙㼑㼣㼛㼞㼗
㻾㼛㼎㼛㼠㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚 Ͳ ͙
н/ŶŝƚŝĂůŝnjĞƉƉ;Ϳ н&ŝŶĂůŝnjĞƉƉ;Ϳ
㻾㼛㼎㼛㼠㻯㼛㼚㼠㼞㼛㼘㼘㼑㼞 Ͳ WŽƐy͕WŽƐz
н'Ž&ŽƌǁĂƌĚ;ǀĞůŽĐŝƚLJͿ нdƵƌŶ>ĞĨƚ;ĂŶŐƵůĂƌsĞůŽĐŝƚLJͿ нdƵƌŶZŝŐŚƚ;ĂŶŐƵůĂƌsĞůŽĐŝƚLJͿ н^ƚŽƉ;Ϳ
㻿㼑㼞㼢㼑㼞㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚 Ͳ ͙
н/ŶŝƚŝĂůŝnjĞƉƉ;Ϳ н&ŝŶĂůŝnjĞƉƉ;Ϳ
㻸㼕㼎㼞㼍㼞㼥
㻰㼑㼢㼕㼏㼑 㼀㼕㼙㼑㼞 㻯㼛㼙㼙㼡㼚㼕㼏㼍㼠㼕㼛㼚 㻱㼠㼏㻚 ϭ Ύ
ϭ ϭ
㻯㼘㼑㼍㼚㼑㼞㻾㼛㼎㼛㼠㻯㼛㼚㼠㼞㼛㼘㼘㼑㼞 Ͳ ZŽďŽƚ^ƉĞĐŝĨŝĐ^ĞŶƐŽƌƐ͙
н'Ž&ŽƌǁĂƌĚ;ǀĞůŽĐŝƚLJͿ нdƵƌŶ>ĞĨƚ;ĂŶŐƵůĂƌsĞůŽĐŝƚLJͿ нdƵƌŶZŝŐŚƚ;ĂŶŐƵůĂƌsĞůŽĐŝƚLJͿ н^ƚŽƉ;Ϳ
нZŽďŽƚ^ƉĞĐŝĨŝĐŽŵŵĂŶĚƐ͙
㻯㼛㼙㼙㼡㼚㼕㼏㼍㼠㼕㼛㼚
㻮㼍㼟㼑㻯㼛㼙㼙㼡㼚㼕㼏㼍㼠㼕㼛㼚 Ͳ ͙
нŽŶŶĞĐƚ;Ϳ нŝƐĐŽŶŶĞĐƚ;Ϳ нZĞĂĚ;Ϳ нtƌŝƚĞ;ĚĂƚĂͿ
㻯㼛㼙㼙㼡㼚㼕㼏㼍㼠㼕㼛㼚㻿㼑㼞㼢㼑㼞 Ͳ ͙
н>ŝƐƚĞŶ;Ϳ нůŽƐĞ;Ϳ
Ύ ϭ
ϭ ϭ
ϭ ϭ
㻯㼘㼑㼍㼚㼑㼞㻾㼛㼎㼛㼠㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚 Ͳ ͙
н/ŶŝƚŝĂůŝnjĞƉƉ;Ϳ н&ŝŶĂůŝnjĞƉƉ;Ϳ
ϭ ϭ 䝃䞊䝞䛸䛾㏻ಙ
䜽䝷䜲䜰䞁䝖䛸䛾㏻ಙ
䝷䜲䝤䝷䝸⏝
䝻䝪䝑䝖ไᚚ
㼁㼟㼑㼞㻌㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚
㼁㼟㼑㼞㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚㻟 Ͳ ͙
нDĂŝŶ>ŽŽƉ;Ϳ 㼁㼟㼑㼞㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚㻞
Ͳ ͙ нDĂŝŶ>ŽŽƉ;Ϳ 㼁㼟㼑㼞㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚㻝
Ͳ ͙ нDĂŝŶ>ŽŽƉ;Ϳ
㻾㼛㼎㼛㼠㻌㻼㼘㼡㼓
図5.6 ユーザアプリケーションとロボットフレームワークの関係
より簡単に扱えるようになる.その他,サーバアプリケーションを開発し
たければ
ServerApplication
クラス,ロボットもサーバも扱わない場合は,Application
クラスといった選択が可能である.ユーザはこれらのクラスを継承し,
MainLoop
メソッドやInitializeApp
メ ソッドなどをオーバライドすることによって,アプリケーションの開発を行 える.講義を行う側の人間は,フレームワーク側のApplication
クラスと,ユーザが定義する
Application
のサブクラスの間に入るクラスを定義するこ とによって,講義の難易度を調整することが可能である.図
5.7
は,本教育システムにおけるCOP
の実現方法である.ユーザ側 から見えるCOP
機能実現のためのクラスとして,LayerActivater,Layer-dObjectCreater
,MethodDispatcher
の三つが存在する.LayerActivater
は 指定したレイヤのアクティベーションを行うためのクラスであり,この第
5
章 ケーススタディ:複合現実環境によるIoT
教育システム81
㻳㼑㼚㼑㼞㼍㼠㼑㼐 㼁㼟㼑㼞㻌㻭㼜㼜㼘㼕㼏㼍㼠㼕㼛㼚
㼁㼟㼑㼞㻌㻸㼍㼥㼑㼞㼟
㻸㼍㼥㼑㼞㼑㼐㻻㼎㼖㼑㼏㼠㻯㼞㼑㼍㼠㼑㼞 Ͳ ͙
нƌĞĂƚĞKďũĞĐƚ;ƚLJƉĞ͕ĂƌŐƐͿ
㻹㼑㼠㼔㼛㼐㻰㼕㼟㼜㼍㼠㼏㼔㼑㼞 Ͳ ͙
нŝƐƉĂƚĐŚDĞƚŚŽĚ;ŵĞƚŚŽĚ͕ĂƌŐƐͿ нWƌŽĐĞĞĚ;ĂƌŐƐͿ
㻹㼑㼠㼍㻸㼍㼥㼑㼞 Ͳ ŝĚ
Ͳ ŶĂŵĞ Ͳ ƐƚĂƚĞ
н'Ğƚ>ĂLJĞƌĞĚKďũĞĐƚdLJƉĞƐ;Ϳ
㻯㻻㻼㻌㻵㼙㼜㼘㼑㼙㼑㼚㼠㼍㼠㼕㼛㼚
㻸㼍㼥㼑㼞㻭㼏㼠㼕㼢㼍㼠㼑㼞 Ͳ ͙
нĐƚŝǀĂƚĞ;ůĂLJĞƌͿ нĞĂĐƚŝǀĂƚĞ;ůĂLJĞƌͿ
㻿㼍㼙㼜㼘㼑㻼㼞㼛㼓㼞㼍㼙 Ͳ ͙
нDĂŝŶ;ĂƌŐƐͿ
㻸㼍㼥㼑㼞䃑 Ͳ ͙
ϭ
㻸㼍㼥㼑㼞䃐 Ͳ ͙
㻮㼍㼟㼑㻸㼍㼥㼑㼞 Ͳ ͙
㻸㼍㼥㼑㼞㻹㼍㼚㼍㼓㼑㼞 Ͳ ͙
нZĞŐŝƐƚĞƌĂƐĞ>ĂLJĞƌ;ůĂLJĞƌͿ нZĞŐŝƐƚĞƌ>ĂLJĞƌƐ;ůĂLJĞƌƐͿ
Ύ ϭ
㻯㻝 Ͳ ͙ нDϭ;Ϳ нDϮ;Ϳ 䜲䞁䝘䞊䜽䝷䝇
㻸㼍㼥㼑㼞䃑㻦㻌㻯㻝 Ͳ ͙
нDϭ;Ϳ нDϮ;Ϳ
䜲䞁䝘䞊䜽䝷䝇 㻸㼍㼥㼑㼞䃐㻦㻌㻯㻝
Ͳ ͙ нDϭ;Ϳ нDϮ;Ϳ
䜲䞁䝘䞊䜽䝷䝇
ϭ ϭ
ϭ
㻸㼍㼥㼑㼞㼐㻻㼎㼖㼑㼏㼠㻦㻌㻯㻝 Ͳ ͙
нDϭ;Ϳ нDϮ;Ϳ
͙ ͙
ϭ
ϭ ϭ ϭ
ϭ ϭ
ϭ
ϭ
ϭ
㻨㻨㼐㼑㼘㼑㼓㼍㼠㼑㻪㻪 㻹㼑㼠㼔㼛㼐㻰㼑㼘㼑㼓㼍㼠㼑 Ͳ ͙
нĂůů;ŝŶƐƚĂŶĐĞ͕ĂƌŐƐͿ ϭ
ϭ
ϭ
Ύ
Ύ
ϭ
ϭ
ϭ
Ύ ϭ
䝺䜲䝲䜰䜽䝔䜱䝧䞊䝖
䜲䞁䝇䝍䞁䝇
䝟䞊䝅䝱䝹䜽䝷䝇 䛾ሗྲྀᚓ
≧ែ᭦᪂
䝺䜲䝲≧ែ䛾☜ㄆ 䜽䝷䝇⏕ᡂ
䝯䝋䝑䝗 䝕䜱䝇䝟䝑䝏
䝯䝋䝑䝗
䜃ฟ䛧
䝯䝋䝑䝗 ᐇ⾜
䝯䝋䝑䝗ᐇ⾜
図5.7 COPの実現
クラスによってレイヤの状態を更新する.
LayerdObjectCreater
は,アク ティブなレイヤに応じて振る舞いを変えうるレイヤードなクラスをインス タンス化するためのものである.このクラスは,レイヤードなクラスの型 データを実行時に生成する.生成されたクラスでは,メソッド呼び出しの際に
MethodDispatcher
を実行するようにプログラムの内容を書き換える.MethodDispatcher
はレイヤの状態を確認し,現在アクティブなレイヤのメソッドを実行する.また,
MethodDispatcher
では,COP
のProceed
も実現 しており,この機能はユーザプログラムから利用される.第