Slide 1

Slide 1 text

©2018 Wantedly, Inc. Preferences as a Service for mobile applications and microservices potatotips #50 18.Apr.2018 - izumin5210

Slide 2

Slide 2 text

©2018 Wantedly, Inc. QPUBUPUJQT

Slide 3

Slide 3 text

©2018 Wantedly, Inc.

Slide 4

Slide 4 text

©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

Slide 5

Slide 5 text

©2018 Wantedly, Inc. Preferences How do you manage "preferences"?

Slide 6

Slide 6 text

©2018 Wantedly, Inc. Preferences How do you manage "preferences"? Preferences Ͳ͏΍࣮ͬͯ૷͠·͔͢ ‣ A1SFGFSFODF'SBHNFOUA A1SFGFSFODF"DUJWJUZAతͳ  ӈͷεΫγϣ͸A3FDZDMFS7JFXAͩͬͨ  ݟͨ໨ͷ࣮૷͸͍Ζ͍Ζ ‣ ͡Ό͋಺෦ͷ࣮૷͸ʁ  A4IBSFE1SFGFSFODFA   3FBMNʁ  'JSFCBTF3FNPUF$POpH

Slide 7

Slide 7 text

©2018 Wantedly, Inc. Preferences How do you manage "preferences"? Preferences In Wantedly People ‣ αʔόଆͷڍಈʹӨڹ͢Δ΋ͷ΋ଟ͍  ϓϥΠόγઃఆͱ͔  ϩʔΧϧ͚ͩʹอଘ͢Δͱ͍͏બ୒͸ͱΕͳ͍ ‣ ͡Ό͋Ͳ͏ͯ͠Δʁ  ࣗલͰαʔόͷ࣮૷ॻ͍ͨ

Slide 8

Slide 8 text

©2018 Wantedly, Inc. ࣗલͰαʔόͷ࣮૷ॻ͍ͨ

Slide 9

Slide 9 text

©2018 Wantedly, Inc.

Slide 10

Slide 10 text

©2018 Wantedly, Inc. ࣗલͰαʔόͷ࣮૷ॻ͍ͨ ຖճ ͍ͯͨ

Slide 11

Slide 11 text

©2018 Wantedly, Inc. ຖճࣗલͰαʔόͷ࣮૷ॻ͍ͯͨ ਖ਼௚͠ΜͲ͍ ‣ ΞϓϦͷ਺ʹԠͯ͡ઃఆ஋ͷछྨ΋૿͍͑ͯ͘ ‣ ͍͍ͩͨʮͦͷΞϓϦ͕ϝΠϯͰ৮Δαʔόʯʹ
 ࣮૷͞ΕΔ  ΞϓϦΤϯδχΞ͸αʔόͷ࣮૷Λ଴ͭ  ͭΒ͍ ͭΒ͍ ΄ΜͱʹͭΒ͍ { "foo_privacy_status": "private", "bar_privacy_status": "friend_of_friend" }

Slide 12

Slide 12 text

©2018 Wantedly, Inc. ຖճࣗલͰαʔόͷ࣮૷ॻ͍ͯͨ ਖ਼௚͠ΜͲ͍ ‣ ΞϓϦͷ਺ʹԠͯ͡ઃఆ஋ͷछྨ΋૿͍͑ͯ͘ ‣ ͍͍ͩͨʮͦͷΞϓϦ͕ϝΠϯͰ৮Δαʔόʯʹ
 ࣮૷͞ΕΔ ‣ ʮ˓˓ΞϓϦͱઃఆڞ༗͍ͨ͠ʂʯ ‣ ղಡࠔ೉ͳαʔϏεґଘؔ܎ͷग़དྷ্͕Γ ͭΒ͍ ΄ΜͱʹͭΒ͍ { "foo_privacy_status": "private", "bar_privacy_status": "friend_of_friend" }

Slide 13

Slide 13 text

©2018 Wantedly, Inc. ຖճಉ͡Α͏ͳαʔόॻ͘ͷ ແବͰ͸

Slide 14

Slide 14 text

©2018 Wantedly, Inc. ΋ͬͱ൚༻తͳͷ͕΄͍͠

Slide 15

Slide 15 text

©2018 Wantedly, Inc. options : Preferences as a Service d͍ΖΜͳઃఆ஋؅ཧ͢Δ܅d

Slide 16

Slide 16 text

©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": "一般公開" } ] } } ] }

Slide 17

Slide 17 text

©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": "一般公開" } ] } } ] }

Slide 18

Slide 18 text

©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": "一般公開" } ] } } ] }

Slide 19

Slide 19 text

©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": "一般公開" } ] } } ] }

Slide 20

Slide 20 text

©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": "一般公開" } ] } } ] }

Slide 21

Slide 21 text

©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": "一般公開" } ] } } ] }

Slide 22

Slide 22 text

©2018 Wantedly, Inc. ͦͷଞͷ༻๏ ։ൃऀͷσόοάʹ΋ศར ‣ ࿩୊λΠϜϥΠϯͷදࣔϩδοΫͱ͔  ͜ͷQPTUΛग़ͯ͠΄͍͠ʂͱ͔ ‣ "#ςετͷͲͷϞʔυΛ࢖͏͔ ͍Ζ͍Ζͳ׆༻๏͕͋Δ options Preferences as a Service

Slide 23

Slide 23 text

©2018 Wantedly, Inc. ΞϓϦΛ·͙ͨઃఆ஋͸ࣗ෼Ͱαʔόॻ͘ͱศར w ͋ͨΓ·͑ w ΠϯλʔφϧͳαʔϏεͱ͔Ͱ΋ར༻Ͱ͖Δ ઃఆ஋ͳΜܾͯ·ͬͨܗ͔͠ͳ͍ w DIFDLCPY TJOHMFNVMUJQMFWBMVF TJOHMFNVMUJQMFTFMFDUJPO w όϦΤʔγϣϯ͸ଟ͘ͳ͍Μ͔ͩΒɼ൚༻ੑΛ΋ͨͤΔͱޙͰָͰ͖Δ ंྠͷ࠶։ൃΛڪΕͣɼ࠷దͳٕज़બ୒Λ ·ͱΊ