Edited at
iOSDay 1

Apple公式 アプリ改善のベストプラクティス

More than 1 year has passed since last update.


Apple公式のアプリ改善のベストプラクティス

WWDC16でImproving Existing Apps with Modern Best Practicesというアプリ改善のベストプラクティスを紹介するセッションがありました。


We're going to take a look at some ways that you can today start reducing your technical debt.


と言っていたように、正確には技術的な負債を減らすことを目的としたセッションと見て良いのではないかと思います。

※この記事に挿入されているスライド、引用はすべてImproving Existing Apps with Modern Best Practicesより引用しています。

細かな点については上記のセッションを見てもらうのが一番ですが、ここで取り上げられていたいくつかをまとめてみました。


直近2つのOSをサポート、Deployment Targetは最新のアップデートバージョンに

直近2バージョンを押さえておけば(この時Appleが公表していた)95%のデバイスをカバーすることができるので、そうしましょうということでした。

スクリーンショット 2016-12-01 10.39.53.png

また、Deployment Targetは最新アップデートバージョンにしましょうということでした(iOS8と9をサポートするのであれば、その最新のアップデートであるiOS8.4をDeployment Targetに指定)。


But don't go to 8.3 or 8.2 anymore because then you and your customers don't benefit from the improvements that we've implemented under the hood in that 8.4 release.


最新OSの恩恵を受けましょう、振り返るのはやめましょう。

ちなみに今日の時点でiOS9よりも前のOSを使用しているユーザーは8%でした。

スクリーンショット 2016-12-01 10.42.53.png

この数値は https://developer.apple.com/support/app-store/ で確認することができます。


注意

Deployment Targetはアプリがサポートする最低バージョンを指定するものなので、上記の例のようにiOS8.4をDeployment Targetに指定すると8.3, 8.2など、それ以前のOSをサポートしなくなります。


警告をエラーとして扱う

Deprecated APIは修正しましょう。言い訳は無用です。


And there's really no excuse for not moving on to the new API because we tell you right there. It tells you what to use. So, just use that.


厳格にやるためにBuild SettingsでTreat Warnings as Errorsを有効化しましょう。

スクリーンショット 2016-11-30 21.56.21.png

警告は無視しようと思えばできてしまうので、こうすることで厳格に運用することができます。


アクセシビリティをサポートする


We think that the accessibility support is as much a part of your user interface as the artwork is.


アクセシビリティもUIの一部です。Interface Builderでもコードでも設定することが可能です。


ローカライズする

ローカライズのためのAPIがたくさん用意されています。

スクリーンショット 2016-12-01 10.50.34.png

iOS10では、DimensionMeasurementFormatterなどローカライズに便利なクラスが追加されています。


Peek, Pop, Quick Actionsに対応しましょう

Appleはすべてのアプリがサポートすることを期待しています。


How awesome would it be if every app that we had already had support for Peek, Pop and Push and the 3-D touch?


すべてのアプリが対応していればユーザーも使います。


2016年の秋に備える

もう過ぎてしまいましたが、これは来年以降も変わらないでしょう。早めに動き出して確認をしましょう


So, you have an edge case. So, tell us about that too. This is why we do these preview releases.

We want you to file bug reports. The report isn't just banter in the hallway. And it's not just writing on a dev forum and is not just sending an email to Apple. The proper way to file a bug report is this. BugReport.Apple.com.


もしバグを見つけたらバグレポートを出しましょう。

スクリーンショット 2016-12-01 10.58.52.png

うまく行かなかったら http://bugreport.apple.com にバグレポートを。そのための開発者プレビューです。


Asset Catalogsを使う

スクリーンショット 2016-12-01 11.17.01.png

まだアセットカタログを使っていない人は使いましょう。

スクリーンショット 2016-12-01 11.17.49.png

マイグレーション機能もXcodeに用意されています。

Slicing機能を使って画像をリサイズしましょう。pdfで複数サイズに1つのファイルで対応しましょう。

スクリーンショット 2016-11-30 22.14.28.png

そのほかにも特定サイズだけ別の画像に変更したり、柔軟に対応が可能です。


Dependency Injectionを取り入れよう

2016年、iOS界隈で話題になったDIをAppleも取り上げていました。

まず「キャストしてアクセスして取得するのが簡単だからと言ってAppDelegateにいろいろ持たせてアクセスするのはやめましょう」ということが語られていました。

スクリーンショット 2016-12-01 22.25.44.png

身に覚えがあるような...。

スクリーンショット 2016-12-01 22.33.11.png

AppDelegateとViewControllerを疎結合にし、

スクリーンショット 2016-12-01 22.33.31.png

必要なデータを渡し、ViewController同士も互いに参照しないように。

このセッションだと狭い用途のDIしか説明されていなかった印象です。

iOSアプリの設計とDependency InjectionというスライドがDI Containerなどについてもわかりやすく解説されていておすすめです。


他のプラットフォームへの対応

Apple Watch、Apple TVに対応しましょう。

スクリーンショット 2016-12-01 11.43.03.png

Human Interface Guidelineに目を通してプラットフォームにあったデザインをしましょう。モデル層を他のプラットフォームに切り出せるような設計にしましょう、ということが述べられています。


まとめ

(いくつかのポジショントークを除くと)実践的な内容が多かったです。特にアセットカタログでできる多くのことは開発時の負担を大幅に軽減させてくれるものです。

上司や周りを説得する際に、「Appleが提唱しているのでベストなんです」とか言ってみると良いかもしれません。