ҟछࢄ Web αʔϏεʹجͮ͘ίϯςΩετΞΣΞαʔϏεͷ
ཧϓϥοτϑΥʔϜͷ࣮
∁௩ و
†ࠤഢ
†㤟ຊ ਅ༎
†தଜ ڡल
††
ਆށେֶ ˟ 657–8501 ਆށࢢಿ۠ߕொ 1–1
E-mail:
†
[email protected],
††
[email protected],
†††{
shinsuke,masa-n
}
@cs.kobe-u.ac.jp
͋Β·͠ M2M ٕज़ΫϥυαʔϏεͷීٴʹ͍ɼଟछଟ༷ͳσʔλ͕ Web αʔϏεΛհͯ͠ར༻ՄೳͱͳΓ
ͭͭ͋Δɽ͜ΕΒͷσʔλ͔Βݱ࣮ੈքͷঢ়گʢίϯςΩετʣΛஅ͠ɼࣗతͳ੍ޚΛߦ͏ίϯςΩετΞΣ
ΞαʔϏεͷ࣮ݱ͕ظ͞Ε͍ͯΔɽզʑઌߦݚڀʹ͓͍ͯɼ༷ʑͳछྨͷࢄͨ͠ Web αʔϏε (ηϯααʔϏ
εɼใγεςϜɼՈిαʔϏεͳͲ) Λར༻ͨ͠ίϯςΩετΞΣΞαʔϏεΛ౷Ұతʹ࡞ɾཧͰ͖ΔϑϨʔ
ϜϫʔΫͷఏҊΛߦ͍ͬͯΔɽఏҊϑϨʔϜϫʔΫ 5 ͭͷϨΠϠ͔Βߏ͞Εɼطଘͷ Web αʔϏε͔Βऔಘ͞
ΕΔσʔλʹج͍ͮͯίϯςΩετΛఆٛ͠ɼίϯςΩετΞΣΞαʔϏεΛ Event, Condition, Action ͷͰ͋
Δ ECA نଇͰఆٛ͢ΔɽຊߘͰɼఏҊ͞ΕͨϑϨʔϜϫʔΫʹج͖ͮɼ֤ϨΠϠͷཁૉͷ࡞ɼআɼऔಘɼฤू
ٴͼίϯςΩετΞΣΞαʔϏεΛ࣮ߦ͢ΔػೳΛ࣋ͭج൫ͷ࣮Λߦ͏ɽ͜ΕΒͷػೳΛ Java Λ༻͍࣮ͯ͠ɼ
API
Λ Web αʔϏεͱͯ͠ެ։͢Δɽ
Ωʔϫʔυ Web αʔϏεɼίϯςΩετɼECA نଇɼϗʔϜωοτϫʔΫγεςϜɼηϯααʔϏε
Implementing Execution Platform for Managing Context-Aware Services
Based on Heterogeneous and Distributed Web Services
Hiroki TAKATSUKA
†, Sachio SAIKI
†, Shinsuke MATSUMOTO
†, and Masahide NAKAMURA
††
Kobe University
Rokko-dai-cho 1–1ɼNada-kuɼKobeɼHyogoɼ657–8501 Japan
E-mail:
†
[email protected],
††
[email protected],
†††{
shinsuke,masa-n
}
@cs.kobe-u.ac.jp
Abstract With the spread of Machine-to-Machine (M2M) and cloud services, we have become to be able to
use heterogeneous and distributed data. Implementation of the service which judges the context and controls
au-tonomous from these data is expected. We have previously proposed the framework, which can create and manage
in a unified manner context-aware services using heterogeneous and distributed Web services (sensor services,
infor-mation system, state of appliance services and so on). The proposed framework consists of five layers and we define
the context based on the data of the existing Web services, and then define the context-aware service by the ECA
rule that is a set of event, condition and action. In this paper, we implement a platform based on the framework.
The platform has the functions to register, delete, get and edit elements in each layer and to run the services. We
implement these using Java, and publish APIs as the Web service.
Key words Web services, context, event-condition-action rule, home network system, sensor services
1.
͡ Ί ʹ
ۙɼܭࢉࢿݯΛωοτϫʔΫܦ༝ͰϢʔβ͕αʔϏεͱ͠ ͯར༻͢ΔΫϥυٕज़ͷൃలɼฒͼʹਓؒͷհࡏͳ͠ʹػث ಉ͕࢜૬ޓʹ௨৴Λߦ͍ಈ࡞͕ߦΘΕΔM2Mٕज़ͷൃలʹΑ ΓɼؾԹͳͲͷใΛ͡Ίͱͨ͠ݱ࣮ੈքʹؔ͢Δଟछଟ༷ ͳσʔλΛɼWebαʔϏεWeb-APIܦ༝ͰऔಘͰ͖ΔΑ ͏ʹͳ͍ͬͯΔɽ͜ΕΒͷσʔλ͔Βݱ࣮ੈքͷঢ়گ(ίϯς Ωετ)Λஅ͠ɼࣗతͳ੍ޚΛߦ͏ίϯςΩετΞΣΞ αʔϏεͷ࣮ݱʹΑΓɼڥͷมԽਓؒͷߦಈʹରͯ͠ɼ“ؾ ͷར͍ͨ”αʔϏεͷ࡞͕ՄೳͱͳΔɽ ߴͳίϯςΩετΞΣΞαʔϏεͷ࣮ݱʹ͚ͨɼηϯ αใ͔ΒͷίϯςΩετਪఆٴͼͦͷར༻ํ๏ʹ͍ͭͯɼ ϢϏΩλεʹ͓͍ͯίϯςΩετΞΣΞٕज़ͱͯ͜͠Ε― 71 ―
This article is a technical report without peer review, and its polished and/or extended version may be published elsewhere. 一般社団法人 電子情報通信学会 信学技報
THE INSTITUTE OF ELECTRONICS, IEICE Technical Report
INFORMATION AND COMMUNICATION ENGINEERS ISEC2013-70 LOIS2013-36 (2013-11)
·Ͱʹใࠂ͞Ε͍ͯΔ[1]ɽ͜Εʹର͠ɼηϯαʹݶΒͣҟछ ࢄWebαʔϏεܦ༝ͰऔಘͰ͖Δσʔλ(ηϯαɼใγε ςϜɼՈిͷঢ়ଶͳͲ)ΛίϯςΩετਪఆʹར༻͢Εɼߋ ʹߴͳίϯςΩετΞΣΞαʔϏεͷ࣮ݱ͕ՄೳͱͳΔ͕ɼ ೖྗ͞ΕΔ֤छσʔλͷఏڙݩϑΥʔϚοτͳͲͷཧ͕ෳ ࡶͱͳΔͨΊɼ࣮ࡍͷใࠂྫগͳ͍ɽ·ͨɼίϯςΩετΞ ΣΞαʔϏεͱͯ͠WebαʔϏεͷݺͼग़͠Λߦ͏͜ͱͰɼ ΑΓෳࡶͳαʔϏεͷఏڙ͕ՄೳͱͳΔɽຊ݅ʹ͍ͭͯઌߦ ݚڀʹ͓͍ͯɼཧηϯα͔Βऔಘͨ͠ίϯςΩετΛͱʹ WebαʔϏεͷݺͼग़͠Λߦ͏ηϯαۦಈαʔϏε[2]͕ఏҊ ͞Ε͍ͯΔɽ ͜ͷΑ͏ʹίϯςΩετΞΣΞαʔϏεͷೖग़ྗํΛ WebαʔϏεԽ͢Δ͜ͱʹΑΓɼίϯςΩετΞΣΞαʔϏ εΛΑΓॊೈʹɾ͍͘͢ఏڙ͢Δ͜ͱ͕ՄೳͱͳΔɽ͔͠ ͠ͳ͕ΒɼίϯςΩετਪఆʹ༻͍ΔσʔλɼίϯςΩετͷ ਪఆɼίϯςΩετʹىҼͨ͠ಈ࡞ɼͦΕͧΕͷ͕ؔෳࡶʹ ͳΔͨΊɼମܥతͳཧΛߦΘͳ͚ΕαʔϏεͷఏڙ͕ࠔ ͱͳΔɽ͜ΕΒͷίϯςΩετΛ༻͍ͨαʔϏεΛ࡞ɾ࠶ར ༻Ͱ͖Δ౷ҰతͳΈ͕ଘࡏ͢ΕɼैདྷͷίϯςΩετΞ ΣΞαʔϏεΑΓଟ͘ͷݱ࣮ੈքͷσʔλʹج͍ͮͨɼΑ ΓߴͳίϯςΩετΞΣΞαʔϏεͷ࡞͕ՄೳͱͳΔɽ զʑઌߦݚڀʹ͓͍ͯɼҟछࢄWebαʔϏεΛར༻͠ ͨίϯςΩετΞΣΞαʔϏεͷ։ൃࢧԉٴͼɼମܥతཧ ΛՄೳͱ͢ΔϑϨʔϜϫʔΫ(RuCAS, Rule based manage-ment framework for Context-Aware Services) [3]ΛఏҊͯ͠ ͍ΔɽఏҊϑϨʔϜϫʔΫ5ͭͷϨΠϠ(WebServiceLayer, AdapterLayer, ContextLayer, ActionLayer, ECARuleLayer)
͔Βߏ͞Εɼ֤ϨΠϠͷཁૉΛ༻ͯ͠ɼECARuleLayerʹ ͓͍ͯࣄ(Event),݅(Condition),ಈ࡞(Action)ͷͰ͋
ΔECAنଇΛఆٛ͢Δ͜ͱͰίϯςΩετΞΣΞαʔϏε
Λ࡞͢ΔɽఏҊϑϨʔϜϫʔΫͰɼೖग़ྗΛηϯαͳͲͷ
ಛఆͷσόΠεʹݶఆͤͣɼҟछࢄWebαʔϏεΛΈ߹
ΘͤͨίϯςΩετΞΣΞαʔϏεΛ࡞ɾཧͰ͖ΔΑ͏ ʹͳΔɽ
ͦ͜ͰຊߘͰɼRuCASͷ࣮ߦج൫Ͱ͋ΔɼRuCAS
Plat-formͷ࣮Λߦ͍ɼίϯςΩετΞΣΞαʔϏεͷ։ൃࢧ ԉɼମܥతཧٴͼ࣮ߦΛՄೳͱ͠ɼ͜ΕΒͷػೳΛWebαʔ Ϗεͱͯ͠༻ՄೳͳAPIͷఏڙΛ࣮ݱ͢Δɽ·ͨɼRuCAS PlatformΛར༻ͨ͠ίϯςΩετΞΣΞαʔϏεͷಈ࡞֬ ೝͷͨΊɼέʔεελσΟͱ࣮ͯ͠ࡍͷϗʔϜωοτϫʔΫγ εςϜʹ͓͍ͯɼRuCAS Platformͷར༻ʹΑΔίϯςΩετ ΞΣΞαʔϏεͷ࡞ٴͼ࣮ߦΛߦ͏ɽ
2.
४
උ
2. 1 WebɾΫϥυ࣌ʹ͓͚ΔίϯςΩετਪఆͷͨΊ ͷٕज़ ใ௨৴ٕज़ͷൃୡʹΑΓɼ࠷ۙͰWeb͔Β༷ʑͳใ͕औಘͰ͖ΔɽಛʹM2M(Machine to Machine)Webαʔ Ϗεͱ͍ٕͬͨज़ॏཁͳׂΛ୲͍ͬͯΔɽ M2Mͱɼηϯα௨৴ϞδϡʔϧΛଂ༷ͨ͠ʑͳػث ͕ɼਓͷखΛհͣ͞ʹɼݱ࣮ੈքͷঢ়گΛൃ৴͢Δٕज़Ͱ͋Δɽ M2Mൃୡͷഎܠʹɼ௨৴ͷߴԽɼηϯαٕज़ͷਐԽ͕ ͋ΔɽՃ͑ͯɼΫϥυٕज़ɾϏοάσʔλٕज़ͷൃୡʹΑΓɼ ηϯγϯά͠औಘͨ͠σʔλΛػثଆͰॲཧ͢Δ͜ͱͳ͘શͯ αʔόʹୡՄೳͱͳͬͨ͜ͱʹΑΓɼ࣌ࠩͳ͘ঢ়ଶΛऔಘ͠ɼ ϦΞϧλΠϜʹσʔλΛॲཧ͢Δ͜ͱ͕Մೳͱͳͬͨɽ WebαʔϏεͱɼωοτϫʔΫܦ༝ͰҟͳΔΞϓϦέʔ γϣϯαʔϏεͷػೳΛڞ༗͢Δٕज़Ͱ͋ΔɽWebαʔϏε ͰɼαʔϏεͷAPIΛެ։͢Δଆͱར༻͢ΔଆͰ௨৴Λߦ ͏ٕज़ͱͯ͠ɼSOAPRESTͱݺΕΔHTTPͳͲͷϓϩ τίϧΛ༻͠ɼXMLܗࣜͷσʔλΛૹड৴͢ΔΈΛར ༻͢ΔɽWebαʔϏεΛར༻͢Δ͜ͱͰɼݸਓͰ࡞Δ͜ͱ͕ ࠔͳػೳɼσʔλϕʔεΛར༻ͨ͠։ൃ͕ՄೳͱͳΔɽ M2Mͷ׆༻ʹΑΓϦΞϧλΠϜʹॲཧ͞ΕͨσʔλΛ༻ ͨ͠αʔϏεͱɼWebαʔϏεΛΈ߹ΘͤΔ͜ͱͰɼηϯγ ϯά͞ΕͨσʔλΛωοτϫʔΫܦ༝Ͱ༻ͨ͠ίϯςΩετ ΞΣΞαʔϏεͷ࣮ݱ͕ՄೳͱͳΔɽ 2. 2 ϗʔϜωοτϫʔΫγεςϜ(HNS) ͷՈిઃඋػثΛωοτϫʔΫʹऩ༰ͯ͠ɼՃՁ αʔϏεΛ࣮ݱ͢ΔγεςϜΛϗʔϜωοτϫʔΫγε ςϜ(HNS) ͱ͍͏ɽTV র໌ɼΤΞίϯɼΧʔςϯɼઔ ෩ػͳͲͷՈిٴͼɼԹηϯα࣪ηϯαɼরηϯα ͳͲͷ֤छηϯαΛ͡Ίͱͨ͠ػث͕ωοτϫʔΫʹଓ ͞Εɼ༷ʑͳαʔϏεɾΞϓϦέʔγϣϯ͕࣮ݱ͞ΕΔɽ͜ ͷHNSͷ࣮ݱ๏ͱͯ͠ɼզʑͷݚڀࣨͰɼαʔϏεࢦ ΞʔΩςΫνϟ(SOA) ΛHNS ʹద༻͠ɼ֤Ոిɾηϯαͷ ػೳΛWeb αʔϏεͱͯ͠ར༻Ͱ͖ΔHNS ڥ CS27-HNS[4]Λ։ൃ͍ͯ͠ΔɽCS27-HNS Ͱػثґଘͷ੍ޚํ ๏௨৴ϓϩτίϧΛWebαʔϏεͰϥοϓ͓ͯ͠Γɼશͯ
ͷػثͷػೳΛSOAP ·ͨREST ܗࣜͷWeb-APIͱ͠
ͯར༻Ͱ͖Δɽྫ͑ɼςϨϏͷνϟϯωϧΛ6ch ʹ͢Δʹ ɼhttp://hns/TVService/setChannel?channel=6ͱ͍ͬͨ URLʹΞΫηε͢Δ͜ͱͰ࣮ݱͰ͖Δɽ 2. 3 ίϯςΩετΞΣΞαʔϏε ίϯςΩετͱɼਓɼڥͳͲݱ࣮ੈքͷঢ়گͷ͜ͱ Ͱ͋Γɼ༷ʑͳηϯαγεςϜ͔ΒಘͨใΛͱʹఆٛ͞ ΕΔɽίϯςΩετΞΣΞαʔϏεͱɼίϯςΩετͷม ԽΛࣗಈతʹݕ͠ɼͦͷมԽʹରԠͨ͠ػೳใΛఏڙ͢ ΔαʔϏεͷ͜ͱΛࢦ͢ɽ ྫ͑ɼʮ෦ͷԹηϯαͷ͕28ˆҎ্ʯͱ͍͏ใ͔Β ʮॵ͍ʯͱ͍͏ίϯςΩετ͕ਪఆ͞ΕΔɽγεςϜ͜ͷ ʮॵ͍ʯͱ͍͏ίϯςΩετΛͱʹʮΤΞίϯͷྫྷӡసΛ ։࢝͢Δʯͱ͍ͬͨίϯςΩετʹԠͨ͡αʔϏεΛఏڙ͢Δɽ
3.
ҟछࢄ
Web
αʔϏεʹجͮ͘ίϯςΩε
τΞΣΞαʔϏεͷཧϑϨʔϜϫʔΫ
ຊઅͰɼઌߦݚڀʹ͓͍ͯఏҊͨ͠ϑϨʔϜϫʔΫ (Ru-CAS)ͷઆ໌Λߦ͏ɽͨͩ͠ɼRuCASͷཁૉͷදݱʹӳ ޠදهΛ༻͍ΔɽDo nothing Event when false ڀ true ECARule Condition Action then false then true ਤ 1 ECA نଇͷྲྀΕ Adapter ϝ AdapterLayer 䜶䜰䝁䞁KE Adapter ૣܺෟด
Event Condition Action
WebServiceLayer Context
࠙Ǒ ૣ̪પContext ๐എONAction ContextLayer ECARuleLayer ActionLayer Context ࠙Ǒ ૣ̪પContext ๐എMLAction Action ɄȤĘɈ ਤ 2 RuCAS ͷΞʔΩςΫνϟ
3. 1 ECAنଇ(Event-Condition-Action Rule)
ECAنଇͱɼτϦΨͱͳΔEvent͕ൃੜͨ͠ࡍɼ݅෦ ͱͳΔCondition͕ຬͨ͞Ε͍ͯͨ߹ɼActionΛ࣮ߦ͢Δɼ ͱ͍͏نଇͰ͋ΔɽECAنଇͷྲྀΕΛਤ1ʹࣔ͢ɽRuCASͰ ɼҎԼͷΑ͏ʹίϯςΩετΞΣΞαʔϏεΛECAنଇ ͷܗͰఆٛ͢Δɽ Event: αʔϏεͷτϦΨͱͳΔContext Condition: ඞཁ݅ͱͳΔҰͭҎ্ͷContext Action: ࣮ߦରͷAction 3. 2 RuCASͷΞʔΩςΫνϟ
ਤ2ʹRuCASͷΞʔΩςΫνϟΛࣔ͢ɽRuCASECA
ن ଇ Λ ఆ ٛ ͢ Δ ্ Ͱ ͷ ׂ ʹ Α Γ ׂ ͞ Ε ͨ 5ͭ ͷ Ϩ Π Ϡ(WebServiceLayer, AdapterLayer, ContextLayer, Action-Layer, ECARuleLayer)͔Βߏ͞Ε͍ͯΔɽ֤ϨΠϠʹ͓͍ ͯɼԼͷػೳΛར༻͢Δ͜ͱͰཁૉΛ࡞͠ɼECARuleLayer ʹ͓͍ͯɼ࡞ͨ͠ཁૉΛΈ߹ΘͤͯECAنଇΛఆٛ͢Δ ͜ͱͰίϯςΩετΞΣΞαʔϏεΛ࡞͢ΔɽҎԼʹ֤Ϩ ΠϠͷػೳʹ͍ͭͯࣔ͢ɽ 3. 2. 1 WebServiceLayer طଘͷWebαʔϏεͷϨΠϠͰ͋ΓɼίϯςΩετΞΣ ΞαʔϏεͷೖྗͱͳΔਅِͳͲɼԿΒ͔ͷ͕औಘ Ͱ͖ΔWebαʔϏεͱɼίϯςΩετΞΣΞαʔϏεͷग़ ྗͱͳΔػث੍ޚͳͲΛߦ͏WebαʔϏε͕͜ͷϨΠϠʹؚ ·ΕΔɽ 3. 2. 2 AdapterLayer ίϯςΩετΞΣΞαʔϏεͷೖྗͱͳΔWebαʔϏεͷ
APIΛ౷Ұ͢ΔϨΠϠͰ͋ΓɼαʔϏεͷAPIΛgetValue()
ʹ౷Ұ͢ΔAdapterΛͦΕͧΕͷαʔϏεʹ͍ͭͯొ͢Δɽ 3. 2. 3 ContextLayer ݅ࣜఆִؒΛͱʹఆٛ͞ΕͨContextΛҰݩ ཧ͢ΔϨΠϠͰ͋ΔɽContextఆִؒ͝ͱʹࢦఆ͞Εͨ AdapterΛ༻͢Δ͜ͱͰΛऔಘ͠ɼཱ͕͍݅ࣜͯ͠ Δ͔൱͔ͷఆΛߦ͏ɽ݅ࣜʮvalue >= 20ʯͷΑ͏ͳൺ ֱԋࢉͰදݱ͞Εɼ“value”ͷ෦ʹAdapter͔Βऔಘͨ͠ ͕ೖ͞ΕΔɽཱ͍ͯ͠ΕͦͷContext͕ਅ(true)Ͱ ͋Δͱ͠ɼཱ͍ͯ͠ͳ͚Εِ(false)Ͱ͋Δͱͯ͠ɼ࣍ճ ͷఆ·Ͱ͜ͷਅِΛอ࣋͢ΔɽContextʹAtomic(୯ Ұ)ͱCompound(ෳ߹)ͷೋछྨ͕ଘࡏ͢Δɽ্هͷྫ AtomicContextͷ݅ࣜͰ͋ΓɼCompoundContextͷ߹ ʮHot && HumidʯͷΑ͏ʹɼContextLayerʹଘࡏ͢Δෳ ͷContextΛཧԋࢉࢠ(!, &&,||)Ͱܨ͙͜ͱͰ݅ࣜΛ දݱ͢Δɽ 3. 2. 4 ActionLayer ίϯςΩετΞΣΞαʔϏεͷग़ྗͱͳΔWebαʔϏε Λཧ͢ΔϨΠϠͰ͋ΓɼWebαʔϏεͷΤϯυϙΠϯτϝ ιου໊ɼҾΛͱʹActionΛొ͢Δɽ 3. 2. 5 ECARuleLayer
ContextLayerͰొͨ͠ContextͱɼActionLayerͰొ ͨ͠ActionΛ༻͠ECAنଇΛఆٛ͢Δ͜ͱͰɼίϯςΩ ετΞΣΞαʔϏεΛ࡞͢ΔϨΠϠͰ͋Δɽ
Eventʹࢦఆ͞ΕͨContext͕ʮfalse͔Βtrueʯʹͳͬͨ ࡍʹɼConditionʹࢦఆ͞ΕͨContext͕ʮશͯtrueʯͰ͋Δ ߹ɼActionʹࢦఆ͞ΕͨWebαʔϏε͕࣮ߦ͞ΕΔɽ
3. 3 ίϯςΩετΞΣΞαʔϏε࡞ͷ֓ཁ
RuCASͰɼೖྗͱͳΔWebαʔϏεΛAdapterͱͯ͠ ొ͠ɼొͨ͠Adapter͔Βऔಘ͢Δʹର͢Δ݅ࣜͳͲ ΛͱʹΛContextΛొ͢Δɽ·ͨɼग़ྗͱͳΔWebαʔ ϏεΛActionͱͯ͠ొ͢Δɽొͨ͠ContextͱActionΛ
Έ߹ΘͤͯECAنଇΛఆٛ͢Δ͜ͱͰίϯςΩετΞΣ
ΞαʔϏεΛ࡞͢Δɽ
4. RuCAS Platform
ຊઅͰɼRuCASͷ࣮ߦج൫Ͱ͋ΔRuCAS Platform
ʹ͓͚Δ֤Ϋϥεͷػೳʹ͍ͭͯࣔ͢ɽRuCASίϯςΩε
τΞΣΞαʔϏεͷମܥతཧɼ࡞ࢧԉٴͼ࣮ߦΛߦ͏ج ൫Ͱ͋Δɽਤ3ʹRuCAS PlatformͷΫϥεਤΛࣔ͢ɽ
4. 1 Adapter
AdapterɼRuCASʹ͓͚ΔAdapterLayerͷΫϥεͰ͋ Δɽendpoint, methodΛͱʹgetValue()ʹΑΓWebαʔ
Ϗε͔ΒΛऔಘ͢ΔɽWebαʔϏεͷฦΓ͕ෳ͋Δ߹
propertyͰͦΕΒͷ໊শΛอ࣋͠ɼ͍ͣΕ͔ΛgetValue()
ͷҾʹ͢Δ͜ͱͰऔಘ͢ΔΛબ͢ΔɽAdapterͷ࣋ͭओ ཁͳଐੑͱϝιουΛҎԼʹࣔ͢ɽ
Ͳ ĂĚĂƉƚĞƌŵĂƉ͗,ĂƐŚDĂƉф^ƚƌŝŶŐ͕ĚĂƉƚĞƌх Ͳ ĐŽŶƚĞdžƚŵĂƉ͗,ĂƐŚDĂƉф^ƚƌŝŶŐ͕ŽŶƚĞdžƚх Ͳ ĂĐƚŝŽŶŵĂƉ͗,ĂƐŚDĂƉф^ƚƌŝŶŐ͕ĐƚŝŽŶх Ͳ ĞĐĂŵĂƉ͗,ĂƐŚDĂƉф^ƚƌŝŶŐ͕х
ZƵ^DĂŶĂŐĞƌ
нZƵ^DĂŶĂŐĞƌ;Ϳ нƐƚĂƌƚ;Ϳ нƐƚŽƉ;Ϳ нƌĞŐŝƐƚĞƌĚĂƉƚĞƌ;Ϳ нƌĞŐŝƐƚĞƌŽŶƚĞdžƚ;Ϳ нƌĞŐŝƐƚĞƌĐƚŝŽŶ;Ϳ нƌĞŐŝƐƚĞƌ;Ϳ нƵŶƌĞŐŝƐƚĞƌĚĂƉƚĞƌ;Ϳ нƵŶƌĞŐŝƐƚĞƌŽŶƚĞdžƚ;Ϳ нƵŶƌĞŐŝƐƚĞƌĐƚŝŽŶ;Ϳ нƵŶƌĞŐŝƐƚĞƌ;Ϳ нŐĞƚKŶĞĚĂƉƚĞƌ;Ϳ нŐĞƚKŶĞŽŶƚĞdžƚ;Ϳ нŐĞƚKŶĞĐƚŝŽŶ;Ϳ нŐĞƚKŶĞ;Ϳ нŐĞƚůůĚĂƉƚĞƌ;Ϳ нŐĞƚůůŽŶƚĞdžƚ;Ϳ нŐĞƚůůĐƚŝŽŶ;Ϳ нŐĞƚůů;Ϳ нĞĚŝƚĚĂƉƚĞƌ;Ϳ нĞĚŝƚŽŶƚĞdžƚ;Ϳ нĞĚŝƚĐƚŝŽŶ;Ϳ нĞĚŝƚ;Ϳ Ͳ ĐŽŶƚĞdžƚŝĚ͗^ƚƌŝŶŐ Ͳ ƚLJƉĞ͗^ƚƌŝŶŐ Ͳ ůĂďĞů͗^ƚƌŝŶŐ Ͳ ĚĞƐĐƌŝƉƚŝŽŶ͗^ƚƌŝŶŐ Ͳ ĞdžƉƌĞƐƐŝŽŶ͗^ƚƌŝŶŐ Ͳ ŝŶƚĞƌǀĂů͗ŝŶƚ Ͳ ĞĐĂĂƌƌĂLJ͗ Ͳ ƉƌĞƐĞŶƚ͗ůĞĂŶŽŶƚĞdžƚ
нŽŶƚĞdžƚ;Ϳ нƌĞƐŽůǀĞ;Ϳ нĞǀĂů;Ϳ нƌƵŶ;Ϳ нƵƉĚĂƚĞ;Ϳ нĂĚĚ;Ϳ нĚĞůĞƚĞ;Ϳ нƚŝŵĞƌdĂƐŬ^ƚĂƌƚ;Ϳ нƚŝŵĞƌdĂƐŬ^ƚŽƉ;Ϳ Ͳ ĂĚĂƉƚĞƌ͗ĚĂƉƚĞƌ Ͳ ƉƌŽƉĞƌƚLJ͗^ƚƌŝŶŐƚŽŵŝĐŽŶƚĞdžƚ
нƚŽŵŝĐŽŶƚĞdžƚ;Ϳ нƌĞƐŽůǀĞ;Ϳ нƵƉĚĂƚĞ;Ϳ ͲĐŚŝůĚƌĞŶ͗ŽŶƚĞdžƚŽŵƉŽƵŶĚŽŶƚĞdžƚ
нŽŵƉŽƵŶĚŽŶƚĞdžƚ;Ϳ нƌĞƐŽůǀĞ;Ϳ нƵƉĚĂƚĞ;Ϳ Ͳ ĂĚĂƉƚĞƌŝĚ͗^ƚƌŝŶŐ Ͳ ĚĞƐĐƌŝƉƚŝŽŶ͗^ƚƌŝŶŐ Ͳ ƵŶŝƚ͗^ƚƌŝŶŐ Ͳ ĞŶĚƉŽŝŶƚ͗^ƚƌŝŶŐ Ͳ ŵĞƚŚŽĚ͗^ƚƌŝŶŐ Ͳ ƉƌŽƉĞƌƚLJ͗^ƚƌŝŶŐĚĂƉƚĞƌ
нĚĂƉƚĞƌ;Ϳ нŐĞƚsĂůƵĞ;Ϳ нŐĞƚůůsĂůƵĞ;Ϳ нƌĞĂĚyŵů;Ϳ нƵƉĚĂƚĞ;Ϳ Ͳ ĂĐƚŝŽŶŝĚ͗^ƚƌŝŶŐ Ͳ Ƶƌů͗^ƚƌŝŶŐ Ͳ ĚĞƐĐƌŝƉƌŝŽŶ͗^ƚƌŝŶŐĐƚŝŽŶ
нĐƚŝŽŶ;Ϳ нƵƉĚĂƚĞ;Ϳ нŝŶǀŽŬĞhƌů;Ϳ Ͳ ĞĐĂŝĚ͗^ƚƌŝŶŐ Ͳ ĞǀĞŶƚ͗ŽŶƚĞdžƚ Ͳ ĐŽŶĚŝƚŝŽŶ͗ŽŶƚĞdžƚ Ͳ ĂĐƚŝŽŶ͗ĐƚŝŽŶ Ͳ ĚĞƐĐƌŝƉƚŝŽŶ͗^ƚƌŝŶŐ Ͳ ƌĂŶĚŽŵǀĂůƵĞ͗ŝŶƚ н;Ϳ нŶŽƚŝĨLJ;Ϳ нĂĚĚĐƚŝŽŶ;Ϳ нĚĞůĞƚĞĐƚŝŽŶ;Ϳ нƵƉĚĂƚĞ;Ϳ ϭ ϭ ϭ Ύ Ύ Ύ Ύ ZƵ^WůĂƚĨŽƌŵ Ύ ਤ 3 RuCAS Platform ͷΫϥεਤ endpoint: ༻͢ΔWebαʔϏεͷΤϯυϙΠϯτmethod: ༻͢ΔWebαʔϏεͷAPI
getValue(): WebαʔϏεΛ࣮ߦ͠ࢦఆͨ͠Λऔಘ͢Δ
4. 2 Context
ContextɼRuCAS͓͚ΔContextLayerͷΫϥεͰ͋Δɽ ·ͨɼContextநΫϥεͰ͋Γɼޙड़ͷAtomicContext
ͱCompoundContextʹΑΓܧঝ͞Ε͍ͯΔɽContextͰɼ
intervalͰઃఆ͞Εִͨؒ͝ͱʹrun()Λ࣮ߦ͢Δɽrun() ͰɼWebαʔϏε͔Βऔಘͨ͠Λ݅ࣜͰ͋Δexpression
ʹೖ͢Δresolve()ɼೖ͞Εͨ݅ࣜͷධՁΛߦ͏eval()͕ ॱʹ࣮ߦ͞Εɼ࣍ճͷrun()࣮ߦ·ͰධՁͷ݁ՌΛpresentʹ อ࣋͢Δɽ·ͨɼpresentͷ͕“false”͔Β“true”ʹͳͬͨ ߹ɼContext͕Eventʹࢦఆ͞Ε͍ͯΔECAͷΠϯελ ϯεͷnotifyECA()Λ࣮ߦ͢ΔɽContextͷ࣋ͭओཁͳଐੑ ͱϝιουΛҎԼʹࣔ͢ɽ contextid: ContextΛҰҙʹܾఆ͢ΔID type: ୯Ұ(A)·ͨෳ߹(C)͔ͷछྨ expression: Contextͷ݅ࣜ interval: ContextͷཱఆΛߦ͏ִؒ(ϛϦඵ) ecaarray: ࣗ৴͕Eventʹࢦఆ͞Ε͍ͯΔECAͷྻ
present: Contextͷݱࡏͷཱঢ়ଶ
eval(): ݅ࣜͷධՁΛߦ͏
run(): ఆִؒ͝ͱʹೖɾධՁΛߦ͏
4. 2. 1 AtomicContext
AtomicContextɼRuCASʹ͓͚ΔAtomicContextͷΫ
ϥεͰ͋ΓɼContextΛܧঝ͍ͯ͠Δɽ݅ࣜͷධՁʹ༻
͢ΔAdapterΛ࣋ͪɼresolve()ʹ͓͍ͯͦͷAdapterͷ get-Value()Λݺͼग़͠ɼऔಘͨ͠Λ݅ࣜͷ“value”෦ʹೖ ͢ΔɽAtomicContextͷओཁͳଐੑͱϝιουΛҎԼʹࣔ͢ɽ
adapter: Λऔಘ͢ΔAdapter
resolve(): ݅ࣜͷ“value”෦ʹऔಘͨ͠Λೖ͢Δ
4. 2. 2 CompoundContext
CompoundContextɼRuCASʹ͓͚Δ CompoundCon-textͷΫϥεͰ͋ΓɼContextΛܧঝ͍ͯ͠Δɽ݅ࣜͰ͋ Δexpressionʹؚ·Ε͍ͯΔContextΛchildrenʹ࣋ͪɼ re-solve()ʹ͓͍ͯchildrenͷͦΕͧΕͷContextʹ͍ͭͯ re-solve()Λ࠶ؼతʹݺͼग़͠ɼ݅ࣜͷcontextid෦ʹೖ͢ ΔɽConmpundContextͷओཁͳଐੑͱϝιουΛҎԼʹࣔ͢ɽ
children: ݅ࣜʹؚ·Ε͍ͯΔContextͷྻ
resolve(): ݅ࣜͷcontextid෦ʹऔಘͨ͠Λೖ͢Δ
4. 3 Action
ActionɼRuCASʹ͓͚ΔActionLayerͷΫϥεͰ͋Δɽ
WebαʔϏεͷΤϯυϙΠϯτɼϝιουɼҾΛ·ͱΊͯurl ͱͯ࣋ͭ͠ɽActionͷओཁͳଐੑͱϝιουΛҎԼʹࣔ͢ɽ actionid: ActionΛҰҙʹܾఆ͢ΔID url: ϝιουͱҾΛؚΉWebαʔϏεͷΞυϨε involeUrl(): WebαʔϏεΛ࣮ߦ͢Δ 4. 4 ECA
ECAɼRuCASʹ͓͚ΔECAنଇʹΑΔίϯςΩετΞ ΣΞαʔϏεͷΫϥεͰ͋Δɽeventʹࢦఆ͞Ε͍ͯΔ Con-text͕“false”͔Β“true”ʹͳͬͨࡍʹɼͦͷContext͔Β
ʹࢦఆ͞Ε͍ͯΔContextͷཱঢ়ଶΛ֬ೝ͠ɼશͯ“true”
ͳΒɼactionʹࢦఆ͞Ε͍ͯΔActionͷinvokeUrl()Λݺͼ ग़͠ɼWebαʔϏεΛ࣮ߦ͢Δɽ·ͨɼECAΫϥεͷΠϯελ ϯε͕࡞͞Εͨࡍɼeventʹࢦఆ͞ΕͨContextͷecaarray
ʹ࡞͞ΕͨECAΛՃ͢ΔɽECAͷओཁͳଐੑͱϝιου ΛҎԼʹࣔ͢ɽ
ecaid: ࡞ͨ͠αʔϏεΛҰҙʹܾఆ͢ΔID event: EventͱͳΔContext
condition: ConditionͱͳΔContextͷྻ
action: ECAنଇͷActionͱͳΔActionͷྻ
notifyECA(): ECAنଇʹ͋ͨΔϝιου
4. 5 RuCASManager
RuCASManagerRuCAS Platformͷ֤ΦϒδΣΫτΛ ૢ࡞͢ΔΠϯλʔϑΣʔεΛఏڙ͢ΔΫϥεͰ͋Δɽ֤Ϋϥ εͷΠϯελϯεͷੜɼআɼऔಘɼฤूΛߦ͏ϝιου
Contextͷཱఆͷ։࢝ͱఀࢭɼͭ·ΓίϯςΩετΞΣ ΞαʔϏεͷ࣮ߦͱఀࢭΛҰׅͯ͠ߦ͏ϝιουΛ࣋ͭɽ·ͨɼ
RuCASManagerͷϝιουRuCAS PlatformͷAPIͱ͠ ͯ֎෦ʹఏڙ͞ΕΔɽྫ͑ɼԹηϯααʔϏεΛͱʹ͠ ͨAdapterʮTempʯΛొ͢ΔAPIΛ࣮ߦ͢Δ߹ɼҎԼͷ
Α͏ͳURLʹΞΫηε͢ΕΑ͍ɽ
http://hns/RuCASPlatform/registerAdapter?adapterid= Temp&description=ࣨԹͷऔಘ&unit=ˆ&endpoint=http ://hns/TemperatureSensorService&method=getValue&pro perty=return
ͳ͓ɼWebαʔϏεͱͯ͠༻Մೳʹ͢ΔͨΊʹɼ RuCAS-ManagerͰContextECAΛѻ͏ࡍʹଐੑͷมΛߦͬ ͍ͯΔɽ 4. 6 ࣮ RuCAS PlatformͰ֤Πϯελϯεͷ͍࣋ͬͯΔଐੑΛ BSONܗࣜʹม͠ɼMongoDBʹอଘ͍ͯ͠Δɽ·ͨɼ։ൃ 3ਓ݄ɼߦ3296ߦͰ͋ͬͨɽRuCAS Platformͷ ࣮ʹ༻ٕͨ͠ज़ΛҎԼʹࣔ͢ɽ ։ൃݴޠ: Java 1.7.0 21 DB: MongoDB 2.4.3
Webαʔό: Apache Tomcat 7.0.39 WebαʔϏεΤϯδϯ: Apache Axis2 1.6.2
5.
έʔεελσΟ
ຊઅͰɼέʔεελσΟͱͯ͠CS27-HNSʹ͓͚ΔRuCAS PlatformΛར༻ͨ͠ίϯςΩετΞΣΞαʔϏεʮ CoolSer-viceʯͷ࡞ٴͼ࣮ߦΛߦ͏ɽʮCoolServiceʯɼʮৠ͠ॵ͘ͳͬ ͨࡍɼؔͷిྗ༻ྔʹ༨༟͕͋ΕɼྫྷΛONʹ͢Δʯ ͱ͍ͬͨαʔϏεͰ͋ΔɽαʔϏε࡞ʹɼҎԼͷطଘͷ WebαʔϏεΛ༻͢Δɽ • Թɾ࣪ηϯααʔϏε: APIΛ௨ͯ͡ɼԹɾ࣪ ηϯαͷΛऔಘ͢ΔαʔϏεͰ͋Δɽ • ిྗ༻ঢ়گAPI [5]: ిྗձࣾͷిྗ༻ঢ়گΛऔಘ ͢ΔAPIͰ͋Δɽ • ՈిϦϞίϯαʔϏε: WebαʔϏεܦ༝ͰՈిΛૢ࡞ ͢ΔαʔϏεͰ͋ΔɽRuCAS PlatformͷAPIͷ࣮ߦܥྻΛҎԼʹࣔ͢ɽ
/* Adapterొ */ registerAdapter("Temp", "ࣨԹͷऔಘ", "ˆ"ɼ "http://.../TemperatureSensorService"ɼ "getValue", "return"); registerAdapter("Humidity", "ࣨ࣪ͷऔಘ", "%"ɼ "http://.../HumiditySensorService"ɼ "getValue", "return"); registerAdapter("PowerUsageOfKansai", "ؔͷిྗ༻ ঢ়گ", "kW"ɼ"http://...Setsuden"ɼ"latestPowerUsage ?appid=...&area=kansai", {"Usage", "Capacity"}); /* Contextొ */
registerContxt("Hot", "A", "ڥ", "ࣨԹ͕28ˆҎ ্", "value>=28", 5000, "Temp", "return");
registerContxt("Humid", "A", "ڥ", "͕ࣨ࣪75%
Ҏ্", "value>=75", 5000, "Humidity", "return"); registerContxt("Muggy", "C", "ڥ", "ৠ͠ॵ͍", "Hot&&Humid", 5000, "", ""); registerContxt("PowerStable", "A", "ిྗ", "ؔͷ ిྗ༻ྔʹ༨༟͕͋Δ", "value<=18000000", 1800000, "PowerUsageOfKansai", "Usage"); /* Actionొ */ registerAction("CoolingOn", "http://.../IRemoconService/sendIRSignal?...", "ྫྷΛONʹ͢Δ"); /* ECAొ = ίϯςΩετΞΣΞαʔϏε࡞*/ registerECA("CoolService", "Muggy", "PowerStable", "CoolingOn", "ৠ͠ॵ͘ͳͬͨࡍʹిྗ༻ྔʹ༨༟͕͋Ε ྫྷΛONʹ͢Δ", 0); APIͷ࣮ߦʹΑΓɼࣨͷԹ͕28ˆҎ্͔ͭࣨͷ࣪ ͕75%Ҏ্ʹͳͬͨࡍɼؔͷిྗ༻ྔ͕1800ສkWҎԼ ͳΒɼྫྷΛONʹ͢ΔίϯςΩετΞΣΞαʔϏεΛ RuCAS Platformͷ༻ʹΑΓ࡞ͨ͠ɽͳ͓ɼ࡞ʹཁͨ͠ ࣌ؒ20Ͱ͋ͬͨɽ ࣍ʹɼίϯςΩετΞΣΞαʔϏεʮCoolServiceʯΛ࣮ߦ ͢Δɽ࣮ߦʹࡍ͠ɼContextͷཱΛ༰қʹ͢ΔͨΊɼ“Hot” ͷ݅Λʮ25ˆҎ্ʯɼ“Humid”ͷ݅Λʮ27%Ҏ্ʯʹม ߋͨ͠ɽਤ4ʹαʔϏεͷ࣮ߦΛߦͬͨ201311݄2ͷ8 ͔࣌Β20࣌ͷݚڀࣨͷԹɾ࣪ɼؔͷిྗ༻ঢ়گΛࣔ
͢ɽEventͰ͋Δ“Muggy”ͷཱɼ“Hot”ͱ“Humid”͕
྆ํཱ͢Δ͜ͱ͕ඞཁͰ͋Δɽ“Humid”ʹ͍ͭͯৗʹ
ཱ͓ͯ͠Γɼ“Hot”ʹ͍ͭͯ12࣌͝ΖʹࣨԹ͕25ˆΛ ্ճΓɼEventͰ͋Δ“Muggy”ཱ͕ͨ͠ɽ͜ͷ࣌ɼ Condi-tionͰ͋Δ“PowerStable”ཱ͕͍ͯͨͨ͠ΊɼActionͰ͋ Δ“CoolingOn”͕࣮ߦ͞Εɼྫྷ͕ONʹͳͬͨɽ
Ҏ্ʹΑΓɼRuCAS PlatformͷAPIͷ࣮ߦʹΑΓίϯς ΩετΞΣΞαʔϏεͰ͋ΔʮCoolServiceʯ࡞ͨ͠ɽ· ͨɼαʔϏεΛ࣮ߦͨ͠ࡍɼ࣮ࡍʹఆٛͨ͠ίϯςΩετʹԠ ͯ͡ಈ࡞͕ߦΘΕΔ͜ͱΛ֬ೝͨ͠ɽ
22 22.5 23 23.5 24 24.5 25 25.5 26 8 9 10 11 12 13 14 15 16 17 18 19 20 (٦) (ৎ) Temperature in S101 on 2013-11-02 “Hot” value >= 25 26 27 28 29 30 31 32 33 34 35 8 9 10 11 12 13 14 15 16 17 18 19 20 (%) (ৎ) Humidity in S101 on 2013-11-02 “Humid” value >= 27 1200 1300 1400 1500 1600 1700 1800 1900 2000 8 9 10 11 12 13 14 15 16 17 18 19 20 (ਐkW) (ৎ)
Power Usage of Kansai on 2013-11-02
“PowerStable” value <= 18,000,000 ਤ 4 2013 11 ݄ 2 ͷݚڀࣨͷԹɾ࣪ɼؔͷిྗ༻ঢ়گ
6.
ߟ
ҰൠʹɼؾԹͳͲͷ୯ௐʹ૿Ճɾݮগ͢ΔͷͰͳ͘ɼ૿ ݮΛ܁Γฦ͠ͳ͕Β૿Ճɾݮগ͍ͯ͘͠ɽͦͷͨΊਤ4ͷԹ άϥϑʹ͓͚Δ16͔࣌Β19࣌ͷؒͷΑ͏ʹɼEventʹ͋ͨΔ Contextཱ͕͢Δ͖͍ۙ͠ʹ͓͍͕ͯ૿ݮ͢Δ߹ɼ“true”ͱ“false”ؒͷঢ়ଶભҠΛ܁Γฦ͠ɼ݁Ռͱͯ͠Action
ΛԿ࣮ߦ͢Δɽ͜ͷʹର͠ɼContext͕“false”͔Β
“true”ʹͳͬͨࡍʹɼҰ࣌తʹ݅ࣜͷ͖͍͠Λ҆ఆิঈ α͚ͩมԽͤ͞ɼ࠶ͼ“false”ʹͳͬͨࡍʹݩͷʹ͢ɼ ͱ͍࣮ͬͨΛߦͬͨɽྫ͑ɼ“Hot”ͳΒɼ“false”͔Β
“true”ʹͳͬͨࡍʹɼ݅ࣜΛʮvalue>=25ʯ͔Βʮvalue>=25 +αʯʹҰ࣌తʹมߋ͢Δɽ ·ͨɼ࡞͞ΕͨίϯςΩετΞΣΞαʔϏεͷ͕૿Ճ ͢Δʹ͕ͨͬͯ͠ɼෳͷαʔϏε͕ޓ͍ʹׯবɾিಥΛى͜ ͢αʔϏεڝ߹͕ൃੜ͢Δɽྫ͑ɼʮ֎ग़͢ΔࡍɼྫྷΛOFF ʹ͢Δʯͱ͍͏ίϯςΩετΞΣΞαʔϏεʮ͓Ͱ͔͚αʔ Ϗεʯͱ5.Ͱ࡞ͨ͠ʮCoolServiceʯ͕ଘࡏ͍ͯ͠Δͱ͢Δɽ ͜͜ͰɼʮCoolServiceʯʹΑΓྫྷ͕ONʹͳ͍ͬͯΔঢ়ଶͰ ୭͔͕֎ग़͢Δͱɼʮ͓Ͱ͔͚αʔϏεʯʹΑΓྫྷ͕OFFʹ ͳΔɼͱ͍͏ڝ߹͕ൃੜ͢ΔɽαʔϏεڝ߹ʹ͍ͭͯɼ ઌߦݚڀ[6]ʹ͓͍ͯݕग़ɾղফࡦ͕ߟҊ͞Ε͍ͯΔͨΊɼ͜ ΕΒΛϑϨʔϜϫʔΫͰར༻͢Δ͜ͱͰղܾͰ͖Δɽ ࠓޙͷ՝ͱͯ͠ɼRuCAS PlatformΛ༻ͯ͠ίϯςΩ ετΞΣΞαʔϏεΛ࡞͢Δ߹ͱRuCAS PlatformΛ ༻ͤͣίϯςΩετΞΣΞαʔϏεΛ࡞͢Δ߹ͷ ͷൺֱɼίϯςΩετٴͼίϯςΩετΞΣΞαʔϏεͷ ͕૿Ճͨ͠ࡍͷಈ࡞ͷ҆ఆੑͳͲͱ͍ͬͨRuCAS Platform ͷධՁΛߦ͏͜ͱɽ·ͨɼRuCAS Platformͷ༻Λࢧԉ͢Δ αʔϏεͷఏڙΛߦ͏͜ͱͰ͋Δɽ
7.
͓ Θ Γ ʹ
ຊߘͰɼҟछࢄWebαʔϏεΛ༻ͨ͠ίϯςΩετ ΞΣΞαʔϏεͷ։ൃࢧԉͱମܥతཧٴͼ࣮ߦΛߦ͏ج൫ Ͱ͋ΔRuCAS Platformͷ࣮Λߦ͍ɼRuCAS PlatformͷAPIΛ༻ͯ͠ɼίϯςΩετΞΣΞαʔϏεͷ࡞ٴͼ࣮
ߦͷ֬ೝΛߦͬͨɽRuCAS PlatformʹΑΓίϯςΩετΞ ΣΞαʔϏεͷମܥతཧΛߦ͏͜ͱͰɼैདྷͷίϯςΩε τΞΣΞαʔϏεΑΓଟ͘ͷݱ࣮ੈքͷใʹج͍ͮͨɼ ΑΓߴͳίϯςΩετΞΣΞαʔϏεͷ࡞͕ՄೳͱͳΔɽ ·ͨɼέʔεελσΟΛ௨ͯ͠ɼRuCAS PlatformͷAPIΛ ༻࣮ͯ͠ࡍʹಈ࡞͢ΔίϯςΩετΞΣΞαʔϏεΛ࡞ ͨ͠ɽ
ࠓޙͷ՝ͱͯ͠ɼRuCAS PlatformͷධՁٴͼɼRuCAS Platformͷ༻Λࢧԉ͢ΔαʔϏεͷ࣮Λߦ͏͜ͱͰ͋Δɽ ँࣙ ͜ͷݚڀͷҰ෦ɼՊֶٕज़ݚڀඅʢج൫ݚڀC 24500079,ج൫ݚڀB 23300009ʣɼٴͼɼੵਫϋεͷݚڀॿ Λड͚ͯߦΘΕ͍ͯΔɽ จ ݙ [1] ௰ݡଠɼ্Ԭӳ࢙ɼ“ηϯαใʹج͍ͮͨϢʔβͷΞ ϥʔςΟϯάํࣜɼ”ిࢠใ௨৴ֶձٕज़ݚڀใࠂɼvol.108ɼ no.290ɼpp.15–20ɼNov. 2008ɽ [2] ࡔຊɼҪ֞ ɼதଜڡलɼ“ίϯςΩετΞΣΞΞϓϦ έʔγϣϯͷ։ൃΛ༰қԽ͢ΔηϯααʔϏεج൫ɼ”ిࢠใ ௨৴ֶձٕज़ݚڀใࠂɼvol.108ɼno.458ɼpp.381–386ɼMarch 2009ɽ [3] ߴ௩وɼࠤഢɼ·ͭຊਅ༎ɼதଜڡलɼ“ҟछࢄ web αʔϏεʹجͮ͘ίϯςΩετΞΣΞαʔϏεͷཧϑϨʔϜ ϫʔΫͷఏҊɼ”ిࢠใ௨৴ֶձٕज़ใࠂɼvol.113ɼno.245ɼ pp.1–6ɼOct. 2013ɽ
[4] M. Nakamura, A. Tanaka, H. Igaki, H. Tamada, and K. Matsumoto, “Constructing home network systems and in-tegrated services using legacy home appliances and web services,” International Journal of Web Services Research, vol.5, no.1, pp.82–98, Jan. 2008.
[5] “Yahoo JAPAN Web API ి ྗ ༻ ঢ় گ API,” http:// developer.yahoo.co.jp/webapi/shinsaiɽ
[6] ্߂༞ɼ٢ଜ༔ฏɼҪ֞ɼதଜڡलɼ“αʔϏεظؒΛߟྀ ͨ͠ϗʔϜωοτϫʔΫαʔϏεڝ߹ݕग़ɾղফγεςϜͷ࣮ ɼ”ిࢠใ௨৴ֶձɼvol.108ɼno.462ɼpp.007–012ɼMarch 2009ɽ