数カ月以内にiOS 9が登場するのではないかと噂されている。アプリを開発・運用していく上で、どの世代のOS/端末までサポートするべきかというのは悩ましい問題だが、判断材料の一つとして、iOS 9リリース後、2世代前のiOS 7のサポートを切った場合(つまり、iOS 8以降のみを対象とした場合)に、どういうメリット・デメリットがあるかをまとめた。
[デメリット]サポート外になる端末
- iPhone 4
iPhone 4はiOS 8にアップデートできないため、サポート外となる。Unityが発表しているMobile Hardware Stats 2015-04では、iPhone 4のシェアはモバイル全体(Androidなども含む)で1.9%なので、実際には3-5%前後ユーザがいると考えたほうがよい。iPhone 4S, iPad 2以降はすべてiOS 8/9にアップデートできる。
ただし、iOS 7からアップデートしないユーザも一定数いる。Appleのウェブサイトによると、7月現在、14%の端末では未だにiOS 7が動いているようだ。iOS 6以前は2%以下となっているが、iOS 9リリース後この数字がどの程度のスピードで変化するのかは注意してみていく必要がある。
[メリット]素直に使えるようになる主な機能(iOS 8の機能)
- UIVisualEffectView(すりガラス効果)
- Self sizing cell – UITableViewで、高さが可変なセルの実装が簡単に
- PhotoKit / CloudKit / HealthKit / HomeKit
- QRコードの検出(CIDetector)
- カメラのフォーカスなどのマニュアル制御
- アクション付きのNotificationBar
- Widget
Extensibilityなど、もともとiOS 7との互換性を考える必要がないものは除外した。
他にも、SDKの機能ではないがTestFlightを使った最終動作確認が全端末で可能になる。
[その他]iOS 7のことは考えなくてもよいが、相変わらず素直には使えない機能
- Touch IDを利用した認証 – Touch ID未対応端末が依然多くあるため。そのうちの多くがiOS 9にも対応しているため、少なくとも当面の間Touch IDは「なくても困らない」補助的な使い方に限定されるだろう
[メリット]iOS 7のことを考えないことで実装がシンプルになる部分
- 通知周り – iOS 7 と iOS 8で実装方法が異なっていたため
- UIAlertController – ブロックを使ったわかりやすいアラートの実装が可能に
コールバックをブロックで記述できるUIAlertControllerを使うと、ソースコードが大分すっきりするのでありがたい。BlocksKitとUIAlertViewの組み合わせでもよいのだけど、UIAlertControllerの場合は公式であることに加えて、要素が増えて見た目をActionSheetに変えたくなった時にパラメータ変更だけで対応できるというメリットも。