こんにちは。iOSエンジニアの遠藤です。 9/15〜17にかけiOSDC Japan 2017が開催され、VASILYでもiOSチーム全員で参加しました。
また、私はLTとしてShift_JISのURLデコードについて発表させていただきました。 以下、発表資料です。 speakerdeck.com https://twitter.com/re___you
スタッフ、スポンサー、スピーカー、参加者の皆さんお疲れ様でした。 とても楽しかったです!
今年はトラック数も多く、幅広いジャンルの発表がありました。 どの発表も面白く興味深い内容でしたが、今回はVASILYでも実装やプロダクトに組み込んでいきたい内容を含んだ発表についていくつか紹介します。
iOSDC Japan 2017
iOSDC(iOS Developers Conference)とはiOSと周辺技術を題材としたカンファレンスです。 iosdc.jp
発表紹介
以下、VASILYで取り入れたい内容を含む発表についての紹介です。
- インタラクティブ画面遷移の実践的解説
- 具体例とクイズで学ぶ、Swiftの4種類のエラーの使い分け
- 両OSやるマンという選択
- Build high performance and maintainable UI library
- RxSwiftのObservableとは何か
- 15分でわかるバックグラウンドアップロード
インタラクティブ画面遷移の実践的解説
speakerdeck.com https://twitter.com/shmdevelop
概要
UIPercentDrivenInteractiveTransition
を使用した画面遷移の話です。
モーダル画面、同一画面でのインタラクティブな画面遷移の実装方法を丁寧に説明してあります。
所感
画面遷移のカスタマイズをあまりしたことが無いのですが、実装方法や躓いた点を詳しく説明して頂いたのでとても参考になりました。 インタラクティブな画面遷移を実装することで、一気にアプリがリッチな雰囲気になるので取り入れてみたいです。
具体例とクイズで学ぶ、Swiftの4種類のエラーの使い分け
speakerdeck.com https://twitter.com/koher
概要
Swiftで処理が失敗したことを表現する手段として例えば
- 返り値をOptionalにする
- throwsにする
- fatalErrorを使う
- preconditionを使う
などが挙げられますが、それらを「エラーをどのようにハンドリングしたいか、あるいはさせたくないか」という視点から適切に使い分ける方法について解説したトークです。
所感
エラーをSimple domain errors / Recoverable errors / Universal errors / Logic failuresの4つの概念で理解を深めることができました。 それによって普段書いているコードがどれに当たるのかを正しく判断できるということが分かりました。 特にpreconditionとコード最適化の関係など知らなかった点があったので勉強になりました。
両OSやるマンという選択
speakerdeck.com https://twitter.com/jumboOrNot
概要
iOSとAndroidの両OSを一人で開発しているエンジニアの話です。 両OSのアプリを開発する上で、マーケット、デザインガイドライン、開発環境、CI、開発言語などの多くの視点での知見がまとめられたとても実用的な内容でした。
所感
エンジニア向けのイベントなので、SwiftとKotlinの言語的な違いに終始しがちなテーマだと思っていました。 しかし実際は、App Store / Google Playでのアプリの売れ方による違いや、双方のデザインガイドラインの特徴などにも触れられていて参考になりました。 iOS / AndroidエンジニアがこれからAndroid / iOSの開発を始めるにあたって、ざっくりその違いを理解するのにとても役立ちます。
Build high performance and maintainable UI library
speakerdeck.com https://twitter.com/k_katsumi
概要
高速なUIを作るための実装についてと、メンテナンスしやすいコードについての発表です。 高速なUIを作る上で何がパフォーマンスを悪くしているのか、改善する上での注意点などの内容でした。 「メンテナンスしやすいコード」とは「テストしやすいコード」です。どのようにすればテストしやすいコードになるか例を用いて説明していました。 具体的には、依存が大きく単体でテストがしづらいViewをどのようにテストしやすいコードに分割できるかという内容でした。
所感
高速なUIを作るには、負荷の高い処理を減らすことが大事です。 しかしそれにはコードの可読性とのトレードオフになるのでしっかり見極めていきたいです。 メンテナンスしやすいコードについては、私たちはなかなかテストを書くことに時間を割けていませんが、テストを書くことでコードの信頼性を高めていきたいと感じました。 まずは、テストを書きやすくするために依存関係の少ないコードの設計、実装からスタートしていきたいです。
RxSwiftのObservableとは何か
www.slideshare.net qiita.com https://twitter.com/gomi_ningen
概要
RxSwiftを構成する要素の1つであるObservableに注目した内容です。 Obsevableを学びReactiveExtensionsについて理解を深めるために、 ObserverパターンからObservableの仕組みまでを丁寧に解説されていました。
所感
最近RxSwiftを使用して実装していますが、あまり内部の仕組みについて理解できていませんでした。 今回の発表ではコードを主体とした説明でとてもわかりやすく、Obsevableがどのようなものなのかを理解が深まりました。 発表で使用されていたコードを実際に動かしてより理解を深め、プロダクト実装で活かしていきたいです。
15分でわかるバックグラウンドアップロード
speakerdeck.com https://twitter.com/yimajo
概要
バッググラウンドアップロードの仕様から実装、デバッグで役に立つツールについての発表です。 実装でのハマリポイントなどもあり実用的にまとまっている内容です。
所感
これまで私たちは収集したユーザーの行動ログを、UIApplicationDelegate
のapplicationDidEnterBackground(_:)
のタイミングでサーバーに送っていました。
しかし、ログが大きい場合全てを送信することはできず、アプリ起動時や復帰時に残ったログを送るようしています。実装が散らばってしまうので今回のバッググラウンドアップロードを使用して全てのログをバッググラウンドで送れるような仕組みにしていきたいです。
最後に
以上がiOSDC Japan 2017の中で取り入れたい内容の紹介でした。 実装やプロダクトに取り入れた際には取り入れてみての感想などを記事で紹介していきます。 ぜひお楽しみに!
VASILYでは積極的に技術のインプットをしてプロダクトに取り入れていくエンジニアを募集しています。 興味のある方はこちらからご応募ください。