31
Swift本ができるまで 1Swift LT

Swift本ができるまで

Embed Size (px)

DESCRIPTION

第1回 Swift LT 会の発表資料です。 (2014/06/25, ヤフー株式会社で開催) 電子書籍「先取り!Swift」ができるまでの経緯と、 本書の内容をピックアップして紹介しています。

Citation preview

Page 1: Swift本ができるまで

Swift本ができるまで第1回 Swift LT会

Page 2: Swift本ができるまで

諏訪 悠紀• underscore Inc. • Develop, Design, and More... • iOS, Android, and More...

http://dev.classmethod.jp/author/suwa-yuki/Blog

http://underscore-app.tumblr.com/Apps

Page 3: Swift本ができるまで

Swiftの電子書籍を

出しました!

Page 4: Swift本ができるまで

先取り!Swift (電子書籍)

• 2014年6月18日発売

• 技術評論社出版

• Amazon Kindleストア, 楽天Kobo,

Gihyo Digital Publishingで購入可

• 600円

• Kindleストアのコンピュータ・IT

ベストセラー第1位獲得!

Page 5: Swift本ができるまで

今日のお話

• Swift本を出版するまでの経緯など

• 「先取り!Swift」を先取り!

• Swift本を題材に、話が広げられれば

Page 6: Swift本ができるまで

2014.6.3 WWDC 2014にてSwift発表

Page 7: Swift本ができるまで

2014.6.3数時間後にSwiftブログ公開

Page 8: Swift本ができるまで

クラスメソッド社長 弊社ブログ最高シェア数

Page 9: Swift本ができるまで

大橋「Swift本書く気ある?」

Page 10: Swift本ができるまで

WWDC 2014翌日に執筆依頼• 技評さんからブログ記事を見て声が掛かる

• 20ページ前後を想定

• 6/13発売予定 (結果、少し延期)

• 社員である小室・掛川・諏訪が執筆

↑ここまで1日

Page 11: Swift本ができるまで

「先取り!Swift」を先取り!

• 第1章 : Swiftの基本的な言語機能

• 第2章 : Swiftの特徴的な言語機能

• 第3章 : SwiftとObjective-Cの比較

この中から要点を先取りして紹介!

Page 12: Swift本ができるまで

関数オブジェクト

Page 13: Swift本ができるまで

Swiftの関数は自由自在func check(score: Int, condition: Int->Bool)->String { return condition(score) ? “合格” : “不合格”

} !func lowCondition(score:Int) -> Bool { return score > 50 } !func highCondition(score:Int) -> Bool { return score > 90 } !check(60, lowCondition) // true check(60, highCondition) // false

Page 14: Swift本ができるまで

関数はクロージャを使って短くできる

func check(score: Int, condition: Int->Bool)->String { return condition(score) ? “合格” : “不合格”

} !// クロージャ使用

check(60, {(x:Int)->Bool in return 60 > x}) // true check(60, {(x:Int)->Bool in return 90 > x}) // false !// 型推論を利用して省略

check(60, {x in 60 > x}) // true check(60, {x in 90 > x}) // false

Page 15: Swift本ができるまで

関数オブジェクトで処理が自由自在

• 関数をオブジェクトとして扱うことができ、自由な表現ができるようになった

• 短いは正義!だが、やりすぎると読みづらいので、実装時には可読性に注意 (適材適所)

Page 16: Swift本ができるまで

パターンマッチ

Page 17: Swift本ができるまで

パターンマッチとは?

特定の構文を

パターンとして検出し、処理する機能。

Page 18: Swift本ができるまで

タプルを分解して代入

// タプル

let fooBar = ("foo", "bar") let (a, b) = fooBar a // foo b // bar !// ワイルドカード

let (foo, _) = fooBar foo // foo !

Page 19: Swift本ができるまで

for in// タプルの配列を回す

let tupleList = [(0, 1), (1, 2), (1, 3)] var tupleListStr: String = "" for (_, b) in tupleList { tupleListStr += "\(b)," } tupleListStr // 1,2,3, !// Indexと値を取る

for (index, v) in enumerate(list) { str += "\(index):\(v)," } str // 0:foo,1:bar,2:baz,

Page 20: Swift本ができるまで

switch内でのwhere

let values = (30, 41) var maxValue: Int !switch values { case let (a, b) where a > b: maxValue = a case let (a, b) where a < b: maxValue = b case let (a, b): maxValue = a } !maxValue // 41

Page 21: Swift本ができるまで

パターンマッチでスマートに

• タプル大活躍

• ワイルドカードが地味に便利

• switch文はパターンマッチの見せ所なのでスマートに実装しよう

Page 22: Swift本ができるまで

Optional

Page 23: Swift本ができるまで

Optionalの疑問

Q. 挙動はいろいろ見ると何となく分かるけど、実際はどんなメリットがあるの?

A. オブジェクトの扱いがいろいろ安全になるよ!実際にコーディングしてみるとすぐにわかるよ。

Page 24: Swift本ができるまで

Optionalな引数

func hoge(value: Int) {

}

func fuga(value: Int?) {

}

Page 25: Swift本ができるまで

Optionalな戻り値

func hoge() -> Int {

}

func fuga() -> Int? {

}

Page 26: Swift本ができるまで

Optionalの利点

• ? や ! を付けておくと nil が入る可能性がある

• ? や ! を付けないと必ず値が入る

↑が引数(または戻り値)を見ただけで一目瞭然!

Page 27: Swift本ができるまで

シンタックスシュガー

Page 28: Swift本ができるまで

シンタックスシュガーとは?

糖衣構文(とういこうぶん)は、プログラミング言語において、読み書きのしやすさのために導入される構文であり、既に定義されている他の構文の(人間にとってより理解しやすい)書換えとして定義されるもののことである。構文糖(こうぶんとう)あるいは構文糖衣ともいう。

Page 29: Swift本ができるまで

Swiftはシンタックスシュガーがいっぱい

• T? は Optional<T> のシンタックスシュガー

• T! は ImplicitlyUnwrappedOptional<T> のシンタックスシュガー

• String[] は Array<String> のシンタックスシュガー

• hoge(#fuga: String) -> String は

hoge(fuga fuga: String) -> String の…

Page 30: Swift本ができるまで

シンタックスシュガーはきっと怖くない

• 普通に読んで「ん?」な構文が出てきたら、シンタックスシュガーであることを疑おう

• 元の構文が分かれば理解できる

• そして活用すればコードは短くなる

Page 31: Swift本ができるまで

まとめ

Swift本、もしよければご一読ください!

• Swiftの基本構文について学べる

• Swiftの特徴的な言語機能を学べる

• SwiftとObjective-Cの違いを学べる