Slide 1

Slide 1 text

"QQMF͕ ΍Γ͍ͨ์୊ 4XJGU"UUSJCVUFT

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ೳొཁ !OPUPSPJE w J04ΞϓϦ։ൃऀ w ԰߸͍Γ·͢ిࢉاը w !OPUPSPJE w !JSJNBTV w ࠷ۙͷಈ޲ w ϒϩά࡮৽͠·ͨ͠

Slide 4

Slide 4 text

ॆిใࠂ͞Μ #BUUFSFDFJWFS w όοςϦʔϞχλʔ ϢʔςΟϦςΟʔ w ࠷େ୆ ࣮ػϦϞʔτ୆ w ख࣋ͪͷJ1IPOF͔Βଞʹ͍࣋ͬͯΔ J1IPOF J1BEͳͲͷػثͷόοςϦʔঢ়ଶ֬ ೝՄೳ w ࣗ୐ʹ͋ΔJ1IPOFͷόοςϦʔঢ়ଶ֬ೝՄ ೳ

Slide 5

Slide 5 text

ॆిใࠂ͞Μ #BUUFSFDFJWFS w "QQMF8BUDIରԠ w $PNQMJDBUJPOTରԠ w ॆి׬ྃ௨஌ w ॆి׬ྃΛ఻͑ͯ͘ΕΔ௨஌Λ௥Ճ w ҎԼʹࢦఆ͢Δ͜ͱͰόοςϦʔΛέ Ξ͢Δ͜ͱ͕Մೳ w Կ͔ͱߴ͍J1IPOFΛ௕࣋ͪͤ͞Δͷʹ༗༻

Slide 6

Slide 6 text

࿩͢͜ͱ w 4XJGU"UUSJCVUFTͷେ࿮ w 4XJGU6*ͱ4XJGU"UUSJCVUFTͷؔ܎ w "QQMFͷͱΓ͏Δಈ͖Λ༧ଌ͢Δ

Slide 7

Slide 7 text

࿩͞ͳ͍͜ͱ w 4XJGU"UUSJCVUFTͷৄࡉ w ιʔείʔυΛ࢖ͬͨղઆ

Slide 8

Slide 8 text

୊໨ w 4XJGU6*Ͱઆ໌ͮ͠Β͍!ఆٛ w 4XJGU"UUSJCVUFTΛେ࿮Ͱ෼͚ͯΈΔ w 4XJGU"UUSJCVUFT͔ΒݟΔ4XJGUͷਐԽ w ·ͱΊ

Slide 9

Slide 9 text

4XJGU6*Ͱઆ໌ͮ͠Β͍!ఆٛ

Slide 10

Slide 10 text

J045FDI#MPH JSJNBTVDPN ઈࢍ౤ߘதͰ͢

Slide 11

Slide 11 text

4XJGU6* J04ΞϓϦΛओʹ౤ߘ

Slide 12

Slide 12 text

ϒϩάهࣄΛ ݕ౼͍ͯͨ͋͠Δ೔

Slide 13

Slide 13 text

TextFieldͷهࣄΛॻ͜͏

Slide 14

Slide 14 text

import SwiftUI struct ContentView: View { @State var myfield = "" @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var var body: some View { VStack { Spacer() TextField("Label", text: $my .padding(EdgeInsets(top: .background( Rectangle() .stroke(Color.gr ) .padding() TextField("Label", text: $my .padding(EdgeInsets(top:

Slide 15

Slide 15 text

import SwiftUI struct ContentView: View { @State var myfield = "" @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var @ScaledMetric(relativeTo: .body) var var body: some View { VStack { Spacer() TextField("Label", text: $my .padding(EdgeInsets(top: .background( Rectangle() .stroke(Color.gr ) .padding() TextField("Label", text: $my .padding(EdgeInsets(top:

Slide 16

Slide 16 text

!4UBUF !4DBMF.FUSJD ͱ͸Կ

Slide 17

Slide 17 text

!ఆٛʹ͍ͭͯ આ໌ͨ͜͠ͱ͕ͳ͍ɻ

Slide 18

Slide 18 text

ͦ΋ͦ΋!ఆٛͱ͍͏ ໊শͰ͢Βͳ͍ɻ

Slide 19

Slide 19 text

!ఆٛͱ͸ͳΜͳͷ͔

Slide 20

Slide 20 text

QSPQFSUZ8SBQQFS ωλόϨ ͩΑɻ

Slide 21

Slide 21 text

ͦΜͳࣄ͸ Θ͔͍ͬͯΔͷͩΑɻ

Slide 22

Slide 22 text

!ఆٛपΓେ࿮Ͱௐ΂ͯ "QQMFͷ܏޲Λ஌Γ͍ͨɻ

Slide 23

Slide 23 text

4XJGU"UUSJCVUFΛେ࿮Ͱ ·ͱΊ͍ͯΔ

Slide 24

Slide 24 text

!ఆٛͷਖ਼໊ࣜশ͸ 4XJGU"UUSJCVUFT

Slide 25

Slide 25 text

4XJGU"UUSJCVUFࢀߟαΠτ w 4XJGUͷBUUSJCVUFશղઆʛશछ2JJUB w IUUQTRJJUBDPNTIUOLHNJUFNTDCBCDECD w "UUSJCVUFTŠ5IF4XJGU1SPHSBNNJOH-BOHVBHF 4XJGU w IUUQTEPDTTXJGUPSHTXJGUCPPL3FGFSFODF.BOVBM "UUSJCVUFTIUNM

Slide 26

Slide 26 text

4XJGU"UUSJCVUFTᶃ 4XJGUʹ͸ɺએݴʹద༻͞ΕΔଐੑͱܕʹద ༻͞ΕΔଐੑͷछྨ͕͋Γ·͢ɻଐੑ͸ɺ એݴ·ͨ͸ܕʹؔ͢Δ௥Ճ৘ใΛఏڙ͠· ͢ɻ %FFQ-຋༁ ɻ

Slide 27

Slide 27 text

4XJGU"UUSJCVUFTᶄ • @attribute name • @attribute name(attribute arguments)

Slide 28

Slide 28 text

4XJGU"UUSJCVUFTᶅ J044%,࣌఺Ͱछྨ

Slide 29

Slide 29 text

BWBJMBCMF JOMJOBCMF PCKD 6*"QQMJDBUJPO.BJO VOLOPXO EJTDBSEBCMF3FTVMU NBJO PCKD.FNCFST VTBCMF'SPN*OMJOF EZOBNJD$BMMBCMF OPOPCKD QSPQFSUZ8SBQQFS XBSO@VORVBMJ fi FE@BD DFTT EZOBNJD.FNCFS-P PLVQ /4"QQMJDBUJPO.BJO SFTVMU#VJMEFS BVUPDMPTVSF GSP[FO /4$PQZJOH SFRVJSFT@TUPSFE@QSP QFSUZ@JOJUT DPOWFOUJPO (,*OTQFDUBCMF /4.BOBHFE UFTUBCMF FTDBQJOH

Slide 30

Slide 30 text

ެࣜͷϖʔδͰ͸ΞϧϑΝϕοτॱ ಛʹάϧʔϓԽ͞Ε͍ͯͳ͍

Slide 31

Slide 31 text

ଟ͍ͷͰେ࿮Ͱ෼ྨͯ͠Έͨ

Slide 32

Slide 32 text

େ࿮Ͱ෼ྨᶃ B ઌୡݴޠͱͷޓ׵ੑ C 4XJGUݴޠͷ࢓༷Λิ଍͢Δ΋ͷ D ϑϨʔϜϫʔΫ։ൃͷαϙʔτ E 4UPSZCPBSETʹؔ͢Δಛघࣄ৘ʹΑΔ΋ͷ F ݻ༗ϑϨʔϜϫʔΫ΁ͷରԠ G ֎తͳ࢓༷มߋʹରԠ͢Δඞཁ͕͋Δ΋ͷ

Slide 33

Slide 33 text

େ࿮Ͱ෼ྨᶄ H Ϗϧυ࣌ͷνϡʔχϯάΛ໌ࣔ͢Δ΋ͷ I ςετ࣌ͷརศੑΛਤΔ΋ͷ J ஗ԆධՁɾಈతࢀরΛಋೖ͍ͨ͠΋ͷ K ଞݴޠͱͷݺͼग़͠ํ๏Λॊೈʹ͢Δ΋ͷ L 4XJGUݴޠࣗମΛ֦ு͢Δ΋ͷ

Slide 34

Slide 34 text

Bઌୡݴޠͱͷޓ׵ੑ w $ݴޠΛݺͼग़͠Մೳʹ 0CKFDUJF$Λݺͼग़͠Մೳʹ w ؔ਺ϙΠϯλͷޓ׵ੑࢦఆ !DPOWFOUJPO w ໭Γ஋͕͋Δ͕ෆཁѻ͍ʹରԠ͢ΔͨΊ !EJTDBSEBCMF3FTVMU w 0CKFDUJWF$ͷϓϩύςΟͷίϐʔଐੑରԠ !/4$PQZJOH w NBJOؔ਺ͷӅṭ !6*"QQMJDBUJPO.BJO !/4"QQMJDBUJPO.BJO w ϚϧνϓϥοτϑΥʔϜʹ΋ରԠͨ͠NBJOؔ਺ͷӅṭ !NBJO

Slide 35

Slide 35 text

C4XJGUݴޠͷ࢓༷Λิ଍͢Δ΋ͷ w είʔϓ֎Ͱ΋Ϋϩʔδϟʔอ࣋Λ໌ࣔ͢Δ΋ͷ !FTDBQJOH

Slide 36

Slide 36 text

DϑϨʔϜϫʔΫ։ൃͷαϙʔτ w ϑϨʔϜϫʔΫར༻ऀʹඇਪ঑Ͱ͋Δ͜ͱΛࣔ͢(@available) w SwiftͰ࡞੒͞ΕͨϑϨʔϜϫʔΫ w ʙΛObjectie-C͔Βݺͼग़͠Մೳʹ(@objc) w ʙΛObjective-C͔Βݺͼग़͠ෆՄʹ(@nonobjc) w ʙΛObjective-C͔ΒҰׅͰݺͼग़͠Մೳʹ(@objcMembers) w τοϓϨϕϧͷΦϒδΣΫτ͕ଞϑϨʔϜϫʔΫͱࠞࡏΛආ͚Δ(@warn_unquali fi ed_access) w ໌ࣔతʹকདྷόʔδϣϯͰͷվมΛ੍ݶ͢Δ΋ͷ(@frozen)

Slide 37

Slide 37 text

E4UPSZCPBSETʹؔ͢Δಛघࣄ৘ʹΑΔ΋ͷ w 4XJGUݴޠͷݫີ͔͞Βݴ͏ͱ*OUFSGBDF#VJMEFSͷ"DUJPO 0VUMFU͸͔ͳΓ ಛघͳಈ͖ w @IBAction w @IBOutlet w @IBDesignable w @IBInspectable w @IBSegueAction

Slide 38

Slide 38 text

Fݻ༗ϑϨʔϜϫʔΫ΁ͷରԠ w (BNF,JUʹରԠ͢Δ΋ͷ !(,*OTQFDUBCMF w $PSF%BUBʹରԠ͢Δ΋ͷ !/4.BOBHFE w !SFRVJSFT@TUPSFE@QSPQFSUZ@JOJUT

Slide 39

Slide 39 text

G֎తͳ࢓༷มߋʹରԠ͢Δඞཁ͕͋Δ΋ͷ w ྻڍʹະ஌ͷఆؚ͕ٛ·Εͨ৔߹ͷ৚݅هड़ !VOLOPXO

Slide 40

Slide 40 text

HϏϧυ࣌ͷνϡʔχϯάΛ໌ࣔ͢Δ΋ͷ w ΠϯϥΠϯల։ʹؔ͢Δ΋ͷ(@inlinable) w ΠϯϥΠϯల։಺Ͱͷར༻ʹ੍ݶ͢Δ΋ͷ(@usableFromInline)

Slide 41

Slide 41 text

Iςετ࣌ͷརศੑΛਤΔ΋ͷ w ςετ࣌ʹΞΫηεՄೳͱ͢Δ(@testable)

Slide 42

Slide 42 text

J஗ԆධՁΛಋೖ͍ͨ͠΋ͷ w Ҿ਺Ͱ౉͞Εͨ஋ΛΫϩʔδϟʔԽ͠஗ԆධՁͤ͞Δ(@autoclosure)

Slide 43

Slide 43 text

Kଞݴޠͱͷݺͼग़͠ํ๏Λॊೈʹ͢Δ΋ͷ w ߏ଄ମΛॊೈͳҾ਺Ͱݺͼग़ͤΔ༷ʹ͢Δ΋ͷ(@dynamicCallable) w ߏ଄ମΛ࣮૷࣌ʹଘࡏ͠ͳ͍ϓϩύςΟ΁ΞΫηεՄೳͱ͢Δ΋ͷ (@dynamicMemberLookup)

Slide 44

Slide 44 text

LݴޠࣗମΛ֦ு͢Δ΋ͷ w ม਺ʹ෇ՃͰ͖Δ4XJGU"UUSJCVUFΛ֦ு͢Δ !QSPQFSUZ8SBQQFS w ؔ਺ͷ໭Γ஋Λ༧໿ݴޠʹ·Ͱհೖ͠ػೳ֦ு͢Δ΋ͷ(@resultBuilder)

Slide 45

Slide 45 text

4XJGU"UUSJCVUFTͷҹ৅͸ ࡶଟͳػೳͷू߹ʹݟ͑Δ

Slide 46

Slide 46 text

ࡶଟ͕ͩ਺Λҙࣝ͠ͳ͍ͷ͸ ༻్͝ͱ8FCͰݕࡧͯ͠࢖͏

Slide 47

Slide 47 text

4XJGU"UUSJCVUFʹݴޠࣗମΛ֦ு͢Δ ػೳ͕૿͑ͨ͜ͱͰݕࡧΩʔϫʔυΛ બͿͷʹ೉ّ

Slide 48

Slide 48 text

4XJGU"UUSJCVUFT͔ΒݟΔ 4XJGUͷਐԽ

Slide 49

Slide 49 text

छʹ෼͚͕ͨ

Slide 50

Slide 50 text

छͰ΋ଟ͍Θ

Slide 51

Slide 51 text

छ͔ΒछΛϐοΫΞοϓ

Slide 52

Slide 52 text

4XJGUਐԽͷྺ࢙ᶃ w 4XJGUॳظ w !*#0VUMFU !*#"DUJPO w $ݴޠɺ0CKFDUJWF$ͷػೳݺͼग़͠ɺ4%,ରԠ

Slide 53

Slide 53 text

Bઌୡݴޠͱͷޓ׵ੑ w $ݴޠΛݺͼग़͠Մೳʹ 0CKFDUJF$Λݺͼग़͠Մೳʹ w ؔ਺ϙΠϯλͷޓ׵ੑࢦఆ !DPOWFOUJPO w ໭Γ஋͕͋Δ͕ෆཁѻ͍ʹରԠ͢ΔͨΊ !EJTDBSEBCMF3FTVMU w 0CKFDUJWF$ͷϓϩύςΟͷίϐʔଐੑରԠ !/4$PQZJOH w NBJOؔ਺ͷӅṭ !6*"QQMJDBUJPO.BJO !/4"QQMJDBUJPO.BJO w ϚϧνϓϥοτϑΥʔϜʹ΋ରԠͨ͠NBJOؔ਺ͷӅṭ !NBJO

Slide 54

Slide 54 text

E4UPSZCPBSETʹؔ͢Δಛघࣄ৘ʹΑΔ΋ͷ w 4XJGUݴޠͷݫີ͔͞Βݴ͏ͱ*OUFSGBDF#VJMEFSͷ"DUJPO 0VUMFU͸͔ͳΓ ಛघͳಈ͖ w @IBAction w @IBOutlet w @IBDesignable w @IBInspectable w @IBSegueAction

Slide 55

Slide 55 text

4XJGUਐԽͷྺ࢙ᶄ w 4XJGU࢓༷҆ఆظ w 4XJGUͷ࢓༷͕ݻ·Γ࢝Ί֦ுػೳ͕4XJGU"UUSJCVUF΁௥Ճ͢ΔΑ͏ʹ w 4XJGU͚ͩͰϑϨʔϜϫʔΫ࣮૷Մೳʹ

Slide 56

Slide 56 text

DϑϨʔϜϫʔΫ։ൃͷαϙʔτ w ϑϨʔϜϫʔΫར༻ऀʹඇਪ঑Ͱ͋Δ͜ͱΛࣔ͢(@available) w SwiftͰ࡞੒͞ΕͨϑϨʔϜϫʔΫ w ʙΛObjectie-C͔Βݺͼग़͠Մೳʹ(@objc) w ʙΛObjective-C͔Βݺͼग़͠ෆՄʹ(@nonobjc) w ʙΛObjective-C͔ΒҰׅͰݺͼग़͠Մೳʹ(@objcMembers) w τοϓϨϕϧͷΦϒδΣΫτ͕ଞϑϨʔϜϫʔΫͱࠞࡏΛආ͚Δ(@warn_unquali fi ed_access) w ໌ࣔతʹকདྷόʔδϣϯͰͷվมΛ੍ݶ͢Δ΋ͷ(@frozen)

Slide 57

Slide 57 text

4XJGUਐԽͷྺ࢙ᶅ w ࠷ۙ ʙ w ଞݴޠͰͷݺͼग़͠Λ༻ҙʹ͢ΔͨΊಈతࢀরΛ࠶औΓࠐΈ w !ఆٛΛ֦ுͰ͖ΔΑ͏ʹ w ໭Γ஋ͷ֦ு ༧໿ޠ·Ͱؔ༩͢Δڍಈมߋ͕Մೳ

Slide 58

Slide 58 text

4XJGUͷΞοϓσʔτྺ࢙ᶅ w ࠷ۙ ʙ w ଞݴޠͰͷݺͼग़͠Λ༻ҙʹ͢ΔͨΊಈతࢀরΛ࠶औΓࠐΈ w !ఆٛΛ֦ுͰ͖ΔΑ͏ʹ w ໭Γ஋ͷ֦ு ༧໿ޠ·Ͱؔ༩͢Δڍಈมߋ͕Մೳ ॏཁ

Slide 59

Slide 59 text

LݴޠࣗମΛ֦ு͢Δ΋ͷ w ม਺ʹ෇ՃͰ͖Δ4XJGU"UUSJCVUFΛ֦ு͢Δ !QSPQFSUZ8SBQQFS w ؔ਺ͷ໭Γ஋Λ༧໿ݴޠʹ·Ͱհೖ͠ػೳ֦ு͢Δ΋ͷ(@resultBuilder)

Slide 60

Slide 60 text

4XJGU6*Ͱͷ4XJGU"UUSJCVUF w !SFTVMU#VJMEFS !@GVODUJPO#VJMEFS͔Β໊শมߋ w 4XJGUͷ༧໿ޠɺฒͼ·Ͱؔ༩ 4XJGU6*্ͰͷJGจ w هड़ϧʔϧΛڧ੍ 4XJGU6*Ͱ͸ݴޠͷ%4-Խʹ࢖༻ w هड़ΤϥʔΛίϯύΠϥϨϕϧͰิ଍Ͱ͖Δ w !QSPQFSUZ8SBQQFS w ม਺ʹ෇༩͢Δ4XJGU"UUSJCVUFΛ֦ு ಠࣗఆٛͷ௥Ճ w 4XJGU6*Ͱ͸ม਺ͷମࡋΛอͪͭͭ୺తʹػೳ෇༩ʹ࢖༻

Slide 61

Slide 61 text

struct ContentView: View { @State var isRounded = true // propertyWrapper // ViewͷBody͸1ͭͷView͔͠هड़Ͱ͖ͳ͍ var body: some View { // isRounded ʙ else ·Ͱ͸resultBuilderʹΑΔهड़ϧʔϧͰ͋ͬͯݴޠͷifจͱ͸ҟͳΔ // ৗʹܕ͸ҧ͏͕1ͭͷViewΛฦ͢ if isRounded { RoundedRectangle(cornerRadius: 20) .foregroundColor(.orange) .frame(width: 72, height: 72) .onTapGesture { isRounded = !isRounded } } else { Rectangle() .foregroundColor(.blue) .frame(width: 72, height: 72) .onTapGesture { isRounded = !isRounded } } } }

Slide 62

Slide 62 text

struct ContentView: View { @State var isRounded = true // propertyWrapper // ViewͷBody͸1ͭͷView͔͠هड़Ͱ͖ͳ͍ var body: some View { // isRounded ʙ else ·Ͱ͸resultBuilderʹΑΔهड़ϧʔϧͰ͋ͬͯݴޠͷifจͱ͸ҟͳΔ // ৗʹܕ͸ҧ͏͕1ͭͷViewΛฦ͢ if isRounded { RoundedRectangle(cornerRadius: 20) .foregroundColor(.orange) .frame(width: 72, height: 72) .onTapGesture { isRounded = !isRounded } } else { Rectangle() .foregroundColor(.blue) .frame(width: 72, height: 72) .onTapGesture { isRounded = !isRounded } } } } !QSPQFSUZ8SBQQFS !SFTVMU#VJMEFS

Slide 63

Slide 63 text

։ൃऀ͔Βݟͨ 4XJGUͷΠϝʔδ ˡ$ݴޠɺ0CKFDUJWF$΋αϙʔτ͢Δ৽ݴޠ ˡݴޠػೳ͕ॆ࣮͠ɺ'31Ͱ࠷৽ϓϩάϥϛϯάٕ ज़ΛಋೖͰ͖ΔΑ͏ʹͳͬͨɻ 4XJGU6* ݴޠػೳ͕ҙਤ͠ͳ͍ํ޲Ͱ֦ு

Slide 64

Slide 64 text

"QQMF͕΍Γ͍ͨ์୊4XJGU • ݴޠతʹ͸Web։ൃऀʹ਌࿨ੑ͕͋Δ༷ʹઃܭ • FRPʹ઀ۙ͢ΔΘ͚Ͱ΋ͳ͍(ϦΞΫςΟϒϓϩάϥϛϯά) • OOPʹݻࣥ͢ΔΘ͚Ͱ΋ͳ͍(ΦϒδΣΫτࢦ޲) • ݴޠ࢓༷͸AppleҎ֎΋αϙʔτ͢Δ • (UbuntuɺCentOSɺAmazon Linux, Windows10) • ݴޠ࢓༷͕ݻ·ͬͯ΋Apple͸૊ΈࠐΈ͍ͨػೳ͸૊ΈࠐΉ

Slide 65

Slide 65 text

͔͜͜Β͸༧ଌ

Slide 66

Slide 66 text

"QQMFͷ΍Γ͍ͨ์୊͸ Ͳ͜ʹ޲͔͏ͷ͔

Slide 67

Slide 67 text

৽σόΠε

Slide 68

Slide 68 text

΋ͪΖΜͦ͏ͩ

Slide 69

Slide 69 text

΋ͬͱ਎ۙͳଘࡏ͕ ͍Δ͡Όͳ͍͔ɻ

Slide 70

Slide 70 text

8FC"TTFNCMZ͔Βͷ 8FCϑϩϯτΤϯυ ରԠ

Slide 71

Slide 71 text

·ͱΊ w 4XJGU"UUSJCVUFTʹ͍ͭͯେ࿮Ͱ·ͱΊ·ͨ͠ w 4XJGUͷݴޠ࢓༷͔Β֎ΕΔػೳ͕ࡶଟʹ4XJGU"UUSJCVUFTʹ௥Ճ͞ Ε͍ͯ·͢ w 4XJGUͷݴޠ࢓༷ʹؔ܎ͳ͘"QQMF͸ࣗ෼ͷ΍Γ͍ͨػೳΛͶ͡ࠐΈ ·͢

Slide 72

Slide 72 text

IUUQTJSJNBTVDPN <13>#MPHਵ࣌౤ߘத

Slide 73

Slide 73 text

ࢀߟ w 4XJGUͷBUUSJCVUFશղઆʛશछ2JJUB w IUUQTRJJUBDPNTIUOLHNJUFNTDCBCDECD w "UUSJCVUFTŠ5IF4XJGU1SPHSBNNJOH-BOHVBHF 4XJGU w IUUQTEPDTTXJGUPSHTXJGUCPPL3FGFSFODF.BOVBM"UUSJCVUFTIUNM w ʲ4XJGUʳ1SPQFSUZ8SBQQFSTͱ͸ʁc଎Ͱา͘ώτ w IUUQTXXXOEXBMLFSDPNTXJGUQSPQFSUZXSBQQFST w 'VODUJPO#VJMEFSͰ༡΅͏2JJUB w IUUQTRJJUBDPNUBSVOPOJUFNTFEBDDCE w 4XJGUͰ3FBDUJWF1SPHSBNNJOH2JJUB w IUUQTRJJUBDPNTIPIFJZPLPZBNBJUFNTBBBCE