LIFULL Creators Blog

LIFULL Creators Blogとは、株式会社LIFULLの社員が記事を共有するブログです。自分の役立つ経験や知識を広めることで世界をもっとFULLにしていきます。

WWDC 2017 - LAST DAY -

こんにちは。iOS開発Gの池田です。
本日はとうとうWWDC最終日!

今回は最終日の様子、セッションについての内容、最後に昨日の夜にあったBashの様子について書きます。 (前回の記事はこちら)

出発

最終日!ということで、ちょっとした気合いを入れつつホテルを出たのですが、こんな日に限ってあいにくの雨模様。
ここ最近の晴れ具合であったり、UBERで乗せてもらった方から聞いた話からも雨降りはなかなかレアな気がします。
そんなレアな天候の中、VTA(Santa Clara Valley Transportation Authority)に乗って会場に向かいました。 f:id:LIFULL-ikedakz:20170610114436j:plain

会場の様子

WWDC最終日はセッションも少なく、ラボも早い時間で閉まってしまいます。
そんな事情もあるため今日はほとんど人いないんじゃ、、と思ってたのですが、全然そんなことなかったです。
多くの人で会場は賑わっています。 f:id:LIFULL-ikedakz:20170610114513j:plain

今日はアツく揺さぶられるセッションが午前中なかったため、作業スペースで開発作業を進めていました。
セッションの動画も流れています。 f:id:LIFULL-ikedakz:20170610114944j:plain

そうこうしているうちに午後のセッションの時間になり、セッションに参加してきました!

セッション

今回参加したセッションは、「Efficient Interactions with Frameworks」です。 このセッションでは、Foundation内のパフォーマンスについての話とStringのパフォーマンスについての話がされていました。

Foundation内のパフォーマンスについて

以下パフォーマンスの改善が行われているそうです。

NSCalendar

メモリの使用 、速度の改善

NSOperation / NSOperationQueue

速度の改善

Data

速度の改善

Stringのパフォーマンスについて

Stringのbridgingについて

SwiftでUILabelやUITextViewのtextを変数に入れる場合、textの実装部分でObjective-CのUILabelや、NSTextStorageが利用されておりそのコストについての話でした。
UILabelを利用する場合もUITextViewを利用する場合も暗黙的にbridgingが行われ、それに対するコストがかかります。
ここでUILabelは比較的小さなデータ量を扱うことが多いためあまり意識しなくて良いが、UITextViewはデータ量が大きくなることもあるため気にした方が良いとのことでした。
具体的にはUITextViewのtextの中に1MBを超える文字列を扱う場合はパフォーマンスを気にした方良く、こういった場合は計測した上でパフォーマンスに影響を及ぼしている場合、以下のようにcopyの処理がはしらないmutableStringを使うのが良いそうです。

var text = textView.textStorage.mutableString

ここに関してはAppleも解決策を探しているが現状見つかっていないので、パフォーマンスに影響を及ぼしている場合上記のような処理を検討するのがよいとのことでした。

Rangeについて

NSRangeとRangeに新しいイニシャライザが追加され、NSRangeやNSRegularExpressionを利用するときに便利になっています。
NSRangeとRangeの相互変換がイニシャライザででき第二引数にStringを指定できるようになっているため、「NSRangeを作成するために一旦StringをNSStringに変換する」のような処理が必要なくなっています。 Rangeに追加されたイニシャライザは下記です。

init?(NSRange, in: String)

文字列のレイアウトとレンダリングについて

テキストのレンダリングでパフォーマンスを上げる方法として3つのtipsが挙げられていました。

  1. 可能な限り標準のコントロールを利用する
  2. AutoLayoutのようなモダンなレイアウトプラクティスを利用する
  3. NSAttributedStringを利用している場合、確定しているattributesは明確に指定する

3.の具体例で挙がっていたのは、directionやlineBreakModeです。
確定しているなら指定しておいた方が推測のコストが省けるため、若干パフォーマンス改善するそうです。

The Bash

WWDCでは毎年Apple公式の打ち上げのような形で The Bash が開催されます。
Bash の会場では食事やお酒が無料で提供されており、最中には有名なアーティストのライブもあります。

下の写真は会場に向かう橋です。
開場の20分ほど前に行ったのですが列ができており順々に数十人のグループで区切って通されます。
いっぱい乗ると落ちるぞ、みたいなことを言っています。怖いです。
f:id:LIFULL-ikedakz:20170610121016j:plain

この橋を超えて会場に入りました。
開場直後に入ったので、ぼちぼち人が人がいる程度です。
f:id:LIFULL-ikedakz:20170610123859j:plain

食事やお酒が提供されています。 f:id:LIFULL-ikedakz:20170610124016j:plain

そしてアーティストライブの時間がやってきました!
今年のゲストはFall Out Boy!!!!
前の方では飛び跳ねて盛り上がっている人たちも!
すごくかっこいいライブでした!

徐々に日は落ち、お酒も入りみんなテンションが上がっています。
机の上で踊り出す人々も出てきました! f:id:LIFULL-ikedakz:20170610125424j:plain

大勢の人で盛り上がった Bash も22時頃でクローズし、公式の打ち上げ(っぽいイベント)も終了です。

最後に

1週間に渡り様々な発表、ラボが開催されたWWDCも今日で最終日です。
ですがエンジニアにとっては、発表された技術をどう活かしてどうサービスに繋げていくか、それを考えて作っていく日々が始まったばかりです。
WWDCで発表された技術、情報を素早くキャッチアップして今後に繋げていきたいと思います!

私たちの会社でもWWDCの素早いキャッチアップに繋がるよう共有会を開催しますので、ぜひいらしてください! lifull.connpass.com

WWDC最終日の記事は以上となります!
ありがとうございました! f:id:LIFULL-ikedakz:20170610130950j:plain