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
2k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
3k
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
2.3k
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.8k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
1.3k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
950
Other Decks in Programming
See All in Programming
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
110
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
670
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
300
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
690
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
150
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
530
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
370
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
360
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.8k
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
220
yield再入門 #phpcon
o0h
PRO
0
960
Featured
See All Featured
A Soul's Torment
seathinner
6
3.4k
The browser strikes back
jonoalderson
0
1.5k
Mobile First: as difficult as doing things right
swwweet
225
10k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Between Models and Reality
mayunak
4
380
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Claude Code のすすめ
schroneko
67
230k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
830
Making Projects Easy
brettharned
120
6.7k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
480
4 Signs Your Business is Dying
shpigford
187
22k
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 όϦΤʔγϣϯଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બΛ ·ͱΊ