woshidan's blog

あいとゆうきとITと、とっておきの話。

Androidを触っていた人がiOSのOSやクラスライブラリの概要について本を読みました

iOSAndroidスマートフォンなのだから、まあなんとか」と思って本を買って読み始めたところ、想像していた以上に違いがありそうで楽しそうですね、という感じでした。

iPhoneiPadiOSについて

OSのバージョンごとに出てきた機能について

コピー&ペースト機能がついたのがiPhone OS 3.0だそうで*1iPhoneが最初はコピー&ペーストに対応していなかったという話を見てすごい不思議な気持ちです。

また、Androidはシステムアプリだろうがサービスのアプリだろうがインテントフィルターが設定されていれば、インテントを投げて連携させられるような感じなので、Twitter連携, Facebook連携がOSの機能としてあるのも見ていて不思議な感じでした。

iOS 8.0以降の新機能について

App Extensions

新しいアプリ間連携の仕組みだそうです。

特に気になったのは、Action Extension, Document Provider, Share Extension です。

触ることがあればまたまとめるのではないかなと思います。

iOSのアプリの単位をわかっていないので、この部分を読む前には設定ファイルのパラメータ読込みたいな扱いになるのだろうと想像していた部分もApp Extensionsとして紹介されていたため、結構驚いて読んでいました。

自分で想像している以上にAndroidや他のプラットフォームの考え方が染み付いてるのかもしれないです。

PhotoKit

一応写真共有サービスに携わる身なので、気になります...(苦笑)

2分割マルチタスク

iOS9のマルチタスク機能だそうで、「Slide Over」「Split View」「Picture in Picture」があります。

Androidでも次のバージョンで似たようなのが出ますね、と思って読んでみたら割と違いました。

  • Slide Over
    • 画面の右側から指をスライドインすることで、現在使っているアプリを開いたまま、画面の3分の1に別の対応アプリを表示する機能
    • 片方のアプリがグレーアウトされ操作できない
  • Split View
  • Picture in Picture
    • 動画アプリで動画を再生しながらiPadで別の操作ができる機能です
    • これ、そういうアプリを作ってはダメなの...? と思ったのは内緒です

iOSレイヤーについて

Cocoa Touchレイヤー

ボタンなどの部品や、iOSの機能を利用するために、アプリのユーザーインタフェースを作るためのクラスがいるレイヤーだそうです。

全然本筋とは関係ないかもしれないのですが、本の表などの「メールの送信」「連絡先の管理」のような一言説明だけを見るとUIKit, Address Book UI, Message UIは、ボタンなどのように画面に表示されユーザーの操作を受け付ける部品という趣旨のライブラリ以外にもUIとついているように見えます。

これに対し、iOS8.0以降で出てきたPhotoKit, CloudKitであったりにUIとついていないのが気になりました。

そこで、こちらのドキュメントを見てもう少し調べると、iOSアプリ全体で一貫したユーザー体験のために、標準システムの機能が利用できる場合は、可能な限り標準システムのUIを利用することを推奨しており、そのために利用されるクラスライブラリにUIがついているらしいことがわかりました。

Appleぽい!

Core ServiceレイヤーやCore OSレイヤーについて

Androidの場合、各レイヤーは階層構造になっていて、開発者は一番上のアプリケーション用のフレームワークレイヤーあるいはJava()を利用してコードを書いていくということになります。

少なくとも自分についてはAndroidを書いているときに、アプリケーションのレイヤーの下にこういうレイヤーがあって、下のレイヤーを叩いている、などと思いながらxmlSQLiteを叩くコードは書いていたことがなかったな、と思いました。

なぜそういうことを意識したかと言いますと、iOSも似たような階層構造でレイヤーのスタックの絵がありまして。

その絵ではCore ServiceレイヤーがCocoa Touchレイヤーの下側にあるわけなのですが、勉強会でiOSの人がCore Dataをいじっていて辛い、とこぼしていたのを聞いたことがあって、下のレイヤーの方にあるクラスライブラリを直接意識するのかな、と思い出してました*2

考えすぎでそんなに気にする必要はなく、とりあえず一つずつ覚えていけばいいのでしょう。

買った本について

とにかくUIのサンプルに多く当たりたくて上記の本を買ってみたのですが、お作法の問題であるとか、動かないサンプルがあるらしい問題であるとか、この本のサンプルをそれなりにちゃんと書くための参考書ないしドキュメントが必要かもしれなくて少しお財布が痛い...。

*1:当時のブログやWikipediaなどを見ると、本当ぽい https://ja.wikipedia.org/wiki/IOS_(%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB)#3.x http://www.appbank.net/2009/06/18/iphone-application/31885.php

*2:実際にiOSを書いている人がどう意識しているかはわかりません...。