Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

iOS 13 から導入されるSceneDelegateとは

こんにちは、ヤプリの三縞です。

Xcode 11 からはiOSプロジェクトを新規作成すると AppDelegate と同時に SceneDelegate も自動生成されます。
この記事ではこの SceneDelegate について、その役割や AppDelegate との違いについて調べたことを残しておきます。

SceneDelegateの役割

SceneDelegate によって、1つのアプリに対して複数のUIのインスタンスを作れるようになります。

今秋にリリースされるiPadOSでは Slide Over / Split View 機能で1画面の中に同じアプリを2つ並べることができるようになりますが、これはこの「1つのアプリに対して複数のUIのインスタンスを作れるように」なることで実現可能となります。

Xcode 11 からはiOSプロジェクトの新規作成時に自動で SceneDelegate が作成されることから、今後はiOSでも複数のUIインスタンスを利用した新しい機能が導入されるのではないかと思っています。

SceneDelegateの挙動

  • SceneDelegate は iOS 13 から導入される protocol UIWindowSceneDelegate に準拠するクラス
  • SceneDelegate必須ではない
    • Info.plistの Application Scene Manifest (キー名: UIApplicationSceneManifest) にSceneの設定があるときに必要となる
  • SceneDelegate がある場合・ない場合のどちらでも AppDelegate は必要
    • @UIApplicationMain Attributeを用いてアプリのエントリーポイントとして指定するため
  • 「ライフサイクルイベント」が発生したときは SceneDelegateAppDelegate のどちらかのメソッドしか呼ばれない
    • iOS 13 かつ SceneDelegate が使用されている場合は SceneDelegate
    • それ以外では AppDelegate
  • 「ライフサイクルイベント」とは以下のようなもの
    • バックグラウンド・フォアグラウンドへの移動
    • ResignActive・BecomeActive
    • open URL
    • NSUserActivity系
  • SceneDelegate がある場合・ない場合のどちらでも、アプリ全体に関わるイベントは AppDelegate のメソッドが呼ばれる
    • application:didFinishLaunchingWithOptions:
    • applicationWillTerminate:
  • SceneDelegate がある場合・ない場合のどちらでも、以下のような「ライフサイクルイベント」に関するNotificationは機能する
    NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: nil) { _ in
        print("notification didEnterBackgroundNotification")
    }

確認環境

  • Xcode 11 beta 5
  • Swift 5.1

参考資料

アサーションライブラリ「Truth」を使ってみた

こんにちは、株式会社ヤプリでAndroidエンジニアをしているdais-sasaです!

最近、弊社ではエンジニアが新技術に積極的に触れられるように、週に一度もくもく会を開催しています。
そこで、7月8日にバージョン1.0がリリースされたアサーションライブラリ「Truth」を試しに使ってみました。

本記事では、「Truth」を使うための設定や基本的な使い方について紹介します。

Androidエンジニアの皆さんの何かの参考になれば幸いです。

続きを読む

WWDC 2019 に当選してからやったこと

f:id:mishimay:20190618183112j:plain
WWDC 2019 会場近くの駅

こんにちは、iOSエンジニアの三縞です。

WWDC 2019 に当選してからやったこと・やっておけばよかったことのタスクリストをまとめてみました。
来年また行くことになったときのために、あるいは将来初めて参加される方の参考となるように書き残しておきます。

※ WWDCに特有の事項、または特に留意すべきことについて書いています。一般的な海外旅行の準備については各自確認してください。

※ 2020年以降のWWDCでは事情が変わっている可能性があるので注意してください。

続きを読む

WWDC 2019 に行ってみてわかったこと

こんにちは、iOSエンジニアの三縞です。
今回初めてWWDCへ参加することができました。

f:id:mishimay:20190613114349j:plain
WWDC 2019 会場

初のアメリカでしかも初の1人海外ということで行く前までは不安もあったのですが、出発から帰国まで終始楽しめて1週間ほどの滞在が本当に短く感じました。
この記事では現地の雰囲気や、発表内容以外の情報など、現地に行ったからこその内容に重点を置いて書いてみようと思います。

  • 現地の雰囲気
    • 天気
    • 交通
    • 英語
  • 会場の雰囲気
    • 空調
    • 体験コーナー
    • イベント
  • 現地ならではの体験
    • ハンズオンラボ
    • コンサルテーションラボ
    • “Get-Together” 系のセッション
  • 発表について
  • 最後に
続きを読む

Yappli Meetup 〜Site Reliability Engineering〜@アカツキ

f:id:modokkin:20190523153352p:plain
YappliMeetupSRE201905

こんにちは、ヤプリの阿部寛こと羽渕(@modokkin)です。
2019/05/22 に株式会社アカツキ様のオフィスで開催した Yappli Meetup 〜Site Reliability Engineering〜@アカツキ についてレポートしたいと思います。
今回は、サービスを運営する中で安定的に継続的に運用する上での経験から得たノウハウについて語りました。

yappli.connpass.com

続きを読む

potatotips #61 で MotionLayout について話しました!

f:id:dais-sasa:20190516091832p:plain
potatotips#61 Wantedly様の会場

こんにちは、株式会社ヤプリでAndroidエンジニアをしているdais-sasaです!

先日、アプリエンジニア界隈で盛んに活動しているpotatotipsという勉強会で登壇してきました。

potatotips.connpass.com

毎回主催する企業が異なり、今回はWantedly様が主催されています。
結構先の話になりますが、11月に弊社でも主催する予定なので良ければご参加下さい。

今回のpotatotipsでは、MotionLayoutのtipsを発表しました。
その時に使用した資料を公開します。

続きを読む

Swift 5 対応でやったこと

iOSエンジニアの三縞です。

ヤプリでは2週間に1度木曜日、普段なかなか手を付けられずにいる改善系のタスクに取り組む「Yappdate Day」を実施しています。

私は今日の Yappdate Day で Xcode 10.2 および Swift 5 への対応を行ったので、その内容を紹介しようと思います。

前提

移行前は Xcode 10.1, Swift 4.2 でした。

ライブラリ管理ツールにはCarthageを使用しています。CocoaPodsは使用していません。

行った手順

  1. Xcode 10.2 をインストールして開く
  2. Preferences > Locations > Command Line Tools を「Xcode 10.2」に設定 f:id:mishimay:20190411154511p:plain

  3. Carthageのアップデート
    $ brew upgrade carthage

  4. Carthage管理のライブラリの再ビルド
    $ carthage bootstrap --platform iOS --no-use-binaries
    (CocoaPodsを使っている場合はCocoaPods管理のライブラリも)

  5. 必要に応じてライブラリのバージョンアップ
    ライブラリの対応状況を見ながら

  6. Build SettingSwift Language VersionSwift 5 に設定 f:id:mishimay:20190411154429p:plain

  7. ビルド時のError, Warningを解消

  8. Xcodeによるプロジェクト設定の更新を実施 Xcodeに表示される「Validate Project Settings / Update to recommended settings」をクリックして手順に従って実行

感想

ビルドエラーがほとんどなく、短時間で作業を終えることができました。

Swift 2 から 3 への移行を思い返してみるとあのカオスに比べて圧倒的に楽で、Swiftの開発が過渡期を終えて安定してきたのを実感しました。

Copyright © 2018 Yappli, Inc. All rights reserved