iOS 8/Swift 概要 #ios8yahoo

Preview:

DESCRIPTION

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

Citation preview

iOS 8 / Swift 概要

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

Ryosuke Hiramatsu

Session 1

自己紹介

・平松 亮介 @himara2

・iOSアプリ開発歴 2年

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

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

Swift案件

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

アジェンダ

・本日までの経緯

・Swift概要

・iOS 8概要

本日までの経緯

WWDC 20142014/06/02

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

その頃ヤフーでは…

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

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

実現!

iOS 8 概要

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

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

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

アプリの対応

新しいAPI・機能

ひとつずつ簡単に説明

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

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

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

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

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

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

Today (Widget)

・通知センターのToday領域

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

・一等地であり激戦区

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

App ExtensionPhoto Editing Custom KeyboardDocument Provider

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

App ExtensionShare Action Today(Widget)

Photo Editing Document Provider Custom Keyboard

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

Interactive Notification・Remote Notification の拡張機能

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

CloudKit

・Apple製のMBaaS

・1PB assets  10PB db が無料

HomeKit

・家電の操作

HealthKit

・Healthアプリと連携

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

・SiriをIFに指示

XXXKit

CloudKit

・Apple製のMBaaS

・1PB assets  10PB db が無料

HomeKit

・家電の操作

HealthKit

・Healthアプリと連携

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

・SiriをIFに指示

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

XXXKit

WKWebView

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

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

iTunesConnet

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

・iTunes Connectに統合された

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

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

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

Test Flight

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

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

iTunes Connect / AppStore

・App Previews

・App Bundle

・Analytics

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

・30秒まで

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

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

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

More

・iOS 7.1 to iOS 8.0 API Differences

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

Swift 概要

Swiftとは

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

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

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

Swiftとは

・Objective-C時代の不満・Closures

・=> Swiftの登場!!

・Namespace・Generics・Multiple return type

etc..

Swiftの文法

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

Objective-C

someMethod("Hello", 5)

Swift

Swiftの文法

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

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

Swift の Array

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

Swift の Dictionary

Array と Dictionary

すっきりシンプル

クロージャ

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

これなら覚えられる

関数

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

複数の返り値をもつ関数

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

所感

Objective-C から Swift へ

・シンプルに書ける

・堅牢に書ける

Swiftはこれまでより

シンプルに書ける

・記述がシンプル

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

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

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

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

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

堅牢に書ける

・オプショナル値

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

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

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

堅牢に書ける

・アクセス修飾子

・public / private / internal の追加

・override 宣言も必要

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

Generics

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

Objective-C

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

Swift

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

個人の感想

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

ぼくはすきです。

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

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

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

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

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

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

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

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

さいごに

Objective-C も大好きです!

おわり