ロコガイド テックブログ

「地域のくらしを、かしこく、たのしく」する、株式会社ロコガイドの技術部ブログです。主にトクバイ・ロコナビのサービス開発について発信しています。

「地域のくらしを、かしこく、たのしく」する、株式会社ロコガイドの技術部ブログです。
主にトクバイ・ロコナビのサービス開発について発信しています。

iOS13に向けて開発者が知っておくと良い5つの点 by WWDC2019

f:id:nnnnn15z:20190816143745p:plain

こんにちは、温泉テーマパーク大好きiOSエンジニアの @k0uhashi👻 です!最近、オーシャンスパfuuaにいったんですが海の見える露天風呂が最高すぎて海になりました。(生命は海から生まれた(諸説有り))
ところで、Appleから開発者向けに色々と新情報が発表されたWWDC2019からもう2ヶ月が経ち、iOS13のリリース予定である秋(おそらく9月中旬)まであと約1ヶ月に迫りましたね!
来るiOS13に向けて、リリースまでに知っておくと良い点、準備したほうが良い点をまとめてみました。✨

🌝ダークモード到来!🌚

OSの機能として外観モードという概念が新しく追加され、「ライト」と「ダーク」が選べるようになり、アプリ側もこの設定を元にUIを切り替えられるようになりました。

対応したほうがよいのか?

Appleのレビュー規約

2019年6月にレビューガイドラインが一部更新されましたが、外観モード、ダークモードについては特に明確に記述されてはいませんでした。
もしかしたら、リリース後に変更があるかもしれないので更新フィードを購読して定期チェックしておきましょう!👀

Human Interface Guideline (HIG)

HIGのDarkMode章には明確に対応すべきとは記述されていないように見えます。
ただ、暗いトーンのほうが省電力で特に暗い環境で見るときに目の疲れを軽減させることができるため、アクセシビリティ的には対応させたほうが良いですね!🥰

どうやって対応するのか?

次のアセットは外観モード別に素材を設定することができます。

  1. 画像
  2. シンボル
  3. テキストの色

例えば、色や画像は次のようにassetsを用いて設定できます。

assetsファイルの左部バーのAppearanceを変更 f:id:nnnnn15z:20190816144731p:plain

画像
Color.assetsを用いる Image.assetsを用いる
f:id:nnnnn15z:20190816144659p:plain f:id:nnnnn15z:20190816144708p:plain

⭐️Tips: いまから野良Colorをassets管理してダークモードに備える

ダークモード用にセットできるのはXcode11からですが、Color.assetsを用いずにstoryboard, xibに直で設定されている 通称「野良Color」 があればいまのうちにassets管理しておいたほうが後の対応負担が減るので、やっておいたほうがよさそうです!🌚

f:id:nnnnn15z:20190816144752p:plain

f:id:nnnnn15z:20190816144806p:plain

f:id:nnnnn15z:20190816144826p:plain

⭐️Tips: シンボルフォントは可能な限りSFシンボルを使ったほうが良い

ダイナミックカラーを使用して色合いをつけたり鮮やかさを加えたりすることを考えてオレオレシンボルフォントを作るより、それを考慮して作られているSFシンボルを使ったほうがどちらの外観モードでもきれいに見えるようです。(引用元: HIG https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/dark-mode/)

f:id:nnnnn15z:20190816174906p:plain

SFシンボル最高!💪

まとめ

  1. ダークモードはいまのところ対応必須ではない!
  2. とはいえ、アクセシビリティ的には対応したほうがよい!
  3. ダークモードを将来的に対応する予定があるなら、いまのうちから野良Colorを撲滅、assets管理して備えておこう!

位置情報を一度だけ収集する?

いままでは「常に位置情報を収集する」をリクエストするときに出るダイアログの選択肢には次の3つが表示されていました。

  1. 使用中のみ許可
  2. 常に許可
  3. 許可しない

iOS13からは、以下の3つに変更になります。

  1. 使用中のみ許可
  2. 一度だけ許可
  3. 許可しない

この変更がユーザーにとって位置情報を渡すのが心理的に安心できるようになり収集しやすくなったのか、その逆かどちらに転ぶかわかりませんが、前者であれば個別に位置情報を集めてパーソナライズするようなアプリで価値体験を伝えやすくなりますね!🥺
ちなみに、アプリ内部の値で位置情報の許可状態は列挙型 CLAuthorizationStatus で表現されていますが、新たにcaseが増えるというわけではなく、caseとしては .authorizedWhenInUse が返却されます。内部の値としては使用中のみ許可したことと変わらないので、ログデータとしての位置情報の許可率に大きく変動があるかもしれません。
また、一時的な許可をしてからある程度立つと、実際に収集した位置情報が視覚的に表示され、引き続き収集してもよいか聞くダイアログがでるようになりました。収集状態を「常に許可」に変更するにはここで設定してもらう必要があります。

f:id:nnnnn15z:20190816175112p:plain
新しい収集ダイアログと継続収集ダイアログ

まとめ

  1. 位置情報を収集しやすくなった!
  2. 収集した位置が視覚的にユーザーにフィードバックされるように!
  3. 位置情報を扱ってイイ感じにする機構が入っているアプリはさらに価値を届けやすくなった!

SearchKit周り

検索周りで標準のUIが増え、実装が楽になりました!🤗

新しい検索UI

詳細な実装方法は省きますが、以下のUIが用意されました。

・Cancel Button
 ・UISearchBarを折りたたむ
・Scope Bar
 ・すべてのメールボックス一覧、現在のメールボックス一覧
・UISearchTextField
 ・文字のフォントや色が変更可能に
・Search Results Controller
・Search Tokens
 ・UISearchTextFieldで利用可能なモノ
 ・コピーペースト、ドラッグアンドドロップできる
 ・Tokenとテキストが両方ある場合は、Tokenが先頭になる
 ・アイコンも自由に設定できる

UISearchBar Search Tokens Search Tokens
f:id:nnnnn15z:20190816145412p:plain f:id:nnnnn15z:20190816145421p:plain f:id:nnnnn15z:20190816145431p:plain

特に、SearchTokensのような仕組みは自作しようとすると工数が割とかかって大変なので標準で用意してくれているのは嬉しいですね!

まとめ

  1. 標準の検索UIがいくつか追加された!
  2. 検索UIを作るのが楽になった!

Sign in with Apple

「Googleアカウントでサインアップする」、「Twitterアカウントでサインアップする」のAppleアカウントバージョン。アップル、Sign In with Apple義務化 サードログイン導入全アプリに という記事が話題になりましたね。
実際、更新されたレビューガイドライン には、夏にベータテストが利用でき今年後半に利用可能になると書かれています。利用可能になるとサードパーティのサインインをサポートするアプリではユーザーのオプションとしてSign in with Appleを用意する必要があるとも記載されていますね。すでにApple DeveloperページのIdentifierから有効にできるようです。

f:id:nnnnn15z:20190816145539p:plain

対応すべき対象

サードパーティのサインアップ機構(Googleでサインアップ、Twitterでサインアップ等)を入れているすべてのアプリで、対応が必須になります!(※メールアドレスでのサインアップは対象外になります)
運良く(?)現時点でトクバイはサードパーティのサインアップ機構が入っていないのでしばらくは対応の必要は無いですが、対象になっている場合は開発スコープにコレを入れておいたほうがよいですね。🤯

まとめ

  1. Googleでサインアップ、TwitterでサインアップのApple版がくる!
  2. サードパーティ製のサインアップ機構を入れているアプリはSign in with Appleに対応しないといけない!🤯
  3. メールアドレスでのサインアップしか入っていない場合は、対象外!

SwiftUI

f:id:nnnnn15z:20190816145550p:plain

https://developer.apple.com/jp/xcode/swiftui/

iOS13からは、SwiftUIというUIフレームワークを利用してアプリ開発ができるようになります。いままで画面を作るときに.storyboard(もしくは.xib)ファイルに画面を定義して、.swiftファイルに画面とのつなぎ込み、ロジックを書いていたのが.swiftファイル1つだけで宣言的に画面を作れるようになりました。便利!

SwiftUIは、主に以下の特徴を持っています。

  1. コード上で宣言的に記述もできるが、従来のようにUIパーツを画面上にドラッグアンドドロップで設置することもできる
  2. 定義したコードはその場ですぐにプレビューできる
  3. SwiftUIはiOS、iPadOS, macOS, watchOS, tvOSに組み込まれているAPIと同じなので、これで定義したUIはデフォルトで各プラットフォームに対応する
  4. SwiftUIで組んだUIは自動的にダークモード、アクセシビリティ、右横書き言語のサポート、国際化等に対応できる*1

ただし、SwiftUIはiOS13以上のOSから対応となるので、すぐにはSwiftUIへ移行できなそうなのが残念です。(iOS12を切れるようになるのはいつやら・・・。)
SwiftUIについては、ここからApple公式チュートリアルを進めるのが一番手っ取り早いと思います。

まとめ

  1. 宣言的にUIが構築できるようになった!
  2. 従来のように視覚的にUIを配置して作っていくこともできる!
  3. プレビュー機能のおかげで、UIの確認が楽になった
  4. チュートリアルが充実しているので学習コストはそこまで大きくなさそう

所感

なんといっても目玉はSwiftUIだと思います。現地でセッションを聞いてたんですが、SwiftUIが発表されたときの盛り上がりは異常でしたね〜。ただ、使えるのはiOS12を切れるようになってからという制約がありますが・・・。
ダークモードの対応は(主にデザイナー)かなり大変ですが、できるとよりユーザーファーストなアプリになることは間違いないと思うので、やっていきたいですね。
トクバイiOSアプリの開発も、こういった新しい技術を積極的に取り込んでいます。興味のある方はDMでもなんでもいいのでお声がけください〜!!

RECRUIT | 株式会社ロコガイド