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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
590
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
180
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
Digitization部 紹介資料
sansan33
PRO
1
6.8k
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
330
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
OpenShiftでllm-dを動かそう!
jpishikawa
0
120
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
310
Featured
See All Featured
Paper Plane
katiecoart
PRO
0
46k
Rails Girls Zürich Keynote
gr2m
96
14k
New Earth Scene 8
popppiees
1
1.5k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
350
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Embracing the Ebb and Flow
colly
88
5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
Designing for Timeless Needs
cassininazir
0
130
Utilizing Notion as your number one productivity tool
mfonobong
3
220
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