WWDC17 で気になったセッションについて(Bashもあるよ)

はじめに

みなさん,こんにちは!
iOSアプリエンジニアの麻生です。
現在サンノゼ WWDC17 に参加中です。
昨晩(木曜夜)行われた Bashの模様と気になったセッションについて書きたいと思います。

 

Bash

WWDC の恒例行事で,基本的に木曜夜に開催されます。
多くの開発者が集まってワイワイするイベントです!
コンサートもあり,今年は Fall out boy というバンドのパフォーマンスでした。
一番前に陣取って楽しむことができました。

最初の挨拶は最近では恒例ですね。クレイグ・フェデリギさん登場。

アメリカの歌手で知ってるのは Swift つながりで
テイラー・スウィフトとかくらいで結構疎い方なのですが,
知らなくてもいい,とにかく楽しむ!雰囲気が大事なんですよ。

カラダ全体が振動板みたいで低音はすごかったです。

セッションで気になったこと

金曜のセッションで Auto Layout のセッションを聞きました。
Safe Areas 周りのレイアウトなどなかなか興味深かったので
少し抜粋して書きたいと思います。

Safe Areas

コントロールセンターと並んで,おそらく現在の iOS ユーザにとって
インパクトの強い部分の一部だと思います。かなり太い大きなフォントの部分です。


Keynote から抜粋

ナビゲーションバーがあればスクロールで隠れた時に
そのままナビゲーションバーのタイトルになります。
スクロールしない場合はそのまま残っているようです。

実装は各 ViewControler で下記のように実装します。
iOS 11 からの機能なのでそれ以下のバージョンを対応する場合は
場合分けが必要になります。

 

// ViewController.swift
override func viewDidLoad() {
  super.viewDidLoad()
  self.navigationItem.title = "iOS 11 Sample"
 
  // iOS 11 からの機能
  if #available(iOS 11.0, *) {
    // ここで Large Title が有効になります
    self.navigationController?.navigationBar.prefersLargeTitles = true
  } else {
    // 基本書かなくても良いと思います
    // Fallback on earlier versions
  }
  if #available(iOS 11.0, *) {
    // この ViewController でどうするか
    self.navigationItem.largeTitleDisplayMode = .always
  } else {
    // 基本書かなくても良いと思います
    // Fallback on earlier versions
  }
}

 

largeTitleDisplayMode は 3 種類用意されているようです。
.automatic,.always,.never で,

設定したくない View Controller では .never を設定すれば良いです。
例えば上側(Top)の制約について
Xcode 8 までは 下記のように Top Layout Guide に向けて制約をつけていました。

Xcode 9 から Interface Builder Document の部分に
Use Safe Area Layout Guide が追加されています。
そのチェックを入れると,Safe Area に向けて制約をつけるようになります。
(Safe Area.Top になります)
Safe Area.Top に向けて制約をつけることで Contents が
SafeArea下に潜り込んだりしなくなります。
Safe Area の機能を使う際はできるだけ チェックを入れた方が良さそうです。

このチェックを入れてしまうと Xcode 9 未満の Xcode で
Storyboard や XIB が開けなくなるので注意が必要です。

スクリーンショット貼れないのが辛いです・・・
この UI は多用するとインパクトに欠けてしまうので,
使うべきところを吟味して実装していきたいところです。

UX の高い良い Apple Watch アプリとは

私は Apple Watch で常に何かできないかと考えている開発者の一人です。
Planning a Great Apple Watch Experience という
セッションもとても興味深く聴きました。

Apple が Apple Watch のアプリで重視しているのは,
Legible・Concise・Timely・Personal
(判別可能性が高い・無駄なく簡素・タイムリー・ユーザ個人向け)
などなんだそうです。
実際にこれを実現しているアプリを合わせて紹介してくれてとても分かり易かったです。

Apple Watch は画面が小さいですから
なんでもかんでも一つの画面に情報を詰め込むというのは良くないです。
8 時間分の風速と向き,Swell(波高でしょうか),気温を実装する場合を
例にあげ Watch でどう見せるかを紹介していました。
全部 1 画面に詰め込んだ場合,上記の 4 つの要素を満足できないそうです。
確かに。(ユーザにとって違うかもしれませんが。)

ではどうすればいいかというと,

それぞれの項目ごとにページを分ければいいとのことで。
3 画面分使って分けることで実現していました。

また,グラフの時間軸の区間に
フォーカスを当てることでタイムリーさを出していました。

後半は Apple が出している WWDC の watch App の歴史を辿りながら
どう実装するか考えたというケースをみていきました。
ここで重要なのは,なんでも情報を詰め込むのではなく,
ユーザが Watch で見たいものは何かということを考えることだと感じました。
現在の WWDC のアプリでは,お気に入りのセッションの表示だけに割り切ってます。

Apple Watch の重要な役割の一つは通知ですよね。
通知の見せ方についても言及されていました。
ユーザがまず確認する画面では
アプリの名前・アイコン・通知のタイトルをしっかりと見せ,
次に見る画面では何をユーザに通知するかをしっかり明記することが大事。
アップデートしたから確認してねなどの通知文だと二度手間な感じしますよね。
iPhone で確認してくれるユーザはまだいいですが,面倒に思って確認しないユーザもいそうです。

Apple Watch はまだまだこれからのデバイスだと思っていますので
これまで以上に設計段階からもっと踏み込んで開発していかないとと思い直した次第です。

 

おわりに

今回は Bash のもようと気になったセッションの一部について書きました。

これから iOS 11,watchOS 4 がリリースされる秋までに

色々仮実装してみて,気になる機能を試していこうと思います!

ご覧いただきありがとうございました!!



Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 16271409 bytes) in /home/yumeco/www/prod/wp-includes/wp-db.php on line 1171