Tamablog

たまに更新するiOS/Mac系技術ブログ。

俺コン&リジェクトコンに行ってきた

iOSDCでリジェクトされたトークを聞きにいける俺コン&リジェクトコンに行ってきました。どちらも1日目しか行けなかったのですが、面白いトークがいくつかあったので紹介します。

f:id:tamadeveloper:20180927221347j:plain

非同期UI描画による高速なアプリケーションの実装

日経は以前から60fpsを目指したり、PWAに取り組くんだり、Webサイトを爆速化したりと、パフォーマンスに関しては妥協せずに取り組んでいるというイメージがあります。今回もTextureというフレームワークを採用して高速化を図ったというお話でした。デモビデオでは確かにiOS版アプリのカクツキがなくなっており、目で見えるくらいのスピードアップが達成されたようです。

このTextureというライブラリの仕組みが気になったので調べてみました。基本的にはオフスクリーン画像に描画してCALayerを使って表示する、という仕組みのようです。詳しくはQiitaに書いています。

ブラックボックスなコードに対して少しずつテストを書いていくためのテクニック

毎回素晴らしい内容を発表する @k_katsumi さんのセッションです。今回も相変わらずのクオリティーで、会場も仕切りをなくしてひとつの大部屋にした形で行われました。

一番強調されていたことは「まずは最初のテストを書いてCIで動かす」という事です。ひとつでもテストが動けば、テストの追加コストは低くなるので続けやすくなります。どんな簡単なテストでも良いので始めることが大切との事でした。

個人的に面白かったのはiOSSnapshotTestCaseというツールです。元はFacebookが開発し、今はUberがメンテナンスしているツールで、アプリのスクリーンショットを比較することでUIをテストすることができます。アプリのUIの部分は一番テストが難しいところなので、非常に興味深いお話でした。なお、画面に収まらない部分でもスクリーンショットを撮影することが可能との事です。

資料は加筆してから公開されるようなので乞うご期待。

Swiftをより良くする

@d_date さんがSwiftのDictionaryに新しいAPIとなるcompactMapValuesを提案し、無事Swift 5での採用が決定したというお話でした。ソースコードでrejectNilHeaders()という関数の実装を見たことがきっかけとなり、より良い実装を考えた結果、compactMapValuesのアイデアに辿り着いたとの事でした。

発案、実装、テストを経てSwift Evolutionにプロポーザルを提出し、採用されるまでの体験談はなかなか聞く事ができません。日本人でこれを話せるのはこの方だけではないでしょうか。非常に興味深いお話でした。