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

AbemaTVを支えるアプリの優しさ / abematv_devcon_2017

Masaki Ogata
October 21, 2017

AbemaTVを支えるアプリの優しさ / abematv_devcon_2017

ネットワーク帯域などの限られたシステムリソースを節約するために、Androidアプリで取り組んでいる優しさをいくつか紹介します。

Masaki Ogata

October 21, 2017
Tweet

More Decks by Masaki Ogata

Other Decks in Technology

Transcript

  1. "CFNB57Λࢧ͑Δ
    ΞϓϦͷ༏͠͞

    View Slide

  2. .BTBLJ0HBUB
    "OESPJE&OHJOFFS"CFNB57 *OD
    IUUQTHJUIVCDPNPHBDMFKBQBO
    !PHBDMFKBQBO

    View Slide

  3. ༏͠͞ͱ͸ʁ

    View Slide

  4. Զࢯɿʮ͍ͨͩ·ʔʯ
    Շࢯɿʮ͓ؼΓʔɺ͝൧࡞ͬͯ͋ΔΑɻʯ
    Զࢯɿʢ೥ʹҰ౓ͷح੻ʜʣ༏͠͞ʂʂ

    View Slide

  5.  lࢥ͍΍Γ͕͋ͬͯ਌੾z
     ग़య.BDࣙॻΞϓϦεʔύʔେࣙྛ

    View Slide

  6. ΞϓϦͷ༏͠͞ͱ͸

    View Slide

  7. ωοτϫʔΫ௨৴Λ͍ͩ͡ʹ
    ΞϓϦͷͤ͘͞ΜGPS6TFS
    όοςϦʔΛ͔ͭ͏ͳ
    ΨϯΨϯ͍͜͏ͥ
    Ξχϝʔγϣϯͤ͞Ζ

    View Slide

  8. 6*ʗ69Λ͍ͩ͡ʹ
    ΞϓϦͷͤ͘͞ΜGPS4ZTUFN
    ωοτϫʔΫଳҬΛ࢖͏ͳ
    Ωϟογϡ͠Α͏ͥ
    ௿ίετͰӡ༻ͤ͞Ζ

    View Slide

  9.  lωοτϫʔΫ௨৴ྔΛ཈͑Δz
     "CFNB57ΞϓϦͷ༏͠͞

    View Slide

  10. "CFNB57Λࢧ͑Δ
    ΞϓϦͷ༏͠͞
     ʙ"OESPJEΞϓϦͷऔΓ૊Έʙ

    View Slide

  11. ͕ɺɺ

    View Slide

  12. ݄๭೔ɻ
    ⚡࣌ؒੜ์ૹಛ൪ܾఆ⚡

    View Slide

  13. ෛՙରࡦΛਐΊͨ݁Ռɺ

    View Slide

  14. ༏͠͞ʹෆඋ͕͋Γ·ͨ͠

    View Slide

  15. "CFNB57Λࢧ͑Δ
    ΞϓϦͷ༏͠͞

    View Slide

  16. "CFNB57Λࢧ͑Δ
    ΞϓϦͷ༏͠͞
    XJUI

    View Slide

  17. ϓϨΠϦετऔಘ͠ա͗໰୊

    View Slide

  18. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT

    View Slide

  19. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT
    UT

    View Slide

  20. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT
    UT
    UT

    View Slide

  21. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT
    UT
    UT
    UT

    View Slide

  22. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT
    UT
    UT
    UT

    View Slide

  23. )-4ʢ)551-JWF4USFBNJOHʣ
    [email protected]
    &95.6
    &9597&34*0/
    &9595"3(&5%63"5*0/
    &959.&%*"4&26&/$&
    &95*/'
    UT
    &95*/'
    UT
    &95*/'
    UT
    UT
    UT
    UT
    UT

    View Slide

  24. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]

    View Slide

  25. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    View Slide

  26. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    View Slide

  27. ֤σόΠεͷϓϨΠϦετऔಘִؒ
    ϥΠϒ഑৴Ͱ54ϑΝΠϧͷηάϝϯτִ͕ؒඵͷ৔߹ɻ
    1$ 8
    J04 "OESPJE

    View Slide

  28. ֤σόΠεͷϓϨΠϦετऔಘִؒ
    ϥΠϒ഑৴Ͱ54ϑΝΠϧͷηάϝϯτִ͕ؒඵͷ৔߹ɻ
    1$ 8
    J04 "OESPJE
    ໿ඵִؒ ໿ඵִؒ

    View Slide

  29. ֤σόΠεͷϓϨΠϦετऔಘִؒ
    ϥΠϒ഑৴Ͱ54ϑΝΠϧͷηάϝϯτִ͕ؒඵͷ৔߹ɻ
    1$ 8
    J04 "OESPJE
    ໿ඵִؒ ໿ඵִؒ

    ໿
    ඵִؒ

    View Slide


  30. ŧŖƃ

    View Slide

  31. ݁࿦ɺ&YP1MBZFSͷෆ۩߹Ͱͨ͠ɻɻ
    IUUQTHJUIVCDPNHPPHMF
    &YP1MBZFSQVMM

    View Slide

  32. ߴϏοτϨʔτ΁੾ΓସΘΓޙ΋Q͕औಘ͞Εଓ͚͍ͯͨ
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    View Slide

  33. ͜ΕͰ໰୊ղফ

    View Slide

  34. ը໘ʹ࠷దͳϏοτϨʔτ੍ޚ

    View Slide

  35. "CFNB57։ہ౰ॳ೥݄
    ΞϓϦ͸ԣը໘ݻఆͰࢹௌ໘ͷը໘αΠζ΋ύλʔϯͷΈɻ

    View Slide

  36. "CFNB57։ہप೥೥݄
    ΞϓϦ͸ैདྷͷԣը໘ʹՃ͑ɺॎը໘Ͱͷࢹௌʹ΋ରԠɻ

    View Slide

  37. "CFNB57։ہप೥೥݄
    ͞Βʹɺ"OESPJE৽ػೳͷϚϧν΢Οϯυ΢Ͱ΋ࢹௌՄೳʹɻ

    View Slide

  38. ࢹௌ໘ͷύλʔϯ͕ෳࡶԽʜ

    View Slide

  39. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    View Slide

  40. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    Q 'VMM)%
    Y

    View Slide

  41. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    Y
    Q 'VMM)%
    Y

    View Slide

  42. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    Y
    Q 'VMM)%
    Y
    ,
    ໿ഒͷ௨৴ྔʜ

    View Slide

  43. )-4"EBQUJWF4USFBNJOH
    [email protected]
    &95.6
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    &959ʜ #"/%8*%5)
    [email protected]
    NV
    Q

    NV
    Q

    Y
    Q 'VMM)%
    Y
    Q )%
    Y

    View Slide

  44. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    ͍͔ͭ͘ͷ৚݅Λ૊Έ߹ΘͤͯϏοτϨʔτΛಈతʹมߋ͍ͯ͠Δɻ
    ը࣭ઃఆ ௨৴ճઢ ը໘෯
    ࣗಈ
    ࠷ߴը࣭
    ߴը࣭
    ʜ
    8*'*
    .PCJMF
    ʜ
    8JOEPX෯
    7JFX෯
    ʜ
    04WFS
    YPSIJHIFS
    Y
    ʜ

    View Slide

  45. public class VideoBitrateAdjuster {
    private final VideoBitrateTable auto = new AutoBitrateTable();
    private final VideoBitrateTable legacy = new LegacyBitrateTable();
    private final VideoBitrateTable manual = new ManualBitrateTable();
    public VideoBitrate adjust(@Px int w, VideoQuality quality, NetworkState network) {
    if (quality == AUTO) {
    if (isLegacyPlatform()) {
    return legacy.lookup(w, quality, network);
    } else {
    return auto.lookup(w, quality, network);
    }
    } else {
    return manual.lookup(w, quality, network);
    }
    }
    "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    ˞αϯϓϧίʔυͰ͢

    View Slide

  46. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    public class LimitedBandwidthMeter implements BandwidthMeter {
    ...
    public setMaxBitrate(long bitrate) { ... }
    public long getBitrateEstimate() {
    return Math.min(bitrateEstimate, maxBitrate);
    }
    ...
    }
    package com.google.android.exoplayer2.upstream;
    public interface BandwidthMeter {
    long getBitrateEstimate();
    }
    ˞αϯϓϧίʔυͰ͢

    View Slide

  47. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    NV UT

    View Slide

  48. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    NV UT

    View Slide

  49. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    NV UT

    View Slide

  50. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    NV UT

    View Slide

  51. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NV UT

    View Slide

  52. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV UT

    View Slide

  53. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV UT

    View Slide

  54. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV UT

    View Slide

  55. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    View Slide

  56. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    8*'*
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  57. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  58. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  59. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  60. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  61. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  62. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  63. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  64. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  65. "CFNB57ΞϓϦͷϏοτϨʔτ੍ޚʢ"OESPJEʣ
    VideoBitrateAdjuster
    PlayerBitrateChanger LimitedBandwidthMeter ExoPlayer
    "650
    .0#*-&
    QY
    Q
    CQT
    NBY#JUSBUFQ
    NV
    UT
    Q

    Q

    View Slide

  66. ͢΂ͯ͸௨৴ྔΛ཈͑ΔͨΊ

    View Slide

  67. ·ͱΊ

    View Slide

  68. ·ͱΊ
    wϓϨΠϦετऔಘ͠ա͗໰୊
    ࠷৽ͷ&YP1MBZFSʢSʣΛར༻͢Ε͹ղফͰ͖Δɻ
    wը໘ʹ࠷దͳϏοτϨʔτ੍ޚ
    ଳҬ্ݶΛઃఆ͢Δ͜ͱͰແବͳ௨৴ྔΛ཈͑Δ͜ͱ͕Ͱ͖Δɻ

    View Slide

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

    View Slide

  70. 8F`SFIJSJOH
    IUUQTBCFNBHO[SBT

    View Slide