SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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の違いを学べる

Contenu connexe

Plus de 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を使ってみよう!気軽に使える近距離無線通信
 

Dernier

Dernier (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Swift本ができるまで