こんにちは。猪俣です。
前回に引き続き、iOS開発者向けカンファレンス「 iOSDC Japan 2019 」2日目の発表レポートをお送りします。
テストケースでAmbiguous Layoutを発見する
発表者: @tarunon
Ambiguous Layoutエラーはご存知でしょうか。Ambiguous Layoutは、ストーリーボードなどインターフェイスビルダーでAuto Layoutを使った開発をしているとたまにログに流れているエラーメッセージです。
オートレイアウト設定の制約(Constraint)の組み合わせに矛盾があったり、不足している場合に発生するエラーなのですが、
このエラーが出ると不要な制約を破壊したり、不足している制約を足したりしてUIを調整する処理が走ります。
一見動作に問題がなく見えることもあり、無視されたり気づかれなかったりすることもあるエラーなのですが、
このエラーの影響は意外と大きく、画面によっては秒単位でパフォーマンスが遅延します。
このセッション前半ではこれを見逃さないよう、自動テストでAmbiguous Layoutエラーを検出する手法と、XCTAssertAutolayout という自作ライブラリを紹介しています。
このライブラリは無理やり実現しているため不安定ということなのですが、自動テストで簡単に導入できて、(テストコードなので)AppStoreに出すアプリ本体への影響はないというメリットがあります。動くならラッキーくらいで導入してみるとよさそうです。
セッション後半は毛色がガラッと変わり、このライブラリを作った際の技術面での話になります。
こちらはx86 トランポリンという方法で、Swiftで関数処理を差し替える方法について解説・デモを行っていました。
低レイヤーな話が好きな方が特に楽しめそうなセッションでした。
こちらは資料より動画のほうが濃く楽しいセッションなので、
ぜひ動画が公開されたら視聴してみてください。
モバイル決済アプリの作り方
発表者: @kenmaz
モバイル決済アプリを作るには色々な法律・セキュリティ・決済方法の充実など多くの課題があります。
このセッションでは、メルペイの事例を元に、どんな課題があるか、どのように課題を解決しているかという話をされていました。
eKYC
電子的なお金の取引に欠かせない、eKYC(electronic Know Your Customer)という、電子的な身元確認方法があります。
複雑な法律要件・実現方法について基本からわかりやすく解説されていました。
QRコード決済
最近流行りのナントカPayで使われる、QRコード決済の仕様についての話でした。
各社の仕様は非公開ということなのですが、国が定めて公開しているQRJPQRというバーコード決済のための規格があり、
そちらについて詳しく解説されていました。
また、今回のセッションの副産物として、 JPQRリーダー というiOSアプリソースを公開されています。
JPQRを採用する決済アプリを作る時に役立ちそうですね。
既存の巨大なアプリに対して、いかに安全・効率的にモバイル決済機能を追加するか
既存のメルカリアプリにメルペイを入れるときの設計・実践の話でした。
複数チーム、多人数で1つのアプリを開発をする際にいかに衝突を避けるかという話で、
個人的にはこのセッションの中で一番興味深く聞きました。
- 1つのアプリをマルチフレームワークで分割して、1つのチームが触るフレームワークを独立させる。
- カメラなどテストしづらい部分はスタブ化してテストできるようにする。
- 子フレームワークごとに依存ライブラリのバージョン差が出ないように親のライブラリで統一しようとしている。
- 子フレームワーク間の依存関係をシンプルにするため、子同士の参照は親を経由する。
自作して理解するリアクティブプログラミングフレームワーク
発表者: @yimajo
RxSwift・Combineなどの基本となるリアクティブプログラミングについて、テストを書きながら1からRxSwiftを作って基本を理解するセッションです。
セッションを通してテストコードを書きつつ、RxSwift風の自作コードを作り上げていきます。
Rxをよく知らない方から、知っているけどRxSwiftライブラリソースを読んでない方、Rxが大好きな方まで幅広く勉強になりそうなセッションです。
そろそろCombineが出るのでRxはちょっと…という方でも、Rxを学ぶことでもリアクティブプログラミングを学べますのでおすすめです。
記事執筆時点(2019/09/11)はまだスライド・動画ともに未公開ですので、公開を楽しみにしています。
このセッションとは全然関係ありませんが、筆者もRx(RxSwift/RxJava)が好きで何度か登壇しております。
こちらのスライドも合わせて見ていただけると、リアクティブプログラミングの理解の助けになるかもしれません。
感想
iOSDC Japan 2019 前夜祭・Day1に続き、Day2も濃い発表が多く、とても充実した3日間でした。
4セッション同時発表で聴けなかった他のセッションも好評だったようで、動画が公開されたらぜひ見たいと思います。
おまけ
完全に余談なのですが、今回の iOSDC Japan 2019 では、イベント開催期間中に来場者全員が参加できるiOSDCチャレンジという企画が行われていました。

iOSDCチャレンジは会場やパンフレット、Webサイトなどいたるところに隠されているハッシュつき文字列を入力すると、
難易度や早さに応じたポイントがもらえて、その合計点を皆で競う、というものです。
1日目・2日目とレポートにも書いたとおり、
各セッションも楽しかったのですが、その裏で開催されたiOSDCチャレンジも案外楽しく、
セッションの合間に7位、4位…と他の参加者さんと接戦を繰り広げていました。
その結果、気がついたら1位になり…
そのまま1位をキープした結果優勝してしまい、
最終日のクロージングセッションでの受賞者スピーチで、思わぬかたちで iOSDC Japan 2019 に登壇(?)させていただきました。

このiOSDC チャレンジ、技術とは全く関係ないお遊び企画なのですが、
初めて会う人同士でも自然に会話するキッカケ、話題になり、すごくいい企画だったと思います。
今度はセッションスピーカーとして登壇できればいいなと思っています。
