Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Swift本ができるまで

3,497 views

Published on

第1回 Swift LT 会の発表資料です。
(2014/06/25, ヤフー株式会社で開催)

電子書籍「先取り!Swift」ができるまでの経緯と、
本書の内容をピックアップして紹介しています。

Published in: Technology
  • Be the first to comment

Swift本ができるまで

  1. 1. Swift本ができるまで 第1回 Swift LT会
  2. 2. 諏訪 悠紀 • underscore Inc. • Develop, Design, and More... • iOS, Android, and More... http://dev.classmethod.jp/author/suwa-yuki/ Blog http://underscore-app.tumblr.com/ Apps
  3. 3. Swiftの電子書籍を
 出しました!
  4. 4. 先取り!Swift (電子書籍) • 2014年6月18日発売 • 技術評論社出版 • Amazon Kindleストア, 楽天Kobo,
 Gihyo Digital Publishingで購入可 • 600円 • Kindleストアのコンピュータ・IT ベストセラー第1位獲得!
  5. 5. 今日のお話 • Swift本を出版するまでの経緯など • 「先取り!Swift」を先取り! • Swift本を題材に、話が広げられれば
  6. 6. 2014.6.3 WWDC 2014にてSwift発表
  7. 7. 2014.6.3
 数時間後にSwiftブログ公開
  8. 8. クラスメソッド社長 弊社ブログ
 最高シェア数
  9. 9. 大橋「Swift本書く気ある?」
  10. 10. WWDC 2014翌日に執筆依頼 • 技評さんからブログ記事を見て声が掛かる • 20ページ前後を想定 • 6/13発売予定 (結果、少し延期) • 社員である小室・掛川・諏訪が執筆 ↑ここまで1日
  11. 11. 「先取り!Swift」を先取り! • 第1章 : Swiftの基本的な言語機能 • 第2章 : Swiftの特徴的な言語機能 • 第3章 : SwiftとObjective-Cの比較 この中から要点を先取りして紹介!
  12. 12. 関数オブジェクト
  13. 13. 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
  14. 14. 関数はクロージャを使って短くできる 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
  15. 15. 関数オブジェクトで処理が自由自在 • 関数をオブジェクトとして扱うことができ、自 由な表現ができるようになった • 短いは正義!だが、やりすぎると読みづらいの で、実装時には可読性に注意 (適材適所)
  16. 16. パターンマッチ
  17. 17. パターンマッチとは? 特定の構文を
 パターンとして検出し、
 処理する機能。
  18. 18. タプルを分解して代入 // タプル let fooBar = ("foo", "bar") let (a, b) = fooBar a // foo b // bar ! // ワイルドカード let (foo, _) = fooBar foo // foo !
  19. 19. 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,
  20. 20. 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
  21. 21. パターンマッチでスマートに • タプル大活躍 • ワイルドカードが地味に便利 • switch文はパターンマッチの見せ所なので
 スマートに実装しよう
  22. 22. Optional
  23. 23. Optionalの疑問 Q. 挙動はいろいろ見ると何となく分かるけど、
 実際はどんなメリットがあるの? A. オブジェクトの扱いがいろいろ安全になるよ! 実際にコーディングしてみるとすぐにわかるよ。
  24. 24. Optionalな引数 func hoge(value: Int) { } func fuga(value: Int?) { }
  25. 25. Optionalな戻り値 func hoge() -> Int { } func fuga() -> Int? { }
  26. 26. Optionalの利点 • ? や ! を付けておくと nil が入る可能性がある • ? や ! を付けないと必ず値が入る ↑が引数(または戻り値)を見ただけで一目瞭然!
  27. 27. シンタックスシュガー
  28. 28. シンタックスシュガーとは? 糖衣構文(とういこうぶん)は、プログラミング 言語において、読み書きのしやすさのために導入 される構文であり、既に定義されている他の構文 の(人間にとってより理解しやすい)書換えとし て定義されるもののことである。構文糖(こうぶ んとう)あるいは構文糖衣ともいう。
  29. 29. Swiftはシンタックスシュガーがいっぱい • T? は Optional<T> のシンタックスシュガー • T! は ImplicitlyUnwrappedOptional<T> のシンタッ クスシュガー • String[] は Array<String> のシンタックスシュガー • hoge(#fuga: String) -> String は
 hoge(fuga fuga: String) -> String の…
  30. 30. シンタックスシュガーはきっと怖くない • 普通に読んで「ん?」な構文が出てきたら、シ ンタックスシュガーであることを疑おう • 元の構文が分かれば理解できる • そして活用すればコードは短くなる
  31. 31. まとめ Swift本、もしよければご一読ください! • Swiftの基本構文について学べる • Swiftの特徴的な言語機能を学べる • SwiftとObjective-Cの違いを学べる

×