Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebRTC について調べてみた

WebRTC について調べてみた

Masakazu Asama

June 06, 2020
Tweet

More Decks by Masakazu Asama

Other Decks in Technology

Transcript

  1. 8FC35$ͱ͸ʁ w 3FBM5JNF$PNNVOJDBUJPOPOUIF8FC w Ի੠௨࿩΍ϏσΦձٞͷΑ͏ͳϦΞϧλΠϜͳίϛϡχέʔγϣϯΛ ΢ΣϒΞϓϦ্Ͱߦ͏ͨΊͷ࢓૊Έ w ྫ +JUTJ.FFU w

    *&5'3UDXFC8(Ͱϓϩτίϧͷඪ४Խ͕͞Ε͍ͯΔ ͍ͨ  w ϒϥ΢βଆͰ࣮૷͢Δ+BWB4DSJQU"1*ͷ࢓༷͸8$8FC3FBM 5JNF$PNNVOJDBUJPOT8(Ͱඪ४Խ͞Ε͍ͯΔ w ʮ͜Μͳײ͡ͷ"1*ʹͯ͠Ͷʯͱ͍͏ͷ͸*&5'3UDXFC8(ଆͰ ͍ࣔͯ͠Δ w ͳΜͱͳ͘͢Ͱʹଘࡏ͢Δඪ४ΛͲ͏૊Έ߹ΘͤΔ͔Λنఆͯ͠Δײ͡ 2
  2. 3

  3. 4

  4. 5

  5. ͬ͘͟Γ w ΢Σϒϒϥ΢β͸΢Σϒαʔό͔Β΢Σϒ ΞϓϦ +BWB4DSJQUͰॻ͔ΕͨϓϩάϥϜ Λμ΢ϯϩʔυ͢Δ w γάφϦϯά ୭ͱԻ੠΍ө૾Λ΍ΓͱΓ͢ ΔʁίʔσοΫ͸ʁଳҬ͸ʁͳͲͷௐ੔

    ͸ ΢Σϒαʔόͱߦ͏ w ࣮ࡍͷϝσΟΞ Ի੠΍ө૾ͳͲ ͷ΍ΓͱΓ ͸γάφϦϯάͰಘΒΕͨ৘ใΛ΋ͱʹ ج ຊతʹ͸ ΢ΣϒαʔόΛհͣ͞ߦ͏ w ΢ΣϒΞϓϦ͸γάφϦϯάͱϝσΟΞͷ ΍ΓͱΓͷઃఆΛ+BWB4DSJQUͰߦ͏ +-----------+ +-----------+ | Web | | Web | | | Signaling | | | |-------------| | | Server | path | Server | | | | | +-----------+ +-----------+ / \ / \ Application-define / \ over / \ HTTPS/WebSockets / Application-defined over \ / HTTPS/WebSockets \ / \ +-----------+ +-----------+ |JS/HTML/CSS| |JS/HTML/CSS| +-----------+ +-----------+ +-----------+ +-----------+ | | | | | | | | | Browser | ------------------------- | Browser | | | Media path | | | | | | +-----------+ +-----------+ Figure 2: Browser RTC Trapezoid ESBGUJFUGSUDXFCPWFSWJFX͔ΒҾ༻ 6
  6. Ͱͯ͘Δ3'$*% Ұ෦ w ESBGUJFUGSUDXFCPWFSWJFX w 8FC35$ͷશମ૾Λઆ໌ w ESBGUJFUGSUDXFCUSBOTQPSUT w 8FC35$ͷτϥϯεϙʔτ

    ఻ૹ Λઆ໌ w ESBGUJFUGSUDXFCSUQVTBHF w 351Λ༻͍ͨϝσΟΞ఻ૹͷઆ໌ w SGDSGD w Ի੠ͱө૾ͷίʔσοΫͷઆ໌ w ESBGUJFUGSUDXFCTEQ w 8FC35$ͷγάφϦϯάʹ͍ͭͯઆ໌ w ESBGUJFUGSUDXFCKTFQ w 8FC35$Λ+BWB4DSJQU͔ΒͲ͏΍ͬͯ ࣮ߦ͢Δͷ͔Λઆ໌ +-----------+ +-----------+ | Web | | Web | | | Signaling | | | |-------------| | | Server | path | Server | | | | | +-----------+ +-----------+ / \ / \ Application-define / \ over / \ HTTPS/WebSockets / Application-defined over \ / HTTPS/WebSockets \ / \ +-----------+ +-----------+ |JS/HTML/CSS| |JS/HTML/CSS| +-----------+ +-----------+ +-----------+ +-----------+ | | | | | | | | | Browser | ------------------------- | Browser | | | Media path | | | | | | +-----------+ +-----------+ Figure 2: Browser RTC Trapezoid ESBGUJFUGSUDXFCPWFSWJFX͔ΒҾ༻ 7
  7. ͜Μͳͱ͖Ͳ͏͢Δʁ +---------+ +--------+ |Signaling| +--------+ | STUN | |Server |

    | STUN | | Server | +---------+ | Server | +--------+ / \ +--------+ / \ / \ / <- Signaling -> \ / \ +--------+ +--------+ | NAT | | NAT | +--------+ +--------+ / \ / \ +-------+ +-------+ | Agent | | Agent | | L | | R | +-------+ +-------+ Figure 1: ICE Deployment Scenario SGD͔ΒҾ༻ 9
  8. 4FTTJPO5SBWFSTBM6UJMJUJFTGPS/"5 456/ w /"5ͷ಺ଆʹ͍Δͻͱ 456/ΫϥΠΞϯτ ͕Πϯλʔωοτଆʹ͍Δ ͻͱ 456/αʔό ͱ΍ΓͱΓΛ͢Δ͜ͱͰ w

    ࣗ෼͕ͳΜΒ͔ͷ/"5ͷ಺ଆʹ͍Δ͔൱͔ w Πϯλʔωοτʹग़͍ͯ͘ͱ͖ͷૹ৴ݩΞυϨεͱૹ৴ݩϙʔτ൪߸ w Λ஌Δ͜ͱ͕Ͱ͖Δ࢓૊Έ w 456/ΫϥΠΞϯτ͕456/αʔόʹରͯ͠ϦΫΤετ όΠϯυϦΫΤ ετ ΛૹΔͱ456/αʔό͸456/ΫϥΠΞϯτʹૹ৴ݩ৘ใΛຒΊ ࠐΜͩϨεϙϯεΛฦ͢ w ϦΫΤετˍϨεϙϯεͷଞʹҰํతʹૹΓ͚ͭΔΠϯσΟέʔγϣϯͱ ͍͏ͷ΋͋Δ 10
  9. 5SBWFSTBM6TJOH3FMBZTBSPVOE/"5 563/ w ௚઀௨৴Ͱ͖ͳ͍ͻͱͨͪͷؒʹ͸͍ͬͯ௨৴ΛϦϨʔͯ͘͠ΕΔػೳ w ύέοτϑΥʔϚοτ͸456/ͰఆΊΒΕͨ΋ͷΛ༻͍Δ w ϦϨʔͷͨΊͷΞυϨεͱϙʔτ͸Ξϩέʔγϣϯͱ͍͏456/ϝιο υΛ༻ׂ͍ͯΓ౰ͯͯ΋Β͏ w

    ϦϨʔύέοτͷૹड৴ʹ͸ w ηϯυͱσʔλͱ͍͏456/ϝιουΛ༻͍Δํ๏ w νϟϯωϧΛׂΓ౰ͯͯ΋Β͍ͦͷνϟϯωϧΛ༻͍Δํ๏ w ͷ͕ͭ༻ҙ͞Ε͍ͯΔ w ͦ΋ͦ΋6%1Ͱ֎ͱ΍ΓͱΓͰ͖ͳ͍ͻͱͰ΋େৎ෉ͳΑ͏ʹ5$1ͱ 5-4PWFS5$1Λ࢖ͬͯ6%1σʔλάϥϜΛϦϨʔ͢Δ͜ͱ΋Ͱ͖Δ 11
  10. 5SBWFSTBM6TJOH3FMBZTBSPVOE/"5 563/ w खॱ w 563/ΫϥΠΞϯτ͕563/αʔόʹ ΞϩέʔγϣϯϦΫΤετΛૹΔ w 563/αʔό͸ΞυϨεͱϙʔτΛׂΓ ౰ͯ563/ΫϥΠΞϯτʹΞϩέʔγϣ

    ϯϨεϙϯεΛฦ͢ ӈਤͷ3FMBZFE 5SBOTQPSU"EESFTT  w 563/ΫϥΠΞϯτ͸ύέοτΛΤϯ Ωϟοϓ͠563/αʔόʹૹΔ w 563/αʔό͸σΩϟοϓ͠૬खʹૹΔ w ໭Γύέοτ͸563/αʔό͕Τϯ Ωϟοϓ͠563/ΫϥΠΞϯτʹૹΔ Peer A Server-Reflexive +---------+ Transport Address | | 192.0.2.150:32102 | | | /| | TURN | / ^| Peer A | Client's Server | / || | Host Transport Transport | // || | Address Address | // |+---------+ 10.1.1.2:49721 192.0.2.15:3478 |+-+ // Peer A | | ||N| / Host Transport | +-+ | ||A|/ Address | | | | v|T| 192.168.100.2:49582 | | | | /+-+ +---------+| | | |+---------+ / +---------+ | || |N| || | // | | | TURN |v | | v| TURN |/ | | | Client |----|A|----------| Server |------------------| Peer B | | | | |^ | |^ ^| | | | |T|| | || || | +---------+ | || +---------+| |+---------+ | || | | | || | | +-+| | | | | | | | | Client's | Peer B Server-Reflexive Relayed Transport Transport Address Transport Address Address 192.0.2.1:7000 192.0.2.15:50000 192.0.2.210:49191 Figure 1 SGD͔ΒҾ༻ 12
  11. *OUFSBDUJWF$POOFDUJWJUZ&TUBCMJTINFOU *$& w લड़ͷ456/΍563/Λ૊Έ߹Θͤͯ ͭͷΤϯυϙΠϯτؒͰ௨৴͢Δࡍͷϕε τͳํ๏Λ୳͠ग़ͨ͢Ίͷ࢓૊Έ w ͭͷΤϯυϙΠϯτؒͰ௨৴͠Α͏ͱ ࢥͬͨͱ͖ͷΞυϨεͱϙʔτͷ૊Έ߹Θ ͤީิΛϕετͳ΋ͷ͔Βࢼ͍͖ͯ͠௨৴

    Ͱ͖Δํ๏Λ୳͢ w ྫ w -ͱ3ʹ;ΒΕͨΞυϨεಉ࢜Ͱࢼ͢ w -ͱ3ͦΕͧΕͷ/"5ͷ֎ଆͷΞυϨ εಉ࢜Ͱࢼ͢ w 456/ 563/ αʔόͰΞϩέʔτͨ͠Ξ υϨεಉ࢜Ͱࢼ͢ +---------+ +--------+ |Signaling| +--------+ | STUN | |Server | | STUN | | Server | +---------+ | Server | +--------+ / \ +--------+ / \ / \ / <- Signaling -> \ / \ +--------+ +--------+ | NAT | | NAT | +--------+ +--------+ / \ / \ +-------+ +-------+ | Agent | | Agent | | L | | R | +-------+ +-------+ Figure 1: ICE Deployment Scenario SGD͔ΒҾ༻ 13
  12. ͜Εߦ͚Μͷʜʁ w /"5ͷ࣮૷ʹΑͬͯ͸ߦ͚Δ w -͕456/αʔόʹόΠϯυͨ͠ࡍʹ w -͔Βग़Δૹ৴ݩΞυϨεϙʔτ͕9Y w /"5͔Βग़ΔΞυϨεϙʔτ͕9Y w

    ͷͱ͖3޲͚ʹૹ৴ݩ9YͰग़͢ͱಉ͡ ͘9Yʹม׵ͯ͘͠ΕΔػೳ͕͋Γ͜ͷػ ೳ͕࣮૷͞Εͨ/"5ͷ৔߹͸ߦ͚Δ w -͸456/Ͱ9YΛٻΊΔ w 3͸456/Ͱ:ZΛٻΊΔ w -͸:Zͱ௨৴͠Α͏ͱ͠ w 3͸9Yͱ௨৴͠Α͏ͱ͢Δ w ͜ͷػೳ͸&OEQPJOUJOEFQFOEFOU NBQQJOHͱ͍͍SGDͰ.645ѻ͍ +---------+ +--------+ |Signaling| +--------+ | STUN | |Server | | STUN | | Server | +---------+ | Server | +--------+ / \ +--------+ / \ / \ / <- Signaling -> \ / \ +--------+ +--------+ | NAT | | NAT | +--------+ +--------+ / \ / \ +-------+ +-------+ | Agent | | Agent | | L | | R | +-------+ +-------+ Figure 1: ICE Deployment Scenario SGD͔ΒҾ༻ 9Y :Z :Z 9Y 14
  13. ESBGUJFUGSUDXFCSUQVTBHF w 8FC35$Ͱ͸ϝσΟΞͷ఻ૹʹ351 3FBMUJNF5SBOTQPSU1SPUPDPM  Λ༻͍Δ w 351͸SGDͰنఆ͞ΕͯΔ͚ͲϕʔεͱͳΔ෦෼͔͠نఆ͓ͯ͠Β ͣ۩ମతͳ͜ͱ͸ϓϩϑΝΠϧͰنఆ͢Δ͜ͱʹͳ͍ͬͯΔ w

    8FC35$Ͱ͸ҎԼͷϓϩϑΝΠϧ͕.465ʹͳ͍ͬͯΔ w 3514"71' &YUFOEFE4FDVSF3511SPpMFGPS35$1#BTFE 'FFECBDL <SGD> w ͦͷଞʹ΋351ͷଟॏԽʹରԠͯ͠Δ͜ͱͱ͔ಉظιʔεͲ͏͢Μͷͱ ͔͜͏͍͏֦ுػೳʹରԠͯ͠Ͷͱ͔͍Ζ͍Ζॻ͔Ε͍ͯΔ 15
  14. 4FTTJPO%FTDSJQUJPO1SPUPDPM 4%1 w جຊతʹ w ܕ஋ w ͷϖΞͰهड़͞ΕΔ w ܕ͕B

    ΞτϦϏϡʔτ ͷ࣌͸ w BΞτϦϏϡʔτ໊஋ w ͷΑ͏ʹهड़͞ΕΔ w ࠷ॳͷN ϝσΟΞ ͕Ͱग़Δ·Ͱ͕ڞ௨෦ ෼ͰN͕ग़ΔͨͼʹϝσΟΞͷఆٛʹೖΔ w ӈͷྫͰ͸BJDFPQUJPOTUSJDLMF͸ڞ௨ ͷΞτϦϏϡʔτͰBNJEBVEJP͸ NBVEJPʹର͢ΔΞτϦϏϡʔτͰ BCVOEMFPOMZ͸NWJEFPʹର͢Δ ΞτϦϏϡʔτ v=0 o=- 20518 0 IN IP4 0.0.0.0 s=- t=0 0 a=group:BUNDLE audio video a=group:LS audio video a=ice-options:trickle m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 c=IN IP4 203.0.113.141 a=mid:audio a=msid:ma ta a=sendrecv a=rtpmap:109 opus/48000/2 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=maxptime:120 ... লུ ... m=video 0 UDP/TLS/RTP/SAVPF 99 120 c=IN IP4 203.0.113.141 a=bundle-only a=mid:video a=msid:ma tb a=sendrecv a=rtpmap:99 H264/90000 17
  15. 4FTTJPO%FTDSJQUJPO1SPUPDPM 4%1 w Wϓϩτίϧόʔδϣϯ w Pੜ੒ݩͱηογϣϯ*% w Tηογϣϯ໊ w D઀ଓ৘ใ

    w Uηογϣϯ͕ΞΫςΟϒͳ࣌ؒ w NϝσΟΞ໊ͱτϥϯεϙʔτΞυϨε w ୈҰҾ਺ϝσΟΞλΠϓ BVEJP΍ WJEFPͳͲ  w ୈೋҾ਺τϥϯεϙʔτϙʔτ൪߸ w ୈࡾҾ਺τϥϯεϙʔτϓϩτίϧ w ୈ࢛Ҿ਺351ϖΠϩʔυλΠϓ൪߸ w BΞτϦϏϡʔτ w ͍Ζ͍Ζ v=0 o=- 20518 0 IN IP4 0.0.0.0 s=- t=0 0 a=group:BUNDLE audio video a=group:LS audio video a=ice-options:trickle m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 c=IN IP4 203.0.113.141 a=mid:audio a=msid:ma ta a=sendrecv a=rtpmap:109 opus/48000/2 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=maxptime:120 ... লུ ... m=video 0 UDP/TLS/RTP/SAVPF 99 120 c=IN IP4 203.0.113.141 a=bundle-only a=mid:video a=msid:ma tb a=sendrecv a=rtpmap:99 H264/90000 18
  16. ESBGUJFUGSUDXFCKTFQ w TFUVQMPDBMNFEJBTUBUF w  "MJDF+4͕৽͍͠1FFS$POOFDUJPO ΠϯελϯεΛ࡞੒ w  "MJDF+4͕Ի੠ͱϏσΦͷͭͷτ

    ϥοΫΛ1FFS$POOFDUJPOͷ BEE5SBDLϝιουͰ௥Ճ w  "MJDF+4͕1FFS$POOFDUJPOͷ DSFBUF0⒎FSϝιουͰΦϑΝʔΛऔಘ w  "MJDF+4͕  ͰಘͨΦϑΝʔΛ 1FFS$POOFDUJPOͷ TFU-PDBM%FTDSJQUJPOͰొ࿥ w  *$&ީิ͕൑໌͢Δͨͼʹ PO*DF$BOEJEBUFΠϕϯτ͕ൃੜ͢Δ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS      20
  17. ESBGUJFUGSUDXFCKTFQ w XBJUGPS*$&HBUIFSJOHUPDPNQMFUF w  *$&ީิͷऩू͕ऴΘͬͨ͜ͱΛࠂ͛ ΔPO*DF$BOEJEBUFΠϕϯτ͕ൃੜ͢Δ w  "MJDF+4͕1FFS$POOFDUJPOͷ

    QFOEJOH-PDBM%FTDSJQUJPOϝιουΛ࣮ ߦ͠4%1Ͱهड़͞ΕͨcP⒎FS"cΛऔ ಘ͢Δ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS   21
  18. ESBGUJFUGSUDXFCKTFQ w cP⒎FS"cJTTFOUPWFSTJHOBMJOH QSPUPDPMUP#PC w  "MJDF+4͔Β8FC4FSWFS΁cP⒎FS "cΛૹ৴ w 

    8FC4FSWFS͔Β#PC+4΁cP⒎FS "cΛૹ৴ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS   22
  19. ESBGUJFUGSUDXFCKTFQ w cP⒎FS"cBSSJWFTBU#PC w  #PC+4͕৽͍͠1FFS$POOFDUJPO ͷΠϯελϯεΛ࡞੒ w  #PC+4͕લทͰ8FC4FSWFS͔Βಘ

    ͨcP⒎FS"cΛ1FFS$POOFDUJPOͷ TFU3FNPUF%FTDSJQUJPOϝιουͰొ࿥ w  Ի੠ͱϏσΦͷτϥοΫ͔Β PO5SBDLΠϕϯτ͕ൃੜ͢Δ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS    23
  20. ESBGUJFUGSUDXFCKTFQ w #PCBDDFQUTDBMM w  #PC+4͕1FFS$POOFDUJPOͷ BEE5SBDLϝιουΛݺͼग़͠ϩʔΧϧ ͷτϥοΫΛ௥Ճ w 

    #PC+4͕1FFS$POOFDUJPOͷ DSFBUF"OTXFSϝιουΛݺͼग़͢ w  #PC+4͕  Ͱੜ੒ͨ͠ΞϯαʔΛ Ҿ਺ʹ1FFS$POOFDUJPOͷ TFU-PDBM%FTDSJQUJPOϝιουΛݺͿ w  *$&ީิ͕൑໌͢Δͨͼʹ PO*DF$BOEJEBUFΠϕϯτ͕ൃੜ͢Δ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS     24
  21. ESBGUJFUGSUDXFCKTFQ w XBJUGPS*$&HBUIFSJOHUPDPNQMFUF w  *$&ީิͷऩू͕ऴΘͬͨ͜ͱΛࠂ͛ ΔPO*DF$BOEJEBUFΠϕϯτ͕ൃੜ͢Δ w  #PC+4͕1FFS$POOFDUJPOͷ

    DVSSFOU-PDBM%FTDSJQUJPOϝιουΛ࣮ ߦ͠4%1Ͱهड़͞ΕͨcBOTXFS"cΛ औಘ͢Δ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS   25
  22. ESBGUJFUGSUDXFCKTFQ w cBOTXFS"cJTTFOUPWFSTJHOBMJOH QSPUPDPMUP"MJDF w  #PC+4͔Β8FC4FSWFS΁c BOTXFS"cΛૹ৴ w 

    8FC4FSWFS͔Β"MJDF+4΁c BOTXFS"cΛૹ৴ "MJDF+4 "MJDF6" #PC+4 #PC6" 8FC4FSWFS   26
  23. τϙϩδʔ͍Ζ͍Ζ w 1PJOUUP.VMUJQPJOU6TJOH.FTI w શһ͕֤ʑͱηογϣϯΛுΔํ๏ w ϝϦοτ w 35$1Ͱηογϣϯͷ඼࣭Λࡉ੍͔͘ ޚ͠΍͍͢

    w ૬खͷճઢଳҬʹԠͯ͡ߜͬͨ΋ͷΛ ૹΔΑ͏ͳ͜ͱ΋Մೳ w σϝϦοτ w ৘ใΛ૬खͷ਺͚ͩίϐʔͯ͠ૹ৴͠ ͳ͚Ε͹ͳΒͳ͍ w ඇྗͳΤϯυϊʔυʹ͸͠ΜͲ͍ w ৄࡉ͸SGDࢀর 29
  24. τϙϩδʔ͍Ζ͍Ζ w .VMUJQPJOU$POUSPM6OJU w શһͷ৘ใΛҰ୴ूΊ߹੒ͯͦ͠ΕΛશ һʹ഑৴͢Δ૷ஔ w ϝϦοτ w Τϯυϊʔυଆ͸ҰͭͷϝσΟΞΛ࠶

    ੜ͢Ε͹ྑ͍͚ͩͳͷͰ͍ܰ w σϝϦοτ w .$6͸σίʔυ͔ͯ͠ΒΤϯίʔυ ͠ͳ͍ͱͳͷͰηογϣϯ਺͕ଟ͘ͳ ΔͱΫι͠ΜͲ͍ w ଳҬ͕ڱ͍ͻͱʹ߹ΘͤΔ͔͠ͳ͘ͳ Δ w ৄࡉ͸SGDࢀর .$6 30
  25. τϙϩδʔ͍Ζ͍Ζ w 4FMFDUJWF'PSXBSEJOH.JEEMFCPY w શһͷ৘ใΛूΊΔ͕߹੒ͱ͔͸ͤͣͦ ΕΛͦͷ··഑৴͢Δ w ϝϦοτ w 4'.ͷॲཧ͸.$6ͱൺֱ͍ͯܰ͠

    ͷͰ݁ߏεέʔϧ͢ΔΒ͍͠ w σϝϦοτ w ϝσΟΞͷσίʔυ͸ͦΕͧΕͰ΍Β ͳ͍ͱͳͷͰඇྗͳΤϯυϊʔυͰ͸ .$6ͱൺֱͯ͠ॏ͍ͷ͔΋ w ৄࡉ͸SGDࢀর 4'. 31
  26. αΠϚϧΩϟετ w Ի੠΍ө૾ͷϝσΟΞΛ w ޿ଳҬ༻ w ඪ४ଳҬ༻ w ڱଳҬ༻ w

    ͷΑ͏ʹෳ਺ύλʔϯͰ4'.ʹૹΔ w 4'.͔Β͸ࣗ෼ͷճઢଳҬʹԠͨ͡΋ͷͷ ΈΛૹͬͯ΋Β͏ w ӈਤͰ͸੨ͷͻͱ͸4'.͔Β੺ԫ྘ͷ޿ ଳҬ൛Λ΋Β͍ԫͷͻͱ͸ڱଳҬ൛Λ΋ Β͍ͬͯΔ w ৄࡉ͸ESBGUJFUGSUDXFCKTFQࢀর  w +JUTJ.FFU͸͜ͷํࣜ 4'. 32
  27. ࢀߟจݙ w 3FBM5JNF$PNNVOJDBUJPOJO8&#CSPXTFST $PODMVEFE8(  w IUUQTUPPMTJFUGPSHXHSUDXFC w "VEJP7JEFP5SBOTQPSU$PSF.BJOUFOBODF "DUJWF8(

     w IUUQTUPPMTJFUGPSHXHBWUDPSF w .VMUJQBSUZ.VMUJNFEJB4FTTJPO$POUSPM "DUJWF8(  w IUUQTUPPMTJFUGPSHXHNNVTJD w 0WFSWJFX3FBM5JNF1SPUPDPMTGPS#SPXTFSCBTFE"QQMJDBUJPOT w IUUQTUPPMTJFUGPSHIUNMESBGUJFUGSUDXFCPWFSWJFX w 5SBOTQPSUTGPS8FC35$ w IUUQTUPPMTJFUGPSHIUNMESBGUJFUGSUDXFCUSBOTQPSUT w 8FC3FBM5JNF$PNNVOJDBUJPO 8FC35$ .FEJB5SBOTQPSUBOE6TFPG351 w IUUQTUPPMTJFUGPSHIUNMESBGUJFUGSUDXFCSUQVTBHF w 8FC35$"VEJP$PEFDBOE1SPDFTTJOH3FRVJSFNFOUT w IUUQTUPPMTJFUGPSHIUNMSGD w 8FC35$7JEFP1SPDFTTJOHBOE$PEFD3FRVJSFNFOUT w IUUQTUPPMTJFUGPSHIUNMSGD w +BWB4DSJQU4FTTJPO&TUBCMJTINFOU1SPUPDPM w IUUQTUPPMTJFUGPSHIUNMESBGUJFUGSUDXFCKTFQ w  33
  28. ࢀߟจݙ w 351"5SBOTQPSU1SPUPDPMGPS3FBM5JNF"QQMJDBUJPOT w IUUQTUPPMTJFUGPSHIUNMSGD w &YUFOEFE4FDVSF3511SPpMFGPS3FBMUJNF5SBOTQPSU$POUSPM1SPUPDPM 35$1 #BTFE'FFECBDL 3514"71'

     w IUUQTUPPMTJFUGPSHIUNMSGD w 3515PQPMPHJFT w IUUQTUPPMTJFUGPSHIUNMSGD w *OUFSBDUJWF$POOFDUJWJUZ&TUBCMJTINFOU *$& "1SPUPDPMGPS/FUXPSL"EESFTT5SBOTMBUPS /"5 5SBWFSTBM w IUUQTUPPMTJFUGPSHIUNMSGD w 4FTTJPO5SBWFSTBM6UJMJUJFTGPS/"5 456/  w IUUQTUPPMTJFUGPSHIUNMSGD w 5SBWFSTBM6TJOH3FMBZTBSPVOE/"5 563/ 3FMBZ&YUFOTJPOTUP4FTTJPO5SBWFSTBM6UJMJUJFTGPS/"5 456/  w IUUQTUPPMTJFUGPSHIUNMSGD w /FUXPSL"EESFTT5SBOTMBUJPO /"5 #FIBWJPSBM3FRVJSFNFOUTGPS6OJDBTU6%1 w IUUQTUPPMTJFUGPSHIUNMSGD w 8FC35$3FBMUJNF$PNNVOJDBUJPO#FUXFFO#SPXTFST w IUUQTXXXXPSH53XFCSUD w .FEJB$BQUVSFBOE4USFBNT w IUUQTXXXXPSH53NFEJBDBQUVSFTUSFBNT 34