@2020 Torana, Inc.
Ͳ͏࡞͍͔ͬͯͬͨ
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
ݱ৬ʹݶΒ༷ͣมߋ͕ଟʑ߱Γֻ͔ͬͨ͜ͱ͕͋Γɺ༷มߋ͕
ൃੜͯ͠ॊೈʹ͔ͭૣٸʹରԠ͍ͨ͠ͱ͍͏͜ͱͰ
/PSNBMJ[FSͱ͍͏֓೦͕ੜ·Εͨ
63
Slide 64
Slide 64 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
Model A
Attributes
Normalizer
Recipe
hasMany
belongsTo
belongsToMany
Model B
Attributes
Model C
Attributes
Model D
Attributes
Model A ͷ Attribute
ΛϨγϐʹ͔͚Δ
ϦϨʔγϣϯؔͷϞσϧΛऔಘ͢Δ
Model A ͱಉ༷ʹϨγϐʹ͔͚ͯɺಉ༷ͷॲཧΛ܁Γฦ͢
Scalar Value
Model ͷ Attributes ΛͲ͏ม͢Δ͔Λ
ॻ͍ͨϨγϐ
Model Normalizer OpenAPI ϒϥβ
ΞϓϦέʔγϣϯ
64
Slide 65
Slide 65 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
OpenAPI Normalizer Model ΞϓϦέʔγϣϯ
OpenAPI Model A
Attributes
Normalizer
Recipe
hasMany
belongsTo
belongsToMany
OpenAPI Model B
Attributes
OpenAPI Model C
Attributes
OpenAPI Model D
Attributes
OpenAPI Model A ͷ Attribute
ΛϨγϐʹ͔͚Δ
ϦϨʔγϣϯؔͷϞσϧΛऔಘ͢Δ
OpenAPI Model A ͱಉ༷ʹϨγϐʹ͔͚ͯɺಉ༷ͷॲཧΛ܁Γฦ͢
Scalar Value
OpenAPI Model ͷ Attributes ΛͲ͏ม͢Δ͔Λ
ॻ͍ͨϨγϐ
ϒϥβ
65
Slide 66
Slide 66 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
ʢॳظͷߏͰ͢ʣ
(MADRAS ࣾγεςϜͷ໊લͰ͢)
66
Slide 67
Slide 67 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
୯ҰϞσϧͷऔಘ
ෳϞσϧͷऔಘ
ࣗͰఆٛͨ͠ํ๏ͰΛऔಘ
Model -> OpenAPI
ͷϨγϐ
67
Slide 68
Slide 68 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
Model -> OpenAPI
ͷϨγϐ
ԾϑΟʔϧυͷઃఆ
ʢDB ͷϞσϧʹͳ͍ͷʣ
࣍ճͷൃૹͳͲΛฦ͢
ࣗલͷϩδοΫΛॻ͚Δ
68
Slide 69
Slide 69 text
@2020 Torana, Inc.
0QFO"1*ͱ.PEFMͷํؒͰίϯόʔτͰ͖ΔΈΛ༻ҙ
ෳϞσϧͷऔಘ
foreign key Λมߋͨ͠
୯ҰϞσϧͷऔಘ
OpenAPI -> Model
ͷϨγϐ
69
@2020 Torana, Inc.
.PEFMͷߋ৽࣌ʹ༷ʑͳॲཧΛ͢ΔΑ͏ʹ
Model A
Model::saved
Create or Update
Delete
Model B
Model::deleted
※ AppModel Model Λܧঝͨ͠ΫϥεͰ͢ɻͯ͢ͷϞσϧ AppModel Λܧঝ͢ΔΑ͏ʹͳ͍ͬͯ·͢ɻ
Elasticsearch
RDB
Elasticsearch ʹอଘɾআ
อଘɾআ࣌ʹ݁ՌΛ༧ΊΩϟογϡ͓ͯ͘͠
Model A ʹඥ͚ΒΕͨ
Model B อଘ
Model A ͷΈআ
(Model B আ͠ͳ͍)
Redis
72
@2020 Torana, Inc.
ݕࡧΫΤϦͯ͢&MBTUJDTFBSDI
API ͷ݁Ռ͔ΒϑΥʔϜΛ࡞
77
Slide 78
Slide 78 text
@2020 Torana, Inc.
ݕࡧΫΤϦͯ͢&MBTUJDTFBSDI
API ͷ݁Ռ͔ΒϑΥʔϜΛ࡞
input ͷ text number ΛܾΊ·͢
ϦϨʔγϣϯΛϕʔεʹηϨΫτϘοΫεͷ
Λऔಘ͢ΔͨΊͷΤϯυϙΠϯτΛఆٛ͠
͍ͯ·͢
type ͕ date ͷ߹ɺ։࢝ͱ
ऴྃΛࣗಈతʹೖΕΔΑ͏ʹ
78
Slide 79
Slide 79 text
@2020 Torana, Inc.
ݕࡧΫΤϦͯ͢&MBTUJDTFBSDI
API ͷ݁Ռ͕ΤϯυϙΠϯτͩͬͨ߹ɺ
ηϨΫτϘοΫεͷΛউखʹ
ೖΕͯ͘ΕΔΑ͏ʹ
79