iOSDC 2017 前夜祭 参加メモ
iOSDC 2017 前夜祭の参加メモです。
SiriKit and Me
SiriKitについて
- 対応しているアプリ
- 全国タクシーとUberでタクシーを呼び出せる
- LINEでメッセージが送れる
- OpenTableでレストランを予約できる
- Siriを使えば目の見えないユーザに対してもサービスを提供できる。
- HomePodの発売も控えている(今のところアプリの発表はされていない)
SiriKitの実装について
- SiriKitはフレームワークではなくIntentsとIntents UIフレームワークで実装する
- SiriKitはAppExtensionの一種
- iOS11では23種類のAppExtensionがある
- AppExtensionはHostAppと一緒にリリースされるが、プロセスは別
- iOSではメモリ空間がプロセスごとに制限されている
- HostAppとの情報共有はアプリ間で共通で使えるFile StorageのAppGroupを利用する
- Siwikitの処理にはタイムアウト制限がある
- ネットワーク処理は厳しいのでキャッシュを使う必要がある
- Sirikitはエラー情報の取得が難しい。成功、失敗しか返さない。
- エラーの情報はSirikitのフレームワークのログを見て確認する
- SiriKit更新が早い。マイナーバージョンアップで破壊的な変更やUIの変更がある。
- 英語では正しく動くけど日本語では動かないということよくある
- SiriKitは実装量は少ないが、デバックが大変
Objective-C++を使ってMRCで快適に開発する
- Objective-C, Objective-C++, C++を使うときのメモリ管理(ARC/MRC)について
Swaggerで始めるAPI定義管理とコードジェネレート
- なぜAPI定義を明文化するか
- サーバ、クライアントでOptionalなどの認識を合わせられる
- Swaggerはコードジェネレートも用意されている
- コードをジェネレート、設計とコードの乖離を防止する
- Swift, Kotlin Javaにも対応している
Swiftのコードジェネレート
節子、それViewControllerやない…、FatViewControllerや…。
- なぜViewControllerの責務分けが注目されるのか
- ViewControllerがiOS開発の重要な機能を多く持っている
- それゆえに多くの機能が実装される
- Fatはコード量ではなく責務が多いことが問題
- いかにして責務わけを実現するか。本日はMVPを紹介
- Presenterにおける描画処理をInterfaceとして定義
- ViewControllerがInterfaceを実装