Slide 1

Slide 1 text

גࣜձࣾλΠϛʔɹShintani Teppei XXXSerializer#to_json Λ ஍ಓʹஔ͖׵͍͑ͯΔ࿩ @euglena1215 ʲΦϑϥΠϯ։࠵ʳomotesando.rb #89

Slide 2

Slide 2 text

ࣗݾ঺հ ৽୩ ఩ฏʢ@euglena1215ʣ ● גࣜձࣾλΠϛʔ ● όοΫΤϯυΤϯδχΞ ● omotesando.rb ࢀՃ2ճ໨Ͱ͢

Slide 3

Slide 3 text

ΞϓϦέʔγϣϯίʔυͰ ͜Μͳ࣮૷ͯ͠·ͤΜ͔ʁ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

͜ΕΛ

Slide 6

Slide 6 text

͜͏௚͍ͯ͠Δ࿩

Slide 7

Slide 7 text

1 ͳͥ΍͍ͬͯΔͷ͔

Slide 8

Slide 8 text

ͳͥ΍͍ͬͯΔͷ͔ XXXSerializer#to_json Λ࢖ͬͯ JSON ʹγϦΞϥΠζ͢Δͱ
 ࠔΔέʔε͕͋Δ → adapter option Λ൓өͰ͖ͳ͍

Slide 9

Slide 9 text

adapter option ͱ͸ʁ ADAPTER_OPTION_KEYS ʹఆٛ͞Ε͍ͯΔΦϓγϣϯɻ ݸਓతʹҰ൪Α͘࢖͏ͷ͸ key_transform Φϓγϣϯ ݸਓతʹศརͩͱࢥͬͯΔͷ͸ fields Φϓγϣϯ

Slide 10

Slide 10 text

adapter option Λ൓өͰ͖ͳ͍ͱ͸ʁ first_name, last_name Λ field ʹ࣋ͭ UserSerializer ͕ଘࡏ͢ΔͱԾఆɻ key ͕ lower camel ͷ JSON Λग़ྗ͍ͨ͠ɻ firstName: “...”, lastName: “...” ʹ͍ͨ͠ʂ

Slide 11

Slide 11 text

UserSerializer.new ʹΩʔϫʔυҾ਺ͱͯ͠ key_transform Λ༩͑ͯ΋ 
 lower camel ʹ͸ͳΒͳ͍ɻ “lastName”ʹͳͬͯͳ͍... adapter option Λ൓өͰ͖ͳ͍ͱ͸ʁ

Slide 12

Slide 12 text

XXXSerializer.new ͷҾ਺ʹ౉ͨ͠৔߹͸ adapter option ͱͯ͠Ͱ͸ͳ͘ɺ instance option ͱͯ͠ೝࣝ͞ΕΔɻͦͷͨΊɺXXXSerializer#to_json Λ࢖͏ͱ ActiveModelSerializer ͷػೳΛ࢖ͬͯ key Λม׵͢Δ͜ͱ͸Ͱ͖ͳ͍ɻ adapter option Λ൓өͰ͖ͳ͍ͱ͸ʁ

Slide 13

Slide 13 text

ActiveModelSerializer ͸ initializer ͰσϑΥϧτͷ key_transform ΛઃఆͰ͖Δ ͕ɺXXXSerializer#to_json Λ࢖ͬͯ͠·͏ͱ൓ө͞Εͳ͍ͷ΋ࠔΔϙΠϯτͷ1 ͭɻ adapter option Λ൓өͰ͖ͳ͍ͱ͸ʁ

Slide 14

Slide 14 text

Ͳ͏͢Ε͹͍͍ʁ adapter option ͱͯ͠ೝࣝͤ͞ɺkey Λ lower camel ʹม׵͢Δʹ͸ ActiveModelSerializers::SerializableResource.new ͷҾ਺ͱͯ͠౉͢ඞཁ͕͋Δɻ

Slide 15

Slide 15 text

Controller ಺Ͱ͸୹͘ॻ͚ΔΑ͏ʹͳ͍ͬͯΔɻͲͪΒͷॻ͖ํͰ΋OKɻ Ͳ͏͢Ε͹͍͍ʁ

Slide 16

Slide 16 text

Ͳ͏͢Ε͹͍͍ʁ ͦ΋ͦ΋ XXXSerializer#to_json Λ࢖ͬͨ JSON γϦΞϥΠζͷํ๏͸ README ʹهࡌ͞Ε͓ͯΒͣɺREADME ʹ͸ʮγϦΞϥΠζʹ͸ SerializableResource Λ ࢖͍·͠ΐ͏ʯͱॻ͔Ε͍ͯΔɻ

Slide 17

Slide 17 text

READMEʹॻ͍ͯ͋ΔͷͰ READMEΛಡ΋͏ ʙ׬ʙ

Slide 18

Slide 18 text

2 Ͳ͏΍͍ͬͯΔ͔

Slide 19

Slide 19 text

Ͳ͏΍͍ͬͯΔ͔ ஍ಓʹॻ͖׵͍͔͑ͯ͘͠ͳ͍

Slide 20

Slide 20 text

Ͳ͏΍͍ͬͯΔ͔ Ͳ͏΍ͬͯյͣ͞ʹਐΊ͍͔ͯ͘ ֤ Serializer ʹରԠ͢ΔϚονϟͷத਎Λ༻ҙ͢Δ

Slide 21

Slide 21 text

Ͳ͏΍͍ͬͯΔ͔ request spec ͰϨεϙϯεʹରͯ͠JSONͷߏ଄͕Ұக͢Δ͔Ͳ͏͔Λ֬ೝ͠ɺ յΕ͍ͯͳ͍͜ͱΛશΤϯυϙΠϯτͰνΣοΫ͍ͯ͘͠ɻ APIఆٛ͸ OpenAPI Ͱ؅ཧ͍ͯ͠ΔͷͰ committee-rails Λָ͕Ͱ͖ͦ͏ͳؾ͕ ͭͭ͠ࢼ͍ͤͯͳ͍ͷͰɺར༻ऀΛ੠Λฉ͍ͯΈ͍ͨ 👀

Slide 22

Slide 22 text

·ͱΊ ● XXXSerializer#to_json Ͱ JSON γϦΞϥΠζΛߦ͏ͱ adapter option ͕൓ө͞Εͳ͍ͷͰ README ʹॻ͍ͯ͋Δํ๏ͰγϦΞ ϥΠζ͠Α͏ɻ ● committee-rails ࢖ͬͯΔํ͍ͨΒ࢖͍উखΛڭ͍͑ͯͩ͘͞ɻ