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

ニコニコ動画iPhoneアプリの作り方

kenmaz
October 12, 2011

 ニコニコ動画iPhoneアプリの作り方

2011/10/12に開催された「スマートフォン2011春」での講演資料です。
http://expo.nikkeibp.co.jp/sma/spring/

kenmaz

October 12, 2011
Tweet

More Decks by kenmaz

Other Decks in Programming

Transcript

  1. χίχίಈը
    iPhoneΞϓϦͷ࡞Γํ
    dwango
    দલ݈ଠ࿠

    View Slide

  2. ࣗݾ঺հ
    • দલ݈ଠ࿠ (id: kenmaz)
    • υϫϯΰ χίχίࣄۀຊ෦ اը։ൃ෦
    χίχίiPhone ։ൃϦʔμʔ
    • 2010/06 த్ೖࣾ
    • લ৬͸େखϝʔΧʔܥSIerͰݚڀ։ൃ

    View Slide

  3. ͜Μͳਓ޲͚ʹ࿩͠·͢
    • ಈըɾԻ੠ͳͲϚϧνϝσΟΞίϯςϯ
    πΛѻ͏iPhoneΞϓϦΛ։ൃ͠Α͏ͱߟ
    ͍͑ͯΔਓ
    • PC޲͚ͷwebαʔϏεΛiPhone/εϚʔτ
    ϑΥϯ޲͚ʹఏڙ͠Α͏ͱߟ͍͑ͯΔਓ
    • χίಈͷཪଆ͕ؾʹͳΔਓ

    View Slide

  4. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  5. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  6. View Slide

  7. (ג)χϫϯΰ͕ӡӦ͢Δಈըڞ༗αʔϏε

    View Slide

  8. ࠷େͷಛ௃ɿίϝϯτ

    View Slide

  9. • ΈΜͳͰΘ͍Θ͍ίϝϯτ͠ͳ͕Βಈ
    ըΛݟָͯ͠Ή
    • “ඇಉظܕίϛχϡέʔγϣϯ”

    View Slide

  10. ಈը࠶ੜॲཧ
    • ಈը࠶ੜϓϨΠϠʔ͸FlashͰ։ൃ
    • ಈը࠶ੜϨΠϠʔ
    • ίϝϯτඳըϨΠϠʔ
    • UIϨΠϠʔ

    View Slide

  11. ΘΖͨɹɹɹɹɹɹɹɹɹɹɹ
    WWWW
    ɹɹɹɹɹɹɹɹɹ͜Ε͸ͻͲ͍
    Ωλʔʔʔʔʔʔʔʔʔɹɹɹɹɹɹɹ
    ΧΦε͆͆͆
    wwwwwwwɹɹɹɹɹɹɹɹɹɹɹͺͶ͐
    ɹɹɹɹɹ࡞ऀ͸ωਃ
    ಈը࠶ੜॲཧ

    View Slide

  12. ΘΖͨɹɹɹɹɹɹɹɹɹɹɹ
    WWWW
    ɹɹɹɹɹɹɹɹɹ͜Ε͸ͻͲ͍
    Ωλʔʔʔʔʔʔʔʔʔɹɹɹɹɹɹɹ
    ΧΦε͆͆͆
    wwwwwwwɹɹɹɹɹɹɹɹɹɹɹͺͶ͐
    ɹɹɹɹɹ࡞ऀ͸ωਃ
    ಈը࠶ੜॲཧ

    View Slide

  13. View Slide

  14. (ג)χϫϯΰ͕ӡӦ͢Δ
    ಈըϥΠϒετϦʔϛϯάαʔϏε

    View Slide

  15. ެࣜੜ์ૹ
    • ӡӦ͕൪૊੍࡞ɾ഑৴͢Δੜ์ૹ
    • ͓স͍ɺԻָɺΞχϝɺήʔϜɺ੓࣏ɺ౼࿦ɺใಓɺ
    etc...
    • ຖ݄400ʙ500൪૊์ૹ͍ͯ͠Δ

    View Slide

  16. Ϣʔβੜ์ૹ
    • ҰൠͷϢʔβ͕ੜ์ૹΛ഑৴
    • ์ૹ͢Δਓʹʮੜओʯ
    • ຖ೔਺ສ൪૊͕์ૹ͞Ε͍ͯΔ

    View Slide

  17. ΋ͪΖΜίϝϯτ΋
    • χίಈͱಉ͘͡ɺίϝϯτʹΑΔί
    ϛχϡέʔγϣϯ͕Մೳ
    • χίੜ͸ಉظܕίϛχϡέʔγϣϯ
    ʢχίಈ͸ඇಉظܕʣ

    View Slide

  18. ϏδωεϞσϧ
    • ϓϨϛΞϜձһऩೖ
    • ֹ݄525ԁ
    • ઌ೔ϓϨϛΞϜձһ120ສਓಥഁ
    • ༗ྉ൪૊ɾ༗ྉੜ์ૹ
    • ޿ࠂ
    • etc..

    View Slide

  19. ϞόΠϧରԠ
    • χίχίಈըϞόΠϧʢχίϞόʣ
    • υίϞɾιϑτόϯΫɾAU
    • ΩϟϦΞ՝ۚʹରԠ
    • ϓϨϛΞϜձһͷ൒਺͕ΩϟϦΞ՝ۚ
    iPhone/Andorid͸ɾɾʁ

    View Slide

  20. χίχίಈը ͱ iPhone
    • ͋ΒΏΔσόΠεͰχίಈΛָ͠ΊΔΑ
    ͏ʹ͍ͨ͠
    • iPhoneͰ΋χίಈΛݟ͍ͨʂ
    • χίಈɺχίੜͱ΋ʹɺಈը࠶ੜʹ͸
    FlashΛ࢖͍ͬͯΔ
    • →iPhoneͰ͸χίಈΛࢹௌͰ͖ͳ͍ʂ

    View Slide

  21. χίχίಈը ͱ iPhone
    • ͱ͍͏͜ͱͰઐ༻ΞϓϦΛ։ൃ
    • 2009/4 χίχίಈըiPhoneΞϓϦ
    • 2010/5 χίχίੜ์ૹiPhoneΞϓϦ

    View Slide

  22. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  23. χίχίಈըiPhoneΞϓϦ

    View Slide

  24. View Slide

  25. ओͳػೳ
    • ಈը࠶ੜ
    • ίϝϯτදࣔɾ౤ߘ
    • ϥϯΩϯάදࣔ
    • ϚΠϦετදࣔɾฤू
    • ݕࡧ

    View Slide

  26. ಈը࠶ੜ
    • ̎छྨͷ࠶ੜϞʔυ͕͋Δ
    • ௿ը࣭Ϟʔυ
    • ߴը࣭Ϟʔυ
    ϓϨϛΞϜձһ
    +WiFi઀ଓͷΈ

    View Slide

  27. View Slide

  28. ௿ը࣭Ϟʔυ
    • χίχίಈըϞόΠϧͷಈը഑৴γε
    ςϜΛ࢖ͬͯಈըΛ࠶ੜ͢ΔϞʔυ
    • ಈըσʔλ͸osecܗࣜ

    View Slide

  29. osecܗࣜʁ
    • Ψϥέʔͷಈը࠶ੜॲཧʹ͸͍Ζ͍Ζ੍ݶ͕͋Δ
    • ΨϥέʔͰ΋Flash͸࠶ੜͰ͖Δ͕ಈըͷ্ʹί
    ϝϯτΛॏͶͯඳըͰ͖ͳ͍
    • σʔλ௨৴ྔ੍͕ݶ͞Ε͍ͯΔ
    • χίϞόಠࣗͷಈըϑΥʔϚοτ͕ඞཁ
    → osecܗࣜΛಠࣗ։ൃ
    ͓ͤͪ

    View Slide

  30. • ύϥύϥອըͷΑ͏ʹJPEGΛ̍ίϚͣͭ࠶ੜͯ͠ಈ
    ըͬΆ͘ݟͤΔ
    • ө૾ = JPEGɺԻ੠ = ADPCM
    • ಈըσʔλΛ̍ඵ (One-Sec)͝ͱʹ෼ׂɾύέοτ
    Խ
    ը૾
    ը૾ ը૾ ը૾ ը૾
    Ի੠
    ̍ඵ෼
    ը૾
    ը૾ ը૾
    Ի੠
    ̍ඵ෼
    ૾ ը૾ ը૾ ը૾
    Ի੠
    ̍ඵ෼
    osecܗࣜʁ
    ͓ͤͪ

    View Slide

  31. ௿ը࣭Ϟʔυ
    χίಈ
    ಈըετϨʔδ
    χίϞό
    ഑৴αʔόʔ
    osecܗࣜม׵
    1.ಈըσίʔυ
    2.ϑϨʔϜը૾औΓग़͠ɾॖখɾJPEGѹॖ
    3.Ի੠ADPCMม׵
    4.ύέοτԽ
    mp4/flv mp4/flv
    osec
    over http
    osec
    over http

    View Slide

  32. ௿ը࣭Ϟʔυ
    • χίϞόͷΠϯϑϥΛྲྀ༻͢Δ͜ͱͰɺ
    ௿ίετͰiPhoneʹରԠͰ͖ͨ...
    • ͔͠͠ಈըͱͯ͠ͷ඼࣭͸˚
    • ϞʔγϣϯJPEGͰ͸΍͸ΓͭΒ͍

    View Slide

  33. ߴը࣭Ϟʔυ
    • mp4/H.264/AACͷಈըΛͦͷ··iPhone
    Ͱ࠶ੜ͢ΔϞʔυ
    • χίಈͷಈըετϨʔδ͔ΒಈըΛ௚
    ઀औಘɾ࠶ੜ
    • PCͱಉ౳ͷը࣭ͰಈըΛָ͠ΊΔ

    View Slide

  34. • mp4/H.264/AACͷಈըΛͦͷ··iPhone
    Ͱ࠶ੜ͢ΔϞʔυ
    • χίಈͷಈըετϨʔδ͔ΒಈըΛ௚઀
    औಘɾ࠶ੜ
    • PCͱಉ౳ͷը࣭ͰಈըΛָ͠ΊΔ
    ߴը࣭Ϟʔυ

    View Slide

  35. دΓಓɿ̍෼Ͱ෼͔Δಈը
    ܗࣜ
    • mp4 : ίϯςφϑΥʔϚοτ
    • H.264 : ϏσΦίʔσοΫ
    • AAC : ΦʔσΟΦίʔσοΫ
    mp4
    H.264
    ϏσΦ
    AAC
    ΦʔσΟΦ

    View Slide

  36. دΓಓɿ̍෼Ͱ෼͔Δಈը
    ܗࣜ
    ίϯςφ
    ϑΥʔϚοτ
    mp4, m4v, flv, f4v, swf, avi, mov, 3gpp,
    webm
    ϏσΦ
    ίʔσοΫ
    H.264 (MPEG4-AVC), H.263,
    On2 VP6, VP8, Theora, MPEG-1/2,
    WMV
    ΦʔσΟΦ
    ίʔσοΫ
    AAC, MP3, ADPCM, Nellymoser,
    Speex, Apple Lossless, Vorbis, WMA

    View Slide

  37. • mp4/H.264/AACͷಈըΛͦͷ··iPhone
    Ͱ࠶ੜ͢ΔϞʔυ
    • χίಈͷಈըετϨʔδ͔ΒಈըΛ௚઀
    औಘɾ࠶ੜ
    • PCͱಉ౳ͷը࣭ͰಈըΛָ͠ΊΔ
    ߴը࣭Ϟʔυ

    View Slide

  38. ߴը࣭Ϟʔυ
    χίಈ
    ಈըετϨʔδ
    ͍͔ͭ͘ͷ࣮૷্ͷ໰୊
    mp4 mp4/flv

    View Slide

  39. ໰୊̍. ࠶ੜՄೳͳಈըܗ

    • iPhoneͰ࠶ੜՄೳͳܗࣜ
    • ಈըίʔσοΫɿH.264
    • Ի੠ίʔσοΫɿmp3/AAC
    • Ϣʔβ͔Β౤ߘ͞ΕΔಈըܗࣜ͸ଟछଟ༷ (flv/mp4/
    DivX/MPEG1,2/WMV..)
    • iPhoneͰ࠶ੜͰ͖ͳ͍Մೳੑ͕͋Δ
    ౤ߘ͞Εͨಈը͸αʔόαΠυͰશͯH.264/
    AACͰ࠶Τϯίʔυ͢Δ͜ͱʹͨ͠

    View Slide

  40. ໰୊̎ɿMPMoviePlayerͷ࢓༷
    • ҰճͷಈըऔಘͰෳ਺ճͷHTTPϦΫΤετ
    (RangeϦΫΤετ)͕ൃੜ͢Δ
    • ಈըετϨʔδͷαʔόʔෛՙ૿େ
    • CookieΛࣗ༝ʹ੍ޚͰ͖ͳ͍
    • χίಈͷಈըετϨʔδ͸CookieʹΑΔ
    ೝূΛߦ͍ͬͯΔ
    • ೝূʹࣦഊͯ͠ಈը͕औಘͰ͖ͳ͍
    ※MPMoviePlayer: iOS͕ఏڙ͢Δಈը࠶ੜ༻Ϋϥε

    View Slide

  41. ΞϓϦ಺෦ʹϩʔΧϧϓϩΩγΛ࣮૷
    ໰୊̎ɿMPMoviePlayerͷ࢓༷
    MPMoviePlayer ϩʔΧϧϓϩΩγ
    χίಈ
    ಈըετϨʔδ
    ಈըऔಘ
    ಈըऔಘ
    ಈըऔಘ
    ಈըऔಘ
    ಈըऔಘ
    ಈըσʔλฦ৴
    ೝূ

    View Slide

  42. ߴը࣭Ϟʔυ
    • χίχίಈը͸H.264Λੵۃతʹαϙʔ
    τ
    • χίχίiPhone΋ࠓޙ͸ߴը࣭ϞʔυΛ
    த৺ͱ͢Δ
    • ௿ը࣭Ϟʔυʢosecܗࣜʣ͸ঃʑʹഇࢭ
    ͍ͯ͘͠༧ఆ

    View Slide

  43. ओͳػೳ
    • ಈը࠶ੜ
    • ίϝϯτදࣔɾ౤ߘ
    • ϥϯΩϯάදࣔ
    • ϚΠϦετදࣔɾฤू
    • ݕࡧ

    View Slide

  44. ίϝϯτදࣔ
    • ಈը্ʹίϝϯτΛॏͶͯදࣔ
    • ίϝϯτʹχίಈͷΩϞ
    • PC൛ΑΓ׈Β͔ͳදࣔʂ
    • PC൛ɿҰఆִؒͰίϝϯτදࣔҐஔΛͣΒͯ͠ඳ
    ը
    • iPhone൛ɿCoreAnimation FrameworkΛ࢖ͬͯίϝ
    ϯτඳըΛGPUʹ͓·͔ͤ
    • σϞ
    wwwwww
    wwwwwwww
    ͜Ε͸ͻͲ͍w
    Ωλʔʔʔʔʔʔ

    View Slide

  45. CoreAnimationͰίϝϯτඳըΛψϧψϧ
    [comment posX:480.0];
    [UIView beginAnimations:@"comment" context:NULL];
    [UIView setAnimationDuration:4.0f];
    [UIView setAnimationCurve: UIViewAnimationCurveLinear];
    [comment posX: -comment.width];
    [UIView commitAnimations];
    wwwww
    480px
    wwwww
    480.0
    0.0
    120px
    -120.0 600.0
    ̐ඵ

    View Slide

  46. ओͳػೳ
    • ಈը࠶ੜ
    • ίϝϯτදࣔɾ౤ߘ
    • ϥϯΩϯάදࣔ
    • ϚΠϦετදࣔɾฤू
    • ݕࡧ

    View Slide

  47. WebAPIʹΑΔαʔϏεؒ࿈
    ܞ
    • ϚΠϦετɺݕࡧɺϥϯΩϯά
    • χίχίಈըͷ಺෦WebAPIΛ༻͍࣮ͯ
    ૷͍ͯ͠Δ
    • χίχίಈըʹؔ࿈͢ΔαʔϏεؒͷ࿈
    ܞ͸جຊWebAPI
    • →ૄ݁߹ͳઃܭ

    View Slide

  48. χίχίiPhone
    APIαʔόʔ
    χίχίಈը
    ڞ௨ೝূAPI
    χίχίಈը
    API
    χίϞό
    API
    WebAPIʹΑΔαʔϏεؒ࿈
    ܞ
    χίχί
    νϟϯωϧAPI

    View Slide

  49. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  50. χίχίੜ์ૹiPhoneΞϓϦ

    View Slide

  51. • ࢹௌػೳ
    • ௿ը࣭Ϟʔυ
    • ߴը࣭Ϟʔυ
    • ์ૹػೳ
    • iPhone͔Βੜ์ૹΛ഑৴
    ओͳػೳ
    ϓϨϛΞϜձһ
    +WiFi઀ଓ࣌ͷΈ
    ϓϨϛΞϜձһ
    ͷΈ

    View Slide

  52. • ࢹௌػೳ
    • ௿ը࣭Ϟʔυ
    • ߴը࣭Ϟʔυ
    • ์ૹػೳ
    • iPhone͔Βੜ์ૹΛ഑৴
    ओͳػೳ

    View Slide

  53. ࢹௌػೳɿ௿ը࣭Ϟʔυ
    • χίϞόͷΠϯϑϥΛ࢖ͬͯੜ์ૹΛ
    ࢹௌ͢Δػೳ
    • ಈըΞϓϦͱಉ༷osecܗࣜ
    • ө૾඼࣭͸͋·Γྑ͘ͳ͍

    View Slide

  54. ࢹௌػೳɿ௿ը࣭Ϟʔυ
    χίੜ
    ഑৴αʔόʔ
    χίϞόੜ
    ഑৴αʔόʔ
    RTMP→osecม׵
    RTMP RTMP
    ocec
    over HTTP
    ocec
    over HTTP
    Flash Media
    Server

    View Slide

  55. RTMP
    (Real Time Messaging Protocol)
    • ಈըɾԻ੠ͷϥΠϒετϦʔϛϯάͷͨΊͷ
    ϓϩτίϧ
    • Adobe͕࢓༷Λࡦఆ
    • FlashϓϨΠϠʔ౳Ͱ࠾༻͞Ε͍ͯΔ
    • χίੜ(PC)͸શ໘తʹRTMPΛ࠾༻
    • iPhoneɾΨϥέʔ͸RTMPͷ௚઀࠶ੜ͸ෆՄ

    View Slide

  56. • ࢹௌػೳ
    • ௿ը࣭Ϟʔυ
    • ߴը࣭Ϟʔυ
    • ์ૹػೳ
    • iPhone͔Βੜ์ૹΛ഑৴
    ओͳػೳ

    View Slide

  57. ࢹௌػೳɿߴը࣭Ϟʔυ
    • H.264Ͱ഑৴͞Ε͍ͯΔੜ์ૹΛ௚઀
    iPhoneͰࢹௌ͢ΔϞʔυ
    • PCͱಉ౳ͷը࣭Ͱੜ์ૹΛࢹௌͰ͖Δ
    • ์ૹݩͰ໌ࣔతʹH.264Ͱ഑৴͢Δඞཁ͕͋ΔʢσϑΥϧτͷίʔσο
    Ϋ͸VP6ʣɻ
    • χίಈΞϓϦͷߴը࣭ϞʔυͰ͸͢΂ͯͷಈըΛ࠶ม׵͠H.264Խͯ͠
    ͍͕ͨɺੜ์ૹͰ͸ίετֻ͕Γա͗ΔͨΊɺݱࡏ͸H.264ͷΈରԠɻ

    View Slide

  58. ࢹௌػೳɿߴը࣭Ϟʔυ
    χίੜ
    ഑৴αʔόʔ
    Wowza
    Media
    Server
    RTMP→HLSม׵
    RTMP RTMP
    HLS
    Flash Media
    Server

    View Slide

  59. HLS
    (HTTP Live Streaming)
    • HTTP͚ͩͰٖࣅతʹϥΠϒετϦʔϛ
    ϯάΛ࣮ݱ͢Δϓϩτίϧ
    • iPhoneͰ͸ಈըϥΠϒετϦʔϛϯάʹ
    HLSͷ࢖༻Λਪ঑͍ͯ͠Δ

    View Slide

  60. Wowza Media Server
    • Wowza Media Systems͕ࣾ։ൃ͢Δ঎༻
    ͷετϦʔϛϯάαʔόʔ੡඼
    • Flash Media ServerͷΫϩʔϯ
    • RTMP → HLSม׵ػೳ

    View Slide

  61. • ࢹௌػೳ
    • ௿ը࣭Ϟʔυ
    • ߴը࣭Ϟʔυ
    • ์ૹػೳ
    • iPhone͔Βੜ์ૹΛ഑৴
    ओͳػೳ

    View Slide

  62. ์ૹػೳ
    • iPhone͔Βੜ์ૹ͢Δػೳ
    • PCΧϝϥ㱻iPhoneΧϝϥ੾Γସ͑ػೳ
    • લ໘ɾഎ໘Χϝϥ੾Γସ͑

    View Slide

  63. View Slide

  64. ์ૹػೳ
    • Ͳ͏΍࣮ͬͯ૷͢Δ͔ʁ

    View Slide

  65. PC
    ์ૹػೳͷ࢓૊Έ
    χίੜ(PC൛)Ͱ͸...
    WebΧϝϥͷ
    ө૾ΛΩϟϓνϟ
    ϑϨʔϜը૾
    χίੜ
    ഑৴αʔόʔ
    RTMP
    Flash Media
    Server
    RTMP
    ಈըσʔλ
    ಈըѹॖ
    (Τϯίʔυ)

    View Slide

  66. iPhone
    iPhone൛ϓϩτλΠϓ̍
    ΫϥΠΞϯταΠυѹॖํࣜ
    iPhoneΧϝϥͷ
    ө૾ΛΩϟϓνϟ
    ϑϨʔϜը૾
    χίੜ
    ഑৴αʔόʔ
    RTMP
    Flash Media
    Server
    RTMP
    ಈըσʔλ
    ಈըѹॖ
    (Τϯίʔυ)

    View Slide

  67. தܧαʔόʔ
    iPhone
    iPhone൛ϓϩτλΠϓ̎
    αʔόʔαΠυѹॖํࣜ
    iPhoneΧϝϥͷ
    ө૾ΛΩϟϓνϟ
    ϑϨʔϜը૾
    χίੜ
    ഑৴αʔόʔ
    RTMP
    Flash Media
    Server
    RTMP
    ಈըσʔλ
    ಈըѹॖ
    (Τϯίʔυ)
    HTTP

    View Slide

  68. ̎ํࣜͷൺֱ
    • ΫϥΠΞϯταΠυѹॖํࣜ
    • ௕ॴɿதܧαʔόʔ͕ෆཁ
    • ୹ॴɿiPhone಺Ͱѹॖ͢ΔͷͰCPUෛՙߴ
    • αʔόʔαΠυѹॖํࣜ
    • ௕ॴɿiPhone͸Χϝϥө૾ΛΩϟϓνϟ͠ૹ
    ৴͢Δ͚ͩͳͷͰCPUෛՙ௿
    • ୹ॴɿதܧαʔόʔ͕ඞཁ

    View Slide

  69. αʔόʔαΠυѹॖํࣜΛ࠾༻
    • ΫϥΠΞϯταΠυѹॖํࣜ
    • ௕ॴɿதܧαʔόʔ͕ෆཁ
    • ୹ॴɿiPhone಺Ͱѹॖ͢ΔͷͰCPUෛՙߴ
    • αʔόʔαΠυѹॖํࣜ
    • ௕ॴɿiPhone͸Χϝϥө૾ΛΩϟϓνϟ͠ૹ
    ৴͢Δ͚ͩͳͷͰCPUෛՙ௿
    • ୹ॴɿதܧαʔόʔ͕ඞཁ
    iPhone3GS΍iPod TouchͳͲ
    CPUੑೳͷ௿͍୺຤Ͱ΋
    ࢖͑ΔΑ͏ʹ͍ͨ͠ʂ

    View Slide

  70. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  71. Appleͷن໿
    • iOSΞϓϦΛ։ൃ͢Δ্ͰAppleͷن໿
    ΛकΔ͜ͱ͸ඞਢ
    • App Store Review Guidelines (※1)
    • HTTP Live Streaming Overview (※2)
    ※1 ) http://developer.apple.com/appstore/resources/approval/guidelines.html
    ※2 ) http://developer.apple.com/library/ios/#documentation/NetworkingInternet/
    Conceptual/StreamingMediaGuide/Introduction/Introduction.html

    View Slide

  72. Appleͷن໿ʢൈਮʣ
    • 3Gճઢ؀ڥԼͰɺ10෼Ҏ্·ͨ͸5෼Ͱ5MBΛ
    ௒͑ΔಈըΛετϦʔϛϯά࠶ੜ͢Δ৔߹͸ɺ
    HTTP Live StreamingΛ࢖༻͠ͳ͚Ε͹ͳΒͳ
    ͍ɻͦͷ৔߹ʹ͸࠷௿64kbpsͷԻ੠ͷΈετ
    ϦʔϜΛඞؚͣΊΔඞཁ͕͋Δɻ

    View Slide

  73. Ξοϓϧͷن໿͕༩͑ΔӨڹ
    • 3Gճઢ؀ڥԼͰɺ10෼Ҏ্·ͨ͸5෼Ͱ5MBΛ
    ௒͑ΔಈըΛετϦʔϛϯά࠶ੜ͢Δ৔߹͸ɺ
    HTTP Live StreamingΛ࢖༻͠ͳ͚Ε͹ͳΒͳ
    ͍ɻͦͷ৔߹ʹ͸࠷௿64kbpsͷԻ੠ͷΈετ
    ϦʔϜΛඞؚͣΊΔඞཁ͕͋Δɻ
    3Gճઢ؀ڥԼͰ͸ࣄ্࣮HLSରԠ͕ඞਢ
    WiFi௨৴࣌͸HLSͰͳͯ͘΋Α͍

    View Slide

  74. Ξοϓϧͷن໿͕༩͑ΔӨڹ
    • 3Gճઢ؀ڥԼͰɺ10෼Ҏ্·ͨ͸5෼Ͱ5MBΛ
    ௒͑ΔಈըΛετϦʔϛϯά࠶ੜ͢Δ৔߹͸ɺ
    HTTP Live StreamingΛ࢖༻͠ͳ͚Ε͹ͳΒͳ
    ͍ɻͦͷ৔߹ʹ͸࠷௿64kbpsͷԻ੠ͷΈετ
    ϦʔϜΛඞؚͣΊΔඞཁ͕͋Δɻ
    HLSʹରԠ͢Δࡍ͸ɺ64kbpsͷԻ੠ετϦʔϜΛ
    ผ్ੜ੒͢Δඞཁ͕͋Δ → Πϯϑϥίετ૿

    View Slide

  75. Ξοϓϧͷن໿͕༩͑ΔӨڹ
    HLSʹ׬શʹରԠ͠Α͏ͱ͢Δͱίετߴ

    3GճઢͰ͸ಈը࠶ੜΛҰ෦੍ݶ͍ͯ͠Δ
    ࠓޙରԠ༧ఆ

    View Slide

  76. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  77. HTTP Live Streaming
    ৄࡉ
    • HTTP͚ͩͰٖࣅతʹϥΠϒετϦʔϛϯά
    Λ࣮ݱ͢Δϓϩτίϧ
    • Apple͕࢓༷Λࡦఆ
    • IETFͷΠϯλʔωοτυϥϑτͱͯ͠ఏग़
    • iPhone,QuickTimeͳͲͰ࠾༻
    • Adobe FMS͕HLSΛαϙʔτ͢Δ༧ఆ(!)

    View Slide

  78. HTTPαʔόʔ (ApacheͳͲ)
    HTTP Live Streaming ͷ࢓૊Έ
    H.264
    ಈըϑΝΠϧ
    sample_0001.ts
    sample_0002.ts
    sample_0003.ts
    ಈըϑΝΠϧΛ
    10ඵ͝ͱʹ෼ׂ
    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXTINF:10, sample_0001.ts
    #EXTINF:10, sample_0002.ts
    #EXTINF:10, sample_0003.ts
    ϓϨΠϦετ(m3u8)
    Λੜ੒
    ϓϨΠϦετͲ͓Γʹ
    ࿈ଓ࠶ੜ

    View Slide

  79. HTTPαʔόʔ (ApacheͳͲ)
    HTTP Live Streaming ͷ࢓૊Έ
    sample_0001.ts
    sample_0002.ts
    sample_0003.ts
    ө૾σʔλΛ
    10ඵ͝ͱʹ෼ׂ
    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE: 0
    #EXTINF:10, sample_0001.ts
    #EXTINF:10, sample_0002.ts
    #EXTINF:10, sample_0003.ts
    ϓϨΠϦετ(m3u8)
    ͕ಈతʹߋ৽͞ΕΔ
    ϓϨΠϦετͲ͓Γʹ
    ࿈ଓ࠶ੜ

    View Slide

  80. HLSͷಛ௃
    • ௕࣌ؒͷಈըͰ͋ͬͯ΋Ұ౓ͷ௨৴Ͱ
    औಘ͢Δͷ͸10ඵ෼ͷಈըσʔλ͚ͩ
    • ଳҬΛѹഭ͠ͳ͍
    • Πϯϑϥ΍௨৴ΩϟϦΞʹ͸༏͍͠

    View Slide

  81. HLSͷಛ௃
    • ಈըσʔλ͸HTTPͰసૹ
    • ApacheͷΑ͏ͳී௨ͷwebαʔόʔͩ
    ͚ͰಈըετϦʔϛϯά͕࣮ݱͰ͖Δɻ
    Adobe FMSͳͲͷߴՁͳαʔόʔ͸ෆཁ
    • HTTPͳͷͰଟ͘ͷ؀ڥͰ࢖༻Ͱ͖Δ
    ʢHTTPҎ֎ͷ௨৴ΛϒϩοΫ͍ͯ͠Δ
    ؀ڥ΋ଟ͍ʣ

    View Slide

  82. HLSͷಛ௃
    • ଳҬ෯ʹԠͨ͡ը࣭ࣗಈ੾Γସ͑
    • ଳҬ͕ࡉͯ͘΋շదʹಈըΛࢹௌͰ͖Δ
    ௿ը࣭ಈը
    sample_0001.ts
    sample_0002.ts
    sample_0003.ts
    ߴը࣭ಈը
    sample_0001.ts
    sample_0002.ts
    sample_0003.ts
    ௨৴ঢ়گ͕
    ྑ͍࣌
    ௨৴ঢ়گ͕
    ѱ͍࣌
    ଳҬ෯ʹԠͯࣗ͡ಈ੾׵͑

    View Slide

  83. Agenda
    1. χίχίಈըɾχίχίੜ์ૹͱ͸
    2. χίχίಈը iPhoneΞϓϦ
    3. χίχίੜ์ૹ iPhoneΞϓϦ
    4. Appleͷن໿
    5. HTTP Live Streamingৄࡉ
    6. ࣮੷ͱࠓޙ

    View Slide

  84. ࣮੷

    View Slide

  85. ΞϓϦDL਺
    • ྦྷܭ100ສDLҎ্

    View Slide

  86. ϢχʔΫϢʔβ਺
    • 4~5ສUU/day
    ਒ࡂ࣌NHK
    αΠϚϧ์ૹ

    View Slide

  87. iPhone͔Βੜ์ૹ഑৴
    • 600൪૊/day

    View Slide

  88. ࠓޙ

    View Slide

  89. ৹ࠪίετͷ௿ݮ
    • ը໘ϨΠΞ΢τΛগ͠มߋ͢Δ͚ͩͰ৹͕ࠪඞ
    ཁͳͷͰίετ͕͔͔Δ
    • ΞϓϦͷചΓ্͛ͷ30%ΛΞοϓϧʹऔΒΕΔɻ
    άʔάϧ΋௥ैͷྲྀΕ
    • ΞϓϦ͸৭ʑͭΒ͍ʂ
    • WebͰͰ͖Δ͜ͱ͸Web΁
    • HTML5 !

    View Slide

  90. HTML5ରԠ
    • HTML5ͷvideoλάʹΑΔಈը࠶ੜ
    • Safari͚ͩͰχίಈΛࢹௌͰ͖Δ
    • iPadͰ͸ରԠࡁΈ
    • ΞϓϦ͕ෆཁʂ
    • ৹ࠪ΋ෆཁʂ

    View Slide

  91. HTML5ରԠ
    • ͨͩ͠iPhoneͰ͸
    • Safariͷ࢓༷ʹΑΓಈըͷ্ʹίϝϯ
    τΛॏͶΔ͜ͱ͕ෆՄೳͳͨΊɺݱ
    ঢ়Ͱ͸࣮ݱෆՄೳ
    • ͦ͜Ͱɾɾɾ

    View Slide

  92. ΞϓϦUIͷwebԽ
    • ಈը࠶ੜॲཧҎ֎Λweb(HTML/CSS/JS)Ͱ։ൃ
    • iPhoneΞϓϦ૊ΈࠐΈͷUIWebViewͰදࣔ
    • ಈը࠶ੜϘλϯΛԡͨ͠ΒΞϓϦωΠςΟϒ
    ͷػೳΛݺͼग़ͯ͠ಈը࠶ੜ

    View Slide

  93. ΞϓϦUIͷwebԽ

    View Slide

  94. ΞϓϦUIͷwebԽ
    HTML/CSS/JavaScript
    Ͱ࣮૷

    View Slide

  95. ΞϓϦUIͷwebԽ

    [UIWebView stringByEvaluatingJavaScriptFromString:
    @"videoList.show();"];

    View Slide

  96. AndroidରԠ
    • UI͸web
    • ಈը࠶ੜ͸Flash

    View Slide

  97. ·ͱΊ
    • χίಈ / χίੜiPhoneΞϓϦΛࢧ͑Δٕज़ʹ͍ͭͯ঺
    հ
    • ಈը΍ԻָͳͲϝσΟΞίϯςϯπΛѻ͏ΞϓϦΛ։
    ൃ͢Δ৔߹͸ɺΞοϓϧͷن໿ʹ஫ҙ͢Δඞཁ͕͋Δ
    • iPhoneΞϓϦͷ৹ࠪίετΛճආ͢Δʹ͸෦෼తʹ
    webԽ͢Δͷ͕༗ޮ
    • χίχίಈըͰ΋εϚʔτϑΥϯͷॏཁੑ͸࣮֬ʹߴ
    ·͖͍ͬͯͯΔ

    View Slide

  98. One more thing...

    View Slide

  99. υϫϯΰΤϯδχΞืू

    • υϫϯΰͰ͸ҎԼͷΑ͏ͳΤϯδχΞΛืू
    ͍ͯ͠·͢
    • χίχίಈըͷ։ൃʹؔΘΓ͍ͨʂ
    • εϚʔτϑΥϯΞϓϦ։ൃʹڵຯ͕͋Δʂ
    • େن໛webΞϓϦέʔγϣϯΛ։ൃ͍ͨ͠ʂ
    • ͳͲͳͲ

    View Slide

  100. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide