Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

iOS 8/Swift 概要 #ios8yahoo

25,251 views

Published on

iOS 8/Swift エンジニア勉強会@ヤフー で話した内容です。
#ios8yahoo

http://connpass.com/event/8629/

Published in: Technology
  • Be the first to comment

iOS 8/Swift 概要 #ios8yahoo

  1. 1. iOS 8 / Swift 概要 iOS8 / Swiftエンジニア勉強会 2014/10/18(Sat.) Ryosuke Hiramatsu Session 1
  2. 2. 自己紹介 ・平松 亮介 @himara2 ・iOSアプリ開発歴 2年 ・ヤフー株式会社 新卒3年目 ・現在は新規アプリをSwiftで書いてます Swift案件
  3. 3. iOS 8, Swift の概要をお話しします。
  4. 4. アジェンダ ・本日までの経緯 ・Swift概要 ・iOS 8概要
  5. 5. 本日までの経緯
  6. 6. WWDC 2014 2014/06/02
  7. 7. ・iOS 8 - リファレンスが公開 ・Swift - iBooksが公開 Xcode GM 登場 WWDC iPhone 6 / 6 plus 発表 iOS 8リリース 2014/06/02 09/09 09/16 09/19 iPhone 6 / 6 plus 発売 10/18 本日
  8. 8. その頃ヤフーでは… 「iOS 8が正式にリリースされたら勉強会したいね」 社内ChatやLTで積極的に情報交換 実現!
  9. 9. iOS 8 概要
  10. 10. ・見た目の変更が大きかった ・UIの対応 ・複数画面サイズへの対応 ・アプリ間連携やWidgetなど、  +αの機能でUX向上 アプリの対応
  11. 11. 新しいAPI・機能 ひとつずつ簡単に説明
  12. 12. App Extension ・アプリ間連携の仕組み ・ウィジェットやカスタムキーボードなど ・全部で7種類 ・Share ・Action ・Today ・Photo Extension ・Document Provider ・Custom Keyboard ・(Finder)
  13. 13. Share TwitterやFacebookの特権だった部分が開放された
  14. 14. Share TwitterやFacebookの特権だった部分が開放された
  15. 15. Action 別アプリのViewControllerを内部で表示できる
  16. 16. Today (Widget) ・通知センターのToday領域 ・自分の好きなViewを置ける ・一等地であり激戦区 ・ジャンル問わず、使い勝手が良い
  17. 17. App Extension Photo Editing Custom KeyboardDocument Provider キーボード領域のカスタマイズiCloudなどストレージと連携「写真」アプリとの連携
  18. 18. App Extension Share Action Today(Widget) Photo Editing Document Provider Custom Keyboard Session 4. 「App Extension」で詳しく!
  19. 19. Interactive Notification ・Remote Notification の拡張機能 ・通知センターやロック画面から直接アクションできる
  20. 20. CloudKit ・Apple製のMBaaS ・1PB assets  10PB db が無料 HomeKit ・家電の操作 HealthKit ・Healthアプリと連携 ・身長や体重などの  データと連携 ・SiriをIFに指示 XXXKit
  21. 21. CloudKit ・Apple製のMBaaS ・1PB assets  10PB db が無料 HomeKit ・家電の操作 HealthKit ・Healthアプリと連携 ・身長や体重などの  データと連携 ・SiriをIFに指示 Session5. 「オトナのHomeKit」で詳しく! XXXKit
  22. 22. WKWebView ・UIWebViewの強化版 ・Safariと同じエンジン(Nitro)を使え、パフォーマンスが向上 ・読み込みのprogressや閲覧historyのプロパティが追加 ・WebViewアプリには嬉しい変更
  23. 23. iTunesConnet ・UIが大きく変化! ・メニューが大きなアイコンで表現 ・日本語に対応 ・(慣れるまでは時間が必要)
  24. 24. ・iTunes Connectに統合された ・内部テスター(身内)と外部テスター(一般) ・配布には制限があります ・Buildをアップロード → 「テスターに配布」の項目が増えてる Test Flight ・http://www.slideshare.net/IchiroYamamoto/test-flight20140918 ・テスター向け配信サポートサービス
  25. 25. iTunes Connect / AppStore ・App Previews ・App Bundle ・Analytics ・有料アプリのみ。10個まで ・30秒まで ・流入経路やリテンションの解析 ・スクショの部分に動画を1つ ・複数アプリのセット販売
  26. 26. More ・iOS 7.1 to iOS 8.0 API Differences https://developer.apple.com/library/ios/releasenotes/General/iOS80APIDiffs/
  27. 27. Swift 概要
  28. 28. Swiftとは ・Appleの発表した新しいプログラミング言語 ・OS X / iOS アプリ開発に使える ・Swiftでつくったアプリも申請可能 ・「Swiftはあなたを映し出す鏡」 ・色々な言語に似ていて、学習障壁が低い
  29. 29. Swiftとは ・Objective-C時代の不満 ・Closures ・=> Swiftの登場!! ・Namespace ・Generics ・Multiple return type etc..
  30. 30. Swiftの文法
  31. 31. [self someMethod:@"Hello" index:2]; Objective-C someMethod("Hello", 5) Swift Swiftの文法 @がない!    [ ]がない!    ;がない!
  32. 32. var array: [String] = ["a", "b", "c"] Swift の Array var dict: [String: Int] = ["a":1, "b":2] Swift の Dictionary Array と Dictionary すっきりシンプル
  33. 33. クロージャ func addTowNumbers(numA:Int , numB:Int) -> Int { return numA + numB } let result = addTowNumbers(1, 3) Swift の Closure int (^addTowNumbers)(int, int) = ^(int numA,int numB) { return numA + numB; }; result = addTowNumbers(1, 3); Objective-C の blocks これなら覚えられる
  34. 34. 関数 // 関数を定義 func plusAndminus(a:Int) -> (Int, Int) { return (a - 1, a + 1) } ! plusAndminus(7) // (6, 8) 複数の返り値をもつ関数
  35. 35. 新しい開発者に馴染みやすく、 既存のiOSデベロッパーにとっても使いやすい。 所感
  36. 36. Objective-C から Swift へ
  37. 37. ・シンプルに書ける ・堅牢に書ける Swiftはこれまでより
  38. 38. シンプルに書ける ・記述がシンプル var myName = “#ios8yahoo" // 型推論 someMethod(myName, "B") ・単純にファイル数が減る
  39. 39. シンプルに書ける ・文字列の操作などが簡単 // Swift var appendStr = "Hello, " + "World" println("appendStr is (appendStr)") // Objective-Cでは [NSString stringByAppend…] // とする必要があった
  40. 40. 堅牢に書ける ・オプショナル値 ・nilの扱いがObjective-Cより厳しく ・静的解析で確認できる、コンパイルエラーとできる var myName :String myName = nil // error! ! ! var myAddress :String? myAddress = nil // OK someMethod(myAddress, "B") // error! someMethod(myAddress!, "B") // OK
  41. 41. 堅牢に書ける ・アクセス修飾子 ・public / private / internal の追加 ・override 宣言も必要 func publicHello() { // ... } private func privateHello() { // ... } internal func internalHello() { // ... }
  42. 42. Generics // 何でも入れれた NSArray *array = @[@"A", @"B", @3]; Objective-C // 型を指定できる var array: [String] = ["a", "b", "c"] var array: [String] = ["yahoo", "ios", 8] // コンパイルエラー! Swift
  43. 43. 3週間ほどガッツリ書いてますが、 個人の感想 - だいぶシンプルに書ける - くせもなく馴染みやすい ぼくはすきです。 - しっかり書けて安心感がある
  44. 44. Objective-CとSwiftの共存 ・共存できます ・Swift->Obj-C ・Obj-C -> Swift import MyObject MyProject-Bridging-Header.h // 使いたい箇所で let obj = MyObject() // 使いたいクラスで #import "MyProject-Swift.h" ! MySwiftObject *swiftObj = [MySwiftObject new];
  45. 45. Swift Playground ・REPL環境がXcode 6に標準搭載されている ・Appleのインタラクティブに学べるドキュメント ・試したり勉強するのに最適 https://developer.apple.com/library/mac/documentation/Swift/Conceptual/ Swift_Programming_Language/GuidedTour.html
  46. 46. 実際にSwiftを使ったコーディングは 「6. Swiftで学ぶ複素数」でご覧ください!
  47. 47. この後の予定 16:05 「iOS 8 / Swift 概要」 16:20 「既存アプリのiOS 8対応」 16:40 「Xcode 6での新機能」 17:10 「App Extension」 17:30 「オトナのHomeKit」 17:40 「虚数は作れる!Swiftで学ぶ複素数」 ----- 休憩10分間 ----- 18:00 「シークレットセッション」 ----- 休憩20分間 ----- 18:30 LTセッション
  48. 48. さいごに Objective-C も大好きです!
  49. 49. おわり

×