$30 off During Our Annual Pro Sale. View Details »

プライベートプロダクト戦略 - フロントエンドカンファレンス沖縄 / private_product_frontend

プライベートプロダクト戦略 - フロントエンドカンファレンス沖縄 / private_product_frontend

Masahiko Sakakibara

November 17, 2023
Tweet

More Decks by Masahiko Sakakibara

Other Decks in Technology

Transcript

  1. ϓϥΠϕʔτϓϩμΫτઓུ

    View Slide

  2. *OUSPEVDF
    .BTBIJLP4BLBLJCBSB
    Ұൠࣾஂ๏ਓϦϨʔγϣϯσβΠϯ
    ݚڀॴɹ୅දཧࣄ
    Ұൠࣾஂ๏ਓΤϦΞɾΠϊϕʔγϣϯ
    ΞϥΠΞϯεɹ$50
    *POJD+BQBO6TFS(SPVQ
    ୅ද

    View Slide

  3. 4QPOTPSFECZTUSJQF

    View Slide

  4. *POJDEFWFMPQFS&YQFSUT

    View Slide


  5. <1SPEVDU>UJQTZT

    View Slide

  6. <1SPEVDU>৯඼දࣔҹ࡮
    εϚϗͱϓϦϯλ͚ͩͰ৯඼දࣔϥϕϧΛ
    ͭ͘ΕΔ೔ຊ།Ұͷઐ༻ΞϓϦ

    View Slide

  7. <1SPEVDU>XJOFDPEF
    ଟछྨଟ਺ྔͷϫΠϯΛෳ਺ڌ఺Ͱ؅ཧͰ
    ͖Δ೔ຊ།ҰͷΞϓϦɻ

    View Slide

  8. 8FC੍࡞Ͱ͖Δͷ͸͍ͭ·ͰՁ஋͋Δ͜ͱͩΖ͏

    View Slide

  9. 8FC੍࡞ΛৼΓฦΔ
    w 8FCͷ͓࢓ࣄ͕ʮՔ͛ΔΑ͏ʹʯͳ͔ͬͯΒ೥ఔ౓
    w ͦΕͲ͔͜ʮϦϞʔτϫʔΫͰ݄ສԁʯΛເΈΕΔ͓࢓ࣄʹʁʂ

    View Slide

  10. 8FC੍࡞ΛৼΓฦΔ
    ࢲ͕தֶੜ͙Β͍ͷ͔࣌Β೥Ҏ্લͰ͢Ͷɻຊ౰ʹύιίϯ͞ΘΕͯɺϗʔϜϖʔδͭ
    ͘ΕΔਓ͸ύιίϯΦλΫΈ͍ͨͳ෩ை͋ͬͨͷͰ͢ɻࣆࠢͱ͔ྲྀߦͬͯͨͱ͖ɻ
    աڈͷʮϗʔϜϖʔδ͕࡞ΕΔ͚ͩͰΦλΫݺ͹ΘΓʯ͸Կॲ΁

    View Slide

  11. 8FC੍࡞ΛৼΓฦΔ
    ͜ͷ೥͸ʮ8FC੍࡞Ͱ͖Δ͜ͱʯʹՁ஋͕͋ͬͨɻ
    ͚Ͳɺ೥ޙ΋ͦͷՁ஋͸͋ΔͩΖ͏͔ɻ
    ϗʔϜϖʔδ
    ᴈ໌ظ
    ߴߍͷ৘ใͷतۀͰ
    8FC੍࡞ɾϓϩάϥϛϯά
    ϝϞாͰϗʔϜϖʔδ
    ͭ͘ΕΔͷʁΦλΫͩʂ
    8FCαΠτΛ࣋ͨͳ͍ͷ͸
    ͓ళ͕؃൘Λग़͍ͯ͠ͳ͍Α͏ͳ΋ͷ
    8FC੍࡞Ͱ
    ݄ສʂ
    ϓϩάϥϛϯά
    Ͱ͖Δͷʁ͔͍͍ͬ͜ʂʂ
    8PSE1SFTT
    ͛͢ʔɻ

    View Slide

  12. ࣍ͷ೥ͷՁ஋Λݟਾ͑ͯಈ͜͏
    ޷ܠؾͱधཁͷ֦େͰݟམͱ͞Ε͕͚ͪͩͲɺ͢ͰʹϨουΦʔγϟϯɻͦͷதͰ
    ͱΕΔઓུ͸େ͖͘Θ͚ΔͱͭʹߜΒΕΔɻ
    w 8FC੍࡞ͷεϖγϟϦετʹ
    w ଞͷਓ͕༰қʹ௥ਵͰ͖ͳ
    ͍෇ՃՁ஋
    w Θ͔Γ΍͍͢ࢦඪ͸ٕज़ྗ
    w 8FC੍࡞ͷٕज़Λ࡞ͬͯՁ஋͋
    ΔϓϩμΫτΛͭ͘Δ
    w ϓϩμΫτΛ࣮ݱ͢ΔͨΊ
    ͷπʔϧ͸΋͏࣋ͬͯΔʂ
    w ࠓ೔͸ͬͪ͜ͷ࿩Λ͠·͢
    ৬ਓܕ πʔϧͱͯ͠׆༻

    View Slide

  13. ϓϩμΫτͰՁ஋Λͭ͘Δ

    View Slide

  14. ϓϩμΫτΛͭ͘Δ࣌ͷམͱ݀͠
    ୤ɾΞΠσΟΞউෛ
    w ੈքॳͷΞΠσΞ͸·ͣͳ͍ɻগͳͯ͘΋ࢲͷΞΠσΞ͸୭͔͕ࢥ͍͍ͭͯ΍Β
    ͳ͍ཧ༝͕͋ͬͨ΋ͷɻ
    w ʮ·ͩͳ͍͚Ͳ໥͔Γͦ͏ʯ͸ࢿຊྗউෛʹͳΔ
    w 1BZ1BZ͸ѹ౗తͳࢿۚྗͰɺ23ίʔυܾࡁϓϥοτϑΥʔϜͷ/PγΣΞʹ
    w ΞΠσΞউෛͰ͸ͳ͘ɺࣗ෼ͷखࡳͰউͯΔউෛΛ͠Α͏
    αϧͰ΋ඳ͚Δ·Μ͕ڭࣨ
    ʮ୭ʹ΋ࢥ͍͔ͭͳ͍࢐৽ͳετʔϦʔ
    ͸ɺ͋ͳͨ΋ࢥ͍͔ͭͳ͍ʯ

    View Slide

  15. εϞʔϧϓϩμΫτʹͰ͖ͯɺେاۀʹͰ͖ͳ͍͜ͱ͸ʁ
    ೔ຊͷγΣΞ/Pʹͳͬͯ΋ɺ
    ݄ສԁఔ౓͔͠໥͔Βͳ͍ϓϩμΫτɻ

    View Slide

  16. ͍΍͍΍ɺຊ౰ͷ࿩ͳΜͰ͢ɻ
    w େاۀ͕ਓΛΞαΠϯͯ͠΋ܾࡁঝೝόοΫΦϑΟεͰԿ͔͠ΒؔΘΔਓͷਓ݅අ
    ͕ඞཁ
    w େاۀͱεϞʔϧϏδωεͩͱଛӹ෼ذ఺ͷߏ଄͕શ͘ҧ͏
    w ࠇࣈ͚ͩͲͲΕ্͚ͩख͍ͬͯ͘΋εέʔϧ͠ͳ͍ϓϩμΫτΛ໨ࢦͦ͏
    ໻ੜגࣜձࣾɹIUUQTXXXZBZPJLLDPKQLBJLFJPZBLVEBDIJCSFBLFWFOQPJOU

    View Slide

  17. εέʔϧ͠ͳ͍ϓϩμΫτ͸߹ཧతͳઓུ
    w λʔήοτͱϖϧιφͷҧ͍
    w ϖϧιφϚʔέςΟϯά͸ຬ଍౓Λ໨ࢦ͢ϑϧΦʔμʔαʔϏε
    w ͚ͲࣅͨΑ͏ͳଐੑΛ࣋ͭϢʔβ͸͍Δ͔Βߴຬ଍౓άϧʔϓ͸ੜ·ΕΔΑͶʣ
    w ΑΓઑͬͯɺΑΓখ͞ͳͱ͜ΖΛૂ͍ʹ͍͚Δ
    PR TIMESɹhttps://prtimes.jp/magazine/persona/

    View Slide


  18. ࣄྫɹUJQTZT
    w ೥ఏڙ։࢝ͷʮঁ༑ͩͪΛͭ͘ΔͨΊͷঁੑઐ༻ιʔγϟϧαʔϏεʯ
    w 4/4͸͍Ζ͍Ζ͚͋ͬͨͲɺϢʔβͷ൒෼ΛࣺͯΔʮঁੑઐ༻ʯ͸೔ຊॳ
    w ΋ͬͱ࡟ͬͨɻʮब৬Λػʹ্ژͯ͠·ΘΓʹ༑ਓ͕͍ͳ͍͚Ͳɺ৬৔΋உੑ͹͔Γ
    Ͱ༑ୡͮ͘Γͷػձ͕ͳ͍ɻಌΕͷ౦ژʹ͍ΔͷʹɺͻͱΓͰ͸Ͳ͜ʹ΋ߦ͖ʹ͘
    ͍ʯʢϖϧιφͱ͍͏ΑΓϢʔβετʔϦʔͰߜΓࠐΈ·ͨ͠ʣ
    w ྦྷܭϢʔβ਺ສਓɺτʔΫάϧʔϓ਺ສɺച্݄ʙສԁఔ౓
    w ͦΖͦΖ࣍ͷεςʔδΛ໨ࢦ͞ͳ͍ͱɻ

    View Slide

  19. ࣄྫɹXJOFDPEF
    w ೥ఏڙ։࢝ͷʮଟछྨଟ਺ྔΛෳ਺ڌ఺Ͱ؅ཧͯ͠Δҿ৯ళ޲͚ͷϫΠϯ؅ཧ
    ΞϓϦʯ
    w ʮଟछྨଟ਺ྔΛෳ਺ڌ఺Ͱ؅ཧͯ͠Δҿ৯ళʯɺ೔ຊͰ݅ͳ͍ͷͰ͸ʁελʔ
    τɻ
    w ྦྷܭϢʔβ਺ɾ؅ཧάϧʔϓ͸ఔ౓ɺྦྷܭ؅ཧϫΠϯສछྨɻϛγϡϥϯΨΠ
    υܝࡌళ΍ҰྲྀϗςϧͷϨετϥϯͰ࠾༻ɻ
    w ҿ৯ళ%9ͱͯ͠Πϯϙʔλʔɺখച͔Β஫໨ɻΦϯϥΠϯൢചػೳΛ࣍ͰϦϦʔε༧
    ఆ͕ͩɺ͢Ͱʹܖ໿͍ͨ͠ͱͷ੠ɻ

    View Slide

  20. ϓϩμΫτΛࢧ͑Δٕज़બఆ

    View Slide

  21. ٕज़બఆͷίϯηϓτ
    w গਓ਺ɺ΋͘͠͸ਓͰ։ൃӡӦͰ͖Δ޻਺ܹݮٕज़Λ࢖Θͳ͍ͱແཧ
    w େاۀ͕νʔϜͰ࡞Δ޻਺ͱಉ͡΋ͷΛ෷͏ͷෆՄೳͰ͠ΐʁ
    w ଥڠ͍͍ͯ͠ͱ͜Ζɺଥڠͨ͠Βμϝͳͱ͜ΖΛ໌֬ʹ͢Δ
    ଥڠ͍͍ͯ͠ͱ͜Ζ ଥڠͯ͠͸μϝ
    w ΧελϚΠζՄೳΛ໨ࢦ͞
    ͳ͍ɻ
    w ྫ͑͹"VUIFOUJDBUJPOͷϝʔϧ
    ຊจɻςϯϓϨʔτ͕͋ΔͳΒ৐
    Ζ͏ɻ
    w ͢΂ͯͷࡉ෦ʹਆΛ॓͞ͳ͍ɻ
    w ഑৴ϓϥοτϑΥʔϜɻ߹ཧతཧ
    ༝͕ͳ͍ݶΓ͸ɺ8FC J04
    "OESPJEͷ͢΂ͯɻ
    w ηΩϡϦςΟɻ͕ແཧͳ
    ͷͰɺ୲อ͠ͳ͍࢓૊ΈΛͭ͘
    Δɻ

    View Slide

  22. αʔό
    w &MBTUJD#FBOTUBML-BNCEB
    w ޿ٛͷαʔόʔϨε͸ඞਢɻࣗ෼ͰTTIͰೖΔͷ͸పఈతʹഉআɻ
    IUUQT[FOOEFWSEMBCPBSUJDMFTBBEB

    View Slide

  23. σʔλϕʔε
    w "843%4'JSFTUPSF4VQBCBTF 4BB4൛

    w ͍͔҆ΒͱϨϯλϧαʔόʔͰ%#Λ্ཱͪ͛Δͱࢮ͵
    w Ͱ͖Δ͜ͱͷ੍໿͕ଟ͍ɻεέʔϦϯάͰ͖ͳ͍ɻ
    w ͍͔҆Βͱ714ʢԾ૝ઐ༻αʔόʣͰ%#Λ্ཱͪ͛Δͱࢮ͵
    w ఆظόοΫΞοϓ͸ͪΌΜͱಈ͔͘ຖ೔ݕূʁ

    View Slide

  24. ೝূ
    w 'JSFCBTF"VUIFOUJDBUJPO"VUI4VQBCBTF 4BB4൛

    w ͭ͘Δ͜ͱҎ্ʹݸਓ৘ใΛʮ࣋ͭʯ͜ͱͷίετΛҙࣝ͠Α͏
    w %#ʹݸਓ৘ใΛอ࣋͠ͳ͍ڧ͍ҙࢤɻ

    View Slide

  25. ܾࡁ
    w 4USJQF
    w ܾࡁʹ͸ଟ͘ͷ๏཯͕བྷΉɻࣗ෼ͷαʔόʹಁա͠ͳ͍ͨΊʹ͸αʔϏεར༻͸ඞਢ
    w ܾࡁͷ࠷ऴը໘֬ೝɻఆظ՝ۚͷΩϟϯηϧը໘ɻશ෦೚ͤͪΌ͓͏ɻ

    View Slide

  26. ΫϩεϓϥοτϑΥʔϜ
    w $BQBDJUPS
    w 8FCΞϓϦΛϥοϓ͢Δ͜ͱʹΑΓɺωΠςΟϒػೳ࢖͑ΔΑ͏ʹ֦ுͰ͖ɺJ04Ξ
    ϓϦͱͯ͠"QQ4UPSF"OESPJEΞϓϦͱͯ͠(PPHMF1MBZͰ഑৴Ͱ͖ΔϥΠϒϥϦ
    w (PPHMFݕࡧ͢ΔΑ͏ʹΞϓϦετΞͰΞϓϦΛ୳͢ਓଟ͍Ͱ͢Α
    w ϞόΠϧΞϓϦ͚ͩͩͱ͸͡Ίͯ΋Β͏ͷʹϋʔυϧ͕
    w 18"͚ͩͩͱϒϥ΢βͷػೳ੍໿ʹറΒΕΔ

    View Slide

  27. +BWB4DSJQUϑϨʔϜϫʔΫ
    w "OHVMBS
    w 8FCͷਐԽΛΩϟονΞοϓͯ͘͠ΕΔ
    w OHVQEBUFͰγʔϜϨεͳόʔδϣϯΞοϓΛαϙʔτ
    w ϓϩμΫτΛ఺ͰΈΔͱબ୒ࢶ͸ଟ͍͕ɺ௕ظͰ࠷৽൛Λ࢖͍ଓ͚Δαϙʔτ͸ਵҰ

    View Slide

  28. σβΠϯϑϨʔϜϫʔΫ
    w *POJD'SBNFXPSL
    w ΞϝϦΧ࿈๜੓෎ʮछྨͷ੨৭͕ඞཁʁʯʮຊ౰ʹछྨͷϘλϯ͕ඞཁͰ͢
    ͔ʁʯ
    w ͷഒ਺σβΠϯΛߟ͑ͳ͍͜ͱͷॏཁੑ
    w 4IBEPX%0.͸σβΠϯγεςϜʹ༗༻Ͱ͋Δ͜ͱͱಉ͡

    View Slide

  29. ·ͱΊ

    View Slide

  30. ٕज़બఆͷ؊
    w ࣗ෼Ͱ΍Βͳ͍͜ͱΛ૿΍͢
    w બఆٕज़ʹΑͬͯকདྷͷ੍໿Λ࡞Βͳ͍
    w ۀքతͳʮఆ൪αʔϏεʯʮఆ൪ϥΠϒϥϦʯΛΩϟονΞοϓ
    w ը૾ฤूϥΠϒϥϦʮUVJJNBHFFEJUPSʯ
    w ௨࿩ϥΠϒϥϦʮ+JUTJʯ
    w ϚοϓදࣔϥΠϒϥϦʮMFB
    fl
    FUʯ
    w ৐ΔڊਓͷݞΛ୳͠ଓ͚Α͏
    w ֶशίετͱ͍͏ݴ͍༁Λ͠ͳ͍

    View Slide

  31. ٕज़બఆͷ؊
    w ࣗ෼Ͱ΍Βͳ͍͜ͱΛ૿΍͢
    w બఆٕज़ʹΑͬͯকདྷͷ੍໿Λ࡞Βͳ͍
    w ۀքతͳʮఆ൪αʔϏεʯʮఆ൪ϥΠϒϥϦʯΛΩϟονΞοϓ
    w ը૾ฤूϥΠϒϥϦʮUVJJNBHFFEJUPSʯ
    w ௨࿩ϥΠϒϥϦʮ+JUTJʯ
    w ϚοϓදࣔϥΠϒϥϦʮMFB
    fl
    FUʯ

    View Slide

  32. UVJJNBHFFEJUPS
    await defaultInstance.applyFilter(filter.type, filter.option);

    View Slide

  33. ·ͱΊ
    w ೥ޙʹ௨༻͢ΔͨΊʹɺʮ8FC੍࡞͕Ͱ͖ΔՁ஋ʯ͚ͩͰ͸ͳ͘ɺͦͷٕज़Ͱ࡞ͬ
    ͨʮϓϩμΫτͷՁ஋ʯ΋࣋ͱ͏
    w ϓϩμΫτͷͨΊʹֶशίετͱ͍͏ݴ͍༁ΛͤͣʹΨϯΨϯ৽͍͜͠ͱʹखΛग़͠
    ଓ͚Δͱɺ8FC੍࡞͕Ͱ͖ΔՁ஋΁ͷؐݩ΋
    w ٕज़ྗͷؐݩ͚ͩͰ͸ͳ͘ɺϓϩμΫτΛ࡞ΔͨΊʹ৽͍ٕ͠ज़Λֶͼɺࣗ෼ͷͨΊ
    ʹ·ͱΊɺϓϩμΫτʹඞཁͳϓϥάΠϯΛΦʔϓϯʹͯͨ͠Βɺ*POJD%FWFMPQFS
    &YQFSU ೔ຊͰਓʣͱɺ4USJQF$PNNVOJUZ&YQFSU ೔ຊͰਓʣͷެೝΛ΋Β͍·
    ͨ͠ɻࠃ಺͸΋ͪΖΜͷ͜ͱɺւ֎͔Β΋໊ࢦ͠Ͱ૬ஊ΍ґཔΛ΋Β͑ΔΑ͏ʹɻ
    w Ձ஋Λ྆ྠͰ·Θͦ͏

    View Slide

  34. ͕࣌ؒ͋ΔͷͰͪΐͬͱ$BQBDJUPSΛৄ͘͠

    View Slide

  35. 8FCΞϓϦΛΫϩεϓϥοτϑΥʔϜʹϒϦοδͤ͞Δ
    888
    8FCΞϓϦ $BQBDJUPS

    View Slide

  36. ͜Ε͚ͩͰɺ͢΂ͯࣗಈߏஙɻ

    View Slide

  37. ʮ·ͣ͞ΘΔʯʹ͓͍ͯ8FC͸࠷ڧ
    ΞϓϦΛར༻͢ΔͷʹɺϢʔβ͸
    ̍ɽΞϓϦετΞʹભҠͯ͠
    ̎ɽΞϓϦΛΠϯετʔϧͯ͠
    ̏ɽΞϓϦΛىಈ͠ͳ͍ͱ͍͚ͳ͍

    View Slide

  38. 18"͡ΌͩΊͳͷʁ
    ϞόΠϧσόΠε͸ɺΞϓϦͰར༻Ͱ͖Δແ਺ͷ"1*Λఏڙɻ
    ྫʣ9DPEFͰ໌ࣔతʹڐՄ͕ඞཁͳ$BQBCJMJUJJFT

    View Slide

  39. ΞϓϦ͕ར༻Ͱ͖Δ"1*
    NSCameraUsageDescription
    NSPhotoLibraryAddUsageDescription
    NSPhotoLibraryUsageDescription
    android:name="android.permissi
    on.READ_EXTERNAL_STORAGE"/>
    android:name="android.permissi
    on.WRITE_EXTERNAL_STORAGE" />
    Χϝϥ
    ৼಈ
    NSLocationAlwaysUsageDescription
    NSLocationWhenInUseUsageDescription
    android:name="android.permission
    .ACCESS_COARSE_LOCATION" />
    android:name="android.permission
    .ACCESS_FINE_LOCATION" />
    android:name="android.hardware.l
    ocation.gps" />
    ετϨʔδ ϑΝΠϧγεςϜ ϓογϡ௨஌
    Ґஔ৘ใ

    View Slide