Slide 1

Slide 1 text

"QQMF8BUDIͷ (MBODFʹ͍ͭͯ !IBSBOJDMF

Slide 2

Slide 2 text

ࣗݾ঺հ !IBSBOJDMF ݪҰ࢙ ,B[VTIJ)BSB /55ιϑτ΢ΣΞגࣜձࣾ J04 "OESPJE (SBJMTʜ ݸਓͰ࡞ͬͨ"QQT

Slide 3

Slide 3 text

͓அΓ ͜ͷࢿྉ͸"QQMFͷ Ұൠެ։ࢿྉΛ ݩʹ࡞੒͍ͯ͠·͢ EFNPҎ֎ 9DPEFCFUB ࣌఺ͷ৘ใͰ͢ 9DPEF͕Ξοϓσʔτ͞Εͯ ͍Ζ͍ΖมΘͬͨΒ͝ΊΜͳ͍͞

Slide 4

Slide 4 text

ΞδΣϯμ ✴ (MBODFͱ͸ ✴ (MBODFͷ࡞Γํ ✴ (MBODF*OUFSGBDF(VJEFMJOFT ✴ Ξχϝʔγϣϯ ✴ Ґஔ৘ใ ✴ ͓·͚)BOEPGG

Slide 5

Slide 5 text

(MBODFͱ͸

Slide 6

Slide 6 text

]шƅ ŧŽŕ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

(MBODFͱ͸ ✴ J04Ͱ͍͏௨஌ηϯλʔͷΑ͏ͳ΋ͷ ✴ ֤8BUDI"QQͷॏཁͳ৘ใΛදࣔ͢Δ6* ✴ 8BUDI"QQ͸࠷େͭͷ(MBODFΛ࣋ͭ ✴ جຊతʹૢ࡞͸Ͱ͖ͳ͍දࣔઐ༻ ✴ 8BUDI'BDF ͔Β্ʹεϫΠϓͰදࣔ ✴ (MBODFϖʔδ ը໘શମͰදࣔ ✴ ԣεϫΠϓͰଞͷ(MBODFʹ੾Γସ͑ ✴ λοϓ͢ΔͱରԠ͢Δ8BUDI"QQ͕ىಈ

Slide 9

Slide 9 text

(MBODFͷಈը ✴ IUUQZPVUVCFT#P&GGQD. UNT ✴ IUUQZPVUVCFSXWX;PD, UNT ✴ IUUQZPVUVCF&WTG,*UY* UN

Slide 10

Slide 10 text

(MBODFͷ࡞Γํ

Slide 11

Slide 11 text

(MBODFͷ࡞Γํ Ұ൪؆୯ͳͷ͸ʜ 8BUDI"QQͷλʔήοτΛ࡞Δͱ͖ʹ $IPPTFPQUJPOTGPSZPVSOFXUBSHFU ͷը໘Ͱ *ODMVEF(MBODF4DFOFʹ✓

Slide 12

Slide 12 text

ҎԼ͕࡞੒͞ΕΔ 8BUDI,JU&YUFOTJPOάϧʔϓ಺ʹ (MBODF$POUSPMMFSTXJGU 8BUDI"QQάϧʔϓ಺ͷ4UPSZCPBSE಺ʹ (MBODF*OUFSGBDF 8,*OUFSGBDF$POUSPMMFSͷαϒΫϥεͳͷͰجຊతʹ
 8BUDI"QQͷը໘ͱͰ͖Δ͜ͱ͸ಉ͡ (MBODFͷ࡞Γํ WJBIUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTF JPTEPDVNFOUBUJPO(FOFSBM$PODFQUVBM 8BUDI,JU1SPHSBNNJOH(VJEF 5IF(MBODF$POUSPMMFSIUNMBQQMF@SFGEPDVJE 51$)48 ͜ͷάϧʔϓফͤͳ͍ ͜ͷάϧʔϓফͤͳ͍

Slide 13

Slide 13 text

(MBODF
 *OUFSGBDF(VJEFMJOFT

Slide 14

Slide 14 text

(MBODF*OUFSGBDF(VJEFMJOFT ͙͢ʹ৘ใΛ఻͑ΒΕΔΑ͏ʹઃܭ͠·͢ɻ େྔͷจࣈΛදࣔͯ͠͸͍͚·ͤΜɻ
 άϥϑΟοΫεɺ৭ɺΞχϝʔγϣϯΛద੾ʹ ࢖༻͍ͯͩ͘͠͞ɻ ࠷΋ॏཁͳ৘ใʹয఺Λ౰͍ͯͯͩ͘͞ɻ
 (MBODF͸ΞϓϦʹมΘΔ΋ͷͰ͸͋Γ·ͤΜɻ ॏཁͳ৘ใͷΈΛτϦϛϯάͯ͠දࣔͯͩ͘͠ ͍͞ɻ ΠϯλϥΫςΟϒͳίϯτϩʔϧΛؚΊͳ͍ Ͱ͍ͩ͘͞ɻ

Slide 15

Slide 15 text

(MBODF*OUFSGBDF(VJEFMJOFT ςʔϒϧͱϚοϓͷ࢖༻͸ආ͚ͨ΄͏͕͍͍ Ͱ͢ɻ
 ېࢭ͸͞Ε͍ͯ·ͤΜ͕ɺݶΒΕͨεϖʔε͸ ςʔϒϧɺϚοϓ͸༗༻Ͱ͸͋Γ·ͤΜɻ දࣔ͢Δ৘ใΛλΠϜϦʔʹ͍ͯͩ͘͠͞ɻ Ϣʔβʹ৘ใΛఏڙ͢ΔͨΊʹɺ
 ࣌ࠁ΍Ґஔ৘ใͳͲར༻Ͱ͖Δ͢΂ͯͷϦιʔ εΛ࢖༻͍ͯͩ͘͠͞ɻ

Slide 16

Slide 16 text

ƅшƅ

Slide 17

Slide 17 text

͑ͬ

Slide 18

Slide 18 text

Ξχϝʔγϣϯ Ґஔ৘ใ

Slide 19

Slide 19 text

8BUDI,JUͰ Ͱ͖Μͷ

Slide 20

Slide 20 text

Ξχϝʔγϣϯ

Slide 21

Slide 21 text

Ξχϝʔγϣϯ ✴ 8,*OUFSGBDF*NBHFͰՄೳ ✴ ύϥύϥອըͰ͔͠ͳ͍ ✴ ͭͷύλʔϯ͕͋Δ ✴ ੩తͳը૾Λ࢖༻͢ΔΞχϝʔγϣϯ ✴ ಈతͳը૾Λ࢖༻͢ΔΞχϝʔγϣϯ

Slide 22

Slide 22 text

Ξχϝʔγϣϯ ✴ EFNP

Slide 23

Slide 23 text

੩తͳը૾Λ࢖༻ͨ͠
 Ξχϝʔγϣϯ

Slide 24

Slide 24 text

੩తͳը૾Λ࢖༻ͨ͠Ξχϝʔγϣϯ ✴ 4UPSZCPBSE͚ͩͰ࣮૷͢Δ৔߹ ✴ 8BUDI,JU"QQͷάϧʔϓ಺ ✴ *NBHFTYDBTTFUT಺ʹҎԼͷ໊લͷ*NBHF 4FUΛ࡞੒
 )PHF )PHF )PHF ʜ)PHF/ ✴ 4UPSZCPBSEͰ*NBHFΛ഑ஔ ✴ ഑ஔͨ͠*NBHFͷͰҎԼΛઃఆ ✴ *NBHF)PHF ✴ "OJNBUF:FT ✴ %VSBUJPO޷͖ͳ਺ࣈ େ͖͍΄ͲίϚ͕௕͍ ✴ "OJNBUFPO-PBE✓

Slide 25

Slide 25 text

✴ ࠶ੜ੍ޚ΋Ͱ͖Δ ✴ 8,*OUFSGBDF*NBHF ✴ TUBSU"OJNBUJOH ✴ TUBSU"OJNBUJOH8JUI*NBHFT*O3BOHF
 EVSBUJPOSFQFBU$PVOU ✴ TUPQ"OJNBUJOH ੩తͳը૾Λ࢖༻ͨ͠Ξχϝʔγϣϯ

Slide 26

Slide 26 text

ಈతͳը૾Λ࢖༻ͨ͠ Ξχϝʔγϣϯ

Slide 27

Slide 27 text

✴ 8BUDI,JU&YUFOTJPOͰఆظతʹɺ
 6**NBHFΛಈతʹੜ੒ͯ͠ɺ 8,*OUFSGBDF*NBHFʹTFU*NBHF͢Δ ಈతͳը૾Λ࢖༻ͨ͠Ξχϝʔγϣϯ ఆظతʹ6**NBHFΛੜ੒ 8,*OUFSGBDF*NBHFTFU*NBHF

Slide 28

Slide 28 text

ಈతͳը૾Λ࢖༻ͨ͠Ξχϝʔγϣϯ func generateImage() -> UIImage { UIGraphicsBeginImageContextWithOptions(CGSizeMake(100, 100), false, 0) let context = UIGraphicsGetCurrentContext() func colorValue() -> CGFloat{ return CGFloat(arc4random_uniform(255)) / 255.0 } CGContextSetRGBFillColor(context, colorValue(), colorValue(), colorValue(), 1) CGContextFillRect(context, CGRectMake(0, 0, 100, 100)) let generatedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return generatedImage } ಈతʹ6**NBHFΛੜ੒͢Δ

Slide 29

Slide 29 text

@IBOutlet weak var dynamicImage: WKInterfaceImage! override func awakeWithContext(context: AnyObject?) { super.awakeWithContext(context) var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateImage", userInfo: nil, repeats: true) } func updateImage() { dynamicImage.setImage(generateImage()) } ಈతͳը૾Λ࢖༻ͨ͠Ξχϝʔγϣϯ λΠϚʔͰඵ͓͖ʹ8,*OUFSGBDF*NBHFʹ
 TFU*NBHF͢Δ

Slide 30

Slide 30 text

Ґஔ৘ใ

Slide 31

Slide 31 text

Ґஔ৘ใ ✴ "QQMF8BUDIʹ͸(14͸͍͍ͭͯͳ͍ ✴ J1IPOFͷ(14ͰҐஔ৘ใΛऔಘ͢Δ
 ඞཁ͕͋Δ

Slide 32

Slide 32 text

Ґஔ৘ใ ✴ J04ΞϓϦ ✴ *OGPQMJTUʹҎԼΛ௥ه ✴ /4-PDBUJPO"MXBZT6TBHF%FTDSJQUJPO ✴ ϢʔβʹҐஔ৘ใ΁ͷΞΫηεΛ
 ڐՄͯ͠΋Β͏ ✴ MPDBUJPO.BOBHFSSFRVFTU"MXBZT"VUIPSJ [BUJPO 8BUDI&YUFOTJPO͕J04ͷ
 όοΫάϥ΢ϯυͰಈ͘ͷͰ"MXBZT

Slide 33

Slide 33 text

Ґஔ৘ใ ✴ 8BUDI&YUFOTJPO ✴ $PSF-PDBUJPOͰҐஔ৘ใऔಘ ✴ MPDBUJPO.BOBHFSEJE6QEBUF-PDBUJPOTͰ
 8BUDI"QQͷ.BQΛߋ৽͢Δ

Slide 34

Slide 34 text

Ґஔ৘ใ ✴ σόοάํ๏ γϛϡϨʔλ ✴ J04ΞϓϦΛىಈ͠ɺҐஔ৘ใ΁ͷΞΫηε ΛڐՄ ✴ 9DPEFͷϝχϡʔ%FCVH
 4JNVMBUF-PDBUJPO޷͖ͳ஍ҬΛબ୒ ✴ (MBODFΛىಈ͢Δ4DIFNFΛ࡞੒ͯ͠3VO

Slide 35

Slide 35 text

͓·͚ )BOEPGG

Slide 36

Slide 36 text

)BOEPGG ✴ (MBODFΛλοϓ͢Δͱɺ8BUDI"QQ͕ىಈ ͢Δ ✴ ىಈ࣌ʹදࣔ͢Δ*OUFSGBDF$POUSPMMFSΛࢦఆ ͢Δ͜ͱ͕Ͱ͖Δ ✴ ҎԼͷॱʹ"DUJWJUZΛड͚౉͢
 J04ΞϓϦˠ(MBODF
 ˠ8BUDI"QQͷ೚ҙͷը໘

Slide 37

Slide 37 text

)BOEPGG 8BUDI"QQͷ4UPSZCPBSE͕͜͏ͳ͍ͬͯΔͱ͢Δ

Slide 38

Slide 38 text

)BOEPGG )BOEPGG͢Δ࣌ͷॲཧͷྲྀΕ

Slide 39

Slide 39 text

)BOEPGG ✴ EFNP

Slide 40

Slide 40 text

)BOEPGG (MBODF$POUSPMMFSTXJGU override func awakeWithContext(context: AnyObject?) { super.awakeWithContext(context) // Configure interface objects here. NSLog("%@ awakeWithContext", self) updateUserActivity("net.haranicle.watchHandoff.sample", userInfo: ["hoge":"piyo"]) } )BOEPGGͷ"DUJWJUZͷ*% VTFS*OGP΋ૹΕΔ

Slide 41

Slide 41 text

)BOEPGG 'JSTU*OUFSGBDF$POUSPMMFSTXJGU override func actionForUserActivity(userActivity: [NSObject : AnyObject]?, context: AutoreleasingUnsafeMutablePointer) -> String? { return "secondInterfaceControllerId" } 4FDPOEͷ*%Λ3FUVSO

Slide 42

Slide 42 text

)BOEPGG 8BUDI"QQˠJ04ΞϓϦʹ"DUJWJUZΛ
 ड͚౉͢͜ͱ͸·ͩͰ͖ͳ͍ ͜Μͳײ͡Ͱಈ͘͸ͣʜ

Slide 43

Slide 43 text

·ͱΊ

Slide 44

Slide 44 text

"QQMF8BUDIͷ(MBODFʹ͍ͭͯ ✴ (MBODF͸ΞϓϦͷॏཁͳ৘ใΛදࣔ͢Δ6* ✴ 8BUDI"QQ͸ͭͷ(MBODFΛ࣋ͭ͜ͱ͕Ͱ͖Δ ✴ Ξχϝʔγϣϯ΍Ґஔ৘ใΛ࢖༻͢Δ͜ͱ΋ Ͱ͖Δ ✴ Ξχϝʔγϣϯ͸੩తը૾PSಈతը૾Ͱ࣮ݱ Ͱ͖Δ ✴ J1IPOFͷ(14Λ࢖༻ͯ͠Ґஔ৘ใΛऔಘ͠ද ࣔ͢Δ͜ͱ΋Ͱ͖Δ ✴ )BOEPGG Ͱ(MBODFΛλοϓ࣌ʹىಈ͢Δ *OUFSGBDF$POUSPMMFSΛࢦఆ͢Δ͜ͱ͕Ͱ͖Δ

Slide 45

Slide 45 text

ࢀߟ ✴ "QQMF8BUDI1SPHSBNNJOH(VJEF ✴ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFJPT EPDVNFOUBUJPO(FOFSBM$PODFQUVBM 8BUDI,JU1SPHSBNNJOH(VJEFJOEFYIUNM ✴ 8BUDI,JU'SBNFXPSL3FGFSFODF ✴ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFJPT EPDVNFOUBUJPO8BUDI,JU3FGFSFODF 8BUDI,JU@GSBNFXPSLJOEFYIUNM ✴ 8BUDI,JUͰݱࡏҐஔͷ஍ਤΛදࣔ͢Δ ✴ IUUQRJJUBDPN@UJE@JUFNT EGFFC ✴ "QQMF8BUDIͰॳΊͯొ৔ͨ͠৽6*ʮ(MBODFʯʹ͍ͭͯ ✴ IUUQCMPHIBSBOJDMFOFUHMBODF ✴ 8BUDI,JUͰ)BOEPGG ✴ IUUQCMPHIBSBOJDMFOFUXBUDILJU@IBOEPGG