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
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
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
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.7k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
860
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
2.8k
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
2.2k
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.8k
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
3.4k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.7k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
1.2k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
930
Other Decks in Programming
See All in Programming
技術記事、 専門家としてのプログラマ、 言語化
mizchi
10
4.3k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
750
Vite+ Unified Toolchain for the Web
naokihaba
0
280
net-httpのHTTP/2対応について
naruse
0
470
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
120
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
880
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
330
Oxcを導入して開発体験が向上した話
yug1224
4
310
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Designing for humans not robots
tammielis
254
26k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Designing for Timeless Needs
cassininazir
1
250
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
How to make the Groovebox
asonas
2
2.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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 όϦΤʔγϣϯଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બΛ ·ͱΊ