ããã«ã¡ã¯ãHabrïŒ iOSçšã®Mail.Ru Mailã¢ããªãæè¿æŽæ°ããŸããã Apple WatchããµããŒãããããã«ãªããŸããã ä»æ¥ã¯ããã®æç¹ã§ãŸã ãªãªãŒã¹ãããŠããªãæéã«ã¢ããªã±ãŒã·ã§ã³ãéçºãããšãã«ééããããšãããã³SDKã®ããããªãºã ãšãã©ã€ããããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãã§ããªãããšã«å¯ŸåŠããæ¹æ³ã«ã€ããŠã話ããŸãã
æèšã®ã€ã³ã¿ãŒãã§ãŒã¹ãéçºããæ©èœ
æèšã®ã³ãŒããæžãããšã¯ãiOSã®ã³ãŒããæžãããšãšå€§å·®ãããŸãããçµå±ã®ãšããããã¹ãŠã®ããžãã¯ã¯é»è©±ã§å®è¡ãããŸãã ãã ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®éçºã«é¢ããŠã¯ãäºæ ã¯è€éã«ãªããŸããæèšã®ããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ã®ã¿äœ¿çšãããæ°ããã¯ã©ã¹ãç»å ŽããŸããã çŸæç¹ã§ã¯ããããã®ã¯ã©ã¹ã¯11åãããããŸããããããã§ã¯iOSã®æåã®ããŒãžã§ã³ãæãåºãããšãã§ããŸãã ç§ãã¡ã¯çãå°æ¥ã®ããŒãžã§ã³ã§ãã®æ°ãã©ã®ããã«å¢ããããç¥ã£ãŠãããåæ§ã®éåœãæèšçšã®SDKãåŸ ã£ãŠããããšãé¡ã£ãŠããŸãã ãããŸã§ã®éãæèšçšUIã®éçºã®çŸå®ã¯æ¬¡ã®ãšããã§ãã
æèšã³ã³ããŒãã³ãã®ã¿ã䜿çšãã
æèšã®ã€ã³ã¿ãŒãã§ãŒã¹ãéçºããéã«æåã«æãã倱æã¯ã以åã«æºåž¯é»è©±çšã«éçºããçŸãããã¿ã³ãã¢ãã¡ãŒã·ã§ã³ãç»é¢ããã¹ãŠå¿ããªããã°ãªããªãããšã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ã¯æèšã®èŠèŠçãªã³ã³ããŒãã³ãã®ã¿ã䜿çšãããããããããåå©çšããããšã¯ã§ããŸããã
æ°ããã¬ã€ã¢ãŠãã¢ãã«
æè¿ãAppleã¯æºåž¯é»è©±ã«æ°ããã¬ã€ã¢ãŠãã¢ãã«ãå°å ¥ããŸããã 以åã¯ãããŸããŸãªèŠçŽ ã®ç¹å®ã®åº§æšãšãç»é¢ãåŒã䌞ã°ããããšãã«èŠçŽ ãåŒã䌞ã°ãããã«ãŒã«ãèšå®ããããšãå¯èœã§ããã ããããiOS 6以éã§ã¯ãèªåã¬ã€ã¢ãŠããšåŒã°ããæ°ããã¢ãã«ãç»å Žããããããã¹ãŠã®ã«ãŒã«ãããæè»ã«èšå®ã§ããããã«ãªããŸããã
èªåã¬ã€ã¢ãŠãã¯æèšã§ã䜿çšã§ããããšãäºæ³ãããŠããŸããããæèšçšSDKã«ã¯3çªç®ã®ãŸã£ããæ°ããã¬ã€ã¢ãŠãã¢ãã«ãç»å ŽããŸããã ããã¯ãAndroid SDKã§äœ¿çšããããã®ã«äŒŒãŠããŸãïŒã€ã³ã¿ãŒãã§ãŒã¹å šäœã¯ãåçŽæ¹åãŸãã¯æ°Žå¹³æ¹åã®èŠçŽ ã§æºããããã³ã³ããã§æ§æãããŠããŸãïŒã
é衚瀺ã§åæ§ç¯
iOS SDKã«ã¯ãªãã£ãèå³æ·±ãæ©èœïŒèŠçŽ ãé衚瀺ã«ãããšãç»é¢ããæ¶ããã ãã§ãªããä»ã®ãã¹ãŠã®èŠçŽ ã代ããã«ãªããç»é¢ã«ç©ºãã¹ããŒã¹ããªããªããŸãã ããã«ãããè€æ°ã®ç»é¢ãäžåºŠã«1ã€ã®ç»é¢ã«é 眮ããåçã«åãæ¿ããããšãã§ããŸãã
äžè¬çã«ããŠã©ããçšã®SDKã«ã¯ãç»é¢ãåãæ¿ããããã®ããã€ãã®ãªãã·ã§ã³ããããŸããã¢ãã¡ãŒã·ã§ã³åãããç»é¢ãäžãããããã¢ããããããã¢ãã¡ãŒã·ã§ã³åããããŸãŸã«ãªããŸãïŒãã«ãããŒãžã€ã³ã¿ãŒãã§ã€ã¹ïŒã èŠçŽ ãé衚瀺ã«ããå Žåã®ãšãã¥ã¬ãŒã·ã§ã³ã®åãæ¿ãã¯ãéå ¬åŒã§ææžåãããŠããªãããã¢ãã¡ãŒã·ã§ã³ãªãã§ç»é¢ãå€æŽã§ããèå³æ·±ã代æ¿æ段ã§ãã
ã³ã³ãããŒã©ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ãªãã³ã³ããã¹ã
iOS SDKã§ViewControllerãåæåããŠããããã£ãå²ãåœãŠãããšãã§ããå Žåãã¯ããã¯çšã®SDKã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ãããŒã©ãŒïŒWKInterfaceControllerïŒã®äœæã¯ã·ã¹ãã ã«ãã£ãŠè¡ãããã³ãŒãããã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã ãã®èŠè¿ãã«ãéçºè ã¯contextãšåŒã°ããæ°ãããã©ã¡ãŒã¿ãŒãåãåããŸããããã®ãã©ã¡ãŒã¿ãŒã¯ã衚瀺ããããšãã«ã³ã³ãããŒã©ãŒã«æž¡ãããšãã§ããŸãã ã³ã³ãããŒã©ãŒå ã§ã¯ãawakeWithContextã¡ãœããã§äœ¿çšã§ããŸãã ã³ã³ããã¹ãã䜿çšããŠãäœææã«æž¡ãã®ã«äœ¿çšããã®ãšåããã©ã¡ãŒã¿ãŒãæž¡ãããšãã§ããŸããããšãã°ãåã³ã³ãããŒã©ãŒã芪ã«æ å ±ãæž¡ãããã«åŒã³åºãå¿ èŠããããããã¯ãéãå¿ èŠãããã¬ã¿ãŒã®IDãªã©ã§ãã
ã¢ãã¡ãŒã·ã§ã³
ãã®æèšã«ãããã¢ãã¡ãŒã·ã§ã³ãäœæããæ©èœãå€§å¹ ã«äœäžããŸããã ããã°ã©ã ã§ã¢ãã¡ãŒã·ã§ã³ãäœæã§ããCoreAnimationããã³UIKitãã¬ãŒã ã¯ãŒã¯ã¯ãããŸããã æèšäžã®äœããã¢ãã¡ãŒã·ã§ã³åããå¯äžã®æ¹æ³ã¯ãã¢ãã¡ãŒã·ã§ã³GIFã®ãããªäžé£ã®ç»åãäœæããããšã§ãã
äžæ¹ã§ã¯ãã³ãŒãå ã§ã¢ãã¡ãŒã·ã§ã³ãã©ã¡ãŒã¿ãåçã«èšå®ã§ããªãããããã®æ¹æ³ã®æè»æ§ã倱ãããŸãã äžæ¹ãã¢ãã¡ãŒã·ã§ã³ã¯ãã¶ã€ããŒã«ãã£ãŠå®å šã«éçºãããæ¢è£œã®åœ¢ã§æäŸãããŠãããããããã°ã©ããŒã«ãšã£ãŠãã䟿å©ã«ãªãå¯èœæ§ããããŸã-åçŸã§ããç»åã®ã·ãŒã±ã³ã¹ãšããŠïŒåã§ãäžåºŠã ãããŸãã¯å®å šã§ã¯ãªããäžéšã®ã¿ïŒãã¬ãŒã ã®ã·ãŒã±ã³ã¹ïŒã
äžç®
GlanceïŒå¥åããã¬ãã¥ãŒãïŒã¯ãã¢ããªã±ãŒã·ã§ã³ã«æ å ±ã衚瀺ããããã«äœæã§ããå°ããªç»é¢ã§ãã ããšãã°ãæªèªã¡ãã»ãŒãžã®æ°ãšæåŸã®æªèªã¡ãã»ãŒãžã®éä¿¡è ã®ååã衚瀺ããŸãã Glanceã®ã€ã³ã¿ãŒãã§ãŒã¹ã®äœæã¯ãã¬ã€ã¢ãŠãã®ã»ããã«å¶éãããŠããŸãã ãã®ã»ããã«ã¯ååãªãªãã·ã§ã³ããããŸãããææ¡ããããã®ããéžæããå¿ èŠããããŸãã
æšå¥šãã©ã³ãã¹ã¿ã€ã«
ã€ã³ã¿ãŒãã§ã€ã¹ãšãã£ã¿ãŒã§ãããã¹ããã©ã³ããèšå®ãããšãã«ãæšå¥šãããã¹ã¿ã€ã«ã®ã»ããã衚瀺ãããŸãã 以åã¯ãã·ã¹ãã ãã©ã³ãããã®ãµã€ãºãšã¹ã¿ã€ã«ïŒæäœã倪åãªã©ïŒãéžæã§ããŸããã çŸåšãããã£ãã¿ã€ãã«ãªã©ã®ãã³ãã¬ãŒãããããŸãã ã¹ã¿ã€ã«ã®äœ¿çšã¯ãªãã·ã§ã³ã§ãããå¯èœæ§ã¯ãéçºè ãã¹ã¿ã€ã«ã䜿çšããã®ã«åœ¹ç«ã€å¯èœæ§ãéåžžã«é«ããã€ã³ã¿ãŒãã§ãŒã¹ã®äžè²«æ§ãåäžããããšãæåŸ ããŠããŸãã
ãªãŒããŒã¬ã€èŠçŽ
iOSãšã¯ç°ãªããæèšã§ã¯èŠçŽ ãéè€ãããããšã¯ã§ããŸããã ãã®å¶éãåé¿ããå¯äžã®æ¹æ³ã¯ãã°ã«ãŒãã®èæ¯ãç»åãšããŠèšå®ããã°ã«ãŒãã®ã³ã³ãã³ãã«èŠçŽ ãæ¿å ¥ããããšã§ãã Mail.Ru Mailã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®åé¿çã䜿çšããŠãæ°ããã¡ãã»ãŒãžã®éç¥ç»é¢ã衚瀺ããŸãïŒããã¹ãã衚瀺ãããéä¿¡è ã¢ãã¿ãŒ-ã¡ãã»ãŒãžã®ä»¶åãšéä¿¡è ãããã¹ãã衚瀺ãããããã«ãã°ã©ããŒã·ã§ã³ããã®äžã«é 眮ãããŸãïŒã
å±æ§ä»ãæååã®ãµããŒã
æèšã®ã€ã³ã¿ãŒãã§ãŒã¹ã§èŠã€ããé©ãã®è¯ãã®ãã¡ãã©ãã«ã§ã®å±æ§ä»ãæååã®ãµããŒãã«èšåãã䟡å€ããããŸãã ããã«ãããåã ã®ãã©ã°ã¡ã³ããç°ãªã圢åŒã§ãã©ãŒããããããããã¹ããæç»ããæ©äŒããããŸãã äŸã¯åãGlanceã§ããããã¹ãã®äžéšãç°ãªãè²ã§åŒ·èª¿è¡šç€ºããä»ã®éšåããã倧ããªãã©ã³ãã§åŒ·èª¿è¡šç€ºããŸã
ãã©ãŒã¹ã¿ãããšããžã¿ã«ã¯ã©ãŠã³
ãã®æèšã«ã¯ããã©ãŒã¹ã¿ãããšåŒã°ããæ°ãããžã§ã¹ãã£ãŒãã€ãŸãã匷ãå§åãããããŸãã ãŸããApple Watchã¯åŸæ¥ã®æèšããDigital Crownãç¶æ¿ããŸããã ããžã¿ã«ã¯ã©ãŠã³ãšãã©ãŒã¹ã¿ããã¯ã©ã¡ããã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ãããŒã«ã§ããããŸã å®å šã«ã¯æ確ã§ã¯ãªãããããããã®èŠçŽ ã1ã€ã®ãã€ã³ãã«çµã¿åãããŸããã Appleã¯ãããããã©ã®ããã«äœ¿çšãããã®ããŸã äžæã§ããããã§ãã ãã®ãããDigital Crownã¯ãªã¹ãã®ã¹ã¯ããŒã«ããºãŒã ãã¹ããŒãªãŒããŒãèŠçŽ éã®ç§»åã«äœ¿çšãããŸãã
Digital Crownã®åäœãéçºè ã®åœ±é¿ãåãããAppleã§ããã³ã°ãããããšã«æºè¶³ããŠããå ŽåãForce Touchã§åŸ ã€ããšã«ããMailã¢ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ã«ãã®ãµããŒããå«ããŸããã§ããã
ç»åãã£ãã·ã¥
æèšã®ç»åããã£ãã·ã¥ããã¡ã«ããºã ã¯éåžžã«ç¬ç¹ã§ãããæèšçšã®ã¢ããªã±ãŒã·ã§ã³ãæ£ç¢ºã«æãåºããšãéåžžã«è«ççã§ãã èŠããã«ãã¡ã€ã³ã®ããã¹ããã¢ããªã±ãŒã·ã§ã³ãWatchKit Extension-é»è©±ã§å®è¡ãããæèšã®æ¡åŒµæ©èœ-ããã³æèšã§çŽæ¥å®è¡ãããæèšã¢ããªã±ãŒã·ã§ã³ã§ãã
ãŠã©ããç»é¢ã«ç»åãè¿œå ãããšã次ã®ããšãèµ·ãããŸãã é»è©±ã®ã¡ã€ã³ããžãã¯ãèµ·åãããç»åã圢æãããŸããããšãã°ãã€ã³ã¿ãŒãããããããŠã³ããŒããããŸãã ç»åã¯ãBluetoothãŸãã¯Wi-Fiãä»ããŠæèšã«éä¿¡ãããŸãã ãã®åŸãæèšã®æ©èœãå§ãŸããŸãã éåžžã®ãã£ãã·ã³ã°ã§ã¯ãç»åãã¢ããããŒãããŠãŠãŒã¶ãŒã«è¡šç€ºãã次åãŸã§ãã¡ã€ã«ã«ä¿åããŸãã æèšã䜿çšãããšãæºåž¯é»è©±ã®ãã¡ã€ã«ã«ç»åãå ¥ããã ãã§ã¯ã§ããŸãããæ¯åæèšã«è»¢éããå¿ èŠãããããã§ãã ãã®å Žåãæèšã«ã¯ç¬èªã®20MBãã£ãã·ã¥ããããŸãã
ãŠã©ãããã£ãã·ã¥ã«ç»åãé 眮ã§ããã®ã¯èå³æ·±ãããšã§ãããããããååŸã§ããã®ã¯æšæºã®ã³ã³ãããŒã«ã ãã§ãã ããã«ãç§ãã¡ãç¥ãéãããã£ãã·ã¥å ã«ç»åããããã©ãããç解ã§ããéæ¥çãªå åãããããŸããã ããšãã°ããã£ãã·ã¥ãããç»åã®ãµã€ãºã調ã¹ãããšãã§ããAPIã¡ãœããã䜿çšããŸãã ããã¯æ¬¡ã®ããã«è¡ãããŸãããã£ãã·ã¥ãããŠãããšæãããç»åã®ååãæã€ãã¡ã€ã«ã®ãµã€ãºãå°ããŸãã ãµã€ãºãè¿ããããã©ããã«ãã£ãŠããã®ç»åããã£ãã·ã¥ã«ãããã©ããããŸãã¯æåã«ã¢ããããŒãããå¿ èŠããããã©ãããå€æã§ããŸãã
applicationDidFinishLaunchingãšapplicationDidResignActiveã®æ¬ åŠ
iOSã¢ããªã±ãŒã·ã§ã³ã«ã¯ç¬èªã®ã©ã€ããµã€ã¯ã«ããããŸãã èµ·åãããã¯ã°ã©ãŠã³ããžã®ç§»è¡ãã¡ã¢ãªããã®ã¢ã³ããŒããªã©ãè¡ãããŸãã ãããã®ã€ãã³ããçºçãããšãã¢ããªã±ãŒã·ã§ã³ã¯é©åãªã¢ã©ãŒããåãåããŸãã ãŠã©ããã«ã¯ã¢ã©ãŒãããªããããã¢ããªã±ãŒã·ã§ã³ã®èµ·å段éã§ãªããžã§ã¯ãã®äœæãè€éã«ãªããŸãã ããã«ããããã®ã¢ã©ãŒãã«é¢é£ããäœæ¥ãè¡ã£ãŠãããµãŒãããŒãã£ã®ã©ã€ãã©ãªã«åé¡ãããå¯èœæ§ããããŸãã ããšãã°ãçµ±èšçšã®Flurryã©ã€ãã©ãªã¯ãã¢ã©ãŒããåä¿¡ããªãããããµãŒããŒäžã®çµ±èšã«ã€ãã³ããéä¿¡ããªããšããäºå®ã«çŽé¢ããŠããŸãã
åé¡ã¯ããã¹ãŠãäžåºŠåæåã§ããåäžã®ãšã³ããªãã€ã³ããåããiOSã¢ããªã±ãŒã·ã§ã³ãšã¯ç°ãªããç£èŠã¢ããªã±ãŒã·ã§ã³ã«ã¯ãGlanceãNotificationãããã³Main Appã®3ã€ã®ãšã³ããªãªãã·ã§ã³ãããããšã§ãã ãã ãã3ã€ã®å Žåãã¹ãŠã§ãç£èŠã¢ããªã±ãŒã·ã§ã³ã®èµ·åã¯æåã®ã³ã³ãããŒã©ãŒã®è¡šç€ºã«é¢é£ä»ããããŠããŸãã ããã«ãããawakeWithContextã¡ãœããã䜿çšããæ©äŒãäžããããŸãã
@implementation MRWKContactsInterfaceController - (void)awakeWithContext:(id)context { [super awakeWithContext:context]; [MRWKInitialization extensionDidFinishLaunching]; ... } @implementation MRWKInitialization + (void)extensionDidFinishLaunching { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [self internalExtensionDidFinishLaunching]; }); }
ããã«ãæ¡åŒµã¯ã©ã¹ã®1ã€ã§initializeã¡ãœããã䜿çšã§ããŸãããã®ã¡ãœããã¯ããã®ã¯ã©ã¹ã«åããŠã¢ã¯ã»ã¹ãããšãã«å®è¡ãããŸãã
ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ãããšãã«ã®ã¿ãªããžã§ã¯ããäœæãããå Žåããé 延ãåæåã䜿çšããããšãã§ããŸãã ããããçµ±èšã®å Žåãããã¯åœ¹ã«ç«ããªãããšã«æ³šæããŠãã ãã-ããšãã°ãFlurryã¯ãã¢ããªã±ãŒã·ã§ã³ããã€å ·äœçã«èµ·åãããããç¥ãå¿ èŠããããŸãã
ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãšã®çžäºäœçš
æèšã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³ã®æ©èœã¯å¶éãããŠãããæèšã§ãµããŒããããŠããªãã¢ã¯ã·ã§ã³ãå®è¡ããããã«ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåŒã³åºãããšãã§ããŸãã ãããè¡ãæ¹æ³ãæ€èšããŠãã ããã
Openparentapplication
æ°ããAPIãç»å ŽããŸãã-
+[WKInterfaceController openParentApplication:reply:]
ãŠã©ããã¢ããªã±ãŒã·ã§ã³ããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåŒã³åºããããã¯ã°ã©ãŠã³ãã§èµ·åããèŠæ±ãããã¢ã¯ã·ã§ã³ãå®è¡ããŠçµæãè¿ãããšãã§ããŸãã
äŸïŒ
@implementation WKInterfaceController (MRWKParentApplicationActions) + (void)mrwk_markMessageIdAsRead:(NSString *)messageId accountName:(NSString *)accountName completionBlock:(MRWKParentApplicationActionsCompletionBlock)completionBlock { MRWKParentApplicationAction *action = [MRWKParentApplicationAction markAsReadActionWithMessageId:messageId accountName:accountName]; [self openParentApplication:action.dictionary reply:^(NSDictionary *replyInfo, NSError *error) { if (completionBlock) { MRWKParentApplicationReplyInfo *info = [[MRWKParentApplicationReplyInfo alloc] initWithDictionary:replyInfo]; completionBlock(info.success, error ?: info.error); } }]; } @end
ã¢ããªã±ãŒã·ã§ã³ã°ã«ãŒã
察話ã®2çªç®ã®æ¹æ³ã¯ãã¢ããªã±ãŒã·ã§ã³ã°ã«ãŒãã§ãã iOSã§ã¯ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãšæ¡åŒµæ©èœã¯å¥ã ã®ãµã³ãããã¯ã¹ã§å®è¡ãããŸãããããã¯ãèªåã ããã¢ã¯ã»ã¹ã§ãããã¡ã€ã«ã·ã¹ãã ã®éãããé åã§ãã ã¢ããªã±ãŒã·ã§ã³ãå ±æãªãœãŒã¹ã䜿çšããããã¡ã€ã«ãå ±æãããããããã«ãã¢ããªã±ãŒã·ã§ã³ã°ã«ãŒãããããŸãã å ±éã®ã¢ããªã±ãŒã·ã§ã³ã°ã«ãŒããã¢ããªã±ãŒã·ã§ã³ãšã¯ããã¯ã®æ¡åŒµåã«å²ãåœãŠããšãäž¡æ¹ã«ã¢ã¯ã»ã¹ã§ãããã©ã«ããŒããã¡ã€ã«ã·ã¹ãã ã«è¡šç€ºãããŸãã ç¹ã«ããã®æ©äŒãå©çšããŠãMail.Ru Mailã¢ããªã±ãŒã·ã§ã³ãäœæéãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ããŒã¹ïŒãã¹ãŠã®ã¬ã¿ãŒãé£çµ¡å ãªã©ïŒããã³NSUserDefaultsãªããžã§ã¯ãïŒããŸããŸãªãŠãŒã¶ãŒèšå®ïŒã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
ããŒãŠã£ã³ã®éç¥
Darwinéç¥ã¯ãiOSã®ããã»ã¹éã§ã¡ãã»ãŒãžã亀æããæ¹æ³ã§ãã ãã®æ©èœã¯é·ãéååšããŠããŸããããæ¡åŒµæ©èœãç¹ã«æèšã®æ¡åŒµæ©èœã®åºçŸã«é¢é£ããããã«ãªããŸããã Darwinéç¥ã䜿çšãããšãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã§äœããå€æŽãããå Žåã«ãŠã©ããã«ã¢ã©ãŒããéä¿¡ã§ããŸããããšãã°ãé£çµ¡å ãªã¹ãããŠã©ããã§éããŠããå Žåããã®æç¹ã§ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã«æ°ããé£çµ¡å ãè¿œå ãããŸãã Darwinéç¥ã䜿çšãããšãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ããã€ãã³ããéä¿¡ããŠããŠã©ãããããŒã¿ããŒã¹ã®é£çµ¡å ãªã¹ããæŽæ°ã§ããããã«ãªããŸãã
ãã³ããªã
iOSã®ææ°ããŒãžã§ã³ã§ã¯ãAppleãç©æ¥µçã«æšé²ããŠããHandoffæ©èœãå°å ¥ãããŸããã ãã³ããªãã¯ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ããæ¹æ³ãšèŠãªãããšãã§ããŸãã ããã§ã¯ãçžäºäœçšã¯çŽæ¥çãªããŒã¿äº€æã§ã¯ãªããããšãã°ãæèšããã®ã¢ã¯ãã£ããã£ã®äœæã§ãããããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãéããšãç¹å®ã®ç»é¢ãããã«ããŒããããŸãã ããšãã°ããŠãŒã¶ãŒãMail.Ru MailãéããŠæèšã«æåãæžãå§ããiPhoneã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åããå Žåããã³ããªãã䜿çšãããšãæºåž¯é»è©±ã®ã¡ãã»ãŒãžäœæç»é¢ãããã«èªåçã«éãããšãã§ããŸãã
ããã€ã¹ãªãã®éçº
Apple Watchã®éçºã®äž»ãªèœãšãç©Žã¯ãå®éã®ããã€ã¹ã§ã©ã®ããã«èšè¿°ããããç解ã§ããªãããšã§ãã ã·ãã¥ã¬ãŒã¿ã®ã¿ã衚瀺ãããŸãããããã¯ãã®è¿äŒŒã®äžéšã«ãããŸããã å ¬åŒææžã§ããçŸå®ãšççŸããŠããŸãã
è€æ°ã®éç¥ãåãåã
ã·ãã¥ã¬ãŒã¿ã®ããã€ãã®åŽé¢ã¯ãååãšããŠåæ ãããŠããŸããã ããšãã°ãããã¥ã¡ã³ãã«ã¯æ¬¡ã®ã±ãŒã¹ãèšèŒãããŠããŸããè€æ°ã®éç¥ãå±ããšãäžžãã¢ããªã±ãŒã·ã§ã³ã¢ã€ã³ã³ãšãNåã®æ°ããéç¥ããšããããã¹ããç»é¢ã«è¡šç€ºãããŸãã ãã ããã·ãã¥ã¬ãŒã¿ãŒã§ã¯ãã©ã®ããã«èŠãããã確èªããããšã¯ã§ããŸããã äºçŽ°ãªããšã®ããã«æããŸãããå®éã«ã¯ããã¯äºæããªããã®ã«ãªãå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã®ååã¯äºæ³ãããã®ãšã¯ç°ãªããã¢ã€ã³ã³ã¯æ£ãã衚瀺ãããŸããããããäºæž¬ããããšã¯ã»ãšãã©äžå¯èœã§ãã ãªã¹ã¯ãæå°éã«æããããã«ã§ããå¯äžã®ããšã¯ããã¹ãŠãå®å šã«ææžåããããšã§ãã
çµµæå
ãã¬ãŒã³ããŒã·ã§ã³ã§ãAppleã¯æèšã«ã«ã¹ã¿ãã€ãºå¯èœãªçŸããã¢ãã¡ãŒã·ã§ã³çµµæåãæèŒããããšèšãããŸããã ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãããããµããŒãããŠããŸã-æçŽãæžãããã®æšæºç»é¢ããçµµæåãè¿œå ã§ããŸãã ãã ããã¬ã¿ãŒã§ã©ã®ããã«èŠããããããã°ã©ã ã«ã©ã®ãããªåœ¢åŒã§æ¥ãããã¬ã¿ãŒã«æ¿å ¥ããããã«ã©ã®ããã«å€æããå¿ èŠããããã¯äžæã§ãã ãããã¯éåžžã®çµµæåã§ãããšããåæããããŸãããã¢ãã¡ãŒã·ã§ã³GIFãŸãã¯ä»¥åã«ç¥ãããŠããªãäœãã®åœ¢ã§æäŸãããå¯èœæ§ããããŸãã ãŸãã圢åŒã¯ããã¥ã¡ã³ãã§æå®ãããŠããŸããã ã¡ãŒã«ã¢ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ã§ã¯ãçµµæåãããã¹ã圢åŒã§æäŸããããšããåæããé²ããããšã«ããŸããã
é³å£°ãã€ã€ã«
æçŽãæžãããšã«é¢é£ããããäžã€ã®ãããŸããã¯ãé³å£°ãã€ã€ã«ã®ä»äºã§ãã äžè¬çã«ã¯ããã¹ãŠãæ確ã§ãããã€ã¯ãã¯ãªãã¯ãããšãå ¥åããããã¹ãã衚瀺ãããŸãã ãã ããããã§ã¯åŸ®åŠãªéããèããããŸããããšãã°ã1è¡ã®ããã¹ããè¿ãããšã¯ã§ããŸãããããŠãŒã¶ãŒãæ瀺ããå 容ã®ããã€ãã®ãªãã·ã§ã³ãè¿ãããŸãã
äžæ£ãŠãŒã¶ãŒ
次ã®äŸã¯ãããŸãã§ããMail.RuMailã¢ããªã±ãŒã·ã§ã³ãé»è©±ã«ã€ã³ã¹ããŒã«ãããããããèµ·åããããšããªãããã®çµæãã°ã€ã³ããªãã£ããšããŸãã ãã®å Žåãæèšã¢ããªã±ãŒã·ã§ã³ã¯å©çšå¯èœã«ãªããŸããããŠãŒã¶ãŒã¯Apple Watchãã£ã¹ãã¬ã€ããèµ·åã§ããŸããïŒ ã¯ããã¯ã®ãªãªãŒã¹åŸã«ã®ã¿æ確ãªçããèŠã€ãããŸãããèµ·åãå¯èœãªå Žåã«åããŠå®å šã«ãã¬ã€ããããšã«ããŸãããæš©éã®ãªããŠãŒã¶ãŒã¯ãé»è©±ã§ã¢ããªã±ãŒã·ã§ã³ãéããŠãã°ã€ã³ããŸãããšããã¡ãã»ãŒãžãåãåããŸãã
ãã³ããªã
Handoffãæèšã§ãµããŒããããããšãçºè¡šãããããã¥ã¡ã³ãã«ã¯åãããšã瀺ãããŠããŸãã ãã ããã·ãã¥ã¬ãŒã¿ããã³ããªãããµããŒãããŠããªãããããããã©ã®ããã«æ©èœããããæ€èšŒããããšã¯ãŸã ã§ããŸããã ç¹°ãè¿ãã«ãªããŸãããå®éã®ããã€ã¹ãåŸ ã€å¿ èŠããããŸãã
éç/åçéç¥
ããã·ã¥éç¥ãå°çãããšããŠã©ããã¯æåã«åçãªéç¥ãã€ãŸãããè€éãªã€ã³ã¿ãŒãã§ãŒã¹ã衚瀺ããããšããŸãã ããŠã³ããŒããé ãããšãããã·ã³ãã«ãªã€ã³ã¿ãŒãã§ãŒã¹-éçéç¥ã衚瀺ãããŸãã æ®å¿µãªãããã·ãã¥ã¬ãŒã¿ã䜿çšããŠãããã©ã®ããã«çºçãããã確èªããããšã¯äžå¯èœã§ãã
éç¥ïŒé»è©±ãšæèšã®éã®ãåæ¥ã
äžéšã®ã¢ã¯ã·ã§ã³ã¯éç¥ã«é¢é£ä»ããããŠããŸããã¬ã¿ãŒã«è¿ä¿¡ãåé€ãæ¢èªãšããŠããŒã¯ããããšãã§ããŸãã ãããã®ã¢ã¯ã·ã§ã³ã«ã¯ããŠã©ããæ¡åŒµæ©èœã«ãã£ãŠåŠçããããã®ãšãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŠçããããã®ããããŸãã ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŠçãããã¢ã¯ã·ã§ã³ãã·ãã¥ã¬ãŒã¿ã§ãã¹ãããããšã¯ã§ããŸããã ãããã®ã¢ã¯ã·ã§ã³ã¯é»è©±ããçŽæ¥åŒã³åºãããšãã§ããŸãããæèšããåŒã³åºãããšãããšãã·ãã¥ã¬ãŒã¿ãŒã¯æèšã®æ¡åŒµæ©èœã§åŠçããããšããŸãããå®éã«ã¯ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŠçãããŸãã ãã®åäœã¯ãã·ãã¥ã¬ãŒã¿ãŒãååãšããŠããã·ã¥éç¥ããµããŒãããŠããªããšããäºå®ã«ãããã®ã§ã-é»è©±ã§ãæèšã§ããããŸããã ãã ããç£èŠçšSDKã§ã¯ãéçºç°å¢ããç£èŠçšã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãã«ãããã·ã¥éç¥ã®å 容ããããŒã ãªããããŠãåŠçæ¹æ³ã確èªã§ããŸãã åé¡ã¯ãèãããããã¹ãŠã®ã±ãŒã¹ããã¹ãããæ¹æ³ããªãããšã§ãã ããšãã°ãæèšã®ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŸãã¯æ¡åŒµæ©èœã§ããéç¥ã®åŠçæ¹æ³ãæå®ããããšã¯ã§ããŸããã é»è©±ã§ïŒå®éã®ããã€ã¹ã§ïŒéç¥ããã¢ã¯ã·ã§ã³ãåŒã³åºããæèšã§ãããåãããã«æ©èœããããšãæåŸ ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŠçãããã¢ã¯ã·ã§ã³ã®ãã§ãã¯ã«éå®ããå¿ èŠããããŸããã
Xcodeéçº
Xcodeã䜿çšãããã¹ãŠã®äººã¯ãXcodeã«ãšã©ãŒãããããšãç¥ã£ãŠããŸããæ°ããããŒãžã§ã³ã§ã¯æ°ããã³ããŒã衚瀺ãããŸãã WatchKit SDKãäŸå€ã§ã¯ãããŸããã
é åžçšèšŒææž
Xcodeã¯æè¿ãèªåã³ãŒã眲åãšããããžã§ãã³ã°ã«çæããŸããã çè«çã«ã¯ãXcodeã¯ãã¹ãŠã®ãããã¡ã€ã«ãå¿ èŠãªèšŒææžããã³ãã«IDãäœæããŸãã å®éã«ã¯ã圌女ã¯ããã€ãã®ã±ãŒã¹ã§ãããè¡ããŸããããã¹ãŠã§ã¯ãããŸããã ç¹ã«ããŠã©ããã®é ä¿¡ãããã¡ã€ã«ã¯èªåçã«äœæããããéçºè åãã®AppleããŒã¿ã«ã§åå¥ã«äœæããå¿ èŠããããšããäºå®ã«çŽé¢ããŸããã
38/42 mmã®åã ã®ãã£ã¬ããååŸã®å®çŸ©
ã€ã³ã¿ãŒãã§ã€ã¹ãã«ããŒã§ã¯ã38 mmãš42 mmã®æèšã®èŠçŽ ã®åã ã®ããããã£ãèšå®ã§ããããã«ãªããŸããããå Žåã«ãã£ãŠã¯æ©èœããŸããã ããšãã°ãæèšã®ããŸããŸãªããŒãžã§ã³ã®ã°ã«ãŒãã«äžžã¿ã®ååŸãèšå®ããå ŽåãäœãäžžããªããŸããã ãã®ãã°ãåé¿ããã«ã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãšãã£ã¿ãŒã§ã¯ãªãã³ãŒãã§ãã£ã¬ãããèšå®ããŸããã
RemoteInterfacePrincipalClass
ãŠã©ããã®plistã¢ããªã±ãŒã·ã§ã³ã«ã¯ãç¹ã«äžæãªRemoteInterfacePrincipalClassããããã£ãšããæ°ããããããã£ãç»å ŽããŸããã äžæ¹ã§ã¯èšå®ãããŠããããã«èŠããŸãããä»æ¹ã§ã¯çµéšããå€æãããšããã®ããããã£ã®å€ã¯äœã«ã圱é¿ããŸããã å®éã®æèšã«è¡šç€ºãããå Žåã«åããŠãæ£ããã¯ã©ã¹åãå ¥åããŸããã
SPErrorGizmoInstallNeverFinishedErrorMessage
ã·ãã¥ã¬ãŒã¿ãŒã«åé¡ããããŸãã æã ãããç£èŠã¢ããªã±ãŒã·ã§ã³ãèµ·åãããããæäœããåæ¢ããå¥ã®ç£èŠã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšãããšãã·ãã¥ã¬ãŒã¿ãŒã¯ãããã€ã³ã¹ããŒã«ããããšãæåŠããåå¹ã®å¥åŠãªååã§ãšã©ãŒãåºããŸãã ã·ãã¥ã¬ãŒã¿ãŒãåé€ãããã¹ãŠã®ã³ã³ãã³ãããã³ãããå®å šãªã¯ãªãŒã³ãããžã§ã¯ãã§ã®ã¿åŠçããŸãã
ã¢ããªã±ãŒã·ã§ã³ãšæ¡åŒµæ©èœã®éã®ã³ãŒãã®åé¢
æåŸã«ãããã»ã¹ã®æé©åã«é¢ããããã€ãã®èšèã æèšçšã®Mail.Ru Mailã®ã¢ããªã±ãŒã·ã§ã³ãšæ¡åŒµæ©èœã¯ãåæ§ã®æ©èœãå®è¡ããŸããã©ã¡ãããé£çµ¡å ãªã¹ãã®è¡šç€ºãé»åã¡ãŒã«ã®éä¿¡ãªã©ãèš±å¯ããŸãããããã£ãŠãæèšã®ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã®äžéšãåå©çšããããšã¯çã«ããªã£ãŠããŸã 以äžã¯ãå ±æã³ãŒãã®å²åãå¢ããããã®ã¢ã¯ã·ã§ã³ã®ãªã¹ãã§ãã
- åœåãã³ãŒãã®èšè¿°ã¯ã¢ãžã¥ãŒã«åŒã§ãããããåã ã®ã¯ã©ã¹ãæ¡åŒµæ©èœã§äœ¿çšããã«ã¯ãäŸåé¢ä¿ãè¿œå ããå¿ èŠããããŸãããäŸåé¢ä¿ã¯ãäœæ¥ã«ã¯å¿ èŠãªããããããŸããããã³ã³ãã€ã«ã«ã¯å¿ èŠã§ãã
- CocoaPods-Objective-Cã®äŸåé¢ä¿ç®¡çã·ã¹ãã ã䜿çšããŸãã CocoaPodsã§ã¯ãç¹å®ã®ã©ã€ãã©ãªãç¹å®ã®ã¿ãŒã²ããã«è¿œå ã§ããŸãã ããã«ãããäŸåé¢ä¿ã®å€§ããªãªã¹ããã¡ã€ã³ã®Mail.Ru Mailã¢ããªã±ãŒã·ã§ã³ã®ã¿ãŒã²ããã«æ¥ç¶ãããã®å€§ããªãªã¹ãããå¿ èŠãªã©ã€ãã©ãªã®ã¿ãã¯ããã¯ã¿ãŒã²ããã«æ¥ç¶ã§ããŸãã
- iOS 7ã®ãµããŒããæ¢ã«æŸæ£ããŠããå Žåã¯ããã€ãããã¯ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãã ããã
- ã¹ã¯ãªããã䜿çšããŠãããžã§ã¯ããã¡ã€ã«ã確èªããŸãã ã³ãŒããCocoaPodsã§ã¯ãªãæåã§æ¥ç¶ãããŠããå Žåãããã§äœ¿çšããããã¡ã€ã«ã®ã¿ãã¿ãŒã²ããã«å«ãŸããŠããããšã確èªããå¿ èŠããããŸãã ç§ãã¡ã®å Žåãæ§æãã¡ã€ã«ã§ã¯ãã¡ã€ã³ã¿ãŒã²ãããšã¯ããã¯ã¿ãŒã²ããã®éã«ããã¯ãã®ãã¹ãŠã®éããèšå®ãããã¹ã¯ãªããã¯ããããã¹ãŠãã§ãã¯ããŸãã
- ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã¹ãæ°æéã§äœ¿çšãããããå¹ççãªå Žåã¯ãAPIãä»ããŠã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåŒã³åºããŸãã
ãããã«
ç§ãã¡ã®çµéšããŸãšãããšã次ã®ïŒããªãæçœãªïŒããã€ã¹ãªãã®åºæ¬çãªéçºã«ãŒã«ãèªåã§ç¹å®ãããšèšããŸãã
- ãã¹ãäžã«åé¡ããã£ããããããšã¯ã»ãšãã©äžå¯èœãªã®ã§ãããã¥ã¡ã³ãã培åºçã«ç 究ããŠãã ããã
- äž»ãªãªãã·ã§ã³ã«å ããŠãå®å šãã«ããå®è£ ããŸã-ããã€ã¹ãæåŸ ã©ããã«æ©èœããªãå Žåã
- å ¬åŒã®ããããã£ã¹ããããªã¿ã¯ã®ããããã£ã¹ããŸã§ãããã€ã¹ã«é¢ããããããæ å ±æºã䜿çšããŸãã
ãããHabréã«ã¯ãäœããã®çç±ã§éå¬ã§ããªãããã€ã¹ãéçºããå¿ èŠæ§ã«æ¢ã«çŽé¢ããŠããå€ãã®äººã ããããšæããŸãã ã³ã¡ã³ãã§ã¯ããã®ãããªå Žåã«ã©ã®ããã«ããªãã®äººçã楜ã«ããããšãã§ãããã«ã€ããŠã®çµéšãå ±æããããšãææ¡ããŸãã