-
Notifications
You must be signed in to change notification settings - Fork 336
0.1 iOSについて
この節ではiOSの概要とiOSアプリケーションの概要を説明します。
主に以下のリファレンスを用いているので参考にしてください。
iOSは、iPhone、iPad、iPod Touch、AppleTVの上で動作するオペレーティングシステムで デバイスハードウェアの管理とiOS上で動作するアプリケーションに対してリソースや機能を提供します。 iOSはDarwinカーネルを携帯端末に向けて再構築したものだと言われています。 [出展]
いわゆるiPhoneアプリやiPadアプリのように呼ばれるiOSアプリケーションは、iOS上で動作するネイティブのアプリケーションです。 実行可能なバイナリがデバイス内にインストールされて実行されます。この点はWebアプリケーションとの違うところになります。
iOSの機能をアプリケーションで利用する際は、コンポーネントごとに分割されたFrameworkを通して利用します。 Frameworkを利用するため、直接ハードウェアとやり取りすることは滅多にありません。 インタフェースはObjective-CとSwiftのものが提供されており、基本的にはObjective-CやSwiftを用いてアプリケーションを記述します。 一部、 RubyMotion のようにRubyを用いてiOSアプリケーションを記述することもできます。
FrameworkはハードウェアやOSに近いものから、抽象度の高いものまで様々あり、レイヤで分割されています。
以下にレイヤと代表的なFrameworkをリストアップします。
Cocoa TouchレイヤはiOSのレイヤの中で最も抽象度が高く、かつ主要なフレームワークが含まれています。
名称 | 説明 |
---|---|
UIKit | iOSにグラフィカルなイベント駆動型のアプリケーションを実装するための重要なフレームワークです。UIコンポーネントとその管理や機能を提供します。 |
MapKit | アプリケーションのユーザーインタフェースに組み込んで使えるスクロール可能なマップを提供します。 |
GameKit | アプリケーションからGameCenterの機能を使うための機能を提供します。 |
またFramework以外に以下の機能なども含まれます。
名称 | 説明 |
---|---|
Gesture Recgonizer | ユーザーのタップやスワイプ、ピンチイン、ピンチアウトなどを検出することができる機能です。 |
Apple Push Notification サービス | Push通知と呼ばれることの多い機能です。アプリケーションが実行中以外でもユーザーに新着の情報があったことを通知することができます。通知は別のサーバーなどから送信することが多いです。 |
拡張機能(Extension) | あるアプリケーションの機能を別のアプリケーションなどで利用する機能です。例えばSafariで閲覧中のWebページのURLを、別のアプリ経由で投稿することなどができます。iOS8から利用することができます。 |
Media レイヤは画像、音声、動画などのマルチメディアに関する機能を提供します。 以下に代表的なフレームワークを紹介します。
名称 | 説明 |
---|---|
Assets Library | 写真(Photos)アプリケーションで管理されている写真やビデオにアクセスする機能を提供します。写真の読み込みや保存が可能です。 |
AV Foundation | オーディオ、ビデオの再生、録音、録画、管理を行うクラス群です。 |
Core Graphics | Quartz 2D描画API用のインタフェースが含まれており、OS Xと同様のベクトルベースの描画エンジンを用いて2Dグラフィックスを描画するためのフレームワークです。 |
GLKit | OpenGL ESの開発を行うためのObjective-Cベースのクラス群です。 |
Core Services レイヤはiOS SDKを用いてアプリケーションを構築する上で基本的な機能を提供します。 以下に代表的な機能やフレームワークを紹介します。
名称 | 説明 |
---|---|
Blocks | Blocksは、CやObjective-Cに組み込むことのできる、いわゆるクロージャや無名関数とよばれているものです。 |
Grand Central Dispatch | Grand Central Dispatch(GCD)はタスクの実行管理をBSDレベルで行う機能で非同期プログラムを行うときに利用します。 |
In-App Purchase | アプリケーション内部から、AppStoreに紐付けれらたコンテンツを購入することができます。会計処理など実際の処理はStoreKitを利用します。 |
CF Network | ネットワーク通信を行うための機能です。実際の処理はCoreFoundationに含まれるクラスを利用することが多いです。 |
Core Foundation | コレクションなどの一般的なデータ型、文字列ユーティリティ、リソース管理の機能を提供します。C言語ベースのフレームワークで、実際に利用する際は下記Foundationフレームワークを介して利用することが多いです。 |
Foundation | Core Foundationの機能の多くのObjective-Cのラッパーを提供しています。例えば配列(NSArray)、辞書(NSDictionary)、やURLおよびストリーム処理 (NSURL系のクラス) などがあります。 |
Core OS レイヤはよりハードウェアに近い機能を提供します。これらの機能を直接用いることはなくとも、 他のレイヤのフレームワークが利用されています。以下に代表的な機能やフレームワークを紹介します。
名称 | 説明 |
---|---|
Accelerate | DSPや線形代数、信号処理を実行するための機能とインタフェースを含みます。 |
Core Bluetooth | アプリケーションからBluetoothの機能を利用するためのフレームワークです。 |
このトレーニングコースの受講者は何かしらのプログラミング経験(特にWebアプリケーション)を持っている方を対象としています。 そのような方々がiOSアプリケーションを作っていく上で、特徴的あるいは固有の点について解説します。
iOSアプリケーションは、HTTPベースのWebアプリケーションとは幾つかの点で異なります。 HTTPベースのWebアプリケーションには状態(ステート)が基本的にはなく、cookieを用いてセッションや状態の管理を行っています。 一方でiOSアプリケーションはアプリを起動してから終了するまで同一のプロセス内で動作します。またアプリケーションはイベント駆動の非同期プログラミングになることが多く、アプリケーションやあるいは画面内でのステートを管理することがとても重要となります。
また、Webアプリケーションは一つのサーバー群の上で一つのアプリケーションとして動作することが多いですが、iOSアプリケーションは各ユーザーの端末内にインストールされて実行されます。そのため、アプリケーションごとにアプリやOSのバージョンが異なることがあります。これらに気をつけて開発、テストを行わなければなりません。
iOSアプリケーションを実行できてかつよく開発の対象とするのは、iPhone ( iPod touch 含む)と iPad になります。iOSをインストールすることのできるデバイスには Apple TV があり、iOSと連携して動作するデバイスには Apple Watchなどもありますが、このトレーニングコースでは取り扱いません。
アプリケーションを開発する際には、対応するデバイス、あるいはOSバージョンを指定することができます。そのためiPhone、あるいはiPadに最適化したアプリケーションを作ることができます。一方でユニバーサルアプリと呼ばれ、一つのソースコードでiPhoneとiPadの両方に対応したアプリケーションを作成することもできます。 ユニバーサルアプリ対応をすると画面のサイズだけ常に開発に時間を要します。一方で、iPhoneとiPadでは流通台数が異なるため、コストに見合わずあまり積極的にユニバーサルアプリは見られませんでした。しかしiPhone6 Plusの登場以降、iPhoneとiPadに大きなサイズ差がなくなりました。また複数の画面サイズによるレイアウトをXcodeがサポートするようになったためユニバーサルアプリが今後も増えるかもしれません。
また、iOS端末は縦方向と横方向がそれぞれ2種類ずつで合計つ4のデバイス方向があります。これらの方向すべてをサポートするのか、あるいは一部のみをサポートするのかはアプリケーションや画面ごとに選択することができます。
アプリケーション全体の画面構成や各UIのパーツはデフォルトでUIKitに多く含まれています。これらのパーツを使うことで十分なアプリケーションを作ることが可能です。必要に応じてこれらのパーツをカスタマイズすれば良いでしょう。
アプリケーション全体に関するデザインの指針についてはAppleのヒューマンインターフェイスガイドラインにとてもよくまとまっているので一度目を通すことをおすすめします。 iOSヒューマンインターフェイスガイドライン
はじめに
-
導入
-
1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)
-
UIKit 1 - container, rotate-
-
UIKit 2- UIView -
-
UIKit 3 - table view -
-
UIKit 4 - image and text -
-
ネットワーク処理
-
ローカルキャッシュと通知
-
Blocks, GCD
-
設計とデザインパターン
-
開発ツール
-
テスト
-
In-App Purchase
-
付録