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
81
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.7k
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
2kyym
0
330
MOVの機械学習システムを支えるMLOps実践
2kyym
1
270
Other Decks in Programming
See All in Programming
三者三様 宣言的UI
kkagurazaka
0
280
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
830
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
200
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
4
960
CSC509 Lecture 07
javiergs
PRO
0
250
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
5
290
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
34k
オンデバイスAIとXcode
ryodeveloper
0
270
AI Agent 時代的開發者生存指南
eddie
4
2.2k
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
330
モテるデスク環境
mozumasu
3
1.4k
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
Featured
See All Featured
Music & Morning Musume
bryan
46
6.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Rails Girls Zürich Keynote
gr2m
95
14k
Automating Front-end Workflow
addyosmani
1371
200k
Writing Fast Ruby
sferik
630
62k
Thoughts on Productivity
jonyablonski
71
4.9k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Code Reviewing Like a Champion
maltzj
526
40k
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