---
# System prepended metadata

title: iOSDC Japan 2019 参加レポート

---

---
lang: ja-jp
GA: UA-111381385-2
description: このノートでは、特に印象に残ったセッションについて内容をまとめています。カンファレンス全体の雰囲気などについては多くの方が書いてくださっていますので、そちらをご覧ください。
tas: iosdc
---

# iOSDC Japan 2019 参加レポート

## What is this?

[![iOSDC Japan 2019](https://iosdc.jp/2019/img/top_title.png)](https://iosdc.jp/2019/)

> iOSDC JapanはiOS関連技術をコアのテーマとした技術者のためのカンファレンスです。

このノートでは、特に印象に残ったセッションについて内容をまとめています。カンファレンス全体の雰囲気などについては多くの方が書いてくださっていますので、そちらをご覧ください。また、公式Twitter[@iosdcjp](https://twitter.com/iosdcjp)ではたくさんの画像を見ることができるので、そちらも見ておくと分かりやすいかと思われます。

---

## [ライブラリのインポートとリンクの仕組み完全解説](https://fortee.jp/iosdc-japan-2019/proposal/28d1013f-a57b-4d42-b486-a3372c459459)

### 資料

{%speakerdeck kishikawakatsumi/swiftniokeruinpototorinkufalseshi-zu-miwotan-ru %}
- [Togetterまとめ](https://togetter.com/li/1400382)

### 感想

- 実は会場を間違えてしまい、セッションに間に合いませんでしたorz
- 超満員だったため別室で中継放送が行われていました。こうした事態も考慮して準備を整えている実行委員会の皆様には感服です…

---

## [実機の管理とおさらば！AWS Device FarmでiOSのテストをしよう！](https://fortee.jp/iosdc-japan-2019/proposal/df2f3aae-4347-4f17-91c2-db2ce476db10)

### 資料

{%speakerdeck srym/iosdc-2019-devicefarm %}

### 概要

- UIテストのお話と、AWS Device Farmを活用したCIの例

### 質疑応答

- Q. 端末固有の機能（音声・位置情報・カメラ）はDevice Farmでどういう扱いになるのか
  - A. 設定可能。E2Eテストも可能なので、あるアプリとの連携のテストも書ける。
- Q. Xcode11でビルドしたアプリはAWS Device Farmで使えるのか？
  - A. リアルデバイスが提供されているのであればOK。
- Q. 料金についてよくわからなかった
  - A. スライドに書いてるのでチェック。専有端末=使い放題。
- Q. 専有端末のOSバージョンを切り替える等はできる？
  - A. AWS Device Farmに関する資料を見ないと不明
- Q. Device Farm上でテストログがどれくらいの期間保存されるか
  - A. こちらも資料を見ないと不明。DL機能があるのでそれで長い間保持することは可能。
- Q. Firebase Test Labと比べたときのAWS Device Farmの優位性は？
  - A, 競合を熟知しているわけではないので詳細に答えられないが、Device数が274。iOS Deviceが130くらい。デバイス数で優位？
- Q. XCUITestよりもAppiumのほうがいいのに使わないのはなぜか
  - A. 一番ベーシックなので今回採用
- Q. Device Farm上で設定アプリをいじることはできる？
  - A. ほとんど可能

### 感想

私が言うにはAWS Device Farmは料金が少し高めのように感じました。講演者の[@fushiroyama](https://twitter.com/fushiroyama)さんが仰っていたように活用方法によると思います。例えばゲームアプリなどでハードの性能を検証したいような場合には、物理的なデバイス管理なしに簡単に検証ができて便利そうです。

------

## [iOSアプリのリジェクトリスクを早期に発見するための取り組み](https://fortee.jp/iosdc-japan-2019/proposal/d51e7062-2eb1-4a86-bf5f-4928fa3b04c8)

### 資料

{%speakerdeck kesin11/iosapurifalseriziekutorisukuwozao-qi-nifa-jian-surutamefalsequ-rizu-mi %}

### 概要

- DeNAの開発フローのうち、開発とQAの部分の工数を削減するために作ったツール(lane)の話
- レビューガイドラインの更新情報をどのようにキャッチアップしているかの話
- 作ったツールの使い方の話

### 感想

非常に興味深い内容でした。自分自身、レビューガイドラインに目を通すのはリジェクトを受けてから関連項目を読み漁るという状態だったので、多くのことを学べました。チェックツールはFastlaneのタスクとして作られているため、今度早速手元で試すつもりです。

------

## [詳解 Auto-Renewable Subscriptions](https://fortee.jp/iosdc-japan-2019/proposal/723b458a-2b5d-41a1-bec5-2cd5ccf722c0)

### 資料

{%speakerdeck rockname/detailed-auto-renewable-subscription %}

### 概要

- みてねのAuto-Renewable Subscriptionsの実装の話
- iOSアプリで実装する際に注意するポイントや、WWDC2019で発表された最新の情報についても触れている

### 質問したこと

このトピックは実際に直面している問題について触れていることもあり、強い興味があったためAsk the speakerでたくさん質問をさせていただきました。(どこまで公開して良いか分からないため、問題なさそうな範囲で記載)

- Status Pollingはバッチで毎日実行している？
  - サーバ側でバッチで実行
  - 期限切れの近いレシートを引っ張ってきてPOSTを投げる
- お試しオファー→実課金の変更はサーバー間通知で取れる？
  - 課金が発生したタイミング = レシートが発行される
  - フリートライアルのフィールドがあるので、そこを見ると良い
- `unified_receipt`についてもう少し詳しく聞きたい
  - /verifyReceiptを叩く必要がない…？(サーバー間通知で送られてくる認識でOK?)
  - フィールドは/verifyReceiptの中身そのまま？
    - 100個までのレシートが返される
    - ただ、検証は通したいのでverifyReceiptを叩いたほうが良さそう
- 購入制限で課金失敗、といったケースでは何か対応策を取っているのか
  - `localizedDescription`をアラートに表示する
  - `SKError`のコードを見て、掲載されていれば分岐させて何か処理することは可能
    - ただ、今後プラットフォーム側でコードが追加される可能性もあるのでエラー情報をそのままアラートに出している

### 感想

仕事で開発しているサービスの課金バックエンド部分を新卒1年目の秋に書いたのですが、まあ酷いつくりにはなっていて(もちろん当時はそんなこと思っていない)、いかにメンテしやすい作りにし、UXに悪影響を与えず、どのように課金データを保持していくかについて知見が欲しかったため、今回このカンファレンスに参加する主目的の一つとなったセッションでした。発表者の[@_rockname](https://twitter.com/_rockname)さん、的確に受け答えしてくださってありがとうございました！

------

## [スナップショットテスト実戦投入](https://fortee.jp/iosdc-japan-2019/proposal/6c77df58-00f6-4623-8fe4-6bfac879fb00)

### 資料

{%speakerdeck imaizume/practical-snapshot-testing %}

### 概要

- 画面、Viewのキャプチャを自動で生成してくれるライブラリがある
- 画面はシミュレータのサイズで撮影されるので、各デバイスで撮影してくれるようビルドしてくれるfastlaneが用意されている
- 撮影した画像をフォルダ分けできる
- 撮影した画像たちをMarkdownでレポートしてくれるスクリプトもある(Folioが作成)

### 質疑応答

- Q. 撮影した画像を正とするかどうかは目視での判断になるのか
  - A. そのとおり
- Q. スナップショットテストをどのように実装してきたか
  - A. Diverseでは最近テストを導入し始めた。イニシアチブを取る人がいて進めた。2週間のスクラムのうち最後の2日間が改善デーなのでそこを充てている。
- Q. UIのスナップショットテスト以外になにかあるのか
  - A. 色んなスナップショットテスト戦略があるので検索

### 感想

スナップショットテストを知らなかったので、興味があって聞きに行きました。業務中にデザイナーやテスターの方に実装内容を見せるときにわざわざシミュレータを起動して、iPhone SEからiPhone XS Maxまでのキャプチャを撮っていて辛い思いをしたことがあります。UIの検証が捗るのでぜひ実務で導入したいと思えるものでした。特に画像の生成からレポーティングまでのフローを解説してくださっていたので導入のイメージがしやすかったです。まずはスナップショットテストを試すところから始めるつもりです。

------

## [カスタムInstrumentsでアプリをピカピカに！](https://fortee.jp/iosdc-japan-2019/proposal/024565ae-f840-4c26-a846-6daaf9c5ec24)

{%speakerdeck ridwy/kasutamuinstrumentsdeapuriwopikapikani %}

### 概要

- 実行時の情報を収集して分析・可視化してくれる
- 基本的には起動してからRecordしておくだけ
- リークの検知が可能
- Instrumentsライブラリを組み合わせてカスタムテンプレートとして書き出すことができる

### 感想

InstrumentsはViewの描画部分のパフォーマンスチェックで使ったっきりで、あまり活用できていなかったため活用事例を知りたくて聞きました。Instrumentsをカスタマイズしていくことでできることがたくさんありそうでした。実務で活用するイメージはまだないので、まずは手元で試そうと思っています。

------

## [自作して理解するリアクティブプログラミングフレームワーク](https://fortee.jp/iosdc-japan-2019/proposal/a4e78fe8-6adb-4a92-a232-256ac0fa7976)

### 資料

* 公開後に更新します

### 概要

- WWDC 2019のCombineを使うにあたり、リアクティブプログラミングの原則について学ぶ
- RxSwiftを参考にして自作していく
- まずRxSwiftを持ってきて、本物のコードを書いて仕様のテストをする
- 次に自前でクラスやプロトコルをつくって実装し、動作のテストをすることで完全に理解する

### 感想

ライブコーディングとは異なり、事前にXcodeでの作業内容を録画しておき、3倍速程度で再生しながら解説をしていくスタイルの発表でした。ライブコーディングのような、「実装したけど動かない」のようなトラブルがないので、画期的だな〜と思いながら聞いておりました。また、特定のハッシュタグをつけたツイートを、ニコニコ動画のコメントのようにMacの画面上に流すアプリをリアクティブプログラミングで実装したとのことで、会場の一体感を感じさせる演出になっている点が良かったです。リアクティブプログラミングを完全に理解することができました。

---

## 気になる資料集

セッション自体は聞けなかったものの、気になっているもののリストです

- FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた
{%slideshare kenjitanaka58/fatviewcontroller-iosdc %}
- iOSアプリに「意識」は宿るのか？ ディープラーニングの先にある人工知能（AI）
{%speakerdeck yukinaga/iosapurini-yi-shi-hasu-rufalseka-deipuraningufalsexian-niaruren-gong-zhi-neng-ai %}

---

## 総括

振り返ってみると、テストに関する発表に興味があって聞いていたように思います。例年発表のクオリティが高く、実践のイメージがつきやすいので助かっています。セッションの質の高さもさることながら、スタッフの皆様も参加者からの要望に対して迅速に対応してくださいますし、本当に参加して良かったと思えるイベントです。実行委員会の皆様、発表者の皆様ありがとうございました。

時間の関係で懇親会や茶会には全く参加できていないため、次回こそはお酒を飲みたい…！

