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
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.9k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
910
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
2.9k
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.5k
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.3k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
940
Other Decks in Programming
See All in Programming
自作OSでスライド発表する
uyuki234
1
3.8k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
210
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
740
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
490
Claude Team Plan導入・ガイド
tk3fftk
0
190
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
Foundation Models frameworkで画像分析
ryodeveloper
1
120
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
120
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
360
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
920
どこまでゆるくて許されるのか
tk3fftk
0
490
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Building Applications with DynamoDB
mza
96
7.1k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Believing is Seeing
oripsolob
1
170
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Deep Space Network (abreviated)
tonyrice
0
230
HDC tutorial
michielstock
2
740
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Being A Developer After 40
akosma
91
590k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
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 όϦΤʔγϣϯଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બΛ ·ͱΊ