Slide 1

Slide 1 text

3FTFBSDI"OE%FWFMPQNFOU
 PGl%FMJSz 
 !@SBHH@

Slide 2

Slide 2 text

l%FWFMPQNFOUz

Slide 3

Slide 3 text

%FMJSͱ͸ w +BWB4DSJQU੡ͷ7'9ج൫ɾΞϓϦέʔγϣϯ
 ಡΈ͸zσϦʔϧz w 8FCٕज़ͱϓϥάΠϯۦಈ
 ʢඪ४ػೳ΋Ͱ͖Δ͚ͩϓϥάΠϯͰ࣮૷͢ΔϓϥάΠϯओ࣮ٛ૷ʣ w "GUFS&⒎FDUTͷύΫΓʢύΫΕͳ͍ʣ

Slide 4

Slide 4 text

Ϟνϕʔγϣϯ w "GUFS&⒎FDUT
 ˠΊͬͪΌΑ͍
 ɹɾλΠϙάϥϑΟΊͬͪΌѻ͍΍͍͢
 ɹɾඪ४ϓϥάΠϯॆ࣮ͯ͠Δ
 ɹɾ%ͱ͔Χϝϥͱ͔౰ͨΓલʹ࢖͑Δ
 ˠ͔͠͠ʜ
 ɹɾϨϯμϦϯά͕ͳΜ͔ͩͱͬͯ΋ॏ͍
 ɹɾΤΫεϓϨογϣϯͱKTY͘Β͍͔͠εΫϦϓςΟϯά͕ग़དྷͳ͍
 ɹɾϐΫηϧΛ৮Ζ͏ͱ͢Δͱ͍͖ͳΓಥ͖͚ͭΒΕΔ
 ɹɹෳࡶͳߏ଄ͱӳޠϦϑΝϨϯεͱ$

Slide 5

Slide 5 text

Ϟνϕʔγϣϯ w "WJ6UM
 ˠϑϦʔ΢ΣΞͰجຊతͳػೳ͸ἧͬͯΔ
 ˠίϛϡχςΟ͕ڧ͍
 ɹɾෳࡶͳϓϥάΠϯ͕ΊͬͪΌެ։͞ΕͯΔ
 ɹɾ--ݴޠʢ-VBʣΛ࠾༻͍ͯ͠ΔͷͰ৮Γ΍͍͢
 ˠ͔͠͠ʜ
 ɾ࣮ߦ؀ڥ͕8JOEPXTͷΈʜ 㱯✱A㱯 NBDʜ
 ɾ։ൃ͕ఀ଺͍ͯ͠Δʢ࠷ऴߋ৽͕೥ɻ௕ظ։ൃ͓ർΕ༷Ͱ͢ʜʣ

Slide 6

Slide 6 text

rϫΠ8FCΤϯδχΞ ࠓͳΒ8FCٕज़Ͱ"&͸ແཧͰ΋
 "WJ6UM͘Β͍·Ͱ͸ΠέΔΜ͡Όͳ͔Ζ͏͔ʜ
 8FC(-ͱ͔8FC8PSLFSͱ͔͋Δ͠ʜ

Slide 7

Slide 7 text

ͱ͍͏ઙΊͷϞνϕʔγϣϯͱ޷ح৺Ͱ
 %FMJSͷ։ൃ͸͡Ί·ͨ͠ ٩ Т و-FU`TEJWFUP)&--PG8FC5FDIOPMPHZ

Slide 8

Slide 8 text

͍·ͷͱ͜Ζͷ໨ඪ w શମ
 ΫϩεϓϥοτϑΥʔϜରԠ͍ͨ͠ w ϨϯμϦϯάج൫ʢө૾ͷॻ͖ग़͠ʣ
 ΞϧϑΝ෇͖ಈըͷॻ͖ग़͠Λαϙʔτ͍ͨ͠
 ɹʢϝΠϯฤूʹ࢖͑ͳͯ͘΋ɺ෦෼తͳૉࡐө૾࡞Δͷʹ࢖͑Δ͘Β͍ʹ͸͍ͨ͠ʣ w ϓϥάΠϯج൫
 ϢʔβʔϝΠυͷϓϥάΠϯΛ࢖͑ΔΑ͏ʹ͍ͨ͠ʢ഑෍ͱ͔Ͱ͖ΔΑ͏ʹʣ
 ̍࡞඼ઐ༻ʹؾܰʹॻ͖ࣺͯͰ͖ΔεΫϦϓςΟϯάΛͰ͖ΔΑ͏ʹ͍ͨ͠
 8FC(-ɾ8FC"VEJPɾ$BOWBT͋ͨΓΛ࢖͑ΔΑ͏ʹ͍ͨ͠ w ϑϩϯτΤϯυʢ6*ʣ
 ͳΜ͔Α͠ͳʹোΓͳ͍͘Β͍ʹ͍ͨ͠

Slide 9

Slide 9 text

ͰɺਐḿͲ͏Ͱ͔͢ʁ w શମ
 ɾ·ͩ։ൃػͷNBD04Ͱ͔͠ಈ͔ͯ͠ͳ͍ w ϨϯμϦϯάج൫ʢө૾ͷॻ͖ग़͠ʣ
 ɾͱΓ͋͑ͣNQॻ͖ग़͠͸Ͱ͖Δ͕ɺ։ൃ؀ڥͷNBD04Ͱ͔͠ಈ࡞֬ೝ͕औΕͯͳ͍
 ɾͨΊ͠ʹ6U7JEFPͰग़ྗͨ͠Βಁաͷॻ͖ग़͠΋ग़དྷ֮ͨ͑ʢ͏Ζ֮͑ʣ w ϓϥάΠϯج൫
 ɾϓϥάΠϯ͕zԿ͔zΛϨϯμϦϯά͢Δ·Ͱͷ࢓૊Έ͸Ͱ͖ͯΔ
 ɹɾ"&ͷΑ͏ͳϓϨϏϡʔը໘্Ͱ഑ஔΛม͑ͨΓ͢Δ࢓૊Έ͸શ͘ग़དྷͯͳ͍ʢߟ͑ͯΔʣ
 ɾॻ͖ࣺͯεΫϦϓςΟϯάͷ࢓૊Έ͸΅Μ΍Γߟ͑ͯΔ࠷த
 ɾඪ४ػೳΛϓϥάΠϯͱ࣮ͯ͠૷͠ͳ͕Βςετͯ͠Δ
 ɹɾ)5.-7JEFPʹΑΔಈըϑΝΠϧͷಡΈࠐΈ͸Ͱ͖Δ
 ɹɾBVSPSBKTʹΑΔԻ੠ͷσίʔυͱಉ࣌̍ԻݯͷԻ੠ॻ͖ग़͠͸Ͱ͖ͯΔʢΫιβίʣ w ϑϩϯτΤϯυ
 ɾΨόΨόϦςΟ͕ߴ͍

Slide 10

Slide 10 text

։ൃதϏϧυͷεΫϦʔϯγϣοτ

Slide 11

Slide 11 text

)5.-Ͱz͋ͨΓ·͑ͷಈ͖zΛ࣮૷͢ΔͷΊΜͲ͗͢ʜ
 ✌ 㾕̀◔ʆ ✌

Slide 12

Slide 12 text

ͦΕ͸ͦΕͱͯຊ୊

Slide 13

Slide 13 text

z3FTFBSDIz

Slide 14

Slide 14 text

%FMJS͕ར༻͍ͯ͠Δٕज़ w 1MBUGPSN
 &MFDUSPO w 'SPOU&OE
 )5.-+BWB4DSJQU$44 w #BDLFOE 1MVHJO3FOEFSJOHTZTUFN 
 +BWB4DSJQU/PEFKT$ ·ͩೖΕͯͳ͍͚Ͳʣ w &ODPEFS
 ⒎NQFH

Slide 15

Slide 15 text

ࠓճ͸͜͜ͷ࿩Λ͠·͢ w 1MBUGPSN
 &MFDUSPO w 'SPOU&OE
 )5.-+BWB4DSJQU$44 w #BDLFOE 1MVHJO3FOEFSJOHTZTUFN 
 +BWB4DSJQU/PEFKT$ ·ͩೖΕͯͳ͍͚Ͳʣ w &ODPEFS
 ⒎NQFH ͞ΘΓ͚ͩ࿩͢

Slide 16

Slide 16 text

&MFDUSPOͱ͸ w $ISPNJVN 8FC#SPXTFS ʹ
 /PEFKTΛࡌ͚ͬͨ΍ͭ w )5.-$44+4ͰσεΫτοϓΞϓϦΛ࡞ΕΔ

Slide 17

Slide 17 text

&MFDUSPOͱ͸ w /PEFKT"1*͕࢖͑ΔͷͰϑΝΠϧͷಡΈॻ͖΋
 Ͱ͖Δ w &MFDUSPO"1*ͰϑΝΠϧอଘϞʔμϧͱ͔΋
 ϥοϓ͞ΕͯΔ w ͔͠΋)5.-ܥͷ"1*࢖͑Δ͔Β
 8FC"VEJP 7JEFP 8FC8PSLFS $BOWBT΋
 ࢖͍์୊

Slide 18

Slide 18 text

৭ʑͰ͖Δ

Slide 19

Slide 19 text

͡Ό͋ͳʹ΍Δʁ

Slide 20

Slide 20 text

rϫΠ l7'9ج൫ͭ͘ΕΔ͡ΌΜz

Slide 21

Slide 21 text

ͱΓ͋͑ͣ*0Λ૊ΜͰΈΔ w 0VUQVU$BOWBTΛNQʹม׵͢Δ w *OQVUNQΛ$BOWBTʹసࣸ͢Δ

Slide 22

Slide 22 text

$BOWBT͔ΒNQ΁ /PEFKT⒎NQFH࢖͏ͱ̎̌ߦ͘Β͍Ͱ૊Ίͯ༏উͰ͖Δ
 ྲྀΕ w <+4>$BOWBT%$POUFYUHFU*NBHF%BUBͰ3(#"ॱͷੜσʔλΛ औΔ w ͓΋ΉΖʹ⒎NQFHΛDIJME@QSPDFTTTQBXO͢Δ
 A⒎NQFHGSBNFSBUFೖྗ'14JQJQFDWQOH@QJQFDWMJCYCWLSZPVUQVU@QBUIA
 w <+4/PEFKT>3(#"ͷ"SSBZ#V⒎FSΛ#V⒎FSʹม׵ͯ͠⒎NQFH ͷඪ४ೖྗʹྲྀ͢ w Ά΍͠ΜͰ͍ͨΒө૾͕ग़དྷ্͕͍ͬͯͨʜ

Slide 23

Slide 23 text

import fs from "fs" import {spawn} from "child_process" import canvasToBuffer from 'electron-canvas-to-buffer' window.addEventListener('DOMContentLoaded', () => { const FRAMERATE = 30 const VIDEO_DURATION_SEC = 30 const OUTPUT_FRAMES = VIDEO_DURATION_SEC * 30 const cRand = () => ((Math.random() * 256) | 0).toString(16) const canvas = document.querySelector(‘#canvas’) Object.assign(canvas, {width: 640, height: 360}) const ctx = canvas.getContext('2d') const encoder = spawn('ffmpeg', `-i pipe:0 -framerate ${FRAMERATE} -c:v png_pipe -c:v libx264 -r ${OUTPUT_FRAMES} -s 640x360 test.mp4`.split(' ')) for (let i = 0; i < OUTPUT_FRAMES i++) { ctx.fillStyle = '#' + [cRand(), cRand(), cRand()].join('') ctx.fillRect(0, 0, 640, 360) let buffer = canvasToBuffer(canvas, 'image/png') encoder.stdin.write(buffer) } encoder.stdin.end() })

Slide 24

Slide 24 text

NQ͔Β$BOWBT΁ w )5.-7JEFPͳΒNQಡΊΔ͠
 $BOWBT΁ͷసࣸ΋ඪ४Ͱαϙʔτ͞ΕͯΔ✨

Slide 25

Slide 25 text

͔͠͠ʜ w σίʔυॏ͍ɾ஗͍
 ͨͩͷ࠶ੜͳΒ໰୊ͳ͍͚Ͳ
 ೚ҙͷϑϨʔϜ΁γʔΫ͠ଓ͚ΔͱGQT͘Β͍Ͱਫ਼Ұഋ
 WJEFPλάΑΓԼͷϨΠϠʔ͸ωΠςΟϒ͔ͩΒ࠷దԽͷ༨஍΋ͳ͍ʜ w ରԠܗࣜগͳ͍ʢʂʣ
 ɾNQ ) 8FC. PHWˠෆՄٯ )͸Մٯ΋Ͱ͖ΔͬΆ͍͚Ͳʜʣ
 ɾ"MQIB෇͖ͷܗࣜ͸αϙʔτ͞Εͯͳ͍
 ɹʢΫϩϚΩʔ͢Ε͹ͱ͔ͦ͏͍͏࿩͡Όͳ͍ɺ"MQIB෇͖ಈը͕࢖͍͍ͨʣ w Ͳͦ͜͜ͷϒϩάͰࢄʑॻ͖ࣺͯΒΕͨํ๏Ͱͭ·Βͳ͍

Slide 26

Slide 26 text

ͦΕͰ7'9πʔϧͷͭ΋Γ͔ʁʁʁʁʈʈʀ

Slide 27

Slide 27 text

㱯✱A㱯 
 Ͳ͏͢Ε͹͍͍Μͩʜ

Slide 28

Slide 28 text

rԶࢯ l/PEFKT͕࢖͑Δͬͯ͜ͱ͸ʜʜ
 $͕࢖͑Δͬͯ͜ͱͩΑʢʁʁʁʣz

Slide 29

Slide 29 text

/PEF/BUJWF"EEPOT

Slide 30

Slide 30 text

/PEFKT/BUJWF"EEPOT w /PEFKTͳΒ$όΠφϦͷ+4όΠϯσΟϯά͕ग़དྷ Δ w ⒎NQFHͷ಺෦Ͱ࢖ΘΕͯΔAMJCBWDPEFDAΛ࢖͑͹
 ϑϨʔϜ୯ҐͷσίʔσΟϯά΋Ͱ͖ͦ͏ w ͱΓ͋͑ͣMJCBWDPEFDͷόΠϯσΟϯά͕ͳ͍͔୳͢

Slide 31

Slide 31 text

͋ͬͨ 0QUJNBM#JUTOBWDPEFD

Slide 32

Slide 32 text

͜ΕЋΛϑΥʔΫͨ͠΋ͷΛ࿔ͬͯ ετϦʔϜϦʔυग़དྷΔΑ͏ʹ͢Δ ྲྀΕ w +4͔Βಡ·͍ͤͨϑΝΠϧͷύεΛ౉͢ w MJCBWDPEFDʹಈըϑΝΠϧΛ৯ΘͤΔ w $্Ͱ̍ϑϨʔϜΛ3(#"഑ྻʹσίʔυ͢Δ w ϑϨʔϜ͕औΕͨΒ"SSBZ#V⒎FSʹͯ͠+4ͷੈքʹؼ͢ w "SSBZ#V⒎FSΛ*NBHF%BUBʹίϐʔͯ͠$BOWBTʹు͔ͤΔ

Slide 33

Slide 33 text

w SFRVFTU"OJNBUJPO'SBNFͷݶքʢGQTʣ͸ग़Δ
 IUUQTHJUIVCDPN3BHHOBWDPEFDDPNNJUB w )5.-7JEFPͩͱಉ͡ಈըιʔεͰ΋GQT͘Β͍

Slide 34

Slide 34 text

ʜ͕ʜ໰୊͕ʜ w ө૾ฤूத͸ϥϯμϜͳϑϨʔϜʹΞΫηε͞ΕΔ
 Ұํ޲ͷϦʔυ͔͠·ͩग़དྷͯͳ͍ͷʹʜʂ w Ͳ͏΍ͬͯΩϟογϡ͢ΔΜ͡Όʜʜ
 ΊͬͪΌσΟεΫ༰ྔ৯͏ະདྷ͔͠ݟ͑Μͷ͡Όʜ w ᷚʹΑΔͱMJCNQWͱ͔⒎NTͱ͔͋ΔΒ͍͠
 ˠ⒎NTΑ͛͞
 ɾϑΝΠϧ৯ΘͤΔͱΩʔϑϨʔϜʹΠϯσοΫεషͬͯ͘ΕΔͬΆ͍
 ɹߴ଎ʹγʔΫͰ͖ͦ͏
 ɾ͔͠͠MJCNQW͸σίʔυ·ͰରԠ͍ͯ͠ΔΒ͍͠
 ɾௐࠪத

Slide 35

Slide 35 text

Ͱ͖Δͱ෼͔ͬͨ͠ͱΓ͋͑ͣΑ͠
 Α͠ͳʹ࣮૷Ͱ͖ͨΒϓϥάΠϯԽ࣮ͯ͠૷͢Δ

Slide 36

Slide 36 text

ʻௐࠪதʼ
 ΦʔσΟΦ͸ɹ8FC"VEJPͰ͍ͨ͠ΑͶʁʁʁ

Slide 37

Slide 37 text

ө૾ฤूʹϦΞϧλΠϜΦʔσΟΦ͸͔ܽͤͳ͍ΑͶ w 8FC"VEJP"1*͸·͞ʹϦΞϧλΠϜԻ੠ॲཧͷ"1* w (BJO/PEFͰԻྔௐ੔͕Ͱ͖Δ w 1BOOFS/PEF"VEJP-JTUFOFSͱ͔࢖͑͹
 ཱମԻڹͱ͔Ͱ͖Δ w ''5஌Βͳͯ͘΋"OBMZ[FS/PEFͰ࣮૷Ͱ͖ͨΓ͢Δ w -(5.

Slide 38

Slide 38 text

͕ʜ

Slide 39

Slide 39 text

8FC"VEJP͸ετϦʔϜ w ฤूத͸ϦΞϧλΠϜॲཧͰ͍͍͔΋͠Εͳ͍ w ͔͠͠ϨϯμϦϯάͰϦΞϧλΠϜ͸ࠔΔʂ
 ɾग़ྗΛΩϟϓνϟ͠ͳ͍ͱ͍͚ͳ͍
 ɾܾ·ͬͨαΠζຖʹ΄͍͠
 ɹɾ͔͠͠ετϦʔϜͩͱඇৗʹॲཧͮ͠Β͍
 ɹɹ 8FC"VEJP͕޷͖উखͳλΠϛϯάͰετϦʔϜΛ৯͏ʣ

Slide 40

Slide 40 text

·͊8FC"VEJPఘΊͯ
 "SSBZ#V⒎FSͰશ෦ॲཧ͢Ε͹͍͍͔ ग़ྗͷ߹੒͕ॏ͔ͬͨΒ8FC(-ʹϛΩγϯάͤ͞ΕΔͰ ͠ΐʜ

Slide 41

Slide 41 text

ʁʮ·͋଴ͪͨ·͑ʯ

Slide 42

Slide 42 text

r.%/ l0⒐JOF"VEJP$POUFYUz

Slide 43

Slide 43 text

0⒐JOF"VEJP$POUFYU w 8FC"VEJPͷ"1*ͦͷ··Ͱ
 lҰఆͷॲཧΛҰؾʹߦ͏z΍ͭ w ϊϯϦΞϧλΠϜ w "VEJP$POUFYUͱޓ׵͕͋Δ
 "VEJP$POUFYUˠOPEFDPOOFDU BVEJP$UYEFTUJOBUJPO 
 0⒐JOF"VEJP$POUFYUˠOPEFDPOOFDU P⒐JOF"VEJP$UYEFTUJOBUJPO

Slide 44

Slide 44 text

%FMJS͸"SSBZ#V⒎FS࣌୅Ͱࢭ·ͬͯΔͷͰະݕূͰ͢ʜ ݕূͰ͖ͨΒ͓࿩͠·͢

Slide 45

Slide 45 text

ʻௐࠪதʼ
 +4ͰɹϚϧνεϨουɹͯ͠༏উ

Slide 46

Slide 46 text

+BWB4DSJQUͷϚϧνεϨοσΟϯάࣄ৘ w /PEF
 Ͱ͖ͳ͘͸ͳ͍͚Ͳ%FMJSͰ࢖͑ΔϨϕϧ͔ͱ͍͏ͱ/P
 ʢޙड़͢Δ"1*͕࢖͑ͳ͍ʣ w 8FC
 ڧ͍ʢ޻෉͸͍Δʣ

Slide 47

Slide 47 text

8FCͷϚϧνεϨοσΟϯάࣄ৘ w 8FC8PSLFS
 ֎෦ͷεΫϦϓτΛผεϨουͰ࣮ߦͰ͖Δ
 ϝΠϯεϨουͱͷ௨৴͸+40/ԽՄೳͳΦϒδΣΫτͱϓϦϛςΟϒͳ஋ Ͱ͔͠Ͱ͖ͳ͔͕ͬͨ
 5SBOTGFSBCMF΍"VEJP8PSLMFU ະ࣮૷ ͷొ৔Ͱঢ়گ͕มΘͬͨ

Slide 48

Slide 48 text

5SBOTGFSBCMF w ผεϨουʹసૹՄೳͳΦϒδΣΫτ
 "SSBZ#V⒎FS 0⒎TDSFFO$BOWBT$POUFYU w ͍··Ͱ͸"SSBZ#V⒎FS΋+40/ʹίϐʔͯ͠ૹ৴͍ͯͨ͠
 ʢΊͬͪΌॏ͔ͬͨʣ w େ͖ͳαΠζͷσʔλΛૉૣ͘సૹͰ͖ΔΑ͏ʹͳͬͨ w సૹ͞ΕͨΦϒδΣΫτ͸ϝΠϯεϨου͔Βར༻Ͱ͖ͳ͘ͳΔ
 ʢத਎͕ۭͬΆʹͳͬͨΓɺOVMMʹͳͬͨΓ͢Δʣ

Slide 49

Slide 49 text

0⒎TDSFFO$BOWBT$POUFYU w $BOWBT$POUFYU͕ผεϨουʹసૹͰ͖ΔΑ͏ ʹͳͬͨ
 %$POUFYU 8FC(-͕ผεϨουͰಈ͔ͤΔΑ͏ʹͳͬͨ w ొ৔ҎલͰ΋*NBHF%BUB "SSBZ#V⒎FS ΛసૹͰ͖͚ͨͲ
 8PSLFSεϨου಺Ͱ$BOWBT"1*͕શ͘࢖͑ͳ͔ͬͨͷͰɺ
 ϐΫηϧ୯ҐͰσʔλΛมߋ͢Δ͔͠ͳ࣮͘༻త͡Όͳ͔ͬͨ w SFRVFTU"OJNBUJPO'SBNFͳͲ͸8PSLFSεϨου্ʹͳ͍ͷͰ
 ϝΠϯεϨουͱΑ͠ͳʹಉظΛͱΔ

Slide 50

Slide 50 text

"VEJP8PSLMFU ະ࣮૷ w 4DSJQU1SPDFTTPS/PEFΛผεϨουͰॲཧͰ͖ΔΑ͏ʹͳΔʢ͸ͣʣ w 4DSJQU1SPDFTTPS/PEF͸8FC"VEJPͷ৴߸ॲཧΛࣗ෼Ͱ࣮૷͢Δ࣌ʹ࢖͏ ΦϒδΣΫτ w "VEJP8PSLFSͱ͔ࣅͨΑ͏ͳ࢓༷ʢ࣮૷΋ʣ͚͋ͬͨͲ
 ࡟আ͞Εͨ

Slide 51

Slide 51 text

޻෉ͷ͠Ͳ͜Ζ w 5SBOTGFSBCMFΛআ͘ͱ+40/ʹγϦΞϥΠζՄ ೳͳσʔλ͔͠ૹ৴Ͱ͖ͳ͍
 ˠ഑ྻ΍ΦϒδΣΫτΛ্ख͘࢖ͬͯ΍ΓऔΓ w ඇಉظʹϝοηʔδΛ౤͛߹͏͜ͱͰ͔͠
 8PSLFSͱ΍ΓऔΓͰ͖ͳ͍
 ˠॲཧॱংͷ੔߹ੑ͸ࣗ෼ͰऔΒͳ͍ͱ͍͚ͳ͍

Slide 52

Slide 52 text

ͬͪ͜΋·ͩݕূͰ͖ͯͳ͍Ͱ͢ ݕূͰ͖ͨΒ͓࿩͠·͢

Slide 53

Slide 53 text

ͦΜͳ͜ΜͳͰ ௐࠪ͠ͳ͕Β։ൃͯ͠·͢ɻ

Slide 54

Slide 54 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ʘʘaa ۶w Aᴗw  ۶ʗʗ UXJUUFS!@SBHH@

Slide 55

Slide 55 text

%FMJSMJOLT w αΠτલ஍
 IUUQEFMJSTUVEJP w (JU)VC
 IUUQTHJUIVCDPN3BHHEFMJS w ਐḿμϝͰ͢
 IUUQTUSFMMPDPNC8J/[EFMJS