OpenAPI(Swagger)によるWebDriverの記述と、この星の上のさまざまな物への実験的なWebDriver実装
by
Toda Hiroshi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
0QFO"1* 4XBHHFS ʹΑΔ8FC%SJWFSͷهड़ͱɺ ͜ͷͷ্ͷ͞·͟·ͳͷ ࣮ݧతͳ8FC%SJWFS࣮ ݄ ށా
Slide 2
Slide 2 text
ࣗݾհ • ށా ʢͱͩ ͻΖ͠ʣ !IJSPTIJUPEB • ੜ·Ε ࠓͰࡀ • σΟʔϓϥʔχϯάͱ"QQJVNΛར༻ͨ͠ ςετࣗಈԽ4BB4ʮ.BHJD1PEʯӡӦʹɺ ͔Βͪ·ͪ·ɺ͔Βͦͦ͜͜ ࢀՃ͍ͯ͠·͢ɻ • ʹʮ4FMFOJVN࣮ફೖʯ ʹ ʮΤΩεύʔτ͕ڭ͑Δ4FMFOJVN࠷લઢʯ ڞஶ͠·ͨ͠ɻͥͻ͓ങ͍ٻΊ͍ͩ͘͞ʂ
Slide 3
Slide 3 text
˞.BHJD1PEͷ͝հ˞ • ʮ.BHJD1PEʯɺಋೖͷෑډ͕ߴ͘ͳΓ͕ͪͳ ωΠςΟϒΞϓϦͷࣗಈςετΛ ͔ΜͨΜʹ࢝ΊΒΕΔςετࢧԉαʔϏεͰ͢ɻ • 8FC%SJWFS"1*ʹ४ڌͨ͠ωΠςΟϒΞϓϦࣗಈૢ࡞πʔϧ ʮ"QQJVNʯΛར༻͍ͯ͠·͢ɻ • σΟʔϓϥʔχϯάΛ׆༻ͨ͠ΞϓϦ6*ͷࣗಈൃݟ 8FC(6*্Ͱͷςετ߲࡞ػೳΈ߹Θͤͯɺ ςετ߲දΛ࡞ΔΑ͏ͳ؆୯ͳૢ࡞Ͱ ࣗಈςετͷ͘͠ΈΛ࡞Ε·͢ɻ • IUUQTNBHJDQPEDPN
Slide 4
Slide 4 text
ࠓ͢͜ͱ ݄ʹ8$קࠂͱͳͬͨ8FC%SJWFS"1*Λɺ 8FC"1*༷Λهड़Ͱ͖Δ0QFO"1* 4XBHHFS ͱ ߹ମͤͨ͞ΒΑ͛͞Ͱʁͱ͍͏ఏҊΛ͠·͢ʂ 8FC%SJWFSͬͯͳΜ͚ͩͬʁ 0QFO"1* 4XBHHFS ͬͯͳΜ͚ͩͬʁ 8FC%SJWFS "1*Λ0QFO"1*ܗࣜͰදݱͯ͠ΈΑ͏ 4XBHHFS$PEFHFOͰ8FC%SJWFS"1*ελϒΛ࡞Ζ͏ 8FC%SJWFS"1*ελϒΛར༻ͯ͠ ࣗͳΓͷ%SJWFSΛ࡞ͬͯΈΑ͏
Slide 5
Slide 5 text
8FC%SJWFSͬͯ ͳΜ͚ͩͬʁ
Slide 6
Slide 6 text
8FC%SJWFSͬͯͳΜ͚ͩͬʁ • ϒϥβʔ͕࣮͍ͯ͠ͳ͚ΕͳΒͳ͍ ࣗಈૢ࡞ͷͨΊͷΠϯλʔϑΣΠεͰ͢ɻ • ௨৴ϓϩτίϧ)551Ͱɺ3&45ͬΆ͍ΠϯλʔϑΣΠεͰ͢ɻ • ଟ͘ͷ߹ɺϒϥβʔࣗମͰͳ͘ DISPNFESJWFSHFDLPESJWFSͷͷΘ͔ΔΞΠπ͕ ϒϥβʔͱͷհͱ࣮͍ͯͯ͠͠·͢ɻ
Slide 7
Slide 7 text
8FC%SJWFSͬͯͳΜ͚ͩͬʁ ͏ͪΐͬͱߟ͑ͯΈΑ͏ • ͭ·Γ͜ΕɺࡶʹݴͬͪΌ͍·͢ͱɺ )551ͱϒϥβʔݻ༗ͷࣗಈૢ࡞ϓϩτίϧͱͷ ૬ޓมϓϩΩγʔ͕ɺϒϥβʔଆΛӅณ͢Δ͜ͱͰɺ 8FCϒϥβʔΛ͔͋ͨ8FCΞϓϦͷΑ͏ʹͯ͠ ࣗಈૢ࡞͢ΔͨΊͷ͘͠Έɺͱݴ͍͑ΒΕ·͢ɻ ϒϥβʔ REST API ʢϓϩΩγʣ WebΞϓϦͬΆ͘ݟ͑ΔྖҬ ΫϥΠΞϯτ HTTP
Slide 8
Slide 8 text
ͱ͍͏͜ͱͰ͢Ͷ • զʑ͕8FCΞϓϦ։ൃͰར༻͍ͯ͠Δ ͞·͟·ͳศརπʔϧ͕ɺ ࣮8FC%SJWFSͰྑ͍ײ͡ʹ͑ͪΌ͏߹͕ ͚ͬ͜͏͋ΔΜ͡Όͳ͍Ͱ͠ΐ͏͔ʂ ʢΈͳ͞ΜҰߟ͑·͢ΑͶʁ ߟ͑·ͤΜ͔ʁʣ • ࠓճ0QFO"1*ͷ࣮Ͱ͋Δ4XBHHFS͕ 8FC%SJWFSʹͱͬͯʹཱͭͷͰʁ ͱߟ͑ͯ υπϘʹ·͍͖ͬͯ·͢ɻ ࠷ޙ·Ͱ͕ΜΓ·͠ΐ͏ɻ
Slide 9
Slide 9 text
0QFO"1* 4XBHHFS ͬͯ ͳΜ͚ͩͬʁ
Slide 10
Slide 10 text
0QFO"1* 4XBHHFS ͬͯͳΜ͚ͩͬʁ • IUUQTXXXPQFOBQJTPSH • 3&45"1*ͷ༷ఆٛΛ :".-+40/Ͱॻ͚ͪΌ͏͕ͭ0QFO"1*Ͱ͢ɻ • 4XBHHFS IUUQTTXBHHFSJP Λϕʔεʹ࡞ΒΕ͍ͯ·͢ɻ • Ͱ͖͕͋ͬͨ0QFO"1*ܗࣜͷ:".-+40/Λ πʔϧʮ4XBHHFS$PEFHFOʯʹ৯Θͤͯɺ "1*ͷελϒαʔόʔΛ ҙͷݴޠɾϑϨʔϜϫʔΫͰ࡞ΕͪΌͬͨΓ͠·͢ʂ • ελϒαʔόʔͷίʔυʹ࣮Λੜͤ υΩϡϝϯτͱಈ࡞ͷҰகͨ͠3&45"1*Λ࡞ΕΔͱ͍͏Θ͚ɻ
Slide 11
Slide 11 text
• BTQOFUDPSF • DTIBSQ • DTIBSQEPUOFU • EZOBNJDIUNM • IUNM • IUNM • KBWB • KBYSTDYGDMJFOU • KBYSTDYG • JOGMFDUPS • KBYSTDYGDEJ • KBYSTTQFD • KBYSTKFSTFZ • KBYSTEJ • KBYSTSFTUFBTZFBQ • KBYSTSFTUFBTZ • TQSJOH • OPEFKTTFSWFS • PQFOBQJ • PQFOBQJZBNM • LPUMJODMJFOU • LPUMJOTFSWFS • QIQ • QZUIPO • TDBMB • TDBMBBLLBIUUQTFSWFS • TXJGU • TXJGU • UZQFTDSJQUBOHVMBS 4XBHHFS $PEFHFO͕ඪ४ରԠ͍ͯ͠ΔϓϥοτϑΥʔϜͷྫ
Slide 12
Slide 12 text
0QFO"1* 4XBHHFS ͬͯͳΜ͚ͩͬʁ • 8FCΤσΟλʔʮ4XBHHFS&EJUPSʯͰ ͙͢ʹࢼͤ·͢ʂ IUUQTFEJUPSTXBHHFSJP
Slide 13
Slide 13 text
ϯοʢ3&45"1*ʁʣ
Slide 14
Slide 14 text
8FC%SJWFS"1*Λ 0QFO"1*ܗࣜͰ දݱͯ͠ΈΑ͏
Slide 15
Slide 15 text
͓લԿΛݴ͍ͬͯΔΜͩ • DISPNFESJWFSHFDLPESJWFSͳͲɺ طଘͷͷΘ͔ΔΞΠπ ϒϥβʔ͝ͱʹҟͳΔίʔυϕʔε͔Βͳ͍ͬͯ·͢ɻ • ԣʹͦΕ·͕͢HFDLPESJWFS3VTUͰॻ͔Ε͍ͯΔɺ͔͍͍ͬ͜ • Կ͔৽͘͠8FC%SJWFSରԠͷΞΠπΛ࡞Ζ͏ͱ͢Δͱ θϩ͔Βελʔτ͠ͳ͚ΕͳΓ·ͤΜɻ • ҰԠ ࠓͰTFMFOJVNBUPNTͱ͍͏ +4͚ͷڞ௨ίʔυϕʔε͕ҡ࣋͞Ε͍ͯΔΑ͏ͳΜͰ͕͢ɺ Έͳ͞ΜΒͳ͍Ͱ͢ΑͶʁ • ҎલͪΐͬͱಡΜͰΈ͚ͨͲ͍ํ͕Α͘Θ͔Μͳ͔ͬͨɻɻɻ
Slide 16
Slide 16 text
͓લԿΛݴ͍ͬͯΔΜͩ • ͷ4FMFOJVN$POG 6,Ͱ "QQJVNϓϩδΣΫτͷ+POBUIBO-JQQT͕ɺ ͍Ζ͍ΖͳϓϥοτϑΥʔϜΛ8FC%SJWFSͰͭͳ͛Δ ʮ4UBS%SJWFS %SJWFS ʯͳΜͯߏʹ৮Ε͍ͯͯ ΊͬͪΌϫΫϫΫͨ͠ͷͰ͢ɻ • ͨͩɺݱঢ়ͷ··ͰϓϥοτϑΥʔϜ͝ͱʹ θϩ͔ΒυϥΠόʔΛ࡞Δ͜ͱʹͳΔͷͰɺ ͪΐͬͱෑډͷߴ͍ʹͳͬͯΔΜ͡Όͳ͍͔ͳʔ ͱࢥ͍·͢ɻ
Slide 17
Slide 17 text
͓લԿΛݴ͍ͬͯΔΜͩ
Slide 18
Slide 18 text
͓લԿΛݴ͍ͬͯΔΜͩ • ͰͿͬͪΌ͚3&45ͬΆ͍"1*ͷ ΤϯυϙΠϯτͷίʔυͳΜͯ ԿͰͲ͏ॻ͍͍͍ͯͩͨಉ͡͡Όͳ͍Ͱ͔͢ɻ ͦ͏͍͏ͷθϩϕʔεͰॻ͘ੈք؍ͬͯ ͩΔ͘ͳ͍Ͱ͔͢ʁ • Կ͔8FC%SJWFS"1*ͷ4DBGGPMEJOHπʔϧ͕͋Ε ෑډ͕͙ͬͱ͘ͳΔΜ͡Όͳ͍ΜͰ͔͢Ͷʔɻ • Ξο 4XBHHFSʂʂ
Slide 19
Slide 19 text
ͱ͍͏Θ͚Ͱ8FC%SJWFS"1*Λ0QFO"1*ܗࣜͰදݱͯ͠ΈΑ͏ • ·ͣɺ8FC%SJWFS"1*Λ0QFO"1*ͷॻࣜʹ ಓʹམͱ͠ࠐΜͰΈ·͠ΐ͏ɻ • 8FC%SJWFS"1*ͷ༷࣍ͷ63-͔ΒࢀরͰ͖·͢ɻ IUUQTXXXXPSH53XFCESJWFS • ༨ஊͰ͕͢ɺ࣍ͷόʔδϣϯʹ͚ͨυϥϑτ൛͕ (JU)VC্Ͱܧଓతʹ࡞ΒΕ͍ͯ·͢ɻ ΈΜͳ͕ҰΉ#"4*$ೝূͱ͔͕ٞਐΜͰ͍·͢ʂ IUUQTXDHJUIVCJPXFCESJWFS
Slide 20
Slide 20 text
͜Ε͕ɺ
Slide 21
Slide 21 text
͜͏͡Όʂ
Slide 22
Slide 22 text
Ͷͬɺ͔ΜͨΜͰ͠ΐʁ • ද͔Βࣗಈมͯ͠ಓʹॻ͖ͨ͠Βɺ ࠷ݶͷهड़͚ͩͰ ߦ͘Β͍ͷ:".-ʹͳͬͨɻɻɻ • SFG ߏจΛ͏ͱɺׂͨ͠ϑΝΠϧΛࢀরͨ͠Γ ಉ͡هड़Λίϐϖͤͣʹ࠶ར༻ͨ͠ΓͰ͖·͢ɻ • ͕ΜΓ·͠ΐ͏ɻ
Slide 23
Slide 23 text
4XBHHFS$PEFHFOͰ 8FC%SJWFS"1*ελϒΛ࡞Ζ͏
Slide 24
Slide 24 text
4XBHHFSͷπʔϧ܈ • 0QFO"1*ܗࣜͷ3&45"1*༷ॻΛ࡞Δ͏͑Ͱͷ Φʔϓϯιʔεͷࢧԉπʔϧͱͯ͠ɺ 4NBSU#FBS͕ࣾ։ൃΛओಋ͍ͯ͠Δͷ͕ͭ͋Γ·͢ɻ • 4XBHHFS&EJUPS • ϒϥβʔϕʔεͷ0QFO"1*ΤσΟλʔͰ͢ɻ • 4XBHHFS 6* • 0QFO"1*ܗࣜͷσʔλΛ "1*༷ॻͷ)5.-ʹϨϯμϦϯά͢ΔπʔϧͰ͢ɻ • 4XBHHFS$PEFHFO • 0QFO"1*ܗࣜͷσʔλ͔Βɺ༷ʑͳϓϥοτϑΥʔϜͷ ΫϥΠΞϯτ ·ͨαʔόʔ࣮ͷίʔυΛ ࣗಈੜ͢ΔπʔϧͰ͢ɻ
Slide 25
Slide 25 text
4XBHHFS$PEFHFOΛͬͯΈΑ͏ʢ/PEF+4ʣ • 4XBHHFS$PEFHFOΛΠϯετʔϧ͠·͠ΐ͏ɻ • ˞ࠓճNBD04Ͱͷ͔͠͠·ͤΜɻ͝ΊΜͳ͍͞ɻ • ࣍ʹɺ࡞ࡁΈͷ0QFO"1*ܗࣜͷϑΝΠϧ͔Β αʔόʔελϒΛࣗಈੜ͠·͠ΐ͏ɻ ࠓճ/PEF+4Ͱੜ͠·͢ɻ $ brew install swagger-codegen $ swagger-codegen generate -i [࡞ͨ͠0QFO"1*ܗࣜͷϑΝΠϧ] -l nodejs-server -o [ࣗಈੜίʔυͷग़ྗઌσΟϨΫτϦʔ]
Slide 26
Slide 26 text
4XBHHFS$PEFHFOΛͬͯΈΑ͏ʢ/PEF+4ʣ • Կ͔ग़͖ͯͨʂ • ϑϨʔϜϫʔΫʮ$POOFDUʯ͕ϕʔεͱͳ͍ͬͯ·͢ɻ IUUQTHJUIVCDPNTFODIBMBCTDPOOFDU
Slide 27
Slide 27 text
4XBHHFS$PEFHFOΛͬͯΈΑ͏ʢ/PEF+4ʣ • ੜ͞Εͨ3&"%.&NEͷهड़ʹ͕ͨͬͯ͠ɺ ґଘύοέʔδΛΠϯετʔϧͯ͠ αʔόʔΛಈ͔ͯ͠Έ·͠ΐ͏ɻ • Ϩεϙϯεσʔλͷྫ·Ͱ:".-ʹॻ͍͓ͯ͘ͱ ྫͦͷ··ͷ+40/͕ฦΔͱ͜Ζ·Ͱੜ͞Ε·͢ɻ • ҰԠɺ8$קࠂͷͱ͓Γͷ ΤϯυϙΠϯτʹΞΫηεͰ͖ΔΑ͏ʹͳΓ·ͨ͠Αʂ $ npm start $ curl -X POST "http://localhost:8080/session" -H "accept: application/json” -H ”Content-Type: application/json”
Slide 28
Slide 28 text
4XBHHFS$PEFHFOΛͬͯΈΑ͏ʢ/PEF+4ʣ • αʔόʔͷಈ࡞ςετʹɺόϯυϧ͞Ε͍ͯΔ 4XBHHFS6*ͷը໘্ͷΫϥΠΞϯτػೳ͑·͢ɻ • σϑΥϧτͰ IUUQMPDBMIPTUEPDT ʹ ΞΫηεͯ֬͠ೝͰ͖·͢ɻ
Slide 29
Slide 29 text
8FC%SJWFS"1*ελϒΛͬͯ ࣗͳΓͷ%SJWFSΛ ࡞ͬͯΈΑ͏
Slide 30
Slide 30 text
ࣗͳΓͷ%SJWFSΛ࡞ͬͯΈΑ͏ • 4FMFOJVNίϛολʔͷ ެࣜαϙʔτൣғʹؚ·Ε͍ͯͳ͍ ϒϥβʔॲཧܥ͍Ζ͍Ζ͋Γ·͢ɻ • ن֨४ڌͷϒϥβʔυϥΠόʔΛ ͱΓ͋͑ͣࣗ࡞Ͱ͖ΔͱͳΕɺ ެࣜʹαϙʔτ͞Ε͍ͯͳ͍χονͳྖҬʹ 8FC%SJWFSΛద༻͘͢͠ͳΓ·͢ΑͶʂ
Slide 31
Slide 31 text
+4%0.%SJWFSΛ࡞ͬͯΈΑ͏ • ࠓճχονͳ࣮ྫͱͯ͠ɺ /PEF+4Ͱ͚ͩ͑Δߴͳ%0.ύʔαʔ ʮ+4%0.ʯΛΈࠐΜͩϔουϨευϥΠόʔΛ ઌ΄Ͳੜͨ͠/PEF+4αʔόʔͷίʔυΛར༻ͯ͠ Ұ෦ ࣮ͯ͠Έ·͢ɻ • ͳ͓ɺ+4%0.ʹ8FC%SJWFS"1*Λ͚࣮ͬͭͨ͘ طʹʮUBYJSBOLʯͱ͍͏ͷ͕͋Γ·͢ɻ IUUQTHJUIVCDPN'PSCFT-JOEFTBZUBYJSBOL
Slide 32
Slide 32 text
+4%0.%SJWFSΛ࡞ͬͯΈΑ͏ • ࣮͢Δ"1*࣍ͷͭͱ͠·͢ɻ • 1045TFTTJPO • 8FC%SJWFSͷηογϣϯΛ։࢝͠·͢ɻ • 1045TFTTJPO\4&44*0/@*%^VSM • 1045σʔλͰࢦఆͨ͠63-ʹભҠ͠·͢ɻ • 1045 TFTTJPO\4&44*0/@*%^FMFNFOU • ը໘ભҠ͢Δ·Ͱ༗ޮͳɺҰ࣌తͳཁૉ*%Λऔಘ͠·͢ɻ • 1045 TFTTJPO\4&44*0/@*%^FMFNFOU\&-&.&/5@*%^DMJDL • ը໘ભҠ͢Δ·Ͱ༗ޮͳ*%ΛऔಘࡁΈͷཁૉΛΫϦοΫ͠·͢ɻ • %&-&5&TFTTJPO\4&44*0/@*%^ • 8FC%SJWFSͷηογϣϯΛऴྃ͠·͢ɻ
Slide 33
Slide 33 text
/PEF+4ͷ߹ɺ͍͡Δίʔυ͜Ε͚ͩ • ࠷ݶ \130+&$5@3005^TFSWJDFԼͷ࣮Λ ͍͡ΕܗʹͳΓ·͢ɻ
Slide 34
Slide 34 text
ࣗಈੜ͞Εͨελϒʹ࣮Λੜͦ͏ • ࣗಈੜ͞ΕͨίʔυɺͲΕ࣍ͷΑ͏ʹ αϯϓϧσʔλΛฦ͚ͩ͢ʹͳ͍ͬͯ·͢ɻ ͜Εʹ͔ΜͨΜʹ࣮Λੜ͍͖ͯ͠·͢ɻ
Slide 35
Slide 35 text
1045TFTTJPO • \130+&$5@3005^TFSWJDF4FTTJPO4FSWJDFKT
Slide 36
Slide 36 text
1045TFTTJPO\4&44*0/@*%^VSM • \130+&$5@3005^TFSWJDF/BWJHBUJPO4FSWJDFKT
Slide 37
Slide 37 text
1045TFTTJPO\4&44*0/@*%^FMFNFOU • \130+&$5@3005^TFSWJDF&MFNFOU3FUSJFWBM4FSWJDFKT
Slide 38
Slide 38 text
1045TFTTJPO\4&44*0/@*%^FMFNFOU\&-&.&/5@*%^DMJDL • \130+&$5@3005^TFSWJDF&MFNFOU*OUFSBDUJPO4FSWJDFKT
Slide 39
Slide 39 text
%&-&5&TFTTJPO\4&44*0/@*%^ • \130+&$5@3005^TFSWJDF4FTTJPO4FSWJDFKT
Slide 40
Slide 40 text
Ͷͬɺ͔ΜͨΜͰ͠ΐʁ • Α͘Θ͔͍ͬͯͳ͍ͷͰ͕͢ɺ )PNFCSFXͰೖΔ࠷৽ͷ4XBHHFS$PEFHFO͕ు͘ /PEF+4αʔόʔͷίʔυʹෆ۩߹͕͋Δ͔ɻɻɻ • ࠓճͷಈ࡞֬ೝͰɺ FEJUPSTXBHHFSJP ͔Βग़ྗͰ͖Δ /PEF+4αʔόʔͷίʔυΛར༻͠·ͨ͠ɻ • ͜ͷ֬ೝ͚ͩͰมʹ࣌ؒΛͬͯ͠·͍·ͨ͠ɻɻɻ • 0QFO"1* WରԠͷग़ྗܗ͕ࣜগͳ͍͜ͱ͋Γɺ ۙͰ4XBHHFSWܗࣜͰॻ͍ͨํ͕Α͛͞Ͱͨ͠ɻ • ͕ɺ͕ΜΓ·͠ΐ͏ʂʂ
Slide 41
Slide 41 text
͕࣌ؒ͋Ε Ζ͏ͱࢥͬͯͨ͜ͱ
Slide 42
Slide 42 text
͕࣌ؒ͋ΕΖ͏ͱࢥ͍ͬͯ·ͨ͠ ϒϥβʔ REST API ʢϓϩΩγʣ WebΞϓϦͬΆ͘ݟ͑ΔྖҬ ΫϥΠΞϯτ HTTP
Slide 43
Slide 43 text
͕࣌ؒ͋ΕΖ͏ͱࢥ͍ͬͯ·ͨ͠ REST API ʢϓϩΩγʣ WebΞϓϦͬΆ͘ݟ͑ΔྖҬ ΫϥΠΞϯτ HTTP
Slide 44
Slide 44 text
ΠοψυϥΠόʔ
Slide 45
Slide 45 text
ΠοψυϥΠόʔ • ࠷ऴతʹελʔΛυϥΠϒ͢Δͱͯ͠ɺ ·ͣ ͳ·ͷ ΛυϥΠϒͰ͖ͳ͖ΌͩΊͩΖ͏ɺͱ ͏ͪͷݘʢ;͏ͪΌΜ ࡀʣͷ8FC%SJWFSରԠΛ ·͡Ίʹݕ౼ͯ͠Έ·ͨ͠ɻ • શʹͲ͏͔͍ͯ͠Δɻ • 0QFO"1*σʔλ͔Βग़ྗͨ͠ 1ZUIPO༻ͷ3&45"1*ϑϨʔϜϫʔΫʮ'MBTLʯϕʔεͷ αʔόʔελϒΛ3BTQCFSSZ1J;FSP8ʹͤͯ (1*0ܦ༝ͰαʔϘΛಈ͔͢ͳͲͷ࣮Λੜ͢͜ͱͰɺ 8FC%SJWFS"1*ܦ༝Ͱݱ࣮ੈքͷ͍͵Λૢ࡞͢Δ͘͠ΈΛ ߟ͍͑ͯ·͕ͨ͠४උظ͕ؒΓ·ͤΜͰͨ͠ɻɻɻ • ͦͷ͏ͪ2JJUBʹॻ͖·͢ɻ
Slide 46
Slide 46 text
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ