[レポート] みんなで Swift 復習会 GO! in 仙台 – 3rd′ に参加してきました! #minna_de_swift #socilabo

こんにちは!
モバイルアプリサービス部の田中孝明です。

7/15(水)に ソシラボ で開催された みんなで Swift 復習会 GO! in 仙台 – 3rd′に参加してきました。

今回はSWWDC × AKIBA.swift in Sendaiと同時開催ということで、仙台に行ってまいりました!

IMG_4824

目的

Swift を基礎から見直してみたら、新しいことがたくさん見つかるかもしれない。そしてそんなせっかくの機会なら、みんなと一緒に勉強できたら楽しそう。そう思い立って 東京の渋谷 で始めた勉強会。

今回は SWWDC × AKIBA.swift 勉強会 の開催と合わせて、同日開催してみることにしました。午後の勉強会ともども、よろしくお願い致しますね!

これから Swift に触れようとしている人から、既に熟知している人まで、Swift が好きならどなたでも大歓迎です。題材自体は基礎的なので、Swift 言語にさえ興味があれば有意義に過ごせるんじゃないかなって思ってます。

進め方

題材は Apple 公式の Swift 解説書 The Swift Programming Language (Swift 3.1) をベースに、そこから Swift に対する思いの丈を語っていきます。

この本を元に作った小さなスライドを使って進めます。途中でいろいろ脱線したり談笑しながら、本のページ数に換算すると数ページくらい進んで終わります。

本文

値について

  • letを極力使うようにする
    • 自らに制約を課すことで、「reduce」「map」「filter」「flatmap」などの機構を使う機会が出てくる
let sum = (1...10).reduce(0) { $0 + $1 }


  • letとvarの特性を生かしてコードを書くことが重要
    • Swift 4.0 では reduceの引数が inout になる
  • 計算量によってコンピューテッド・プロパティ(Computed Property)を採用する
    • 計算量によって関数にするか、コンピューテッド・プロパティ(Computed Property)使い分けをしているところがある
    • AppleのAPIガイドラインでプロパティを定義するときは計算量をコメントで書いたほうがいいとのこと
  • プロパティのwillSet / didSetについて
    • didSetはUILabelのtextの初期値を設定するテクニックに利用できる
    • didSetでの影響範囲は自らのプロパティの値にとどめておく方がいい


@IBOutlet weak var label: UILabel! {
didSet {
    label.text = "CAPTION"
}


  • IBOutletでweakを指定しなくてもよくなった?
    • WWDC 2015のセッション、Implementing UI Designs in Interface Builder で話されたことがある
    • 正式な資料として反映されていないため、情報の精査が必要
    • 引き続き、weakを指定するのが無難


型推論について

  • 型推論は積極的に利用する
  • 型に厳格な言語なのでDouble, Intの混じった計算の時に、型変換が入るのは致し方ない
  • CGFloat -> Double問題

さいごに

いい意味で脱線したため、「値」の項目で一時間以上かかりましたが、参加者が一体となって不明点を議論していくのはなかなか新鮮でした。
講演者→傍聴者というスタイルではなく、参加者全員でSwiftの復習をしていくスタイルは真似しようとしても真似できないため、有意義な時間が過ごせました!