Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プライベートプロダクト戦略 - フロントエンドカンファレンス沖縄 / private_prod...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masahiko Sakakibara
November 17, 2023
Technology
4.8k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プライベートプロダクト戦略 - フロントエンドカンファレンス沖縄 / private_product_frontend
Masahiko Sakakibara
November 17, 2023
More Decks by Masahiko Sakakibara
See All by Masahiko Sakakibara
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
670
本当に欲しかったのはモノレポツールではなく、tsconfigの設定だった / monorepo-tsconfig
rdlabo
1
370
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
510
GitHubをCMSとして使う話/ using_github_as_CMS
rdlabo
0
660
JavaScriptから デバイスの力を100%引き出すための Web APIとCapacitor入門 / power_from_javascript
rdlabo
0
630
Capacitor4_release
rdlabo
0
710
Web技術で稼ぐため選択肢を俯瞰しよう/options_to_earn_web_technology
rdlabo
0
170
Ionicモバイルアプリ制作入門/get_started_with_ionic
rdlabo
0
170
JavaScript から デバイスの力を 100%引き出すための Capacitor と Angular でのはじめかた。
rdlabo
2
2k
Other Decks in Technology
See All in Technology
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
210
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
300
知らん間に、回ってる
ming_ayami
0
500
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
2
270
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
130
cccccc
moznion
0
1.9k
CIで使うClaude
iwatatomoya
0
230
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.6k
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6k
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
840
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.8k
Claude Code のすすめ
schroneko
67
230k
Designing for humans not robots
tammielis
254
26k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
190
Thoughts on Productivity
jonyablonski
76
5.2k
Rails Girls Zürich Keynote
gr2m
96
14k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Mind Mapping
helmedeiros
PRO
1
280
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
ϓϥΠϕʔτϓϩμΫτઓུ
*OUSPEVDF .BTBIJLP4BLBLJCBSB Ұൠࣾஂ๏ਓϦϨʔγϣϯσβΠϯ ݚڀॴɹදཧࣄ Ұൠࣾஂ๏ਓΤϦΞɾΠϊϕʔγϣϯ ΞϥΠΞϯεɹ$50 *POJD+BQBO6TFS(SPVQ ද
4QPOTPSFECZTUSJQF
*POJDEFWFMPQFS&YQFSUT
<1SPEVDU>UJQTZT
<1SPEVDU>৯දࣔҹ εϚϗͱϓϦϯλ͚ͩͰ৯දࣔϥϕϧΛ ͭ͘ΕΔຊ།Ұͷઐ༻ΞϓϦ
<1SPEVDU>XJOFDPEF ଟछྨଟྔͷϫΠϯΛෳڌͰཧͰ ͖Δຊ།ҰͷΞϓϦɻ
8FC੍࡞Ͱ͖Δͷ͍ͭ·ͰՁ͋Δ͜ͱͩΖ͏
8FC੍࡞ΛৼΓฦΔ w 8FCͷ͓ࣄ͕ʮՔ͛ΔΑ͏ʹʯͳ͔ͬͯΒఔ w ͦΕͲ͔͜ʮϦϞʔτϫʔΫͰ݄ສԁʯΛເΈΕΔ͓ࣄʹʁʂ
8FC੍࡞ΛৼΓฦΔ ࢲ͕தֶੜ͙Β͍ͷ͔࣌ΒҎ্લͰ͢Ͷɻຊʹύιίϯ͞ΘΕͯɺϗʔϜϖʔδͭ ͘ΕΔਓύιίϯΦλΫΈ͍ͨͳ෩ை͋ͬͨͷͰ͢ɻࣆࠢͱ͔ྲྀߦͬͯͨͱ͖ɻ աڈͷʮϗʔϜϖʔδ͕࡞ΕΔ͚ͩͰΦλΫݺΘΓʯԿॲ
8FC੍࡞ΛৼΓฦΔ ͜ͷʮ8FC੍࡞Ͱ͖Δ͜ͱʯʹՁ͕͋ͬͨɻ ͚ͲɺޙͦͷՁ͋ΔͩΖ͏͔ɻ ϗʔϜϖʔδ ᴈ໌ظ ߴߍͷใͷतۀͰ 8FC੍࡞ɾϓϩάϥϛϯά ϝϞாͰϗʔϜϖʔδ ͭ͘ΕΔͷʁΦλΫͩʂ 8FCαΠτΛ࣋ͨͳ͍ͷ
͓ళ͕൘Λग़͍ͯ͠ͳ͍Α͏ͳͷ 8FC੍࡞Ͱ ݄ສʂ ϓϩάϥϛϯά Ͱ͖Δͷʁ͔͍͍ͬ͜ʂʂ 8PSE1SFTT ͛͢ʔɻ
࣍ͷͷՁΛݟਾ͑ͯಈ͜͏ ܠؾͱधཁͷ֦େͰݟམͱ͞Ε͕͚ͪͩͲɺ͢ͰʹϨουΦʔγϟϯɻͦͷதͰ ͱΕΔઓུେ͖͘Θ͚ΔͱͭʹߜΒΕΔɻ w 8FC੍࡞ͷεϖγϟϦετʹ w ଞͷਓ͕༰қʹਵͰ͖ͳ ͍ՃՁ w Θ͔Γ͍͢ࢦඪٕज़ྗ
w 8FC੍࡞ͷٕज़Λ࡞ͬͯՁ͋ ΔϓϩμΫτΛͭ͘Δ w ϓϩμΫτΛ࣮ݱ͢ΔͨΊ ͷπʔϧ͏࣋ͬͯΔʂ w ࠓͬͪ͜ͷΛ͠·͢ ৬ਓܕ πʔϧͱͯ͠׆༻
ϓϩμΫτͰՁΛͭ͘Δ
ϓϩμΫτΛͭ͘Δ࣌ͷམͱ݀͠ ɾΞΠσΟΞউෛ w ੈքॳͷΞΠσΞ·ͣͳ͍ɻগͳͯ͘ࢲͷΞΠσΞ୭͔͕ࢥ͍͍ͭͯΒ ͳ͍ཧ༝͕͋ͬͨͷɻ w ʮ·ͩͳ͍͚Ͳ͔Γͦ͏ʯࢿຊྗউෛʹͳΔ w 1BZ1BZѹతͳࢿۚྗͰɺ23ίʔυܾࡁϓϥοτϑΥʔϜͷ/PγΣΞʹ w
ΞΠσΞউෛͰͳ͘ɺࣗͷखࡳͰউͯΔউෛΛ͠Α͏ αϧͰඳ͚Δ·Μ͕ڭࣨ ʮ୭ʹࢥ͍͔ͭͳ͍৽ͳετʔϦʔ ɺ͋ͳͨࢥ͍͔ͭͳ͍ʯ
εϞʔϧϓϩμΫτʹͰ͖ͯɺେاۀʹͰ͖ͳ͍͜ͱʁ ຊͷγΣΞ/Pʹͳͬͯɺ ݄ສԁఔ͔͔͠Βͳ͍ϓϩμΫτɻ
͍͍ɺຊͷͳΜͰ͢ɻ w େاۀ͕ਓΛΞαΠϯܾͯ͠ࡁঝೝόοΫΦϑΟεͰԿ͔͠ΒؔΘΔਓͷਓ݅අ ͕ඞཁ w େاۀͱεϞʔϧϏδωεͩͱଛӹذͷߏ͕શ͘ҧ͏ w ࠇࣈ͚ͩͲͲΕ্͚ͩख͍ͬͯ͘εέʔϧ͠ͳ͍ϓϩμΫτΛࢦͦ͏ ੜגࣜձࣾɹIUUQTXXXZBZPJLLDPKQLBJLFJPZBLVEBDIJCSFBLFWFOQPJOU
εέʔϧ͠ͳ͍ϓϩμΫτ߹ཧతͳઓུ w λʔήοτͱϖϧιφͷҧ͍ w ϖϧιφϚʔέςΟϯάຬΛࢦ͢ϑϧΦʔμʔαʔϏε w ͚ͲࣅͨΑ͏ͳଐੑΛ࣋ͭϢʔβ͍Δ͔Βߴຬάϧʔϓੜ·ΕΔΑͶʣ w ΑΓઑͬͯɺΑΓখ͞ͳͱ͜ΖΛૂ͍ʹ͍͚Δ PR
TIMESɹhttps://prtimes.jp/magazine/persona/
ࣄྫɹUJQTZT w ఏڙ։࢝ͷʮঁ༑ͩͪΛͭ͘ΔͨΊͷঁੑઐ༻ιʔγϟϧαʔϏεʯ w 4/4͍Ζ͍Ζ͚͋ͬͨͲɺϢʔβͷΛࣺͯΔʮঁੑઐ༻ʯຊॳ w ͬͱͬͨɻʮब৬Λػʹ্ژͯ͠·ΘΓʹ༑ਓ͕͍ͳ͍͚Ͳɺ৬உੑ͔Γ Ͱ༑ୡͮ͘Γͷػձ͕ͳ͍ɻಌΕͷ౦ژʹ͍ΔͷʹɺͻͱΓͰͲ͜ʹߦ͖ʹ͘ ͍ʯʢϖϧιφͱ͍͏ΑΓϢʔβετʔϦʔͰߜΓࠐΈ·ͨ͠ʣ
w ྦྷܭϢʔβສਓɺτʔΫάϧʔϓສɺച্݄ʙສԁఔ w ͦΖͦΖ࣍ͷεςʔδΛࢦ͞ͳ͍ͱɻ
ࣄྫɹXJOFDPEF w ఏڙ։࢝ͷʮଟछྨଟྔΛෳڌͰཧͯ͠Δҿ৯ళ͚ͷϫΠϯཧ ΞϓϦʯ w ʮଟछྨଟྔΛෳڌͰཧͯ͠Δҿ৯ళʯɺຊͰ݅ͳ͍ͷͰʁελʔ τɻ w ྦྷܭϢʔβɾཧάϧʔϓఔɺྦྷܭཧϫΠϯສछྨɻϛγϡϥϯΨΠ υܝࡌళҰྲྀϗςϧͷϨετϥϯͰ࠾༻ɻ
w ҿ৯ళ%9ͱͯ͠Πϯϙʔλʔɺখച͔ΒɻΦϯϥΠϯൢചػೳΛ࣍ͰϦϦʔε༧ ఆ͕ͩɺ͢Ͱʹܖ͍ͨ͠ͱͷɻ
ϓϩμΫτΛࢧ͑Δٕज़બఆ
ٕज़બఆͷίϯηϓτ w গਓɺ͘͠ਓͰ։ൃӡӦͰ͖Δܹݮٕज़ΛΘͳ͍ͱແཧ w େاۀ͕νʔϜͰ࡞Δͱಉ͡ͷΛ͏ͷෆՄೳͰ͠ΐʁ w ଥڠ͍͍ͯ͠ͱ͜Ζɺଥڠͨ͠Βμϝͳͱ͜ΖΛ໌֬ʹ͢Δ ଥڠ͍͍ͯ͠ͱ͜Ζ ଥڠͯ͠μϝ w
ΧελϚΠζՄೳΛࢦ͞ ͳ͍ɻ w ྫ͑"VUIFOUJDBUJPOͷϝʔϧ ຊจɻςϯϓϨʔτ͕͋ΔͳΒ Ζ͏ɻ w ͯ͢ͷࡉ෦ʹਆΛ॓͞ͳ͍ɻ w ৴ϓϥοτϑΥʔϜɻ߹ཧతཧ ༝͕ͳ͍ݶΓɺ8FC J04 "OESPJEͷͯ͢ɻ w ηΩϡϦςΟɻ͕ແཧͳ ͷͰɺ୲อ͠ͳ͍ΈΛͭ͘ Δɻ
αʔό w &MBTUJD#FBOTUBML-BNCEB w ٛͷαʔόʔϨεඞਢɻࣗͰTTIͰೖΔͷపఈతʹഉআɻ IUUQT[FOOEFWSEMBCPBSUJDMFTBBEB
σʔλϕʔε w "843%4'JSFTUPSF4VQBCBTF 4BB4൛ w ͍͔҆ΒͱϨϯλϧαʔόʔͰ%#Λ্ཱͪ͛Δͱࢮ͵ w Ͱ͖Δ͜ͱͷ੍͕ଟ͍ɻεέʔϦϯάͰ͖ͳ͍ɻ w
͍͔҆Βͱ714ʢԾઐ༻αʔόʣͰ%#Λ্ཱͪ͛Δͱࢮ͵ w ఆظόοΫΞοϓͪΌΜͱಈ͔͘ຖݕূʁ
ೝূ w 'JSFCBTF"VUIFOUJDBUJPO"VUI4VQBCBTF 4BB4൛ w ͭ͘Δ͜ͱҎ্ʹݸਓใΛʮ࣋ͭʯ͜ͱͷίετΛҙࣝ͠Α͏ w %#ʹݸਓใΛอ࣋͠ͳ͍ڧ͍ҙࢤɻ
ܾࡁ w 4USJQF w ܾࡁʹଟ͘ͷ๏͕བྷΉɻࣗͷαʔόʹಁա͠ͳ͍ͨΊʹαʔϏεར༻ඞਢ w ܾࡁͷ࠷ऴը໘֬ೝɻఆظ՝ۚͷΩϟϯηϧը໘ɻશ෦ͤͪΌ͓͏ɻ
ΫϩεϓϥοτϑΥʔϜ w $BQBDJUPS w 8FCΞϓϦΛϥοϓ͢Δ͜ͱʹΑΓɺωΠςΟϒػೳ͑ΔΑ͏ʹ֦ுͰ͖ɺJ04Ξ ϓϦͱͯ͠"QQ4UPSF"OESPJEΞϓϦͱͯ͠(PPHMF1MBZͰ৴Ͱ͖ΔϥΠϒϥϦ w (PPHMFݕࡧ͢ΔΑ͏ʹΞϓϦετΞͰΞϓϦΛ୳͢ਓଟ͍Ͱ͢Α w ϞόΠϧΞϓϦ͚ͩͩͱ͡ΊͯΒ͏ͷʹϋʔυϧ͕
w 18"͚ͩͩͱϒϥβͷػೳ੍ʹറΒΕΔ
+BWB4DSJQUϑϨʔϜϫʔΫ w "OHVMBS w 8FCͷਐԽΛΩϟονΞοϓͯ͘͠ΕΔ w OHVQEBUFͰγʔϜϨεͳόʔδϣϯΞοϓΛαϙʔτ w ϓϩμΫτΛͰΈΔͱબࢶଟ͍͕ɺظͰ࠷৽൛Λ͍ଓ͚ΔαϙʔτਵҰ
σβΠϯϑϨʔϜϫʔΫ w *POJD'SBNFXPSL w ΞϝϦΧ࿈ʮछྨͷ੨৭͕ඞཁʁʯʮຊʹछྨͷϘλϯ͕ඞཁͰ͢ ͔ʁʯ w ͷഒσβΠϯΛߟ͑ͳ͍͜ͱͷॏཁੑ w 4IBEPX%0.σβΠϯγεςϜʹ༗༻Ͱ͋Δ͜ͱͱಉ͡
·ͱΊ
ٕज़બఆͷ؊ w ࣗͰΒͳ͍͜ͱΛ૿͢ w બఆٕज़ʹΑͬͯকདྷͷ੍Λ࡞Βͳ͍ w ۀքతͳʮఆ൪αʔϏεʯʮఆ൪ϥΠϒϥϦʯΛΩϟονΞοϓ w ը૾ฤूϥΠϒϥϦʮUVJJNBHFFEJUPSʯ w
௨ϥΠϒϥϦʮ+JUTJʯ w ϚοϓදࣔϥΠϒϥϦʮMFB fl FUʯ w ΔڊਓͷݞΛ୳͠ଓ͚Α͏ w ֶशίετͱ͍͏ݴ͍༁Λ͠ͳ͍
ٕज़બఆͷ؊ w ࣗͰΒͳ͍͜ͱΛ૿͢ w બఆٕज़ʹΑͬͯকདྷͷ੍Λ࡞Βͳ͍ w ۀքతͳʮఆ൪αʔϏεʯʮఆ൪ϥΠϒϥϦʯΛΩϟονΞοϓ w ը૾ฤूϥΠϒϥϦʮUVJJNBHFFEJUPSʯ w
௨ϥΠϒϥϦʮ+JUTJʯ w ϚοϓදࣔϥΠϒϥϦʮMFB fl FUʯ
UVJJNBHFFEJUPS await defaultInstance.applyFilter(filter.type, filter.option);
·ͱΊ w ޙʹ௨༻͢ΔͨΊʹɺʮ8FC੍࡞͕Ͱ͖ΔՁʯ͚ͩͰͳ͘ɺͦͷٕज़Ͱ࡞ͬ ͨʮϓϩμΫτͷՁʯ࣋ͱ͏ w ϓϩμΫτͷͨΊʹֶशίετͱ͍͏ݴ͍༁ΛͤͣʹΨϯΨϯ৽͍͜͠ͱʹखΛग़͠ ଓ͚Δͱɺ8FC੍࡞͕Ͱ͖ΔՁͷؐݩ w ٕज़ྗͷؐݩ͚ͩͰͳ͘ɺϓϩμΫτΛ࡞ΔͨΊʹ৽͍ٕ͠ज़ΛֶͼɺࣗͷͨΊ ʹ·ͱΊɺϓϩμΫτʹඞཁͳϓϥάΠϯΛΦʔϓϯʹͯͨ͠Βɺ*POJD%FWFMPQFS
&YQFSU ຊͰਓʣͱɺ4USJQF$PNNVOJUZ&YQFSU ຊͰਓʣͷެೝΛΒ͍· ͨ͠ɻࠃͪΖΜͷ͜ͱɺւ֎͔Β໊ࢦ͠Ͱ૬ஊґཔΛΒ͑ΔΑ͏ʹɻ w ՁΛ྆ྠͰ·Θͦ͏
͕࣌ؒ͋ΔͷͰͪΐͬͱ$BQBDJUPSΛৄ͘͠
8FCΞϓϦΛΫϩεϓϥοτϑΥʔϜʹϒϦοδͤ͞Δ 888 8FCΞϓϦ $BQBDJUPS
͜Ε͚ͩͰɺͯࣗ͢ಈߏஙɻ
ʮ·ͣ͞ΘΔʯʹ͓͍ͯ8FC࠷ڧ ΞϓϦΛར༻͢ΔͷʹɺϢʔβ ̍ɽΞϓϦετΞʹભҠͯ͠ ̎ɽΞϓϦΛΠϯετʔϧͯ͠ ̏ɽΞϓϦΛىಈ͠ͳ͍ͱ͍͚ͳ͍
18"͡ΌͩΊͳͷʁ ϞόΠϧσόΠεɺΞϓϦͰར༻Ͱ͖Δແͷ"1*Λఏڙɻ ྫʣ9DPEFͰ໌ࣔతʹڐՄ͕ඞཁͳ$BQBCJMJUJJFT
ΞϓϦ͕ར༻Ͱ͖Δ"1* NSCameraUsageDescription NSPhotoLibraryAddUsageDescription NSPhotoLibraryUsageDescription <uses-permission android:name="android.permissi on.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permissi on.WRITE_EXTERNAL_STORAGE"
/> Χϝϥ ৼಈ NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription <uses-permission android:name="android.permission .ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission .ACCESS_FINE_LOCATION" /> <uses-feature android:name="android.hardware.l ocation.gps" /> ετϨʔδ ϑΝΠϧγεςϜ ϓογϡ௨ Ґஔใ