Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Preferences as a Service - for mobile apps and ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
izumin5210
April 19, 2018
Programming
4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Preferences as a Service - for mobile apps and microservices
potatotips #50
https://potatotips.connpass.com/event/82476/
izumin5210
April 19, 2018
More Decks by izumin5210
See All by izumin5210
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
740
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.6k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
2.2k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
1.1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
3.2k
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
2.4k
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.8k
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
3.6k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.8k
Other Decks in Programming
See All in Programming
Jetpack Compose Mechanisms
skydoves
3
800
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
120
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
230
気持ちぃ〜角丸 Squircle
ryu1013
0
300
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
R8 の設定見直しでアプリサイズ削減
andpad
0
220
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
260
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
16k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
600
Agents on Rails - Rails at Scale 2026
irinanazarova
0
540
AmebaブログはKMPから卒業します
kmars0605
0
160
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Crafting Experiences
bethany
1
380
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
WCS-LA-2024
lcolladotor
0
890
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
ラッコキーワード サービス紹介資料
rakko
1
5.3M
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
A Soul's Torment
seathinner
8
3.8k
Believing is Seeing
oripsolob
1
240
Docker and Python
trallard
47
4.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Transcript
©2018 Wantedly, Inc. Preferences as a Service for mobile applications
and microservices potatotips #50 18.Apr.2018 - izumin5210
©2018 Wantedly, Inc. QPUBUPUJQT
©2018 Wantedly, Inc.
©2018 Wantedly, Inc. $ whoami a.k.a. usamimi engineer izumin5210 Engineer
at Wantedly, Inc. Wantedly People ‣ Web Application Engineer - Profile Data Strategy Group ‣ Interests in developer productivity on microservices Gopher, Rubyist, JavaScripter and Androider
©2018 Wantedly, Inc. Preferences How do you manage "preferences"?
©2018 Wantedly, Inc. Preferences How do you manage "preferences"? Preferences
Ͳ͏࣮ͬͯ͠·͔͢ ‣ A1SFGFSFODF'SBHNFOUA A1SFGFSFODF"DUJWJUZAతͳ ӈͷεΫγϣA3FDZDMFS7JFXAͩͬͨ ݟͨͷ࣮͍Ζ͍Ζ ‣ ͡Ό͋෦ͷ࣮ʁ A4IBSFE1SFGFSFODFA 3FBMNʁ 'JSFCBTF3FNPUF$POpH
©2018 Wantedly, Inc. Preferences How do you manage "preferences"? Preferences
In Wantedly People ‣ αʔόଆͷڍಈʹӨڹ͢Δͷଟ͍ ϓϥΠόγઃఆͱ͔ ϩʔΧϧ͚ͩʹอଘ͢Δͱ͍͏બͱΕͳ͍ ‣ ͡Ό͋Ͳ͏ͯ͠Δʁ ࣗલͰαʔόͷ࣮ॻ͍ͨ
©2018 Wantedly, Inc. ࣗલͰαʔόͷ࣮ॻ͍ͨ
©2018 Wantedly, Inc.
©2018 Wantedly, Inc. ࣗલͰαʔόͷ࣮ॻ͍ͨ ຖճ ͍ͯͨ
©2018 Wantedly, Inc. ຖճࣗલͰαʔόͷ࣮ॻ͍ͯͨ ਖ਼͠ΜͲ͍ ‣ ΞϓϦͷʹԠͯ͡ઃఆͷछྨ૿͍͑ͯ͘ ‣ ͍͍ͩͨʮͦͷΞϓϦ͕ϝΠϯͰ৮Δαʔόʯʹ ࣮͞ΕΔ
ΞϓϦΤϯδχΞαʔόͷ࣮Λͭ ͭΒ͍ ͭΒ͍ ΄ΜͱʹͭΒ͍ { "foo_privacy_status": "private", "bar_privacy_status": "friend_of_friend" }
©2018 Wantedly, Inc. ຖճࣗલͰαʔόͷ࣮ॻ͍ͯͨ ਖ਼͠ΜͲ͍ ‣ ΞϓϦͷʹԠͯ͡ઃఆͷछྨ૿͍͑ͯ͘ ‣ ͍͍ͩͨʮͦͷΞϓϦ͕ϝΠϯͰ৮Δαʔόʯʹ ࣮͞ΕΔ
‣ ʮ˓˓ΞϓϦͱઃఆڞ༗͍ͨ͠ʂʯ ‣ ղಡࠔͳαʔϏεґଘؔͷग़དྷ্͕Γ ͭΒ͍ ΄ΜͱʹͭΒ͍ { "foo_privacy_status": "private", "bar_privacy_status": "friend_of_friend" }
©2018 Wantedly, Inc. ຖճಉ͡Α͏ͳαʔόॻ͘ͷ ແବͰ
©2018 Wantedly, Inc. ͬͱ൚༻తͳͷ͕΄͍͠
©2018 Wantedly, Inc. options : Preferences as a Service d͍ΖΜͳઃఆཧ͢Δ܅d
©2018 Wantedly, Inc. { "options": [ { "key": "people.sns_privacy_status_cd", "type":
"SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. { "options": [ { "key": "people.sns_privacy_status_cd", "type":
"SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. { "options": [ { "key": "people.sns_privacy_status_cd", "type":
"SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. { "options": [ { "key": "people.sns_privacy_status_cd", "type":
"SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. ҙͷઃఆΛฦ͢αʔό ‣ 7JFXʹͦͷ··ϚοϓͰ͖ΔܗͰ͔͑ͬͯ͘Δ ‣ ͦΕͬΆ͘ଟݴޠରԠ͞ΕΔ ‣ ৽͘͠ΞϓϦͭͬͨ͘ͱ͖ʹɼ
৽͍͠ઃఆը໘༻ͷ"1*ॻ͔ͳ͍͍ͯ͘ʂ options Preferences as a Service { "options": [ { "key": "people.sns_privacy_status_cd", "type": "SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. ͳͥࣗલʁ ‣ 8BOUFEMZ1FPQMFϚΠΫϩαʔϏε ‣ ΠϯλʔφϧͳαʔϏε͔Βࢀর͔ͨͬͨ͠ 'JSFCBTFͱ͔ͩͱҰ୴֎ʹग़ͪΌ͏
‣ ઃఆΧδϡΞϧʹՃɾมߋ͍ͨ͠ ͕͍͍ࣗͨͪ͢ΧςΰϥΠζػೳ options Preferences as a Service { "options": [ { "key": "people.sns_privacy_status_cd", "type": "SINGLE_SELECTION", "name": "ソーシャル連携の公開範囲", "description": "", "single_selection": { "value": 2, "selects": [ { "key": "friends_of_friends", "value": 2, "name": "友達の友達まで" }, { "key": "wantedly_users", "value": 3, "name": "Wantedly登録ユーザ" }, { "key": "everyone", "value": 4, "name": "一般公開" } ] } } ] }
©2018 Wantedly, Inc. ͦͷଞͷ༻๏ ։ൃऀͷσόοάʹศར ‣ λΠϜϥΠϯͷදࣔϩδοΫͱ͔ ͜ͷQPTUΛग़ͯ͠΄͍͠ʂͱ͔ ‣
"#ςετͷͲͷϞʔυΛ͏͔ ͍Ζ͍Ζͳ׆༻๏͕͋Δ options Preferences as a Service
©2018 Wantedly, Inc. ΞϓϦΛ·͙ͨઃఆࣗͰαʔόॻ͘ͱศར w ͋ͨΓ·͑ w ΠϯλʔφϧͳαʔϏεͱ͔Ͱར༻Ͱ͖Δ ઃఆͳΜܾͯ·ͬͨܗ͔͠ͳ͍ w
DIFDLCPY TJOHMFNVMUJQMFWBMVF TJOHMFNVMUJQMFTFMFDUJPO w όϦΤʔγϣϯଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બΛ ·ͱΊ