SlideShare a Scribd company logo
Swift本ができるまで
第1回 Swift LT会
諏訪 悠紀
• underscore Inc.
• Develop, Design, and More...
• iOS, Android, and More...
http://dev.classmethod.jp/author/suwa-yuki/
Blog
http://underscore-app.tumblr.com/
Apps
Swiftの電子書籍を

出しました!
先取り!Swift (電子書籍)
• 2014年6月18日発売
• 技術評論社出版
• Amazon Kindleストア, 楽天Kobo,

Gihyo Digital Publishingで購入可
• 600円
• Kindleストアのコンピュータ・IT
ベストセラー第1位獲得!
今日のお話
• Swift本を出版するまでの経緯など
• 「先取り!Swift」を先取り!
• Swift本を題材に、話が広げられれば
2014.6.3
WWDC 2014にてSwift発表
2014.6.3

数時間後にSwiftブログ公開
クラスメソッド社長
弊社ブログ

最高シェア数
大橋「Swift本書く気ある?」
WWDC 2014翌日に執筆依頼
• 技評さんからブログ記事を見て声が掛かる
• 20ページ前後を想定
• 6/13発売予定 (結果、少し延期)
• 社員である小室・掛川・諏訪が執筆
↑ここまで1日
「先取り!Swift」を先取り!
• 第1章 : Swiftの基本的な言語機能
• 第2章 : Swiftの特徴的な言語機能
• 第3章 : SwiftとObjective-Cの比較
この中から要点を先取りして紹介!
関数オブジェクト
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
関数はクロージャを使って短くできる
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
関数オブジェクトで処理が自由自在
• 関数をオブジェクトとして扱うことができ、自
由な表現ができるようになった
• 短いは正義!だが、やりすぎると読みづらいの
で、実装時には可読性に注意 (適材適所)
パターンマッチ
パターンマッチとは?
特定の構文を

パターンとして検出し、

処理する機能。
タプルを分解して代入
// タプル
let fooBar = ("foo", "bar")
let (a, b) = fooBar
a // foo
b // bar
!
// ワイルドカード
let (foo, _) = fooBar
foo // foo
!
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,
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
パターンマッチでスマートに
• タプル大活躍
• ワイルドカードが地味に便利
• switch文はパターンマッチの見せ所なので

スマートに実装しよう
Optional
Optionalの疑問
Q. 挙動はいろいろ見ると何となく分かるけど、

実際はどんなメリットがあるの?
A. オブジェクトの扱いがいろいろ安全になるよ!
実際にコーディングしてみるとすぐにわかるよ。
Optionalな引数
func hoge(value: Int) {
}
func fuga(value: Int?) {
}
Optionalな戻り値
func hoge() -> Int {
}
func fuga() -> Int? {
}
Optionalの利点
• ? や ! を付けておくと nil が入る可能性がある
• ? や ! を付けないと必ず値が入る
↑が引数(または戻り値)を見ただけで一目瞭然!
シンタックスシュガー
シンタックスシュガーとは?
糖衣構文(とういこうぶん)は、プログラミング
言語において、読み書きのしやすさのために導入
される構文であり、既に定義されている他の構文
の(人間にとってより理解しやすい)書換えとし
て定義されるもののことである。構文糖(こうぶ
んとう)あるいは構文糖衣ともいう。
Swiftはシンタックスシュガーがいっぱい
• T? は Optional<T> のシンタックスシュガー
• T! は ImplicitlyUnwrappedOptional<T> のシンタッ
クスシュガー
• String[] は Array<String> のシンタックスシュガー
• hoge(#fuga: String) -> String は

hoge(fuga fuga: String) -> String の…
シンタックスシュガーはきっと怖くない
• 普通に読んで「ん?」な構文が出てきたら、シ
ンタックスシュガーであることを疑おう
• 元の構文が分かれば理解できる
• そして活用すればコードは短くなる
まとめ
Swift本、もしよければご一読ください!
• Swiftの基本構文について学べる
• Swiftの特徴的な言語機能を学べる
• SwiftとObjective-Cの違いを学べる

More Related Content

PDF
巨大昆虫作成ビジネスの提案
PDF
Objective-Cプログラマのためのswift導入法
PDF
これからはじめる SwiftPlayground入門
PDF
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
PDF
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
PDF
Swiftで多層型で戻り値を返すことの是非と雑談
PDF
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
PDF
iOS の通信における認証の種類とその取り扱い
巨大昆虫作成ビジネスの提案
Objective-Cプログラマのためのswift導入法
これからはじめる SwiftPlayground入門
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
Swiftで多層型で戻り値を返すことの是非と雑談
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
iOS の通信における認証の種類とその取り扱い

Similar to Swift本ができるまで (20)

PDF
Swift入門おさらい
PDF
Mobile programming seigyokoubun
PDF
20141128 iOSチーム勉強会 My Sweet Swift
PDF
Swift事情2014夏 ~ Swift入門 beta6対応
PDF
Study Swift
PDF
Swiftの新機能 Optional
PPTX
SwiftのOptionalを理解する
PPTX
第2回iOSアプリ勉強会
PDF
続・ゲンバのSwift
PDF
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
PDF
SwiftのOptionalを理解する
PDF
Swiftおさらい
PDF
Objective-CからSwiftへの移行講座
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
PDF
脱swift初心者するための2つのきっかけ
PDF
勉強会資料ースイフト入門ー
PDF
Swift勉強会
PDF
ほんわかSwift勉強資料
PDF
iOS 8/Swift 概要 #ios8yahoo
PDF
4年前のカメラアプリをSwiftで書きなおした
Swift入門おさらい
Mobile programming seigyokoubun
20141128 iOSチーム勉強会 My Sweet Swift
Swift事情2014夏 ~ Swift入門 beta6対応
Study Swift
Swiftの新機能 Optional
SwiftのOptionalを理解する
第2回iOSアプリ勉強会
続・ゲンバのSwift
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
SwiftのOptionalを理解する
Swiftおさらい
Objective-CからSwiftへの移行講座
iPhoneアプリ開発の歩き方〜Swift編〜
脱swift初心者するための2つのきっかけ
勉強会資料ースイフト入門ー
Swift勉強会
ほんわかSwift勉強資料
iOS 8/Swift 概要 #ios8yahoo
4年前のカメラアプリをSwiftで書きなおした
Ad

More from yuki0211s (6)

PDF
Xcode 7で始めるCI
PDF
AWS Mobile Hub で構築するクラウドネイティブモバイルアーキテクチャ
PDF
AWS Mobile SDK利用時のテスト手法
PDF
Lambda × Mobileの可能性
PDF
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
PDF
iBeaconを使ってみよう!気軽に使える近距離無線通信
Xcode 7で始めるCI
AWS Mobile Hub で構築するクラウドネイティブモバイルアーキテクチャ
AWS Mobile SDK利用時のテスト手法
Lambda × Mobileの可能性
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
iBeaconを使ってみよう!気軽に使える近距離無線通信
Ad

Swift本ができるまで