
iOSDC Japan 2019 に参加してきました #iosdc #アル 開発ブログ
こんにちは!アルでエンジニアをやっている koogawa です!9/5 からの3日間、iOSDC Japan 2019 という iOS のカンファレンスに参加してきましたのでさっそく内容をレポートしたいと思います。
iOSDC とは
iOSDC は、iOSアプリなどiOS周辺技術に関わるエンジニアが、技術的なノウハウを共有するためのイベントです。
トークのテーマは必ずしもiOS関連の話である必要はありません。iOSエンジニアが聞いて面白ければ何でもアリです!
会場ではノベルティもたくさん頂きました。
なんとトートバッグが今流行りのダークモードに対応していました(ライトなトートバッグとダークなトートバッグ、好きな方を選べる)。このあたりは流石ですね!
以下、私が聴いてきたトークのうち、いくつかピックアップして紹介します。
実機の管理とおさらば!AWS Device FarmでiOSのテストをしよう!(fushiroyamaさん)
* テストの種類
* ユーザが⼿動で⾏うテスト
* ⾃動テスト (Automated Tests)
* ユニットテスト (Unit Test)
* 統合テスト (Integration Test)
* UIテスト
* テストピラミッド
* UI Tests -> Service Tests -> Unit Tests
* の順に数が多くなる
* 左に行くほど手間がかかる
* XCTest https://developer.apple.com/documentation/xctest
* Appleが開発・提供するテストフレームワーク
* ユニットテスト、パフォーマンステスト、UIテストを提供
* Xcode 5.0+ から利⽤可能
* じゃんけんゲームのユニットテストを書くケースを考える
* 実はじゃんけんはテストが書きにくい
* 結果がランダムだから
* そんなときにDI使うと外から値(自分が何を出して、相手が何を出すか等)を注入できる
* テストが書きやすくなる
* じゃんけんゲームのUIテストを書くケースを考える
* アクセシビリティlabel 使わないとグーの画像なのか何なのか区別がつかない
* ユーザーから「iOS 10 でクラッシュするよ!」というレポートが来た
* でもiOS 10の端末なんて持ってないよ!
* そんなとき AWS Device Farm の登場である
* https://aws.amazon.com/jp/device-farm/
* パブリックデバイスとプライベートデバイスがある
* パブリックはテストごとにデータ消去して再起動
* プライベートはデバイスを専有できる(契約終了後に廃棄)
* プライベートはリモートデバッグ機能が利⽤可能
* CircleCIなどのCI/CDサービスを使ってDevice Farmのテストを⾃動化できる
* 面倒な署名周りも楽ちん
感想
私は古い iOS がインストールされた端末を売らずに残しています。それはもちろん、古い iOS で発生するバグにも対応できるようにするためなのですが、今回紹介されていた AWS Device Farm があればそういったことも不要になるなぁ、と感じました。
また、このトークはテストを書いたことがない方にもぜひおすすめしたい内容でした。なぜテストを書くのか?どういったケースだとテストが書きにくいのか?その場合はどうすればよいのか?などがとても良くまとまっています。
iOSアプリのリジェクトリスクを早期に発見するための取り組み(Kesin11さん)
* 【クイズ】前回App Store Reviewガイドラインが更新されたのはいつでしょう?
* 6/3
* 社内にQAチームがいてリジェクトリスクが有る場合は差し戻され、そもそもアプリ申請ができない。
* リジェクトリスクを検査する Fastlaneプラグインを作った!
* どんなリジェクトリスクをチェックしているか?
* iOS SDKバージョンが古すぎないか
* Xcodeバージョンが古すぎないか
* アイコンサイズが揃っているか
* PrivateFrameworkをリンクしていないか
* 非公開url schemeを使っていないか
* プライバシーに関する機能の説明文が空でないか
* 64bit対応
* これらをCIに見込み、自動化
* ガイドラインを追い続ける方法
* Appleのデベロッパー向けNews https://developer.apple.com/news/
* 要求SDKバージョン更新など重要な情報も流れる
* 社内の過去のリジェクト事例を共有して横展開
* Reviewガイドラインが更新された際にdiffを取る
感想
まず、社内にリジェクトリスクを扱う専門のQAチームがいるということに驚きました。さらに、開発チームもリジェクトリスクを洗い出す作業を自動化するなど、社内全体で徹底されているなーという印象を受けました。
トークの冒頭での「前回 App Review ガイドラインが更新された時期はいつでしょう?」という問いに私は正解できなかったので、今後はもっとチェックに力を入れていこうと反省しました。
テストケースで Ambiguous Layout を発見する(tarunonさん)
* AutoLayout エラーは直すのが大変!
* AutoLayout のエラーが出ると 0.3〜0.5 秒表示が遅くなる!
* 起動画面とかで 0.1 秒表示が遅くなるだけで売上も落ちる
* そこで AutoLayout のエラーをチェックするライブラリ作ったよ!
* https://github.com/tarunon/XCTAssertAutolayout
* Autolayoutの制約が不十分な場合、`hasAmbiguousLayout` プロパティを利用することで Ambiguousを検知することもできる
* デモ!
感想
Ambiguous Layout のエラーは割と対応するのを後回しにしてしまいがちだったのですが、このエラーが出ると表示が 0.3〜0.5 秒表示が遅くなるという事実を聞いて、ちゃんとやらなきゃなぁ、と反省しました。アルのアプリでも tarunon さんの XCTAssertAutolayout を使って継続的にエラーをチェックする仕組みを構築してみようと思います。
ちなみに、デモ中にトラブルが発生しても壇上で落ち着いて対処できるのは流石だなと思いました。
まとめ
どのトークも本当に興味深く、勉強になるものばかりでした!
今年も「機械的席詰め(3人がけの席で真ん中だけが空いていたら、機械的に右に詰めるシステム)」は健在で、1人でも多くの参加者がトークを聴けるように、という運営側の配慮が伝わってきました。
また、オープニングトークの中で「トークを聴く際の注意事項」についてもしっかり説明があるため、例えばトーク中にスライドをパシャパシャ撮りまくる人などは全く見かけませんでした。iOSDCは、参加者が不快な思いをすることが本当に少ないカンファレンスだと思います。
気になるトークがあれば後日資料や動画などが公開されると思いますのでぜひチェックしてみることをオススメします。発表者の皆様やスタッフの皆様には心から感謝しております。来年も iOSDC が開催されることを楽しみにしております!