LIFULL Creators Blog

「株式会社LIFULL(ライフル)」の社員によるブログです。

WWDC 2017 - DAY THREE -

こんにちは。iOS開発Gの塙です。 本日でWWDCは3日目です。早いですね。イベントも中盤まで差し掛かり、デベロッパーの血と汗の結晶である技術情報がウェブ上にチラホラ出て来ていますね。感謝の気持ちを忘れずに根こそぎ吸い上げていきましょう。前日の記事はこちらです。

「What’s New in WatchOS4」と「What’s New in Foundation」のセッションがあったのでwatchOS4とSwift4について書きたいと思います。が、その前に今回も会場の様子をお伝えしたいと思います。

WWDCは期間中食事を無料で提供してくれます。今日のお昼ごはんはサラダです。野菜はいいぞ。味については触れませんが、日本って本当に食に恵まれているんだなあと思いました。味については触れませんよ。

f:id:LIFULL-hanawat:20170608152040j:plain

もちろんドリンクも無料です。お財布が寂しい私は毎日歓喜してます。コーヒーは(おそらく)スターバックスでとっても美味しいです。一体何リットルのコーヒーがこの会場に運ばれているのでしょうか。なんとなく恐怖です。

f:id:LIFULL-hanawat:20170608152006j:plain

物販もやっています。WWDC限定の商品があるので毎年1,2日目には品薄状態になってしまいます。iOSエンジニアはここのTシャツをドヤ顔で着るのがスマートだと思います。

f:id:LIFULL-hanawat:20170608151937j:plain

毎年近場で行われているAltConfというApple製品のデベロッパーカンファレンスがあります。私は去年このイベントをメインで参加していました。なぜなら無料だからです。受付の方、お茶目ですね。

f:id:LIFULL-hanawat:20170608151917j:plain

AltConfはスポンサーの企業が会場内にブースを作り、グッズや製品を置いて客寄せしています。このTシャツはもちろん無料です。寝巻きに最適です。

f:id:LIFULL-hanawat:20170608152025j:plain

本日はUser Interface Design Labという予約制のラボ(相談に乗ってくれるブース)に行って来ました。近年では毎朝7時に当日の予約が開始されるのですが、1~2分で満席になるというとても貴重なラボなのです。WWDCに行く場合はぜひチャレンジしたほうがいいと思います。

f:id:LIFULL-hanawat:20170608152057j:plain

なんとなくWWDCに行った時のイメージが湧きましたか?湧きましたね。ということでwatchOS4とSwift4(一部)を紹介したいと思います。

watchOS4

Core ML

iOSと同様に機械学習モデルを扱えるようになるフレームワークが追加されました。 watchOSは近年スポーツや健康管理の機能強化をしているので、そのデータと機械学習を組み合わせて面白いことができそうですね。

SiriKit

こちらもiOSと同様にSiriKitのIntent Domain(できること)に「List nad Notes」が追加されました。サードパーティ製アプリのメモやタスクをSiriから登録できます。

また下記のIntent Domainに追加された機能もiOSと同じですね。

  • Ride Booking : キャンセルとフィードバック機能
  • Payments : 送金とアカウント検索機能

HomeKit

こちらもまたまたiOSと同様に下記のトリガーが追加されました。

  • HMSignificantTimeEvent : 日の出/日没時間
  • HMCalendarEvent : 特定の日時
  • HMDurationEvent : タイムインターバル(繰り返し時間)
  • HMCharacteristicThresholdRangeEvent : 接続されたデバイスの出力する値の範囲(温度や明度など)
  • HMPresenceEvent : ユーザーの有無

Apple Pay

こちらもまたまたまたiOSと同様に支払い情報と認証エラーをハンドリングできるようになりました。

ここまで読んでいてがっかりされている方が多いと思います。私もアプリのストリーミングでセッションを聞いていて、途中でそっとスリープボタンを押そうとしてしまいました。ただ、次のアップデートは夢があると思います。

Core Bluetooth

ついにwatchOSにCore Bluetoothが追加されました。Apple Watchから様々な機器を操作できるようになりますね。ただし下記の制限があります。

  • セントラル(見つけに行くデバイス)のみ可能
  • ペリフェラル(見つけて貰うデバイス)は2台まで
  • 接続インターバルの時間は フォアグラウンド : 30ms / バックグラウンド : 120ms
  • バックグラウンドでは接続のみ可能(スキャンはできない)
  • ペリフェラル側はアプリが停止したら接続解除される

Swift4

様々なアップデートがある中で、私のまわりで最もザワついた項目であるCodableのみ取り上げたいと思います。

Codable

Swiftのstructやenumを簡単にシリアライズ/デシリアライズできるようになりました。

struct Person: Codable {

  enum Child: String, Codable {
    case son, daughter
  }

  let name: String
  let age: Int
  let children: [Child]
}

let person = Person(name: "Foo", age: 10, children: [.son, .daughter])
let data = try? JSONEncoder().encode(person)

デコードもできます。JSONデータを外部ライブラリを使用してパースしなくて済みますね。

let person = try? JSONDecoder().decode(Person.self, from: data)

少し詳しくQiitaに投稿したのでご確認いただければと思います。 qiita.com

では残り2日間楽しみながらたくさん学んでいきたいと思います。アディオス。 f:id:LIFULL-hanawat:20170608151900j:plain 宿泊先のホテルです。ちょっとカッコつけてみました。