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
izumin5210
April 19, 2018
Programming
3.9k
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
690
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
2.2k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
1.1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
3.1k
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
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.5k
AHC070解法紹介
eijirou
0
130
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
0
160
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
300
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
650
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
120
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
16
13k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
350
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.8k
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
750
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The SEO identity crisis: Don't let AI make you average
varn
0
560
Prompt Engineering for Job Search
mfonobong
0
460
Unsuck your backbone
ammeep
672
58k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Navigating Weather and Climate Data
rabernat
0
530
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
440
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
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 όϦΤʔγϣϯଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બΛ ·ͱΊ