Slide 1

Slide 1 text

ΫοΫύου͸ͳͥ ։ൃ͠΍͍͢ͷ͔ ΫοΫύουגࣜձࣾ੒ాҰੜ "844VNNJU5PLZP

Slide 2

Slide 2 text

੒ాҰੜ ͳΔͨ ͍͍ͬͤ !NJSBLVJ ΫοΫύουגࣜձࣾ ΠϯϑϥετϥΫνϟʔ෦௕

Slide 3

Slide 3 text

ΫοΫύουʹ͍ͭͯ

Slide 4

Slide 4 text

.6#NP .14VTFST .DPPLJOHSFDJQFT ˞೥݄ݱࡏ !" # !

Slide 5

Slide 5 text

'VMM"84 2011೥3݄ ౦ژϦʔδϣϯΦʔϓϯ 2011೥8݄ DC͔ΒAWS΁Ҡߦ ✈

Slide 6

Slide 6 text

&$JOTUBODFT BUQFBL SFRTFD BUQFBL $

Slide 7

Slide 7 text

0QT %FWFMPQFST %FQMPZTEBZ ⚒ #

Slide 8

Slide 8 text

IUUQTTQFBLFSEFDLDPNB@NBUTVEBUIFSFDJQFGPSUIFXPSMETMBSHFTUSBJMTNPOPMJUI ΫοΫύου͸ੈքҰڊେͳ ϞϊϦγοΫ3BJMTΞϓϦέʔγϣϯʢ͔΋͠Ε·ͤΜʣ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

ʮ։ൃ͠΍͍͢ʯͱ͸Կ͔

Slide 11

Slide 11 text

% ʮ։ൃ͠ʹ͍͘ʯঢ়ଶͷྫ ٕज़తͳ໰୊ʹΑͬͯΠϊϕʔγϣϯ્͕֐͞Ε͍ͯΔঢ়ଶ େྔͷϨΨγʔίʔυɺٕज़తෛ࠴ ςετ͸͋Δ͚Ͳৗʹ͍͔ͭ͘ Fail ͍ͯͯ͠ɺ
 ์ஔ͞Ε͍ͯΔ σϓϩΠ͕ଐਓతͰɺ͕͔͔࣌ؒΓ͗ͨ͢Γɺ
 ͨ·ʹࣦഊͨ͠Γ͢Δ

Slide 12

Slide 12 text

։ൃ͠ʹͯ͘͘Կ͕ѱ͍ʁ ݱ৔ָ͕Λ͍ͨ͠ ૉૣ͘Ձ஋Λఏڙ͍ͨ͠

Slide 13

Slide 13 text

⚒ ։ൃ σϓϩΠ ςετ

Slide 14

Slide 14 text

։ൃ ⚒

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

αʔϏε։ൃͱ͸Կͳͷ͔ ࡞͍ͬͯΔͷ͸ʮػೳʯͰ͸ͳ͘ʮαʔϏεʯʮϢʔβମݧʯ μϛʔσʔλͰ͸ͳ͘ຊ൪ͷσʔλΛ࢖ͬͯ։ൃ͢Δ΂͖ &

Slide 18

Slide 18 text

ຊ൪ͱಉظͨ͠%#Ͱ։ൃ͢ΔϝϦοτ • Ϣʔβʔͱಉ౳ͷମݧ • ༧ظͤ͵σʔλʹΑΔόάʹؾ͖ͮ΍͍͢ • ॏ͍ΫΤϦʹؾ͖ͮ΍͍͢

Slide 19

Slide 19 text

'# ຊ൪%# ։ൃ%# ։ൃऀ .Z42- .Z42- NZTRMEVNQ ( # ։ൃऀͷ୭͔͕ؾ͕޲͍ͨ࣌ʹ ຊ൪μϯϓσʔλ͔Β։ൃ DB Λߋ৽ ʢ൒೥ʹ1౓͘Β͍ʣ d

Slide 20

Slide 20 text

खಈߋ৽ํࣜͷ໰୊఺ ݱߦͷσʔλͷΈͰൃੜ͢ΔΑ͏ͳΤϥʔʹؾ͖ͮʹ͍͘ ৽ணίϯςϯπʹؔ࿈ͨ͠ಈ࡞֬ೝ͕͠ʹ͍͘ Ϣʔβͷମݧͱ͸ҟͳΔ

Slide 21

Slide 21 text

' ' ' # # # ຊ൪%# ։ൃ%# NBTUFS TMBWF SFBE X SJUF ։ൃऀ .Z42- .Z42- ݱࡏ ։ൃऀ͸ৗʹຊ൪ͷ࠷৽σʔλ͕ೖͬͨDBͰ։ൃ

Slide 22

Slide 22 text

Ͳ͏΍Δͷ͔ ݒ೦఺ slave ʹॻ͖ࠐΜͩΒΩʔিಥ౳Ͱ
 ϨϓϦέʔγϣϯΤϥʔʹͳΔͷͰ͸ʁ id ͕ຊ൪ͱͣΕͯ݁ہ࢖͑ͳ͍σʔλʹͳΔͷͰ͸ʁ

Slide 23

Slide 23 text

JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ ͦ͹ '# ຊ൪%# ։ൃ%# */4&35 ϨϓϦέʔγϣϯ ϥʔϝϯ ௨ৗɺslave ʹॻ͖ࠐΜͰ͠·͏ͱ AUTO_INCREMENT ͍ͯ͠Δ id ͕িಥ͢Δ

Slide 24

Slide 24 text

JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ ͦ͹ ͏ͲΜ ੜᇙম͖ '# ຊ൪%# ։ൃ%# */4&35 ϨϓϦέʔγϣϯ AUTO_INCREMENT ʹڊେͳΦϑηοτΛઃఆ͢Δ͜ͱͰ ຊ൪ͱিಥ͠ʹ͘͘͢Δ ϥʔϝϯ

Slide 25

Slide 25 text

JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ ͦ͹ ͏ͲΜ ੜᇙম͖ ຊ൪%# ։ൃ%# εςʔτϝϯτϕʔε ϨϓϦέʔγϣϯ ࠷৽ͷ݅Λʮম೑ʯʹมߋ UPDATE recipes SET name=‘ম೑’ ORDER BY id DESC LIMIT 1 ম೑ ম೑ εςʔτϝϯτϕʔεϨϓϦέʔγϣϯͰ͸ ։ൃ DB ͷσʔλ͕յΕ΍͍͢

Slide 26

Slide 26 text

JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ JE OBNF ΧϨʔ ͔Β͋͛ ೑͡Ό͕ ͦ͹ ͏ͲΜ ੜᇙম͖ ຊ൪%# ։ൃ%# ߦϕʔε ϨϓϦέʔγϣϯ ࠷৽ͷ݅Λʮম೑ʯʹมߋ UPDATE recipes SET name=‘ম೑’ ORDER BY id DESC LIMIT 1 ম೑ ম೑ ߦϕʔεϨϓϦέʔγϣϯʹ͢Δ͜ͱͰ ։ൃ DB ͷσʔλ͕յΕʹ͘ͳΔ

Slide 27

Slide 27 text

ຊ൪%# ։ൃ%# ߦϕʔε ϨϓϦέʔγϣϯ εςʔτϝϯτϕʔε ϨϓϦέʔγϣϯ CJOMPH ม׵༻%# ߦϕʔεϨϓϦέʔγϣϯͰ͸ɺ όΠφϦϩά΍సૹྔ͕ڊେʹͳΓɺຊ൪ʹෛՙ͕͔͔ΔͨΊ ࣮ࡍʹ͸தؒ DB Λ༻ҙ͠όΠφϦϩάΛม׵͍ͯ͠Δ

Slide 28

Slide 28 text

ϨϓϦέʔγϣϯఀࢭରࡦ΋ඞཁ ෆ੔߹͸ى͖ʹ͘͘Ͱ͖Δ͕ɺܾͯ͠׬ᘳͰ͸ͳ͍ͷͰ
 ϨϓϦ͕ΤϥʔͰࢭ·Δ͜ͱ΋͋Δ slave_skip_errors = ON Λઃఆͭͭ͠ɺ ఀࢭͨ͠Β skip ͯ͠࠶։͢Δ؂ࢹεΫϦϓτΛӡ༻ ʢslave_skip_errors͚ͩͰ͸ skip ͞Εͳ͍Τϥʔ͕͋ΔͨΊ…ʣ

Slide 29

Slide 29 text

' ' ' # # # ຊ൪%# ։ൃ%# NBTUFS TMBWF SFBE X SJUF ։ൃऀ .Z42- .Z42- ։ൃऀ͸ৗʹຊ൪ͷ࠷৽σʔλ͕ೖͬͨDBͰ։ൃ

Slide 30

Slide 30 text

ຊ൪؀ڥͰ։ൃ͢Δ w

Slide 31

Slide 31 text

&BUZPVSPXOEPHGPPE ࣗ෼ͨͪͷαʔϏε͸ࣗ෼͕ͨͪϢʔβʹͳΔ΂͖ ♥

Slide 32

Slide 32 text

ඇϩάΠϯ ελοϑϢʔβ ͱͯ͠ϩάΠϯ ελοϑ͕ϩάΠϯ͢Δͱɺ ։ൃதͷϕʔλػೳ͕͍ͭ͘΋༗ޮʹͳΔ

Slide 33

Slide 33 text

ϕʔλػೳ ϦϦʔεൣғΛࢦఆͯ͠ެ։ ެ։ൣғͷྫ ελοϑͷΈʹެ։ ςετࢀՃϢʔβʹͷΈެ։ શମͷ10%ͷϢʔβʹެ։

Slide 34

Slide 34 text

αʔϏεͷՁ஋͸࢖Θͳ͍ͱ෼͔Βͳ͍ ͦͷՁ஋ͷԾઆ͸ਖ਼͔ͬͨ͠ͷ͔ʁ ຊ൪ʹϦϦʔε͠ͳ͍ͱɺϢʔβʹ࢖ͬͯ΋Β͏͜ͱ͕Ͱ͖ͳ͍ ຊ൪ʹϦϦʔε͢Δʹ͸ຊ൪ͷ඼࣭ͷ
 ίʔυʢύϑΥʔϚϯε౳ʣʹ࢓্͛ͳ͚Ε͹ͳΒͳ͍ʁ ˠඞཁͷͳ͍ػೳΛ࡞Γ͜ΜͰ͠·͏Մೳੑ͕͋Δ

Slide 35

Slide 35 text

ૣࣦ͘ഊΛ͢Δ ίʔυͷ࡞ΓࠐΈʹ࣌ؒΛ͔͚ΔΑΓɺ ૉૣ͘ެ։ͯ͠ԾઆΛݕূ͢ΔͨΊʹ࣌ؒΛ࢖͏΂͖ *

Slide 36

Slide 36 text

$IBOLP ຊ൪؀ڥͰͷτϥΠˍΤϥʔΛࢧԉ͢Δ Rails ༻ gem Unit ͱ͍͏୯ҐͰطଘίʔυ΁ͷύονΛهड़ ඼࣭ͷ௿͍ίʔυΛຊ൪ʹ҆શʹग़ͤΔ IUUQTHJUIVCDPNDPPLQBEDIBOLP +

Slide 37

Slide 37 text

" # طଘͷίʔυ A ΛɺελοϑϢʔβͷΈʹରͯ͠ ϕʔλ൛ͷίʔυ B ʹஔ͖׵͍͑ͨ ͨͩ͠ɺB ͸๯ݥతͳ࣮૷ͳͷͰɺྫ֎͕ൃੜ͢Δ͔΋͠Εͳ͍ طଘͷ$POUSPMMFSͷίʔυ ϕʔλ൛ͷίʔυ

Slide 38

Slide 38 text

ελοϑͳΒ# #Ͱྫ֎͕ى͖ͨΒ" ελοϑҎ֎ͳΒ" ϑϥάͰ෼ذ͍ͤͯ͘͞ͱίʔυ͕ԚΕ͍ͯ͘

Slide 39

Slide 39 text

ϕʔλػೳͷ6OJU طଘͷ$POUSPMMFSͷίʔυ " # Chanko Ͱ͸ɺUnit ͱ͍͏ϑΝΠϧʹϕʔλػೳͷϩδοΫΛهड़͢Δ invoke ৚݅Λຬͨͨ͠৔߹ʹɺطଘϩδοΫ (A) ͷ୅ΘΓʹ Unit (B) ͕࣮ߦ͞ΕΔ B ͕ྫ֎Λىͨ͜͠৔߹͸ɺݩͷ A ͕࣮ߦ͞ΕΔͨΊɺϢʔβʹ͸Τϥʔ͕ฦΒͳ͍ JOWPLF৚݅

Slide 40

Slide 40 text

ແࣄʹՁ஋͕ೝΊΒΕͨΒ ຊ൪ͷ඼࣭ͷίʔυʹ࢓্͛Δ طଘίʔυΛॻ͖׵͑ɺUnit ϑΝΠϧΛফ͢
 ʢ௨শ Un-chankoʣ

Slide 41

Slide 41 text

$IBOLPͷӡ༻ঢ়گ 2011: Chanko ϦϦʔε + ಋೖ 2015: 200+ Chanko Units • εςʔδϯά༻ͷαʔό͸ଘࡏ͢Δ͕ɺར༻ස౓͸௿͍ • ։ൃதͷ΋ͷΛຊ൪ʹग़͢จԽ͕Ͱ͖͍ͯΔ

Slide 42

Slide 42 text

ςετ

Slide 43

Slide 43 text

ΫοΫύουͱ34QFD 1800+ files 21000+ examples (test cases) 7 min ,

Slide 44

Slide 44 text

5FTUTNFMMT ࣮ߦ͕࣌ؒ௕͍ յΕ΍͍͢ʢίʔυͷมߋʹऑ͍ʣ Fail ͠΍͍͢ ࣮ߦ؀ڥ΁ͷґଘ -

Slide 45

Slide 45 text

3334QFD

Slide 46

Slide 46 text

. 3334QFD ଎ͯ͘ɾ҆ͯ͘ɾ҆ఆͨ͠$* ෳ਺ͷ Spot Instance Λ࢖ͬͯ RSpec Λฒྻ࣮ߦ ڧྗͳϑΥʔϧττϨϥϯε IUUQTHJUIVCDPNDPPLQBESSSTQFD +

Slide 47

Slide 47 text

// / / TMBWF TMBWF XPSLFS XPSLFS XPSLFS ʜ / ʜ ʜ ʜ / / / / NBTUFS ////ʜ

Slide 48

Slide 48 text

$*XPSLFS୆਺ͷભҠ ۀ຿࣌ؒ֎͸୆਺ΛݮΒͯ͠
 ίετ࡟ݮ

Slide 49

Slide 49 text

&$4QPU*OTUBODF ͳΔ΂͘ϋΠεϖοΫͳΠϯελϯεΛ࢖͍͍͕ͨߴՁ →Spot Instance ͷར༻ 0

Slide 50

Slide 50 text

&$4QPU*OTUBODF ʮ1࣌ؒ͋ͨΓͷ࠷େೖࡳՁ֨ʯΛࢦఆͯ͠ىಈ͢Δ ࢦఆͨ͠ʮ࠷େೖࡳՁ֨ʯΑΓ૬৔Ձ͕͚֨҆Ε͹ىಈ ىಈதʹ૬৔Ձ͕֨ʮ࠷େೖࡳՁ֨ʯΛ্ճͬͨ৔߹ɺ
 Πϯελϯε͸γϟοτμ΢ϯ͞ΕΔ ૬৔Ձ֨͸ OnDemand Ձ֨ΑΓߴ͘ͳΔ͜ͱ΋͋Δ ૬৔Ձ֨͸ AZ ͝ͱʹΑͬͯ΋ҟͳΔ

Slide 51

Slide 51 text

౦ژϦʔδϣϯͷͱ͋Δ";ʹ͓͚Δ 4QPU1SJDF DYMBSHF 0OEFNBOE I 3*ZBMMVQGSPOU I

Slide 52

Slide 52 text

DYMBSHF DYMBSHF DYMBSHF ˺ ˺ DYMBSHF DYMBSHF DYMBSHF ˺ ˺ Ұ൪ίετύϑΥʔϚϯε͕͍͍
 ΠϯελϯεΛࣗಈతʹબ୒

Slide 53

Slide 53 text

ϑΥʔϧττϨϥϯε ͍͔ʹͯ͠GBJM͠ʹ͍͘$*ʹ͢Δ͔ ·Εʹࣦഊ͢ΔFYBNQMFʹରͯ͠ɿ ۭ͍͍ͯΔ worker Ͱࣗಈతʹ࠶࣮ߦ
 Ұ౓Ͱ΋ success ͢Ε͹ success ͱͯ͠ѻ͏ 4QPU*OTUBODFͷࣗಈγϟοτμ΢ϯʹରͯ͠ɿ ଞͷ worker Ͱࣗಈతʹ࠶࣮ߦ ผλΠϓͷΠϯελϯεΛىಈ͠࠶࣮ߦ

Slide 54

Slide 54 text

ׂΕ૭ཧ࿦ ݐ෺ͷ૭ׂ͕Ε͍ͯΔ֗͸ɺ࣏͕҆ѱԽ͢Δ ܰඍͳ൜ࡑΛపఈతʹऔΓక·Δ͜ͱͰ
 ڟѱ൜ࡑΛ΋཈ࢭͰ͖Δͱ͢Δ؀ڥ൜ࡑ্ֶͷཧ࿦ IUUQKBXJLJQFEJBPSHXJLJׂΕ૭ཧ࿦ -

Slide 55

Slide 55 text

$*͕ʮׂΕ૭ʯʹͳΒͳ͍Α͏ʹ ܰඍͳ͏ͪʹൃݟ͠ɺରॲ͢Δ • Ϗϧυ͕࣌ؒ௕͘ͳΔ • ͚ͯ͜Δςετͷ์ஔ • pending ঢ়ଶͳςετͷ์ஔ 1

Slide 56

Slide 56 text

௨஌ Fail ͨ͠ example ͸࡞ऀΛ blame ͯ͠νϟοτͰ௨஌ Fail ͬ͠ͺͳ͠ʹͤ͞ͳ͍

Slide 57

Slide 57 text

·Εʹ'BJM͢ΔςετΛݟ͚ͭΔ lBMMOJHIU$*z ۀ຿࣌ؒ֎ʹͣͬͱճ͠ଓ͚Δ CI success ཰͕௿͍ͱԿ͔͕͓͔͍͠

Slide 58

Slide 58 text

໨ඪ ෼Ҏ಺ ෼Ҏ্͔͔ͬͨΒ௨஌ $*ͷϏϧυ࣌ؒΛ؂ࢹ

Slide 59

Slide 59 text

QFOEJOHʹͤͬ͞ͺͳ͠ͷςετͷ࡞ऀʹࣗಈ௨஌ IUUQTHJUIVCDPNDPPLQBEQFOEBYFT +

Slide 60

Slide 60 text

$*ӡ༻ͷ·ͱΊ • ༏Εͨ CI γεςϜΛ࡞Δ͜ͱΑΓɺ
 Ͳ͏ӡ༻͢Δ͔͕ॏཁ • Ϗϧυ࣌ؒɾ௨ա཰ɾίετͳͲͷ
 ࢦඪΛఆٛͯ͠؂ࢹ͠ɺ
 վળ͍ͯ͘͠ • ׂΕ૭ʹ͠ͳ͍ 2

Slide 61

Slide 61 text

σϓϩΠ

Slide 62

Slide 62 text

+ TVDDFTT -(5. QVMMSFRVFTU NFOUJPO EFQMPZ &$ (JU)VC &OUFSQSJTF # EFWFMPQFS # SFWJFXFS $* +FOLJOT NFSHF

Slide 63

Slide 63 text

σϓϩΠϧʔϧʢҰ෦ʣ • CI Λύεͨ͠ϦϏδϣϯͷΈσϓϩΠͯ͠Α͍ • σϓϩΠ͸ίʔυΛ push ͨ͠։ൃऀࣗ਎͕ߦ͏ • Ӧۀ࣌ؒ಺ͷΈσϓϩΠՄೳ • σϓϩΠޙ͸։ൃऀ͕ಈ࡞֬ೝ͠ɺ
 ෆ۩߹Λݟ͚ͭͨΒ͙͢ʹϩʔϧόοΫ͢Δ

Slide 64

Slide 64 text

σϓϩΠʹॏཁͳ͜ͱ • ଐਓతͰͳ͍͜ͱ • ਖ਼֬Ͱ͋Δ͜ͱ • ϩʔϧόοΫͰ͖Δ͜ͱ • े෼ʹ଎͍͜ͱ 3

Slide 65

Slide 65 text

௚ۙिؒͷσϓϩΠʹ͔͔ͬͨ࣌ؒ ฏۉඵ IPTUT

Slide 66

Slide 66 text

$BQJTUSBOP࣌୅ʢʙʣ capistrano2 + rsync_with_remote_cache

Slide 67

Slide 67 text

$BQJTUSBOPσϓϩΠͱ଎౓ 1୆͔Βશ୆ʹ ssh + rsync σϓϩΠର৅ϗετ୆਺͕૿͑Δͱ஗͘ͳ͍ͬͯ͘

Slide 68

Slide 68 text

σϓϩΠର৅ϗετશ୆ʹTTISTZOD ˠσϓϩΠ଎౓ͷϘτϧωοΫʹ $BQJTUSBOP # / / / / / / / STZOD

Slide 69

Slide 69 text

.BNJZB

Slide 70

Slide 70 text

.BNJZB ϋΠεέʔϥϒϧͳߴ଎σϓϩΠγεςϜ σϓϩΠର৅ϗετΛ serf ͰΫϥελϦϯά Amazon S3 ܦ༝Ͱ഑෍ Capistrano ޓ׵ͷσΟϨΫτϦߏ੒ IUUQTHJUIVCDPNTPSBINBNJZB +

Slide 71

Slide 71 text

/ $* UBSCBMM 4 $*͕௨ͬͨϦϏδϣϯͷίʔυ͸ UBSCBMMͱͯ͠4ʹૹΒΕΔ

Slide 72

Slide 72 text

/ / / / / / / / $*͕௨ͬͨϦϏδϣϯͷUBSCBMM͸ શ୆͕ৗʹࣗಈͰQVMM͍ͯ͠Δ ʢ͜ͷ࣌఺Ͱ͸·ͩຊ൪ͷίʔυ͸੾ΓସΘ͍ͬͯͳ͍ʣ /

Slide 73

Slide 73 text

σϓϩΠͷࢦྩ͸4FSGΠϕϯτͱͯ͠(PTTJQϓϩτίϧͰ఻೻ # !IVCPUEFQMPZQSPEVDUJPO

Slide 74

Slide 74 text

શ୆ͷϦϏδϣϯ͕੾ΓସΘΔ ʢϑΝΠϧ഑෍͸͋Β͔͡Ί׬͍ྃͯ͠ΔͨΊɺߴ଎ʹ׬ྃ͢Δʣ / / / / / / / / / / / / / / / / #

Slide 75

Slide 75 text

.BNJZBͷεέʔϥϏϦςΟ Mamiya ͸σϓϩΠର৅ϗετ૿Ճʹରͯ͠εέʔϥϒϧ ϗετ͕૿Ճͯ͠΋ʢ΄ͱΜͲʣ஗͘ͳΒͳ͍ ϑΝΠϧͷ഑෍ɿ S3 ͷεέʔϥϏϦςΟΛར༻ શ୆΁ͷϦϏδϣϯ੾Γସ͑ࢦྩɿ Serf ΠϕϯτΛར༻

Slide 76

Slide 76 text

.BNJZBʹΑΔσϓϩΠ࣌ؒ୹ॖޮՌ ෼ˠඵ DBQJTUSBOP NBNJZB DBQJTUSBOP NBNJZB

Slide 77

Slide 77 text

͓ΘΓʹ

Slide 78

Slide 78 text

⚒ ։ൃ σϓϩΠ ςετ

Slide 79

Slide 79 text

։ൃͷ͠΍͢͞Λอͭ ׂΕ૭Λ࡞Βͳ͍ͨΊʹ͸ɺ੹೚ऀͱࢦඪ͕ඞཁ 4

Slide 80

Slide 80 text

ʮ։ൃ͠΍͢͞ʯͷՁ஋ • ։ൃ͔ΒσϓϩΠ·ͰͷαΠΫϧ͕े෼ʹ଎͚Ε͹ɺ
 ʮຊ൪؀ڥΛ࢖ͬͨ։ൃʯ͕࣮ݱͰ͖Δ →Ϣʔβͱಉ͡ମݧͷதͰ։ൃ͢Δ • ։ൃ͠΍͢͞ʹ౤ࢿ͢ΔՁ஋͸े෼ʹ͋Δ • ݁Ռͱͯ͠։ൃ૊৫΋αʔϏε΋݈શͳঢ়ଶΛอͯΔ 'JO