Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

0.1 iOSについて

yuichi takeda edited this page Jan 15, 2015 · 2 revisions

この節ではiOSの概要とiOSアプリケーションの概要を説明します。

主に以下のリファレンスを用いているので参考にしてください。

iOS

iOSとは

iOSは、iPhone、iPad、iPod Touch、AppleTVの上で動作するオペレーティングシステムで デバイスハードウェアの管理とiOS上で動作するアプリケーションに対してリソースや機能を提供します。 iOSはDarwinカーネルを携帯端末に向けて再構築したものだと言われています。 [出展]

いわゆるiPhoneアプリやiPadアプリのように呼ばれるiOSアプリケーションは、iOS上で動作するネイティブのアプリケーションです。 実行可能なバイナリがデバイス内にインストールされて実行されます。この点はWebアプリケーションとの違うところになります。

Framework

iOSの機能をアプリケーションで利用する際は、コンポーネントごとに分割されたFrameworkを通して利用します。 Frameworkを利用するため、直接ハードウェアとやり取りすることは滅多にありません。 インタフェースはObjective-CとSwiftのものが提供されており、基本的にはObjective-CやSwiftを用いてアプリケーションを記述します。 一部、 RubyMotion のようにRubyを用いてiOSアプリケーションを記述することもできます。

FrameworkはハードウェアやOSに近いものから、抽象度の高いものまで様々あり、レイヤで分割されています。

Layers of iOS

iOS Technology Overviewより

以下にレイヤと代表的なFrameworkをリストアップします。

Cocoa Touch レイヤ

Cocoa TouchレイヤはiOSのレイヤの中で最も抽象度が高く、かつ主要なフレームワークが含まれています。

名称 説明
UIKit iOSにグラフィカルなイベント駆動型のアプリケーションを実装するための重要なフレームワークです。UIコンポーネントとその管理や機能を提供します。
MapKit アプリケーションのユーザーインタフェースに組み込んで使えるスクロール可能なマップを提供します。
GameKit アプリケーションからGameCenterの機能を使うための機能を提供します。

またFramework以外に以下の機能なども含まれます。

名称 説明
Gesture Recgonizer ユーザーのタップやスワイプ、ピンチイン、ピンチアウトなどを検出することができる機能です。
Apple Push Notification サービス Push通知と呼ばれることの多い機能です。アプリケーションが実行中以外でもユーザーに新着の情報があったことを通知することができます。通知は別のサーバーなどから送信することが多いです。
拡張機能(Extension) あるアプリケーションの機能を別のアプリケーションなどで利用する機能です。例えばSafariで閲覧中のWebページのURLを、別のアプリ経由で投稿することなどができます。iOS8から利用することができます。
Media レイヤ

Media レイヤは画像、音声、動画などのマルチメディアに関する機能を提供します。 以下に代表的なフレームワークを紹介します。

名称 説明
Assets Library 写真(Photos)アプリケーションで管理されている写真やビデオにアクセスする機能を提供します。写真の読み込みや保存が可能です。
AV Foundation オーディオ、ビデオの再生、録音、録画、管理を行うクラス群です。
Core Graphics Quartz 2D描画API用のインタフェースが含まれており、OS Xと同様のベクトルベースの描画エンジンを用いて2Dグラフィックスを描画するためのフレームワークです。
GLKit OpenGL ESの開発を行うためのObjective-Cベースのクラス群です。
Core Services レイヤ

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 レイヤ

Core OS レイヤはよりハードウェアに近い機能を提供します。これらの機能を直接用いることはなくとも、 他のレイヤのフレームワークが利用されています。以下に代表的な機能やフレームワークを紹介します。

名称 説明
Accelerate DSPや線形代数、信号処理を実行するための機能とインタフェースを含みます。
Core Bluetooth アプリケーションからBluetoothの機能を利用するためのフレームワークです。

iOSアプリケーションを作っていく上で気をつけたいこと

このトレーニングコースの受講者は何かしらのプログラミング経験(特にWebアプリケーション)を持っている方を対象としています。 そのような方々がiOSアプリケーションを作っていく上で、特徴的あるいは固有の点について解説します。

iOSアプリケーションとWebアプリケーションの対比

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. iOSについて

  2. Xcode最初のステッフ

  3. 導入

  4. Objective C の基礎

  5. メモリ管理

  6. 1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)

  7. 1.3 UIViewController1 UIViewController のカスタマイズ(storyboard)

  8. UIViewController2 - ModalViewController

  9. UIViewController2 - ModalViewController(storyboard)

  10. UIViewController3 - ライフサイクル

  11. HomeWork 1 Objective C の基本文法

  12. HomeWork 2 UIViewControllerとModalViewController

  13. HomeWork 3 UIViewController + Animation

  14. UIKit 1 - container, rotate-

  15. UINavigationController

  16. UITabController

  17. Custom Container View Controller

  18. Supporting Multiple Interface Orientations

  19. HomeWork 1 - タブバーからモーダルビューを表示する

  20. HomeWork 2 - NavigationController

  21. HomeWork 2.3 デバイスことに回転対応

  22. UIKit 2- UIView -

  23. UIView

  24. UIView のカスタマイズ

  25. UIView Animation

  26. HomeWork 1 - UIScrollView

  27. UIKit 3 - table view -

  28. UITableView について

  29. UITableViewとNavigationController

  30. custom UITableViewCell の作成

  31. UITableViewのその他のオプション、カスタマイズ

  32. HomeWork 1 - Dynamic height with a custom uitableviewcell

  33. UIKit 4 - image and text -

  34. UIImagePickerController

  35. Assets Library

  36. UITextFiled, UITextView

  37. KeyboardNotification

  38. Homework 1 - フォトの複数枚選択

  39. ネットワーク処理

  40. NSURLConnection

  41. JSONのシリアライズとデシリアライズ

  42. UIWebView

  43. ローカルキャッシュと通知

  44. NSUserDefaults, Settings Bundle

  45. NSFileManager

  46. Key Value Observing

  47. NSNotification、NSNotificationCenter を用いた通知

  48. UILocalNotification

  49. Blocks, GCD

  50. Blocks

  51. GCD

  52. 【演習】GCD,-Blocksを用いたHTTPリクエストマネージャの作成

  53. 設計とデザインパターン

  54. クラス設計 1

  55. クラス設計 2

  56. [クラス設計演習] (https://github.com/mixi-inc/iOSTraining/wiki/9.3-%E3%82%AF%E3%83%A9%E3%82%B9%E8%A8%AD%E8%A8%88%E6%BC%94%E7%BF%92)

  57. 開発ツール

  58. Instruments, デバッガ

  59. CocoaPods

  60. テスト

  61. iOS開発におけるテスト

  62. GHUnit

  63. Kiwi

  64. KIF

  65. In-App Purchase

  66. In-App Purchase

  67. 付録

  68. Tips of Xcode

  69. Auto Layout 入門

  70. Auto Layout ドリル

Edit sidebar

Clone this wiki locally