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%のデバイスをカバーすることができるので、そうしましょうということでした。
また、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%でした。
この数値は 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を有効化しましょう。
警告は無視しようと思えばできてしまうので、こうすることで厳格に運用することができます。
アクセシビリティをサポートする
We think that the accessibility support is as much a part of your user interface as the artwork is.
アクセシビリティもUIの一部です。Interface Builderでもコードでも設定することが可能です。
ローカライズする
ローカライズのためのAPIがたくさん用意されています。
iOS10では、Dimension
とMeasurementFormatter
などローカライズに便利なクラスが追加されています。
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.
もしバグを見つけたらバグレポートを出しましょう。
うまく行かなかったら http://bugreport.apple.com にバグレポートを。そのための開発者プレビューです。
Asset Catalogsを使う
まだアセットカタログを使っていない人は使いましょう。マイグレーション機能もXcodeに用意されています。
Slicing機能を使って画像をリサイズしましょう。pdfで複数サイズに1つのファイルで対応しましょう。
そのほかにも特定サイズだけ別の画像に変更したり、柔軟に対応が可能です。
Dependency Injectionを取り入れよう
2016年、iOS界隈で話題になったDIをAppleも取り上げていました。
まず「キャストしてアクセスして取得するのが簡単だからと言ってAppDelegateにいろいろ持たせてアクセスするのはやめましょう」ということが語られていました。
身に覚えがあるような...。
AppDelegateとViewControllerを疎結合にし、
必要なデータを渡し、ViewController同士も互いに参照しないように。
このセッションだと狭い用途のDIしか説明されていなかった印象です。
iOSアプリの設計とDependency InjectionというスライドがDI Containerなどについてもわかりやすく解説されていておすすめです。
他のプラットフォームへの対応
Apple Watch、Apple TVに対応しましょう。
Human Interface Guidelineに目を通してプラットフォームにあったデザインをしましょう。モデル層を他のプラットフォームに切り出せるような設計にしましょう、ということが述べられています。
まとめ
(いくつかのポジショントークを除くと)実践的な内容が多かったです。特にアセットカタログでできる多くのことは開発時の負担を大幅に軽減させてくれるものです。
上司や周りを説得する際に、「Appleが提唱しているのでベストなんです」とか言ってみると良いかもしれません。