読者です 読者をやめる 読者になる 読者になる

Gunosy for Apple Watchができるまで

iOS Engineering

Gunosyが2015/05/27にApple Watch meetup @ HillsGarageを開催した。

私にとっては初めての参加者100人近いイベントだったので学びが多かった。

Apple Watch meetup @ HillsGarageを開催しました。

f:id:jeffsuke:20130203070950j:plain

発表内容

Gunosy for Apple Watchができるまでに突破した課題達をまとめた内容。 Twitter上で反応があった内容を一部抜粋して紹介する。

Watch App

willActivate()の活用

現在Apple Watch上でのビューが呼び出されるまでの手順は以下のようになっている。

  1. Watch Appが呼び出される
  2. Storyboardが読み込まれる
  3. 対象画面のinit, awakeが走る
  4. Watch上で画面が表示される
  5. willActivate()が呼ばれる

結果的に、initとawakeでの処理を最小限にすることでユーザーの体感スピードが上がる。

// MARK: Life cycle
    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        if context != nil {
            self.article = context as? ArticleEntity
        }
    }
    
    override func willActivate() {
        super.willActivate()
        if article != nil {
            self.layout(article!)
        }
    }

WKInterfaceGroupの利用

画像を用いる場合はWKInterfaceImageWKInterfaceGroupの中に入れると便利である。Placeholderとしても使えるし、storyboardから角丸の設定もできる。 Placeholderを設定する場合は以下のとおり。

self.imageGroup.setBackgroundImage(UIImage(named:"no_image"))

角丸に設定するためには、WKInterfaceGroupを選択し、Attribute inspectorからRadiusを変更できる。

Glance

複雑な描画を本体で

Apple Watch用のStoryboardはiOSアプリ用と比較してレイアウトに制限が多い。 そこでGunosyアプリを作る際には、Extension上でCATextLayerを使って描画し、NSDataとしてWatchに転送している。その際作ったライブラリは以下で公開している。

GitHub - jeffsuke/GlanceWordRainbowImage

参考:Apple Watch meetup で発表しました

イベント開催する上での学び

個人的には大き目のイベントだったので開催する上での学びも多かった。 今後似たようなイベントを開催する上での参考になれば嬉しい。

  • 食事はピザが大人気だった
  • ビール複数種類あると良い
  • 100人分注文すると余る
  • デザートはいらない
  • 椅子の向きとか、音楽、雰囲気を工夫しないとかたい雰囲気になりがち
  • 会社から4人片付けに参加したが、足りず周りに協力してもらう必要があった
  • HillsGarageはドラムあるし、音響いいし、広いし、最高の会場だった
  • 勉強会の時間は押すもの。バッファを積もう。