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
2.7k
3
Share
Apple WatchのGlanceについて
yidev 第17回勉強会で発表した資料です。
https://atnd.org/events/59014
haranicle
December 20, 2014
More Decks by haranicle
See All by haranicle
戦略的手抜きをするためのデザインシステム運用
haranicle
1
3.7k
bitFlyer ウォレット リニューアルの裏側
haranicle
0
180
多次元宇宙と画面遷移
haranicle
0
410
ハッピーな開発チームを築くために iOSエンジニアがしたこと
haranicle
5
15k
Playground芸
haranicle
6
1.9k
I💖Xcode Plugins
haranicle
0
170
Xcode6のFramework Templateについて
haranicle
2
2.7k
iOS8の Custom Keyboard について
haranicle
2
1.3k
Other Decks in Technology
See All in Technology
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
190
「決め方」の渡し方 / How to hand over the "decision-making process"
pauli
8
1.3k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.9k
ZOZOTOWNリプレイスでのSkills導入までの流れとこれから
zozotech
PRO
4
3.3k
ASTのGitHub CopilotとCopilot CLIの現在地をお話しします/How AST Operates GitHub Copilot and Copilot CLI
aeonpeople
1
220
DIPS2.0データに基づく森林管理における無人航空機の利用状況
naokimuroki
0
190
システムは「動く」だけでは足りない 実装編 - 非機能要件・分散システム・トレードオフをコードで見る
nwiizo
2
310
本番環境でPHPコードに触れずに「使われていないコード」を調べるにはどうしたらよいか?
egmc
1
270
プロダクトを触って語って理解する、チーム横断バグバッシュのすすめ / 20260411 Naoki Takahashi
shift_evolve
PRO
1
270
OBI+APMでお手軽にアプリケーションのオブザーバビリティを手に入れよう
kenshimuto
0
180
試されDATA SAPPORO [LT]Claude Codeで「ゆっくりデータ分析」
ishikawa_satoru
0
350
AIエージェントを構築して感じた、AI時代のCDKとの向き合い方
smt7174
1
160
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Everyday Curiosity
cassininazir
0
190
RailsConf 2023
tenderlove
30
1.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
430
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
96
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
New Earth Scene 8
popppiees
3
2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
A designer walks into a library…
pauljervisheath
211
24k
Building an army of robots
kneath
306
46k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
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