「Network Service Discovery API ができました!」              と言われた時      Daniel Davis (@ourmaninjapan)             Opera Software ...
ある日…
「Network Service Discovery API ができました!」              と言われた。
「だからなに?」 と思った。
「その API をサポートするビルドができました!」         と言われた。
「だからなに?」 と思った。
「このビルドで UPnP が使えます!」      と言われた。
「自分で調べるしかない」   と思った。
調べた結果…
UPnP とは                ネットワーク内にあるデバイスとの                       コミュニケーション方法http://www.flickr.com/photos/mogwai_83/4383552060/
UPnP デバイスの種類はいくつかある                                     ↓           各デバイスは一つ以上のサービスがある                                    ...
例えば、マルチメディア(AV)の場合…
「AV」デバイスのサービスの一つは    「RenderingControl」である             ↓「RenderingControl」のアクションの一つは       「GetVolume」である             ↓  「...
「それだけ?」 と思った
No
UPnP マルチメディアデバイスは四つに分けられる:      ●   Server (気前が良い)          ●   Player (人見知り)          ●   Renderer (子分)          ●   Cont...
その中、リモートで見つけられるサービス●   Server のサービス:    ●   ContentDirectory    ●   ConnectionManager●   Renderer のサービス:    ●   AVTranspor...
「だからなに?」 と思った。
[demo time]
こんな流れ:1. ネットワーク内のサービスを検索する2. それぞれのサービスのURLを取得する3. サービスのURLへメッセージを送信する  4. サービスから返事を受信する
1. ネットワーク内のサービスを検索するfunction showServices( services ) {  // 「services」がサービスの配列}function error( e ) {  console.log( "Error ...
2. それぞれのサービスのURLを取得するfor(var i = 0, l = services.length; i < l; i++) {  var service = services[i];  var url = service.url;...
3. サービスのURLへメッセージを送信する<?xml version="1.0" encoding="utf-8"?><s:Envelopes:encodingStyle="http://schemas.xmlsoap.org/soap/en...
4. サービスから返事を受信する<?xml version="1.0" ?><s:Envelopexmlns:s="http://schemas.xmlsoap.org/soap/envelope/"s:EncodingStyle="http:...
[demo time]
「なかなかいいじゃん。 何か作ってみよう!」  と思ったら…
問題
●   あるデバイスが提供しているサービスが分からない    ●   あるサービスに使えるアクションが分からない    ●   あるメディアファイルが再生できるか分からない
「なにこれ?」と思った。
でも大丈夫。こんな資料がある:www.dlna.org/consumer-home/look-for-        dlna/product-search      www.upnp-database.info
つまり…
家のデバイスをウェブページからコントロールできると分かった時
「楽しい!」と思った。
資料:dev.opera.com/articles/view/network-service-      discovery-api-support-in-opera/       richtr.github.com/plug.play.js/
「Network Service Discovery API ができました!」              と言われた時      Daniel Davis (@ourmaninjapan)             Opera Software ...
Upcoming SlideShare
Loading in …5
×

「Network Service Discovery API ができました!」 と言われた時

5,658 views

Published on

An introduction to the Network Service Discovery API (in Japanese)

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,658
On SlideShare
0
From Embeds
0
Number of Embeds
745
Actions
Shares
0
Downloads
31
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

「Network Service Discovery API ができました!」 と言われた時

  1. 1. 「Network Service Discovery API ができました!」 と言われた時 Daniel Davis (@ourmaninjapan) Opera Software bit.ly/nsd-api
  2. 2. ある日…
  3. 3. 「Network Service Discovery API ができました!」 と言われた。
  4. 4. 「だからなに?」 と思った。
  5. 5. 「その API をサポートするビルドができました!」 と言われた。
  6. 6. 「だからなに?」 と思った。
  7. 7. 「このビルドで UPnP が使えます!」 と言われた。
  8. 8. 「自分で調べるしかない」 と思った。
  9. 9. 調べた結果…
  10. 10. UPnP とは ネットワーク内にあるデバイスとの コミュニケーション方法http://www.flickr.com/photos/mogwai_83/4383552060/
  11. 11. UPnP デバイスの種類はいくつかある ↓ 各デバイスは一つ以上のサービスがある ↓ 各サービスはいくつかのアクションがある ↓ 各アクションはいくつかのパラメータがあるhttp://www.flickr.com/photos/mogwai_83/4383552060/
  12. 12. 例えば、マルチメディア(AV)の場合…
  13. 13. 「AV」デバイスのサービスの一つは 「RenderingControl」である ↓「RenderingControl」のアクションの一つは 「GetVolume」である ↓ 「GetVolume」のパラメータの一つは 「Channel」である
  14. 14. 「それだけ?」 と思った
  15. 15. No
  16. 16. UPnP マルチメディアデバイスは四つに分けられる: ● Server (気前が良い) ● Player (人見知り) ● Renderer (子分) ● Controller (ボス)
  17. 17. その中、リモートで見つけられるサービス● Server のサービス: ● ContentDirectory ● ConnectionManager● Renderer のサービス: ● AVTransport (メディアがコントロールできる) ● RenderingControl (デバイスがコントロールできる) ● ConnectionManager
  18. 18. 「だからなに?」 と思った。
  19. 19. [demo time]
  20. 20. こんな流れ:1. ネットワーク内のサービスを検索する2. それぞれのサービスのURLを取得する3. サービスのURLへメッセージを送信する 4. サービスから返事を受信する
  21. 21. 1. ネットワーク内のサービスを検索するfunction showServices( services ) { // 「services」がサービスの配列}function error( e ) { console.log( "Error occurred: " + e.code );}navigator.getNetworkServices( upnp:urn:schemas-upnp-org:service:ContentDirectory:1, showServices, error);
  22. 22. 2. それぞれのサービスのURLを取得するfor(var i = 0, l = services.length; i < l; i++) { var service = services[i]; var url = service.url; // 他にも「config」、「type」などの属性がある}
  23. 23. 3. サービスのURLへメッセージを送信する<?xml version="1.0" encoding="utf-8"?><s:Envelopes:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:GetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"> <InstanceID>0</InstanceID> <Channel>Master</Channel> </u:GetVolume> </s:Body></s:Envelope>
  24. 24. 4. サービスから返事を受信する<?xml version="1.0" ?><s:Envelopexmlns:s="http://schemas.xmlsoap.org/soap/envelope/"s:EncodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <r:GetVolumeResponsexmlns:r="urn:schemas-upnp-org:service:RenderingControl:1"><CurrentVolume>0</CurrentVolume> </r:GetVolumeResponse> </s:Body></s:Envelope>
  25. 25. [demo time]
  26. 26. 「なかなかいいじゃん。 何か作ってみよう!」 と思ったら…
  27. 27. 問題
  28. 28. ● あるデバイスが提供しているサービスが分からない ● あるサービスに使えるアクションが分からない ● あるメディアファイルが再生できるか分からない
  29. 29. 「なにこれ?」と思った。
  30. 30. でも大丈夫。こんな資料がある:www.dlna.org/consumer-home/look-for- dlna/product-search www.upnp-database.info
  31. 31. つまり…
  32. 32. 家のデバイスをウェブページからコントロールできると分かった時
  33. 33. 「楽しい!」と思った。
  34. 34. 資料:dev.opera.com/articles/view/network-service- discovery-api-support-in-opera/ richtr.github.com/plug.play.js/
  35. 35. 「Network Service Discovery API ができました!」 と言われた時 Daniel Davis (@ourmaninjapan) Opera Software bit.ly/nsd-api

×