Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloud Next '19 Tokyo Summary
Search
2kyym
August 29, 2019
Programming
0
74
Cloud Next '19 Tokyo Summary
社内で発表した Cloud Next '19 Tokyo の参加報告資料です。自分が聴講したセッションの中から ML, MLOps に関連するものをピックアップしました。
2kyym
August 29, 2019
Tweet
Share
More Decks by 2kyym
See All by 2kyym
Cloud Composerで組む機械学習パイプライン
2kyym
0
1.6k
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
2kyym
0
280
MOVの機械学習システムを支えるMLOps実践
2kyym
1
220
Other Decks in Programming
See All in Programming
return文におけるstd::moveについて
onihusube
1
1.2k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
170
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
命名をリントする
chiroruxx
1
420
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
720
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
550
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
830
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
140
Go の GC の不得意な部分を克服したい
taiyow
3
800
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
2
110
バグを見つけた?それAppleに直してもらおう!
uetyo
0
180
たのしいparse.y
ydah
3
120
Featured
See All Featured
Making Projects Easy
brettharned
116
5.9k
Writing Fast Ruby
sferik
628
61k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Site-Speed That Sticks
csswizardry
2
190
Scaling GitHub
holman
458
140k
The Language of Interfaces
destraynor
154
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Transcript
(PPHMF$MPVE/FYU`5PLZPࢀՃใࠂ "*.- !"*ٕज़ڞ༗ձ ஙࢁকԝ "*ຊ෦"*γεςϜ෦.-ΤϯδχΞϦϯάୈҰάϧʔϓ גࣜձࣾσΟʔɾΤψɾΤʔ
͡Ίʹ ͜Μͳײ͡ʹͳͬͯΔͱ͜ΖϦϯΫͰ͢ ʢҎޙʣ
$MPVE/FYU`5PLZP֓ཁ
$MPVE/FYU`5PLZP֓ཁ Πϕϯτ֓ཁ w (PPHMF$MPVE1MBUGPSNؔ࿈ͷ৽ϦϦʔεɺاۀͰͷ׆༻ࣄྫͳͲͷൃද w ձɿ౦ژϓϦϯεϗςϧβɾϓϦϯεύʔΫλϫʔ౦ژ w ࠓͷࢀՃऀ ਓ
w ίϯςϯπ w جௐߨԋͱηογϣϯʢϝΠϯʣ w ($1ͷػೳ֤اۀͷσϞ͕లࣔ͞Ε͍ͯΔ&YQP w "TLUIF4QFBLFS w /FYUJO5PLZP/JHIUʢύʔςΟʣ IUUQTDMPVEXJUIHPPHMFDPNOFYUUPLZP
$MPVE/FYU`5PLZP֓ཁ %F/"͔Βͷొஃ w ೆ͞Μ w جௐߨԋ w ۀ࣌ͷ͔ΒΦϯϓϨˠΫϥυҠߦͷ͍͖ͭ͞·Ͱ w
य़͞Μ w $MPVE"*1MBUGPSNʹ͓͚ΔػցֶशϞσϧͷϥΠϑαΠΫϧ w JLLJ͞Μ w ʰٯసΦηϩχΞʱͷ"*ػೳΛࢧ͑Δ($1 w ؠඌ͞ΜʢήʔϜࣄۀ෦ੳ෦ʣ w #JH2VFSZΛ͍ͤʂ%F/"σʔλΤϯδχΞͷऔΓΈࣄྫ
None
None
None
None
$MPVE/FYU`5PLZP֓ཁհ͢Δηογϣϯ ΧελϜϞσϧΛॊೈɾߴɾ҆Ձʹ࡞͢ΔͨΊͷαʔϏε $MPVE"*1MBUGPSNηογϣϯ #2ͷ5JQTͱ%F/"ʹ͓͚Δ#2׆༻ࣄྫ #JH2VFSZϕετϓϥΫςΟε (PPHMFۘͷσΟʔϓϥʔχϯάಛԽϋʔυΣΞ $MPVE516ηογϣϯ (,&$PNQPTFSΛ׆༻ͨ͠ػցֶशγεςϜͷߏங ;0;0Ͱͷ.-0QT࣮ફͱ(,&ΠϯϑϥΞʔΩςΫνϟ
#JH2VFSZ ϕετϓϥΫςΟε
#JH2VFSZϕετϓϥΫςΟε ৽ػೳɿӬଓ6%'ʢЋ൛ˠЌ൛ʣ w 6%'6TFS%FpOFE'VODUJPO w +40/ύʔεॲཧͳͲͷॲཧΛ+BWB4DSJQUͰهड़Ͱ͖Δ w ͜Ε·Ͱ6%'Ұ࣌తͳͷͰɺ༻͍Δ42-Ͱఆٛ͢Δඞཁ͕͋ͬͨ w
Ӭଓ6%'ʹΑͬͯ༧Ίఆ͓͍͍ٛͯͯͭ͠Ͱݺͼग़ͤΔΑ͏ʹ w Ұ࣌6%'ͱൺֱͯ͠ύϑΥʔϚϯε্
#JH2VFSZϕετϓϥΫςΟε ৽ػೳɿӬଓ6%'ʢЋ൛ˠЌ൛ʣ
#JH2VFSZϕετϓϥΫςΟε ৽ػೳɿ$POOFDUFE4IFFUTʢЋ൛ʣ w #2্ͷςʔϒϧΛγʔϜϨεʹ(44ͰՄࢹԽɾੳͰ͖Δ w 4QSFBE4IFFUT%BUB$POOFDUPSͱҧ͍ɺ42-Λॻ͘ඞཁ͢Βͳ͍ w ੳऀʹͱͬͯخ͍͔͠ʁ w
5#ͷେ༰ྔςʔϒϧͰͳ͘ಡΈࠐΊΔΒ͍͠
IUUQTTUPSBHFHPPHMFBQJTDPNHXFCDMPVECMPHQVCMJTIPSJHJOBM@JNBHFT#JH2VFSZ@TQSFBETIFFU@JOUFSGBDFHJG
#JH2VFSZϕετϓϥΫςΟε ($4͔ΒಡΈࠐΉࡍͷσʔλϑΥʔϚοτ w ϩʔυ͕͍ॱʹ w "WSPʢѹॖʣ w "WSP w
1BSRVFU03$ w $47 w +40/ w $47ʢѹॖʣ w +40/ʢѹॖʣ w "WSPʹม͢Δׂ͔ϑΝΠϧΛಡΈࠐΉͱ͍
#JH2VFSZϕετϓϥΫςΟε ׂςʔϒϧɾΫϥελԽςʔϒϧ w ςʔϒϧͷඞཁͳ෦ͷΈরձͯ͠ίετΛݮ w UJNFTUBNQྻΛׂΧϥϜʹࢦఆͰ͖Δ w େنͳϑΝΫτςʔϒϧʹl3FRVJSF1BSUJUJPO'JMUFSzΦϓγϣϯΛ w
ΫϥελԽςʔϒϧ w ׂࡁΈͷςʔϒϧʹର͠ɺΫϥελྻΛࢦఆͯ͠͞Βʹίετݮ w ಡΈࠐΈύϑΥʔϚϯεվળ
#JH2VFSZϕετϓϥΫςΟε εϩοτͱ͍͏֓೦ w εέδϡʔϦϯάͷ୯Ґ w ϦιʔεαΠζʢԋࢉೳྗʣʹରԠ w σϑΥϧτׂϓϩδΣΫτʹ͖ͭεϩοτ w
ϓϩδΣΫτɾϓϩδΣΫτؒͰϑΣΞεέδϡʔϦϯά w ݄ఆֹΦϓγϣϯͩͱεϩοτΛࣗ༝ʹׂՄೳ
#JH2VFSZϕετϓϥΫςΟε %F/"ʹ͓͚ΔήʔϜੳࣄྫ w ՝ w ࣮ߦ͞ΕͨΫΤϦ͕࠷దͰͳ͍ w ҰൃͰ5#ʢສԁʣͷΫΤϦ͕ඈΜͩ͜ͱ w
ঃʑʹίετ͕͔͞ΜͰ͍ͨ w ϲ݄͝ͱʹສԁ݄૿Ճ w ҎԼͷվળʹΑͬͯͷίετݮʂ w 4UBDLESJWFSʹΑΔڊେΫΤϦͷϞχλϦϯάͱ௨ w ΫϥελԽςʔϒϧͷಋೖ
$MPVE"*1MBUGPSN
$MPVE"*1MBUGPSN ػցֶशͷFFαΠΫϧ IUUQTDMPVEHPPHMFDPNBJQMBUGPSN IMKB
$MPVE"*1MBUGPSN "*)VCʢЌ൛ʣ w ػցֶशΞηοτͷΧλϩά w ҰݴͰݴ͏ͱɿ%PDLFS)VCͷػցֶशϞσϧ൛ w ΧελϜϞσϧΛ($1ʹϫϯΫϦοΫσϓϩΠ w
ެ։ൣғݶఆ؆୯ w (PPHMFϢʔβάϧʔϓ୯ҐͰઃఆՄೳ IUUQTDMPVEHPPHMFDPNBJIVC
$MPVE"*1MBUGPSN "*)VCʢЌ൛ʣ w ػցֶशΞηοτͷΧλϩά w ҰݴͰݴ͏ͱɿ%PDLFS)VCͷػցֶशϞσϧ൛ w ΧελϜϞσϧΛ($1ʹϫϯΫϦοΫσϓϩΠ w
ެ։ൣғݶఆ؆୯ w (PPHMFϢʔβάϧʔϓ୯ҐͰઃఆՄೳ
$MPVE"*1MBUGPSN "*)VCͷ͍ํ w 5FOTPS'MPX.PEVMFͰ͋Ε w /PUFCPPLͰ͋Ε w "*1MBUGPSN/PUFCPPLʢޙड़ʣͱϫϯΫϦοΫ࿈ܞ
$MPVE"*1MBUGPSN "*1MBUGPSN/PUFCPPLTʢЌ൛ʣ w Ϛωʔδυ+VQZUFS-BCΠϯελϯε w ΦϯσϚϯυʹߏมߋͰ͖ΔܭࢉػϦιʔε w Πϯελϯεىಈޙʹ(16૿ઃͳͲ w
ඞཁͳϥΠϒϥϦ͕ϓϦΠϯετʔϧ w "*)VC #JH2VFSZͳͲ($1ίϯϙʔωϯτͱີͳ࿈ܞ IUUQTDMPVEHPPHMFDPNBJQMBUGPSNOPUFCPPLT
$MPVE"*1MBUGPSN w ,VCF'MPX'BJSJOHʹΑΔ֎෦ϦιʔεͰͷ࣮ݧ w Ϟσϧֶश༻ͷΫϥεؔΛίϯςφԽ͠ɺ($1্Ͱ࣮ݧͰ͖Δ w %FFQ-FBSOJOH7.*NBHFΛ༻͍ͯ؆୯ʹ/PUFCPPL্͔ΒճͤΔ "*1MBUGPSN/PUFCPPLTʢЌ൛ʣ
IUUQTBEUFDIDZCFSBHFOUJPQSBSDIJWFT
$MPVE"*1MBUGPSN "*1MBUGPSN5SBJOJOHʢچ$MPVE.-&OHJOFʣ w ಛ w ΞΠυϧঢ়ଶͷΠϯελϯεແ՝ۚ w ϋΠύϥνϡʔχϯάͷࣗಈԽɾฒྻֶश w
ΧελϜίϯςφαϙʔτʢЌ൛ʣʹΑΓҙͷϑϨʔϜϫʔΫ͕Մೳʹ w ಈ࡞Πϝʔδ w ػցֶशίʔυͷύοέʔδͱઃఆϑΝΠϧΛ༻ҙ w δϣϒΛ͛ΔͱɺֶशΛ࣮ߦ͢ΔΫϥελ͕ࣗಈͰཱͯΒΕΔ
$MPVE"*1MBUGPSN 1ZUIPO͔Βֶशδϣϒͷ࣮ߦ
$MPVE516
$MPVE516 $MPVE516֓ཁ w جຊతʹ5FOTPSqPXઐ༻ϓϩηοα w %PNBJO4QFDJpD"SDIJUFDUVSFʢ%4"ʣ w ྖҬ͝ͱʹϋʔυͱιϑτΛ࠷దઃܭ w
516։ൃͷྺ࢙ w ॳظݕ౼ w ࣮։ൃ։࢝ w 516Wͷಋೖ։࢝ʢ։ൃ։͔࢝Βϲ݄ޙʣ
$MPVE516 w $16ͱͷҧ͍ w (16ͰϊΠϚϯϘτϧωοΫ͋Δ w ڞ༗ϝϞϦʹ͕ࠩ࣌ؒ͢͠ϘτϧωοΫ w 516ͰϢχοτಉ͕࢜ύΠϓϥΠϯͰܨ͕͓ͬͯΓɺϝϞϦಡΈॻ͖ͷ
ϘτϧωοΫ͕ͳ͍ w Ͳ͏ͳ͔ͬͨ w طଘ$16ͱൺֱ͠ిྗੑೳൺഒ $MPVE516֓ཁ IUUQTDMPVEHPPHMFDPNUQV
$MPVE516 ;0;0ը૾ݕࡧͰͷ׆༻ࣄྫ w 516ಋೖલͷ՝ w ($1ͷ5FTMB7ΠϯελϯεͰֶश w ࣮ݧαΠΫϧ w
Ͱ64%Ͱ 64% w ͜ͷ࣌ͰΦϯϓϨΑΓ͍҆ w ࣮ݧʹ͚͜Δͱिؒਐ͕ͳ͍͜ͱʜʜ w ݟ͕ஷ·Δͷ͕͍ˍ։ൃऀͷϞνϕʔγϣϯԼ
$MPVE516 ;0;0ը૾ݕࡧͰͷ׆༻ࣄྫ w 516ಋೖޙͲ͏ͳ͔ͬͨ w ࣌ؒ͋ͨΓͷॲཧ͕ສϖΞສϖΞ w ࣮ݧαΠΫϧ࣌ؒ w
όοναΠζ w ஈʁ w ௨ৗͷ516ͳΒഒͷίετ w 1SFFNQUJWFͳΒ௨ৗ(16ΑΓ͍҆ w 1SFFNQUJWFͷσϝϦοτӡ༻ͰΧόʔ
$MPVE516 5161PETͱ w 516Λܨ͍ͩεύίϯ w 516 1FUB'-014 w 7ͱൺֱͯ͠ഒߴͰɺίετݮ
w ߴ͍εέʔϥϏϦςΟ w 516Ͱ࣌ؒͷ࣮ݧ͕516Ͱʹ w ΄΅ઢܗʹεέʔϧ w ௨ৗͷ516ͷίʔυ͔Βมߋඞཁͳ͠ w ͨͩ͠1SFFNQUJWF·ͩఏڙ͞Ε͍ͯͳ͍ IUUQTDMPVEHPPHMFDPNUQV
;0;0ը૾ݕࡧͰͷ.-0QTͱ (,&ΠϯϑϥΞʔΩςΫνϟ
;0;0ը૾ݕࡧͷιϑτΣΞελοΫ w αʔόαΠυ w 1ZUIPO'MBTL(VOJDPSO4XBHHFSH31$ w .-ϑϨʔϜϫʔΫɿ$IBJOFS w Πϯϑϥ
w ਪ"1*ɿ(,& 3FEJT w ֶशɿ$MPVE$PNQPTFS (-& 'JMFTUPSF w $MPVE-PBE#BMBODFS$MPVE"SNPS w ($4($3ͳͲͳͲʜ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
ϓϩμΫγϣϯϨϕϧʹ͢ΔͨΊʹߦͬͨ w μϯλΠϜͳ͠ͰͷσϓϩΠ w 3PMMJOH6QEBUF w -JWFOFTT1SPCF w 3FBEJOFTT1SPCF
w (SBDFGVM4IVUEPXO w ΦʔτεέʔϦϯά w %/4Ωϟογϡ w H31$ͷෛՙࢄ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
μϯλΠϜͳ͠ͰͷσϓϩΠ w 3PMMJOH6QEBUF w 1PEΛগͣͭ͠৽ͨʹ্ཱͪ͛ͯམͱ͍ͯ͘͠ w ύϥϝʔλ w NBY4VSHFɿڐ༰ա1PE
w NBY6OBWBJMBCMFɿڐ༰ෆ1PE w 3FBEJOFTT1SPCF w ϔϧενΣοΫ w 1PE্ͷΞϓϦ͕ϦΫΤετΛࡹ͚Δঢ়ଶ͔Ͳ͏͔νΣοΫ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
μϯλΠϜͳ͠ͰͷσϓϩΠ w -JWFOFTT1SPCF w ίϯςφͷੜ·ΕมΘΓΛίϯτϩʔϧ w 1SPCFࣦഊ͢Δͱίϯςφ࠶ىಈ w (SBDFGVM4IVUEPXO
w ϦΫΤετΛฦ͢લʹ1PE͕ࢮͳͳ͍Α͏ʹ͢Δ w ͜ΕҎ্ϦΫΤετΛड͚͚ͳ͍Α͏ʹ͠ɺશͯͷϦΫΤετΛ ॲཧ͔ͯ͠Βਖ਼ৗʹऴྃ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
ΦʔτεέʔϦϯάͱ%/4Ωϟογϡ w )PSJ[POUBM1PE"VUPTDBMFSʢ)1"ʣ w ෛՙ͕ᮢΛ͑ͨ߹ʹ1PEΛΦʔτεέʔϧ w ͦΕͱಉ࣌ʹ/PEFΦʔτεέʔϧ w ,VCF%/4ύέοτϩε
w %/46%1ͳͷͰύέοτϩε͕ى͖͍͢ w ͦͷͬͭ͞Μͷఆରॲ w 1ZUIPOΫϥΠΞϯτଆͰʢ55-ʣඵΩϟογϡ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
$PNQPTFSΛར༻ͨ͠ϫʔΫϑϩʔ w $MPVE$PNQPTFSͱ w "QBDIF"JSqPXͷϚωʔδυαʔϏε w ಛ w 1ZUIPOͰॻ͚Δ
w (,&Ͱδϣϒ࣮ߦ w ("&Ͱ"JSqPX6*ఏڙ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
;0;0ը૾ݕࡧͷϫʔΫϑϩʔ w "//*OEFYͷ࠶ߏங w ৽ͨʹग़͞Εͨը૾Λू͠ө w ߋ৽සɿ࣌ʢ͍ͣΕΠϕϯτۦಈʹ͍ͨ͠ʣ w ྲྀΕ
#2ςʔϒϧͷόοΫΞοϓ ը૾μϯϩʔυ ಛྔநग़"//*OEFY࠶ߏங σϓϩΠ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ IUUQTDMPVEHPPHMFDPNTPMVUJPOTBVUPNBUJOHJOGSBTUSVDUVSFVTJOHDMPVE DPNQPTFS IMKB
$PNQPTFSΛͬͨײ w ར w ϚωʔδυͰ͋Δ w 1ZUIPOͰ%"(ʢ༗ඇ८ճάϥϑʣΛॻ͚Δ w ܽ
w ࠷ͰΠϯελϯεඞཁ w ࣗ༝͕͍ʢ(16͑ͳ͍ɺ෦ϏϧυͰ͖ͳ͍ʣ w ΦʔτεέʔϧະରԠ w ผ్(,&ΛཱͯͯରԠ͢Δඞཁ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
ൿಗใͷ҉߸Խ w LTͷγʔΫϨοτͷ༷ w CBTFΤϯίʔυͯ͠:".-ʹهड़͢Δ͚ͩ w γʔΫϨοτͱ w #FSHMBTͷಋೖ
w "844FDSFUT.BOBHFSͷΑ͏ͳൿಗใཧαʔϏε w ($1ͷ,FZ.BOBHFNFOU4FSWJDFΛར༻ͯ͠ΫϥΠΞϯτଆͰ҉߸͠ɺ ($4ʹอଘ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ IUUQTNFEJVNDPNXFBSFTFSWJBOCFSHMBTXJUIOPEFKTPODMPVESVOEDFDGBBB
$*$%ͱࢹ w $JSDMF$*ͷར༻ w ίϯςφΠϝʔδͷϏϧυ w ίϯςφʹϞσϧΛೖΕΔ͔ w ॳೖΕ͍͕ͯͨɺϏϧυʹ͔͔࣌ؒΓͭΒ͍
w ίϯςφʹೖΕͣɺίϯςφىಈ࣌ʹ($4͔Βμϯϩʔυ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
$*$%ͱࢹ w Ϋϥυ࣌ͷࢹ w $16༻Φʔτεέʔϧ͢ΔͷͰࢹ͠ͳ͍ w γεςϜͷ݈߁ঢ়ଶΛݟΔ w ࢹ߲
w ϨεϙϯεεςʔλεͱϨεϙϯε࣌ؒ w ϦΫΤετ w LTͳΒͰͷͷ w LT1PE8BSOJOH-PH͕Ҏ্ଓ͚ͯग़͍ͯͳ͍͔ w ίϯςφͷϝϞϦ༻ྔ͕-JNJUͷΛ͍͑ͯͳ͍͔ ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
$*$%ͱࢹ w ࢹιϑτΣΞ w 4UBDLESJWFS %BUBEPH 4FOUSZ w 4UBDLESJWFS($1ඪ४ͳͷͰศར
w %BUBEPHͷಛʹศརͳػೳ͚ͩ༻͍͍ͯΔ w "1. 4ZOUIFUJDTͳͲ w 4FOUSZɿΤϥʔτϥοΩϯάαʔϏε ;0;0ը૾ݕࡧͰͷ.-0QTͱ(,&ΠϯϑϥΞʔΩςΫνϟ
·ͱΊ
·ͱΊ ײ w "*ܥͷେ͖ͳ৽ϦϦʔεͳ͠ w ͜Ε݄ͷ$MPVE/FYUJO4'ͱಉ༷ w "OUIPTͱ͍͏ϋΠϒϦουΫϥυ͚αʔϏεΛਪ͍ͯͨ͠ w
͔͠͠ɺ"*1MBUGPSNϦϦʔεࡁαʔϏεͷػೳ֦ுॱௐʹਐΜͰ͍Δ w #JH2VFSZ.-"VUP.-ʹ͍ͭͯӹࢠ͞ΜεϥΠυࢀর w IUUQTTQFBLFSEFDLDPNTPZNTLHPPHMFDMPVEOFYUBJNMTVNNBSZQVCMJD