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
Apple WatchのGlanceについて
Search
haranicle
December 20, 2014
Technology
3
2.7k
Apple WatchのGlanceについて
yidev 第17回勉強会で発表した資料です。
https://atnd.org/events/59014
haranicle
December 20, 2014
Tweet
Share
More Decks by haranicle
See All by haranicle
戦略的手抜きをするためのデザインシステム運用
haranicle
1
3.6k
bitFlyer ウォレット リニューアルの裏側
haranicle
0
180
多次元宇宙と画面遷移
haranicle
0
400
ハッピーな開発チームを築くために iOSエンジニアがしたこと
haranicle
5
15k
Playground芸
haranicle
6
1.9k
I💖Xcode Plugins
haranicle
0
160
Xcode6のFramework Templateについて
haranicle
2
2.7k
iOS8の Custom Keyboard について
haranicle
2
1.3k
Other Decks in Technology
See All in Technology
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
Webhook best practices for rock solid and resilient deployments
glaforge
2
300
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
Red Hat OpenStack Services on OpenShift
tamemiya
0
110
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
610
Agile Leadership Summit Keynote 2026
m_seki
1
640
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
140
Digitization部 紹介資料
sansan33
PRO
1
6.8k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Navigating Weather and Climate Data
rabernat
0
110
Utilizing Notion as your number one productivity tool
mfonobong
3
220
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
67
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
"QQMF8BUDIͷ (MBODFʹ͍ͭͯ !IBSBOJDMF
ࣗݾհ !IBSBOJDMF ݪҰ࢙ ,B[VTIJ)BSB /55ιϑτΣΞגࣜձࣾ J04 "OESPJE (SBJMTʜ
ݸਓͰ࡞ͬͨ"QQT
͓அΓ ͜ͷࢿྉ"QQMFͷ Ұൠެ։ࢿྉΛ ݩʹ࡞͍ͯ͠·͢ EFNPҎ֎ 9DPEFCFUB ࣌ͷใͰ͢ 9DPEF͕Ξοϓσʔτ͞Εͯ ͍Ζ͍ΖมΘͬͨΒ͝ΊΜͳ͍͞
ΞδΣϯμ ✴ (MBODFͱ ✴ (MBODFͷ࡞Γํ ✴ (MBODF*OUFSGBDF(VJEFMJOFT ✴ Ξχϝʔγϣϯ ✴
Ґஔใ ✴ ͓·͚)BOEPGG
(MBODFͱ
]шƅ ŧŽŕ
None
(MBODFͱ ✴ J04Ͱ͍͏௨ηϯλʔͷΑ͏ͳͷ ✴ ֤8BUDI"QQͷॏཁͳใΛදࣔ͢Δ6* ✴ 8BUDI"QQ࠷େͭͷ(MBODFΛ࣋ͭ ✴ جຊతʹૢ࡞Ͱ͖ͳ͍දࣔઐ༻ ✴
8BUDI'BDF ͔Β্ʹεϫΠϓͰදࣔ ✴ (MBODFϖʔδ ը໘શମͰදࣔ ✴ ԣεϫΠϓͰଞͷ(MBODFʹΓସ͑ ✴ λοϓ͢ΔͱରԠ͢Δ8BUDI"QQ͕ىಈ
(MBODFͷಈը ✴ IUUQZPVUVCFT#P&GGQD. UNT ✴ IUUQZPVUVCFSXWX;PD, UNT ✴ IUUQZPVUVCF&WTG,*UY* UN
(MBODFͷ࡞Γํ
(MBODFͷ࡞Γํ Ұ൪؆୯ͳͷʜ 8BUDI"QQͷλʔήοτΛ࡞Δͱ͖ʹ $IPPTFPQUJPOTGPSZPVSOFXUBSHFU ͷը໘Ͱ *ODMVEF(MBODF4DFOFʹ✓
ҎԼ͕࡞͞ΕΔ 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 ͜ͷάϧʔϓফͤͳ͍ ͜ͷάϧʔϓফͤͳ͍
(MBODF *OUFSGBDF(VJEFMJOFT
(MBODF*OUFSGBDF(VJEFMJOFT ͙͢ʹใΛ͑ΒΕΔΑ͏ʹઃܭ͠·͢ɻ େྔͷจࣈΛද͍͚ࣔͯ͠·ͤΜɻ άϥϑΟοΫεɺ৭ɺΞχϝʔγϣϯΛదʹ ༻͍ͯͩ͘͠͞ɻ ࠷ॏཁͳใʹযΛ͍ͯͯͩ͘͞ɻ (MBODFΞϓϦʹมΘΔͷͰ͋Γ·ͤΜɻ ॏཁͳใͷΈΛτϦϛϯάͯ͠දࣔͯͩ͘͠ ͍͞ɻ ΠϯλϥΫςΟϒͳίϯτϩʔϧΛؚΊͳ͍
Ͱ͍ͩ͘͞ɻ
(MBODF*OUFSGBDF(VJEFMJOFT ςʔϒϧͱϚοϓͷ༻ආ͚ͨ΄͏͕͍͍ Ͱ͢ɻ ېࢭ͞Ε͍ͯ·ͤΜ͕ɺݶΒΕͨεϖʔε ςʔϒϧɺϚοϓ༗༻Ͱ͋Γ·ͤΜɻ දࣔ͢ΔใΛλΠϜϦʔʹ͍ͯͩ͘͠͞ɻ ϢʔβʹใΛఏڙ͢ΔͨΊʹɺ ࣌ࠁҐஔใͳͲར༻Ͱ͖Δͯ͢ͷϦιʔ εΛ༻͍ͯͩ͘͠͞ɻ
ƅшƅ
͑ͬ
Ξχϝʔγϣϯ Ґஔใ
8BUDI,JUͰ Ͱ͖Μͷ
Ξχϝʔγϣϯ
Ξχϝʔγϣϯ ✴ 8,*OUFSGBDF*NBHFͰՄೳ ✴ ύϥύϥອըͰ͔͠ͳ͍ ✴ ͭͷύλʔϯ͕͋Δ ✴ ੩తͳը૾Λ༻͢ΔΞχϝʔγϣϯ ✴
ಈతͳը૾Λ༻͢ΔΞχϝʔγϣϯ
Ξχϝʔγϣϯ ✴ EFNP
੩తͳը૾Λ༻ͨ͠ Ξχϝʔγϣϯ
੩తͳը૾Λ༻ͨ͠Ξχϝʔγϣϯ ✴ 4UPSZCPBSE͚ͩͰ࣮͢Δ߹ ✴ 8BUDI,JU"QQͷάϧʔϓ ✴ *NBHFTYDBTTFUTʹҎԼͷ໊લͷ*NBHF 4FUΛ࡞ )PHF )PHF
)PHF ʜ)PHF/ ✴ 4UPSZCPBSEͰ*NBHFΛஔ ✴ ஔͨ͠*NBHFͷͰҎԼΛઃఆ ✴ *NBHF)PHF ✴ "OJNBUF:FT ✴ %VSBUJPO͖ͳࣈ େ͖͍΄ͲίϚ͕͍ ✴ "OJNBUFPO-PBE✓
✴ ࠶ੜ੍ޚͰ͖Δ ✴ 8,*OUFSGBDF*NBHF ✴ TUBSU"OJNBUJOH ✴ TUBSU"OJNBUJOH8JUI*NBHFT*O3BOHF EVSBUJPOSFQFBU$PVOU ✴
TUPQ"OJNBUJOH ੩తͳը૾Λ༻ͨ͠Ξχϝʔγϣϯ
ಈతͳը૾Λ༻ͨ͠ Ξχϝʔγϣϯ
✴ 8BUDI,JU&YUFOTJPOͰఆظతʹɺ 6**NBHFΛಈతʹੜͯ͠ɺ 8,*OUFSGBDF*NBHFʹTFU*NBHF͢Δ ಈతͳը૾Λ༻ͨ͠Ξχϝʔγϣϯ ఆظతʹ6**NBHFΛੜ 8,*OUFSGBDF*NBHFTFU*NBHF
ಈతͳը૾Λ༻ͨ͠Ξχϝʔγϣϯ 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Λੜ͢Δ
@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͢Δ
Ґஔใ
Ґஔใ ✴ "QQMF8BUDIʹ(14͍͍ͭͯͳ͍ ✴ J1IPOFͷ(14ͰҐஔใΛऔಘ͢Δ ඞཁ͕͋Δ
Ґஔใ ✴ J04ΞϓϦ ✴ *OGPQMJTUʹҎԼΛه ✴ /4-PDBUJPO"MXBZT6TBHF%FTDSJQUJPO ✴ ϢʔβʹҐஔใͷΞΫηεΛ ڐՄͯ͠Β͏
✴ MPDBUJPO.BOBHFSSFRVFTU"MXBZT"VUIPSJ [BUJPO 8BUDI&YUFOTJPO͕J04ͷ όοΫάϥϯυͰಈ͘ͷͰ"MXBZT
Ґஔใ ✴ 8BUDI&YUFOTJPO ✴ $PSF-PDBUJPOͰҐஔใऔಘ ✴ MPDBUJPO.BOBHFSEJE6QEBUF-PDBUJPOTͰ 8BUDI"QQͷ.BQΛߋ৽͢Δ
Ґஔใ ✴ σόοάํ๏ γϛϡϨʔλ ✴ J04ΞϓϦΛىಈ͠ɺҐஔใͷΞΫηε ΛڐՄ ✴ 9DPEFͷϝχϡʔ%FCVH
4JNVMBUF-PDBUJPO͖ͳҬΛબ ✴ (MBODFΛىಈ͢Δ4DIFNFΛ࡞ͯ͠3VO
͓·͚ )BOEPGG
)BOEPGG ✴ (MBODFΛλοϓ͢Δͱɺ8BUDI"QQ͕ىಈ ͢Δ ✴ ىಈ࣌ʹදࣔ͢Δ*OUFSGBDF$POUSPMMFSΛࢦఆ ͢Δ͜ͱ͕Ͱ͖Δ ✴ ҎԼͷॱʹ"DUJWJUZΛड͚͢ J04ΞϓϦˠ(MBODF
ˠ8BUDI"QQͷҙͷը໘
)BOEPGG 8BUDI"QQͷ4UPSZCPBSE͕͜͏ͳ͍ͬͯΔͱ͢Δ
)BOEPGG )BOEPGG͢Δ࣌ͷॲཧͷྲྀΕ
)BOEPGG ✴ EFNP
)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ૹΕΔ
)BOEPGG 'JSTU*OUFSGBDF$POUSPMMFSTXJGU override func actionForUserActivity(userActivity: [NSObject : AnyObject]?, context:
AutoreleasingUnsafeMutablePointer<AnyObject?>) -> String? { return "secondInterfaceControllerId" } 4FDPOEͷ*%Λ3FUVSO
)BOEPGG 8BUDI"QQˠJ04ΞϓϦʹ"DUJWJUZΛ ड͚͢͜ͱ·ͩͰ͖ͳ͍ ͜Μͳײ͡Ͱಈͣ͘ʜ
·ͱΊ
"QQMF8BUDIͷ(MBODFʹ͍ͭͯ ✴ (MBODFΞϓϦͷॏཁͳใΛදࣔ͢Δ6* ✴ 8BUDI"QQͭͷ(MBODFΛ࣋ͭ͜ͱ͕Ͱ͖Δ ✴ ΞχϝʔγϣϯҐஔใΛ༻͢Δ͜ͱ Ͱ͖Δ ✴ Ξχϝʔγϣϯ੩తը૾PSಈతը૾Ͱ࣮ݱ
Ͱ͖Δ ✴ J1IPOFͷ(14Λ༻ͯ͠ҐஔใΛऔಘ͠ද ࣔ͢Δ͜ͱͰ͖Δ ✴ )BOEPGG Ͱ(MBODFΛλοϓ࣌ʹىಈ͢Δ *OUFSGBDF$POUSPMMFSΛࢦఆ͢Δ͜ͱ͕Ͱ͖Δ
ࢀߟ ✴ "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