Google+ もご覧ください
ユーザーアイコン

iOS 7 徹底解剖

第一回 iOS開発者から見るiOS 7の要注目ポイントとは!?

Sonson

第一回 iOS開発者から見るiOS 7の要注目ポイントとは!?

6(updates) = 1(update/year) × 6(year)

1年に1回と驚異的なスピードでメジャーアップデートされつづけるiOSは、フラットデザイン?なUIに一新され、ついにバージョン7になりました。iOS2.0用のiOS SDKが公開されたのが2008年初旬ですが、私はJailbreak環境での開発を2007年9月頃から始めていましたので、ついに私のiOS開発歴も6年となりました。1年に1回のアップデートは、ver5.0くらいで終わると私は予想していたのですが、その後も続くAppleのiOSアップデートの速さに驚くばかりです。

iOS 7へのアップデートの重要なポイントはWWDC以降、色々なサイトで取り上げられていますが、開発者向けの情報に関してはどうでしょうか。6年目のiOSに関してはベテラン(まぁ開始からですから…)、信者としては駆け出しの私がちょっと書いてみたいと思います。

フラット万歳

開発者が受けるiOS 7の表面上の恩恵は、なんといってもフラットデザインだと私は思っています。好き嫌いの話をすると、私はiOS6のUINavigationBarのボタン等はわかりやすくて好きでしたが、フラットデザインの楽さには勝てないというのが本音です1

アイコン作成、グラデーションや影を再現する手間は並ではありません。また、iOS 7の設定アプリの挙動をつぶさに見るとわかりますが、セルを選択中に左の画像の色やテキストが反転しません。こういった細かい動作を再現するためには画像リソースをたくさん用意したり、そのためだけにメソッドを実装しないといけないことが多いため、挙動面でもToo muchだったUIの表現が簡素化されるのは開発者にとって作業量を減らしてくれるありがたいデザインになったといえます。

UIKitを使わないでゼロからコードでUIを表現する人は別ですが、UIKItでUIを組み上げる人はその中身に集中できることになったと私は考えます。この辺のことはラジオで@fladdictさんもおしゃっていたように2、よりコンテンツやUX(つまり中身ですね)に集中しろというAppleからのメッセージなのかもしれません。

真面目にAPIについて

iOS 7では新しいAPIがさらに追加されました。どちらかというとこれらは機能を強化する目的のものが多いと私は考えます。そこで私がiOS 7で注目しているトップ3+1の機能をあげてみます。

  1. TextKit
  2. NSURLSession
  3. Custom transition
  4. One more thing, Core Bluetooth!

1. TextKit

iOS 7では、CoreTextを使わずにより高度なテキスト処理が行えるようになりました。キーとなるクラスは、NSTextStorage、NSLayoutManager、NSTextContainerの3つです。UITextViewクラスからもこれらのクラスのインスタンスにアクセスでき、UITextView上でNSAttributedStringを組み合わせて複雑なレイアウトを組むことができます。

例えばCoreTextを使って自前でレンダリングした場合も、NSLayoutManagerを使ってユーザがタップしたテキストを検出したりするコードを簡単に書けたり、NSAAttributedStringを使ってHTMLのaタグのようなテキストも実現できます。これらの実装はOSXでは少し前から提供されており、やっとiOSがそれに追いついてきたとも言えます。

しかし、OSXのすべての機能が利用できるわけでもなく、クリカッブルテキストも機能は限定的です。具体的には、クリカッブルテキストのイベントは自由に受け取ることはできず、リンクが貼られたテキストの色を自由に設定することもできません。

未だ完璧ではないTextKitですが、従来システムでは面倒なCoreTextで実装しなければならなかった機能を簡単に実現できる点から、iOS 7の重要なアドバンテージの一つであると私は考えています。

TextKit周りは拙作、UZTextViewのエントリを書くときにもう少し詳しく書きたいと思っています。

2. NSURLSession

ダウンロードタスクを別プロセスのデーモンに任せてしまい、バックグラウンドでもダウンロードできるようにする優れもの。説明は他のサイトにお任せしますw

3. Custom transition

iOS 7では、プログラマがUIViewControllerの画面遷移のアニメーションをUIViewControllerと切り離して定義できるようになりました(今更感が否めませんが・・・)。私もこれを実現するためにUIStoryBoardSegueをオーバーライドしてとか涙ぐましいことをやりましたが、iOS 7からその必要はありません。

UIViewControllerTransitioningDelegate、UIViewControllerAnimatedTransitioningプロトコルをしゃべるクラスを実装し、UIViewControllerのsetTransitioningDelegateに遷移を定義するUIViewControllerTransitioningDelegateプロトコルを実装したクラスのオブジェクトを渡すだけで大筋の足場が完成します。

おおざっぱに言うとUIViewControllerAnimatedTransitioningプロトコルは画面遷移のアニメーションを実装するもので、UIViewControllerTransitioningDelegateプロトコルは画面遷移時に使うアニメーションを定義するものです(UIViewControllerTransitioningDelegateで、UIViewControllerAnimatedTransitioningを返すみたいな感じです)。

この機能もUIViewControllerとアニメーションのコードを切り離したいというプログラマの念願をかなえてくれるiOS 7の目玉機能だと私は思います(更感が否めませんが…しつこい)。

4. +1, iBeaconとBTLEへの思い

最後に!One more thing、やっと本来の力を見せ始めたCoreBluetooth!私は2年くらい前のどっかのイベントでもこれからくるのはBluetooth LEだって言ったものの、全然BTLEの人気が来ないので泣きそうだったんですがようやく立ち上がり始めてきてうれしい限りです。

iBeaconは、BTLEの電波にロケーション情報を載せてブロードキャストし、CoreLocationフレームワークでそれらを簡単に受け取ることができる仕組みです。こういう考え方の典型例として増井雄一郎さんのアイディア、拙作AnonyFollowがあります。

これは共にコンセプトが同じもので、Bluetooth LEで誰とでもすれ違いフォローができる電波Pokenを作ろうというコンセプトです。

個人事業者にとってのCoreBluetoothの面白みは、iOSとOSX同士のライトな連携にあると私は思っています。結局、デバイスを個人や小資本で大量生産するのは不可能なので、最終的に趣味プログラマーはそっちへ収束すると私は考えますが…そんな閉塞感をiBeaconが打破してくれて、かっこいいかつユニークなデバイスや環境が満を持して登場!!!…というのが今の私のBTLEへの思いです。

まとめ

以上、ざらっとiOS 7について半年経ってからまとめてみました。他にも、CIをサポートするBot、doxygenスタイルでコメントを書くと自動的にヘルプにしてくれる機能などがXcodeに追加されていたりします。

これからは、ブログであまり人が取り上げそうにないことを中心に書いていきたいと思っています。次回はTestFlightへの自動アップロードを中心にBotのパスについて解説したいと思います。


  1. 行き過ぎたskeuomorphismは、本来のデザインの意味や目的を失わせると私は考えます。MacOSX10.8やiOS6のメモ帳アプリのデザインは、私にとって意味不明でした。これらコンピュータ上で動くメモ帳は、いわゆるメモ帳とはまったく機能も役割も異なるものです。これらのアプリケーションは、本来のメモ帳が持つ自由に記入できる能力はまったくない、単純な正規化されたテキストいれるだけの箱です。そういったアプリケーションに物理的な本来のメモ帳のデザインを取り入れることは、ユーザに誤解を与えるだけだと私は考えています。 

  2. 参考リンク - Twitter 

Ios 7
タグ:

記事をリクエストする

関連記事

コメント