iOSDCでリジェクトされたトークを聞きにいける俺コン&リジェクトコンに行ってきました。どちらも1日目しか行けなかったのですが、面白いトークがいくつかあったので紹介します。
非同期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にプロポーザルを提出し、採用されるまでの体験談はなかなか聞く事ができません。日本人でこれを話せるのはこの方だけではないでしょうか。非常に興味深いお話でした。