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

ABEMAのRenderScript Intrinsics Replacement Toolkit 導入事例

ABEMAのRenderScript Intrinsics Replacement Toolkit 導入事例

Go Takahana

May 29, 2023
Tweet

More Decks by Go Takahana

Other Decks in Technology

Transcript

  1. ABEMAͷRenderScript Intrinsics
    Replacement Toolkit ಋೖࣄྫ
    גࣜձࣾAbemaTV
    ߴඓ ڷ

    View Slide

  2. ߴඓ ڷ Takahana Go
    • 21৽ଔͰαΠόʔΤʔδΣϯτʹೖࣾ
    • ABEMAͷAndroidϞόΠϧ / TVΞϓϦͷ։ൃ
    @go_takahana

    View Slide

  3. 1. ώʔϩʔΤϦΞͷ౰ॳͷ࣮ݱํ๏
    2. ΅͔͠ը૾࡞੒ํ๏ͷબ୒
    3. ·ͱΊ

    View Slide

  4. ώʔϩʔΤϦΞͷ

    ౰ॳͷ࣮ݱํ๏

    View Slide

  5. ϗʔϜͷώʔϩʔΤϦΞ
    • ABEMAͷࠓͷΠνΦγ࡞඼Λ঺հ͢Δ
    • αϜωΠϧͷഎܠ͸΅͔ͨ͠αϜωΠϧ
    ※ϑϦʔը૾ʹࠩ͠ସ͍͑ͯ·͢

    View Slide

  6. αϜωΠϧΛҾཱ͖ͯΔ
    ※ϑϦʔը૾ʹࠩ͠ସ͍͑ͯ·͢

    View Slide

  7. ΫϥΠΞϯτͰ΅͔͠ը૾Λ࡞੒͢Δ
    αʔόʔ ΫϥΠΞϯτ
    • λΠτϧ
    • ը૾URL

    View Slide

  8. ΅͔͠ը૾࡞੒ํ๏ͷݕ౼
    ํ๏ ϝϦοτ ݒ೦
    ը૾ϩʔμʔͷ

    #MVS5SBOTGPSNBUJPO
    (MJEFͱ$PJMΛར༻͍ͯ͠Δ

    ͷͰಋೖ͕؆୯
    3FOEFS4DSJQUΛར༻͍ͯ͠Δ
    ˞$PJMͰ͸Ͱ࡟আࡁΈ
    αʔυύʔςΟͷ

    ը૾Ճ޻ϥΠϒϥϦ
    ಋೖ͕؆୯
    3FOEFS4DSJQUΛར༻͍ͯ͠Δ
    ϝϯςͮ͠Β͍
    $PNQPTFͷ.PEJ
    fi
    FSCMVS
    ͙͢࢖͑Δ "OESPJEҎ্Ͱ͔͠࢖͑ͳ͍
    ※ϝϦοτ΍σϝϦοτ͸ABEMAΞϓϦʹ͓͚Δ΋ͷͰɺଞΞϓϦʹ͓͍ͯ͸ҟͳΔ৔߹͕͋Γ·͢ɻ

    View Slide

  9. RenderScript ͷαϙʔτऴྃ
    https://developer.android.com/guide/topics/renderscript/compute?hl=ja

    View Slide

  10. Coil BlurTransformation ΋࡟আࡁΈ
    • 2.0.0Ͱ࡟আࡁΈ
    • ཧ༝͸ɺRenderScript ͷαϙʔτऴ͔ྃͨ͠ΒͩͱࢥΘΕΔ
    ৄࡉ͸Θ͔Βͳ͔͕ͬͨɺDiscussion ͷ಺༰Λࢀߟʹ͍ͯ͠Δ
    • Ҿ͖ଓ͖ར༻͍ͨ͠ͳΒɺݩͷίʔυΛίϐʔ͢ΔΑ͏ʹҊ಺͕ग़͍ͯΔ
    https://coil-kt.github.io/coil/changelog/#200-may-10-2022
    https://github.com/coil-kt/coil/discussions/1362

    View Slide

  11. Modi
    fi
    er.blur ͸ Android 12 Ҏ্Ͱར༻Մೳ
    https://developer.android.com/reference/kotlin/androidx/compose/ui/
    Modifier#(androidx.compose.ui.Modifier).blur(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.draw.BlurredEdgeTreatment)

    View Slide

  12. Modi
    fi
    er.blur ͸ Android 12 Ҏ্Ͱར༻Մೳ
    • RenderEffect Λར༻͍ͯ͠Δ
    RenderEffect ͸ Android 12 Ҏ্Ͱར༻Մೳ
    @Stable
    fun Modifier.blur(
    radiusX: Dp,
    radiusY: Dp,
    edgeTreatment: BlurredEdgeTreatment = BlurredEdgeTreatment.Rectangle,
    ): Modifier {
    ...
    graphicsLayer {
    this.renderEffect =
    // Only non-zero blur radii are valid BlurEffect parameters
    if (horizontalBlurPixels > 0f && verticalBlurPixels > 0f) {
    BlurEffect(horizontalBlurPixels, verticalBlurPixels, tileMode)
    } else {
    null
    }

    View Slide

  13. ΅͔͠ը૾࡞੒ํ๏ͷݕ౼ʢ࠶ܝʣ
    ํ๏ ϝϦοτ ݒ೦
    ը૾ϩʔμʔͷ

    #MVS5SBOTGPSNBUJPO
    (MJEFͱ$PJMΛར༻͍ͯ͠Δ

    ͷͰಋೖ͕؆୯
    3FOEFS4DSJQUΛར༻͍ͯ͠Δ
    ˞$PJMͰ͸Ͱ࡟আࡁΈ
    αʔυύʔςΟͷ

    ը૾Ճ޻ϥΠϒϥϦ
    ಋೖ͕؆୯
    3FOEFS4DSJQUΛར༻͍ͯ͠Δ
    ϝϯςͮ͠Β͍
    $PNQPTFͷ.PEJ
    fi
    FSCMVS
    ͙͢࢖͑Δ "OESPJEҎ্Ͱ͔͠࢖͑ͳ͍
    ※ϝϦοτ΍σϝϦοτ͸ABEMAΞϓϦʹ͓͚Δ΋ͷͰɺଞΞϓϦʹ͓͍ͯ͸ҟͳΔ৔߹͕͋Γ·͢ɻ



    View Slide

  14. ࣗલͰ࣮૷͠Α͏💪

    View Slide

  15. ΅͔͠ը૾࡞੒ํ๏ͷબ୒

    View Slide

  16. ߟྀ͢΂͖఺
    • αϙʔτόʔδϣϯ
    ΞϓϦ͸ API 21 (Android 5.0) Ҏ্Λαϙʔτ
    • ύϑΥʔϚϯε͕ѱ͘ͳΒͳ͍͔
    جຊతʹը૾ॲཧ͸ॏ͍ͨ

    View Slide

  17. ݕ౼ͨ͠બ୒ࢶ
    ํ๏ αϙʔτ7FS ಋೖͷ͠΍͢͞ ύϑΥʔϚϯε උߟ
    3FOEFS&
    ff
    FDU ˚ ˓ ʁ
    3FOEFS4DSJQU*OUSJOTJDT
    3FQMBDFNFOU5PPMLJU
    ˓ ˚ ˕
    3FOEFS4DSJQUͷ୅ସπʔϧɻ
    3FOEFS4DSJQUͷഒͷ

    ύϑΥʔϚϯε͕ݟࠐΊΔɻ˞
    ࣗલͰը૾ॲཧ ˓ ˓ ˚
    ˞IUUQTEFWFMPQFSBOESPJEDPNHVJEFUPQJDTSFOEFSTDSJQUNJHSBUF IMKBTDSJQUT
    ΋͠RenderScriptͷύϑΥʔϚϯε͕ྑ͚Ε͹ɺ
    Android 12 Ҏ্Ͱ͸RenderEffectɺͦΕະຬͰ͸ Toolkit Λར༻͢Ε͹ྑ͍͔΋͠Εͳ͍ɻ

    View Slide

  18. Macrobenchmark ͰύϑΥʔϚϯεܭଌ
    • FrameTimingMetrics Λར༻
    ϑϨʔϜੜ੒ʹ͔͔͕ͬͨ࣌ؒΘ͔Δ
    • ςετΞϓϦͰ΅͔͠ը૾͕දࣔ͞ΕΔ·Ͱͷ
    ظؒΛܭଌ

    View Slide

  19. ܭଌ݁Ռ (Pixel 7)
    • P50 ~ P99 .. ύʔηϯλΠϧɻσʔλΛখ͍͞ॱʹฒ΂ͯɺॳΊ͔Β਺͑ͯԿ%·Ͱ͔ɻ
    • frameDurationCpsMs … ϑϨʔϜͷੜ੒ʹ͔͔ͬͨ࣌ؒ
    • (60fps) 16.67ms Ҏ্ͳΒ੺৭ɺ(90fps) 11.11ms Ҏ্ͳΒԫ৭
    • frameOverrunMs … ʢਖ਼ͷ஋ʣͲΕ͘Β͍ϑϨʔϜੜ੒͕஗Ε͔ͨɺʢෛͷ஋ʣͲΕ͚ͩϑϨʔϜੜ੒͕ૣ͔͔ͬͨ
    • ෛͷ஋ͳΒ੨৭
    • ࢼߦճ਺ 20ճ

    View Slide

  20. AndroidViewͷํ͕ϑϨʔϜੜ੒͕ૣ͍܏޲͋Γ
    • ಉ͘͡ RenderEffect Λ࢖͍ͬͯͯ΋ɺAndroidViewͷํ͕ૣ͍܏޲͋Γ
    • AndroidViewʹ͓͍ͯ͸ɺRenderEffect ͩͱ60fpsͰϑϨʔϜམͪ͢Δέʔ
    ε͕͋ͬͨ
    ※ࢲ෺ͷ Pixel 7 ʹ͓͍ͯ

    View Slide

  21. AndroidView × Toolkit Λબ୒
    • ࠓճͷௐࠪͰ͸ɺ࠷΋ϑϨʔϜམ͕ͪগͳ͔ͬͨͨΊɻ

    View Slide

  22. ·ͱΊ

    View Slide

  23. ·ͱΊ
    • RenderScript ͸αϙʔτ͕ऴ͍ྃͯ͠Δ
    • ͦͷ୅ସͱͯ͠ɺRenderScript Intrinsics Replacement Toolkit ͕͋Δ
    • ࠓճͷௐࠪͰ͸ɺAndroidView × Toolkit ͕ϑϨʔϜམ͕ͪগͳ͔ͬͨ
    ABEMAͷAndroidΞϓϦͰ Toolkit Λ࠾༻

    View Slide

  24. ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide