SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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の違いを学べる

Weitere ähnliche Inhalte

Mehr von yuki0211s

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

Mehr von yuki0211s (6)

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

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Kürzlich hochgeladen (9)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

Swift本ができるまで