Slide 1

Slide 1 text

3BJMTΞϓϦʹ(SBQI2-Λ ಋೖͯ͠Έͨ࿩ ߹ಉษڧձ JOେ౎ձԬࢁ 8JOUFS גࣜձࣾϦκʔϜ ඌݹ ๛໌

Slide 2

Slide 2 text

໨࣍  ࣗݾ঺հ  3&45GVM"1*ͷ՝୊  (SBQI2-ͱ͸ʁ  σϞ  ։ൃͯ͠Έͯͷײ૝ B ϝϦοτ C σϝϦοτ D ޻෉ͨ͠ͱ͜Ζ E ϋϚͬͨϙΠϯτ  ·ͱΊ 2

Slide 3

Slide 3 text

ࣗݾ঺հ ໊લɿඌݹ ๛໌ UXJUUFSɿ !QBUPSBTI ॴଐɿגࣜձࣾϦκʔϜ γεςϜ։ൃ෦ ໾৬ɿઐ໳৬ ࢓ࣄ಺༰ɿ γϣοϐϯάηϯλʔʹؔ࿈͢ΔαʔϏε։ൃ 3VCZPO3BJMTͰࣗࣾαʔϏεͷ։ൃɾӡ༻ʢ೥໨ʣ 3

Slide 4

Slide 4 text

3&45GVM"1*ͷ՝୊ 4

Slide 5

Slide 5 text

3&45ͱ͸ʁ 3&45ͱ͸ɺ೥ʹ3PZ'JFMEJOHࢯ͕ఏএͨ͠ɺ෼ࢄγεςϜʹ͓͍ͯෳ਺ͷ ιϑτ΢ΣΞΛ࿈ܞͤ͞Δͷʹదͨ͠ઃܭݪଇͷू߹ɻ·ͨɺڱٛʹ͸ɺͦΕΛ 8FCʹద༻ͨ͠ιϑτ΢ΣΞͷઃܭ༷ࣜͷ͜ͱɻҰൠʹ͸ޙऀͷҙຯͰ༻͍ΒΕ Δ͜ͱ͕΄ͱΜͲͰ͋Δɻ ҰൠʹΑ͘࢖ΘΕΔڱٛͷ3&45͸ɺύϥϝʔλΛࢦఆͯ͠ಛఆͷ63-ʹ)551 ͰΞΫηε͢Δͱɺ9.-Ͱهड़͞Εͨϝοηʔδ͕ૹΒΕͯ͘ΔΑ͏ͳγεςϜ ͓Αͼݺͼग़͠ΠϯλʔϑΣʔεʢʮ3&45GVM"1*ʯͱݺ͹ΕΔʣͷ͜ͱΛࢦ͢ɻ γεςϜͷঢ়ଶ΍ηογϣϯʹґଘͤͣɺಉ͡63-΍ύϥϝʔλͷ૊Έ߹Θ͔ͤ Β͸ৗʹಉ݁͡Ռ͕ฦ͞ΕΔ͜ͱ͕ظ଴͞ΕΔɻ 5 IT用語辞典 より引用 http://e-words.jp/w/REST.html

Slide 6

Slide 6 text

3&45ͱ͸ʁ 63-͸ಉ͕ͩ͡ɺ)551ϝιουʹΑͬͯॲཧΛ੾Γସ͑Δɻ γϯϓϧͰ෼͔Γ΍͍͢ʂ (&5 Ұཡऔಘ BSUJDMFT ৄࡉऔಘ BSUJDMFT 1045 ৽ن࡞੒ BSUJDMFT 1"5$) ߋ৽ BSUJDMFT %&-&5& ࡟আ BSUJDMFT 6

Slide 7

Slide 7 text

3&45GVM"1*ͷ՝୊ BSUJDMFT BSUJDMFTDPNNFOUT BSUJDMFTDPNNFOUT VTFST BSUJDMFTDPNNFOUT VTFST ʜ BSUJDMFTDPNNFOUT VTFST 7 ௨৴ճ਺͕ଟ͘ͳΓ͕ͪ ˞࡞Γํ࣍ୈͰ͸͋Δ͚ΕͲɺ3&45 ͳઃܭͰ͍͑͹ʜ { “id”: 1, “user_id”: 1, “article_id”: 1, “content”: “この分野は素人なのですが…略”, “created_at”: “2019-11-23 00:00:00”, } { “id”: 10, “user_id”: 5, “article_id”: 1, “content”: “わかるぅ~”, “created_at”: “2019-11-23 06:00:00”, }

Slide 8

Slide 8 text

3&45GVM"1*ͷ՝୊ BSUJDMFT BSUJDMFTDPNNFOUT BSUJDMFTDPNNFOUT VTFST BSUJDMFTDPNNFOUT VTFST ʜ BSUJDMFTDPNNFOUT VTFST 8 ௨৴ྔଟ͘ͳΓ͕ͪ l ຊདྷ࢖͏ͷ͸ Ϣʔβ໊ͱϝʔϧΞυϨεͷΈ l ༨ܭͳ৘ใ·Ͱૹͬͯ͠·͏ { “id”: 1, “name”: “Yamada Taro”, “email”: “[email protected]”, “role_id”: 1, “battle_power”: 530000, “created_at”: “2019-11-22 00:00:00”, “updated_at”: “2019-11-30 00:00:00” } ෆཁʂ

Slide 9

Slide 9 text

3&45GVM"1*ͷ·ͱΊ l 63-͕ඇৗʹ໌շ l ֊૚ͷਂ͍σʔλΛऔಘ͠Α͏ͱ͢Δͱ / ճͷ௨৴ճ਺͕ൃੜ l ར༻͢ΔσʔλҎ֎ͷσʔλ΋ૹ৴ l ࠷ۙͷ8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ͸ େମ3&45Λαϙʔτ 9

Slide 10

Slide 10 text

(SBQI2- 10

Slide 11

Slide 11 text

(SBQI2-ͱ͸ʁ l 'BDFCPPL͕։ൃ͍ͯ͠Δ8FC"1*ͷͨΊͷن֨ l ΫΤϦݴޠͱεΩʔϚݴޠ͔Β੒Δ ˓ ΫΤϦݴޠ ˙ σʔλऔಘܥͷRVFSZ ˙ σʔλߋ৽ܥͷNVUBUJPO ˙ Πϕϯτ௨஌ͷTVCTDSJQUJPO ˓ εΩʔϚݴޠ ˙ ࢓༷Λ໌ه͢ΔͨΊͷݴޠ ˔ ܕ෇͚ l (JU)VC"1*WͰ(SBQI2-Λ࠾༻ 11

Slide 12

Slide 12 text

(SBQI2-ͷಛ௃ l ΫΤϦͷड͚ޱ͕ͭʢHSBQIRMͷΈʣ ˓ 3&45͸ͦΕͧΕϦιʔεຖʹ63-͕ଘࡏ͢Δ l શͯ)551ϝιουͷ1045Ͱड͚෇͚Δ ˓ σʔλͷऔಘͰ͋ͬͯ΋ɺ1045 ˓ ˞ௐ΂ͨΒɺ(&5Ͱ΋Ͱ͖͚ͨΕͲɺ͋·Γݱ࣮తͰͳ͔ͬͨ 12

Slide 13

Slide 13 text

(SBQI2-Λௐࠪ RVFSZ 13 l ΫϥΠΞϯτ͕ཉ͍͠ σʔλͷΈऔಘ l Ұ౓ͷ"1*ίʔϧͰશͯ औಘՄೳ l σʔλ݅਺͕ଟ͍৔߹͸ɺ ϦϨʔΛఆٛͯ͠ࢦఆ݅਺ຖ ʹऔಘ͢Δ͜ͱ΋Մೳ query { article(id: 1) { id title content status createdAt updatedAt comments { id content user { id name email } } } }

Slide 14

Slide 14 text

(SBQI2-Λௐࠪ NVUBUJPO 14 l σʔλߋ৽༻ΫΤϦ l ໭Γ஋͸RVFSZͱಉ༷ͷ ϑΥʔϚοτͰऔಘՄೳ mutation { creatArticle(input: { title: "タイトル", content: "内容", status: 1, userId: 1 }) { article { id title content status user { id name } } } }

Slide 15

Slide 15 text

σϞ 15

Slide 16

Slide 16 text

։ൃΛͯ͠Έͯͷײ૝ 16 l ϝϦοτ l σϝϦοτ l ޻෉ͨ͠ͱ͜Ζ l ϋϚͬͨͱ͜Ζ

Slide 17

Slide 17 text

։ൃΛͯ͠Έͯͷײ૝ʢϝϦοτʣ l εΩʔϚఆٛͱಉ࣌ʹ"1*υΩϡϝϯτ͕׬੒ ˓ ΫϥΠΞϯτଆͷ։ൃऀͱڞ༗ l ςετ͕༰қ ˓ εΩʔϚఆٛϑΝΠϧΛର৅ʹςετ ˓ &&ͷςετͰ͸ͳ͍ͷͰߴ଎ l σʔλ͕ҰൃͰऔΕΔշײ ˓ σʔλऔಘʹΫϥΠΞϯτଆʹओಋݖ͕͋Δ l "1*ͷೖΓޱΛҰຊԽ ˓ HSBQIRMͷΈ 17

Slide 18

Slide 18 text

։ൃͯ͠Έͯͷײ૝ʢσϝϦοτʣ l εΩʔϚఆٛ͢Δͷ͕େม ˓ ϝλϓϩάϥϛϯάՄೳ͕ͩɺεΩʔϚఆٛΛϝλϓϩ͍͍ͯ͠ͷ͔ʁ ͱ͍͏׉౻͕ʜ l / ໰୊͕ൃੜ͠΍͍͢ ˓ ͨͩ͠ɺϥΠϒϥϦͰղܾՄೳ ˓ औಘՄೳͳ߲໨͕ಈత ˙ ΫϥΠΞϯτଆ͕ཉ͍͠σʔλΛܾఆ͢ΔͨΊ ˙ ࣄલʹϩʔυͰ͖ͳ͍ l Ωϟογϡͮ͠Β͍ ˓ Ͳ͏͍͏σʔλΛฦ͔͢͸ɺΫϥΠΞϯτ࣍ୈͷͨΊ ˓ 3&45GVM"1*ͳΒ͹ɺฦ͢஋͕ܾ·͍ͬͯΔͨΊɺΩϟογϡ͕ޮ͘ l ֶशίετ ˓ 3&45GVM"1*͸ϑϨʔϜϫʔΫͷԆ௕্ʹ͋Δ ˓ (SBQI2-͸ͦ͏Ͱ͸ͳ͍ 18

Slide 19

Slide 19 text

3&45ͱ͸ʁ 3&45ͱ͸ɺ೥ʹ3PZ'JFMEJOHࢯ͕ఏএͨ͠ɺ෼ࢄγεςϜʹ͓͍ͯෳ਺ͷ ιϑτ΢ΣΞΛ࿈ܞͤ͞Δͷʹదͨ͠ઃܭݪଇͷू߹ɻ·ͨɺڱٛʹ͸ɺͦΕΛ 8FCʹద༻ͨ͠ιϑτ΢ΣΞͷઃܭ༷ࣜͷ͜ͱɻҰൠʹ͸ޙऀͷҙຯͰ༻͍ΒΕ Δ͜ͱ͕΄ͱΜͲͰ͋Δɻ ҰൠʹΑ͘࢖ΘΕΔڱٛͷ3&45͸ɺύϥϝʔλΛࢦఆͯ͠ಛఆͷ63-ʹ)551 ͰΞΫηε͢Δͱɺ9.-Ͱهड़͞Εͨϝοηʔδ͕ૹΒΕͯ͘ΔΑ͏ͳγεςϜ ͓Αͼݺͼग़͠ΠϯλʔϑΣʔεʢʮ3&45GVM"1*ʯͱݺ͹ΕΔʣͷ͜ͱΛࢦ͢ɻ γεςϜͷঢ়ଶ΍ηογϣϯʹґଘͤͣɺಉ͡63-΍ύϥϝʔλͷ૊Έ߹Θͤ ͔Β͸ৗʹಉ݁͡Ռ͕ฦ͞ΕΔ͜ͱ͕ظ଴͞ΕΔɻ 19 IT用語辞典 より引用 http://e-words.jp/w/REST.html キャッシュ可能!!

Slide 20

Slide 20 text

։ൃͯ͠Έͯͷײ૝ʢσϝϦοτʣ l εΩʔϚఆٛ͢Δͷ͕େม ˓ ϝλϓϩάϥϛϯάՄೳ͕ͩɺεΩʔϚఆٛΛϝλϓϩ͍͍ͯ͠ͷ͔ʁ ͱ͍͏׉౻͕ʜ l / ໰୊͕ൃੜ͠΍͍͢ ˓ ͨͩ͠ɺ3BJMTͳΒϥΠϒϥϦͰղܾՄೳ HSBQIRMCBUDI ˓ औಘՄೳͳ߲໨͕ಈత ˙ ΫϥΠΞϯτଆ͕ཉ͍͠σʔλΛܾఆ͢ΔͨΊ ˙ ࣄલʹϩʔυͰ͖ͳ͍ l Ωϟογϡͮ͠Β͍ ˓ Ͳ͏͍͏σʔλΛฦ͔͢͸ɺΫϥΠΞϯτ࣍ୈͷͨΊ ˓ 3&45GVM"1*ͳΒ͹ɺฦ͢஋͕ܾ·͍ͬͯΔͨΊɺΩϟογϡ͕ޮ͘ l ֶशίετ ˓ 3&45GVM"1*͸8FCϑϨʔϜϫʔΫͷԆ௕্ʹ͋Δ ˓ (SBQI2-͸ͦ͏Ͱ͸ͳ͍ 20

Slide 21

Slide 21 text

։ൃΛͯ͠Έͯͷײ૝ʢ޻෉ͨ͠ϙΠϯτʣ l ΞΫηεݖݶνΣοΫ ˓ ࿈ܞΞϓϦέʔγϣϯʹΑͬͯ ͸औಘ/(ͳϦιʔε͋Γ ˓ %#͔ΒϦιʔεͷσʔλऔಘ ޙʹνΣοΫͰ͸஗͍ ˓ ΫΤϦΛղੳɻऔಘ͠Α͏ͱ͠ ͍ͯΔϦιʔεΛಛఆ ˙ ݖݶ͕ͳ͚Ε͹ ͜ͷ࣌఺Ͱ஄͘ ˓ ΫΤϦղੳ΋ॏ͍ ˙ NVUBUJPO͸আ֎ 21 query searchScSomeOne($scId: ID!){ sc(id: $scId) { name shopBrands { name shopCompany { name } } } } アクセス権限のない リソースの取得を検知!

Slide 22

Slide 22 text

։ൃ͍ͯͯ͠ͷײ૝ʢϋϚͬͨϙΠϯτʣ l NVUBUJPOʹΑΔόϧΫΠϯαʔτɾΞοϓσʔτΛ ߦͳͬͯ΋͍͍ͷ͔ʁ ˓ ΫΤϦʹ͸ผ໊Λ͚ͭΔ͜ͱ͕Մೳ ˓ ౓ͷίʔϧͰෳ਺ͷNVUBUJPOΫΤϦΛฒ΂ͯόϧΫΠϯαʔτ ͢Δ͜ͱࣗମ͸Ͱ͖ͨ ˓ ͔͠͠ɺݸผʹNVUBUJPOͷॲཧ࣮ߦ ˙ τϥϯβΫγϣϯ͕ޮ͔ͳ͍ ˓ ΫΤϦղੳΛߦͬͯɺόϧΫΠϯαʔτͰ͋Δ͜ͱΛݕ஌ͨ͠Βɺ τϥϯβΫγϣϯΛൃߦ͢Δ͜ͱ͸ग़དྷͦ͏͕ͩʜ ˙ Ͱ͖Δ͔Β΍͍͍͔ͬͯͱݴΘΕΔͱɺҧ͏ؾ͕͢Δ ˙ σϑΥϧτͷ(SBQI2-͸ͦ͏͍͏ಈ࡞Λظ଴͍ͯ͠Δͷ͔ʁ ˓ JTTVFΛൃݟ ˙ όϧΫΠϯαʔτ༻ͷNVUBUJPOΛఆٛ͠·͠ΐ͏ɺͱ͍͏݁࿦ ˙ ͨͩ͠ɺ࢓্༷ɺෳ਺ͷNVUBUJPOΛฒ΂Δͷ͸0, 22

Slide 23

Slide 23 text

·ͱΊ l (SBQI2-͸"1*ͷίʔϧճ਺Λ࡟ݮ l σʔλ௨৴ྔΛ࡟ݮ l εΩʔϚݴޠͰܕͷఆ͕ٛՄೳ l ςετ͕༰қ l ͍͍͜ͱ͹͔ΓͰ͸ͳ͍ ˓ ֶशίετ͸3&45GVM"1*ʹൺ΂Δͱߴ͍ ˓ Ωϟογϡ͕ޮ͔ͤʹ͍͘ ˓ / ໰୊͕ൃੜ͠΍͍͢ 23

Slide 24

Slide 24 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 24

Slide 25

Slide 25 text

ࢀߟࢿྉ 25 ˔ ʮ(SBQI2-ʯపఈೖ໳ ᴷ3&45ͱͷൺֱɺ"1*ɾϑϩϯτ૒ํͷ࣮૷͔ΒֶͿ IUUQTFNQMPZNFOUFO KBQBODPNFOHJOFFSIVCFOUSZ(SBQI2-&"&"' &#%&# ˔ (SBQI2-3VCZ IUUQTHSBQIRMSVCZPSH