49
iOS 8 / Swift 概要 iOS8 / Swiftエンジニア勉強会 2014/10/18(Sat.) Ryosuke Hiramatsu Session 1

iOS 8/Swift 概要 #ios8yahoo

Embed Size (px)

DESCRIPTION

iOS 8/Swift エンジニア勉強会@ヤフー で話した内容です。 #ios8yahoo http://connpass.com/event/8629/

Citation preview

Page 1: iOS 8/Swift 概要 #ios8yahoo

iOS 8 / Swift 概要

iOS8 / Swiftエンジニア勉強会2014/10/18(Sat.)

Ryosuke Hiramatsu

Session 1

Page 2: iOS 8/Swift 概要 #ios8yahoo

自己紹介

・平松 亮介 @himara2

・iOSアプリ開発歴 2年

・ヤフー株式会社 新卒3年目

・現在は新規アプリをSwiftで書いてます

Swift案件

Page 3: iOS 8/Swift 概要 #ios8yahoo

iOS 8, Swift の概要をお話しします。

Page 4: iOS 8/Swift 概要 #ios8yahoo

アジェンダ

・本日までの経緯

・Swift概要

・iOS 8概要

Page 5: iOS 8/Swift 概要 #ios8yahoo

本日までの経緯

Page 6: iOS 8/Swift 概要 #ios8yahoo

WWDC 20142014/06/02

Page 7: iOS 8/Swift 概要 #ios8yahoo

・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 本日

Page 8: iOS 8/Swift 概要 #ios8yahoo

その頃ヤフーでは…

「iOS 8が正式にリリースされたら勉強会したいね」

社内ChatやLTで積極的に情報交換

実現!

Page 9: iOS 8/Swift 概要 #ios8yahoo

iOS 8 概要

Page 10: iOS 8/Swift 概要 #ios8yahoo

・見た目の変更が大きかった

・UIの対応・複数画面サイズへの対応

・アプリ間連携やWidgetなど、  +αの機能でUX向上

アプリの対応

Page 11: iOS 8/Swift 概要 #ios8yahoo

新しいAPI・機能

ひとつずつ簡単に説明

Page 12: iOS 8/Swift 概要 #ios8yahoo

App Extension・アプリ間連携の仕組み

・ウィジェットやカスタムキーボードなど

・全部で7種類・Share・Action・Today・Photo Extension・Document Provider・Custom Keyboard・(Finder)

Page 13: iOS 8/Swift 概要 #ios8yahoo

ShareTwitterやFacebookの特権だった部分が開放された

Page 14: iOS 8/Swift 概要 #ios8yahoo

ShareTwitterやFacebookの特権だった部分が開放された

Page 15: iOS 8/Swift 概要 #ios8yahoo

Action別アプリのViewControllerを内部で表示できる

Page 16: iOS 8/Swift 概要 #ios8yahoo

Today (Widget)

・通知センターのToday領域

・自分の好きなViewを置ける

・一等地であり激戦区

・ジャンル問わず、使い勝手が良い

Page 17: iOS 8/Swift 概要 #ios8yahoo

App ExtensionPhoto Editing Custom KeyboardDocument Provider

キーボード領域のカスタマイズiCloudなどストレージと連携「写真」アプリとの連携

Page 18: iOS 8/Swift 概要 #ios8yahoo

App ExtensionShare Action Today(Widget)

Photo Editing Document Provider Custom Keyboard

Session 4. 「App Extension」で詳しく!

Page 19: iOS 8/Swift 概要 #ios8yahoo

Interactive Notification・Remote Notification の拡張機能

・通知センターやロック画面から直接アクションできる

Page 20: iOS 8/Swift 概要 #ios8yahoo

CloudKit

・Apple製のMBaaS

・1PB assets  10PB db が無料

HomeKit

・家電の操作

HealthKit

・Healthアプリと連携

・身長や体重などの  データと連携

・SiriをIFに指示

XXXKit

Page 21: iOS 8/Swift 概要 #ios8yahoo

CloudKit

・Apple製のMBaaS

・1PB assets  10PB db が無料

HomeKit

・家電の操作

HealthKit

・Healthアプリと連携

・身長や体重などの  データと連携

・SiriをIFに指示

Session5. 「オトナのHomeKit」で詳しく!

XXXKit

Page 22: iOS 8/Swift 概要 #ios8yahoo

WKWebView

・UIWebViewの強化版・Safariと同じエンジン(Nitro)を使え、パフォーマンスが向上・読み込みのprogressや閲覧historyのプロパティが追加

・WebViewアプリには嬉しい変更

Page 23: iOS 8/Swift 概要 #ios8yahoo

iTunesConnet

・UIが大きく変化!・メニューが大きなアイコンで表現・日本語に対応・(慣れるまでは時間が必要)

Page 24: iOS 8/Swift 概要 #ios8yahoo

・iTunes Connectに統合された

・内部テスター(身内)と外部テスター(一般)

・配布には制限があります

・Buildをアップロード → 「テスターに配布」の項目が増えてる

Test Flight

・http://www.slideshare.net/IchiroYamamoto/test-flight20140918

・テスター向け配信サポートサービス

Page 25: iOS 8/Swift 概要 #ios8yahoo

iTunes Connect / AppStore

・App Previews

・App Bundle

・Analytics

・有料アプリのみ。10個まで

・30秒まで

・流入経路やリテンションの解析

・スクショの部分に動画を1つ

・複数アプリのセット販売

Page 26: iOS 8/Swift 概要 #ios8yahoo

More

・iOS 7.1 to iOS 8.0 API Differences

https://developer.apple.com/library/ios/releasenotes/General/iOS80APIDiffs/

Page 27: iOS 8/Swift 概要 #ios8yahoo

Swift 概要

Page 28: iOS 8/Swift 概要 #ios8yahoo

Swiftとは

・Appleの発表した新しいプログラミング言語

・OS X / iOS アプリ開発に使える・Swiftでつくったアプリも申請可能

・「Swiftはあなたを映し出す鏡」・色々な言語に似ていて、学習障壁が低い

Page 29: iOS 8/Swift 概要 #ios8yahoo

Swiftとは

・Objective-C時代の不満・Closures

・=> Swiftの登場!!

・Namespace・Generics・Multiple return type

etc..

Page 30: iOS 8/Swift 概要 #ios8yahoo

Swiftの文法

Page 31: iOS 8/Swift 概要 #ios8yahoo

[self someMethod:@"Hello" index:2];

Objective-C

someMethod("Hello", 5)

Swift

Swiftの文法

@がない!    [ ]がない!    ;がない!

Page 32: iOS 8/Swift 概要 #ios8yahoo

var array: [String] = ["a", "b", "c"]

Swift の Array

var dict: [String: Int] = ["a":1, "b":2]

Swift の Dictionary

Array と Dictionary

すっきりシンプル

Page 33: iOS 8/Swift 概要 #ios8yahoo

クロージャ

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

これなら覚えられる

Page 34: iOS 8/Swift 概要 #ios8yahoo

関数

// 関数を定義 func plusAndminus(a:Int) -> (Int, Int) { return (a - 1, a + 1) } !plusAndminus(7) // (6, 8)

複数の返り値をもつ関数

Page 35: iOS 8/Swift 概要 #ios8yahoo

新しい開発者に馴染みやすく、 既存のiOSデベロッパーにとっても使いやすい。

所感

Page 36: iOS 8/Swift 概要 #ios8yahoo

Objective-C から Swift へ

Page 37: iOS 8/Swift 概要 #ios8yahoo

・シンプルに書ける

・堅牢に書ける

Swiftはこれまでより

Page 38: iOS 8/Swift 概要 #ios8yahoo

シンプルに書ける

・記述がシンプル

var myName = “#ios8yahoo" // 型推論 someMethod(myName, "B")

・単純にファイル数が減る

Page 39: iOS 8/Swift 概要 #ios8yahoo

シンプルに書ける・文字列の操作などが簡単

// Swift var appendStr = "Hello, " + "World" println("appendStr is \(appendStr)")

// Objective-Cでは [NSString stringByAppend…] // とする必要があった

Page 40: iOS 8/Swift 概要 #ios8yahoo

堅牢に書ける

・オプショナル値

・nilの扱いがObjective-Cより厳しく

・静的解析で確認できる、コンパイルエラーとできる

var myName :String myName = nil // error! !!var myAddress :String? myAddress = nil // OK someMethod(myAddress, "B") // error! someMethod(myAddress!, "B") // OK

Page 41: iOS 8/Swift 概要 #ios8yahoo

堅牢に書ける

・アクセス修飾子

・public / private / internal の追加

・override 宣言も必要

func publicHello() { // ... } private func privateHello() { // ... } internal func internalHello() { // ... }

Page 42: iOS 8/Swift 概要 #ios8yahoo

Generics

// 何でも入れれた NSArray *array = @[@"A", @"B", @3];

Objective-C

// 型を指定できる var array: [String] = ["a", "b", "c"] var array: [String] = ["yahoo", "ios", 8] // コンパイルエラー!

Swift

Page 43: iOS 8/Swift 概要 #ios8yahoo

3週間ほどガッツリ書いてますが、

個人の感想

- だいぶシンプルに書ける- くせもなく馴染みやすい

ぼくはすきです。

- しっかり書けて安心感がある

Page 44: iOS 8/Swift 概要 #ios8yahoo

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];

Page 45: iOS 8/Swift 概要 #ios8yahoo

Swift Playground・REPL環境がXcode 6に標準搭載されている

・Appleのインタラクティブに学べるドキュメント

・試したり勉強するのに最適

https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html

Page 46: iOS 8/Swift 概要 #ios8yahoo

実際にSwiftを使ったコーディングは 「6. Swiftで学ぶ複素数」でご覧ください!

Page 47: iOS 8/Swift 概要 #ios8yahoo

この後の予定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セッション

Page 48: iOS 8/Swift 概要 #ios8yahoo

さいごに

Objective-C も大好きです!

Page 49: iOS 8/Swift 概要 #ios8yahoo

おわり