Start Developing iOS Apps Today(sup.4)〜主要フレームワークの概要

2012. 12. 14
フレームワークは、共有ライブラリやライブラリに格納されているコードへアクセスするためのヘッダファイル、そして画像や音声ファイルなどの他のリソースが含まれているディレクトリです。
共有ライブラリは、アプリが呼び出すことができる関数やメソッドを定義しています。

iOSは、アプリ開発に使用することができる多くのフレームワークを提供します。
フレームワークを使用するには、アプリがリンクできるようにするためプロジェクトに追加します。
ほとんどのアプリは、Foundation、UIKit、Core Graphicsフレームワークにリンクしています。
アプリ用に選択したテンプレートに依っては、その他のフレームワークが含まれる可能性があります。
フレームワークのコアセットが貴方のアプリが要件を満たしていない場合、プロジェクトにいつでも補足するフレームワークを追加することができます。

HelloWorld.xcodeprojに含まれているフレームワークを調べる
  1. (まだ開いていなければ)XcodeでHelloWorld.xcodeprojを開きます。
    以前にチュートリアル『初めてのiOSアプリケーション』でこのプロジェクトは生成しています。

  2. プロジェクトナビゲータにあるFrameworksフォルダの隣にある三角マークをクリックすることによって、フォルダを開きます。
    UIKit.frameworkとFoundation.framework、そしてCoreGraphics.frameworkが表示されるはずです。

  3. 各フレームワークのヘッダファイルは、そのフレームワークの隣にある三角マークをクリックし、それからHeadersフォルダの隣にある三角マークをクリックします。

各フレームワークは、iOSシステムのレイヤに属しています。
各レイヤは、その下のレイヤの上に構築されています。
できるだけ下位レベルのフレームワークの代わりに上位レベルのフレームワークを使用してください。
上位レベルのフレームワークは、下位レベルの構成物をオブジェクト指向で抽象化して提供しています。

framework_layer_2x.png



●iOSアプリはFoundationとUIKitフレームワークに基づいている

プログラミングを始める場合、アプリ開発で必要となる物のほとんどを扱うFoundationとUIKitフレームワークを主に使用します。


Foundationフレームワークは全てのアプリにおける基本的なシステムサービスを提供する

UIKitや他のフレームワークと同様に、アプリはFoundationフレームワークを基盤として構築されています。
Foundationフレームワークは、アプリ開発の基礎を作成する多くのプリミティブオブジェクトクラスとデータ型を提供します。
また、より再利用可能で一貫したコードを作成するための(割り当て解除などの)規則を確立します。

Foundationは以下の処理で使用します。
  • 配列や辞書などのコレクションの生成と管理
  • アプリに格納されている画像や他のリソースへのアクセス
  • 文字列の生成と管理
  • 通知の投稿と観測
  • 日付と時刻オブジェクトの生成
  • IPネットワーク上のデバイスの自動検出
  • URLストリームの操作
  • 非同期のコード実行
初めてのiOSアプリケーション』において、貴方は既にFoundationフレームワークを使用していました。
例えば、userNameにユーザの入力を格納するために、NSStringクラスのインスタンスを使用しました。
また挨拶の文字列の生成に、FoundationのインスタンスメソッドinitWithFormat:を使用しました。


UIKitフレームワークはタッチベースのユーザインターフェイスを生成するためのクラスを提供する

全てのiOSアプリはUIKitに基づいています。
このフレームワーク無しにアプリを出荷することはできません。
UIKitは画面の描画、イベント処理、そして一般的なユーザインターフェイス要素を生成するための基盤を提供します。
またUIKitは、画面上に表示されるコンテンツを管理することによって、複雑なアプリを整理します。

UIKitは以下の処理で使用します。
  • ユーザインターフェイスの構築と管理
  • タッチやモーションベースのイベント処理
  • テキストやウェブコンテンツの表示
  • マルチタスクのためのアプリの最適化
  • カスタムユーザインターフェイス要素の生成
初めてのiOSアプリケーション』ではUIKitを使用していました。
アプリがどのように起動するかを調査した時、ユーザイベントが発生した際に処理を行う、UIApplicationクラスのインスタンスを生成するUIApplicationMain関数を見たことでしょう。
ユーザがDoneキーをタップした時に、キーボードを閉じるためにUITextFieldDelegateプロトコルを実装しました。
実際にはUITextFieldUILabel、そしてUIButtonクラスといった、インターフェイス全体を生成するためにUIKitを使用していました。



●知っておくべきその他の重要なフレームワーク

Core Data、Core Graphics、Core Animation、そしてOpenGL ESフレームワークは、アプリ開発において重要で、習得や精通に時間を要する高度な技術です。


Core Dataフレームワークはアプリのデータモデルを管理する

Core Dataはオブジェクトグラフを管理します。
Core Dataを使用するには、管理オブジェクトとして知られるモデルオブジェクトを生成します。
貴方はそれらのオブジェクト間の関係を管理し、フレームワークを介してデータに変更を加えます。
Core Dataは、データを効率的に格納および管理するため、組み込みのSQLite技術を利用しています。

Core Dataは以下の処理で使用します。
  • ストレージからのオブジェクトの取得と保存
  • 基本的なアンドゥ/リドゥのサポート
  • 自動的なプロパティ値の検証
  • メモリ内のデータをフィルタ、グループ、整理
  • NSFetchedResultsControllerによるテーブルビュー内の結果の管理
  • ドキュメントベースアプリケーションのサポート

Core Graphicsフレームワークはグラフィックスの生成を支援する

高品質なグラフィックスは、全てのiOSアプリの重要な部分です。

iOSでグラフィックを生成するために最も簡単で最も効率的な方法は、UIKitフレームワークの標準のビューとコントローラでレンダリング画像を使用し、iOSで描画することです。
またUIKitは、パス、色、パターン、グラデーション、画像、テキスト、そして変換を含むカスタム描画を行うためのクラスも提供しています。
下位レベルのフレームワークであるCore Graphicsの代わりに、上位レベルのフレームワークであるUIKitをできるだけ使用してください。

iOSとOS Xとの間で直接共有する描画コードを記述したい場合は、Core Graphicsを使用します。
Core GraphicsフレームワークはQuartzとしても知られており、両プラットフォームにおいてほぼ同じものです。

Core Graphicsは以下の処理で使用します。
  • パスベースの線描の作成
  • アンチエイリアシングレンダリングの使用
  • グラデーション、画像、および色の追加
  • 座標空間の変換の使用
  • PDF文書の生成、表示、および解析

Core Animationは高度なアニメーションや視覚効果を追加することができます

UIKitはCore Animation技術の上に構築されているアニメーションを提供します。
UIKitの能力を超えた高度なアニメーションが必要な場合、直接Core Animationを使用することができます。
Core AnimationインターフェイスはQuartz Coreフレームワークに含まれています。
Core Animationを使用すると、操作しているレイヤオブジェクトに回転、拡大縮小、そして変換などの階層を生成することができます。
Core Animationのよく知られているビューに似た抽象化を使用することより、OpenGL ESなどの下位レベルのグラフィックスAPIを使用することなく、動的なユーザインターフェイスを生成することができます。

Core Animationは以下の処理で使用します。
  • カスタムアニメーションの生成
  • グラフィックスにタイミング機能を追加
  • キーフレームアニメーションをサポート
  • グラフィカルなレイアウトの制約を指定
  • 複数のレイヤの変更をアトミックな更新にまとめる

●OpenGL ESフレームワークは2Dおよび3D描画のためのツールを提供

OpenGL ESは基本的な2Dおよび3D描画をサポートします。
Appleの標準OpenGL ESの実装は、フルスクリーンのゲームスタイルのアプリケーション用に高フレームレートを提供するため、デバイスのハードウェアと密接に連携します。

OpenGL ESは以下の処理で使用します。
  • 2Dおよび3Dグラフィックスを生成
  • データの可視化やフライトシミュレーション、またはビデオゲームのような複雑なグラフィックスの作成
  • 基礎となるグラフィックスハードウェアへのアクセス


●iOSとOS XのAPI間の相違点と類似点を理解する

貴方がMacの開発者の場合、CocoaとCocoa Touchアプリは類似した技術に基づいていることに気付くでしょう。
これらの共有しているAPIはCocoaからの移行を容易にしています。
実際にはFoundationとCore Dataのように、いくつかのフレームワークは同一(またはほぼ同じ)です。
しかし他のフレームワークは、OS Xのものとは異なります。
特にAppKitとUIKitがそれに該当します。
したがってMacアプリをiOSに移行する場合、かなりの数のインターフェイス関連のクラスとそれらのクラスに関連するコードを置換する必要があります。

プラットフォーム間の相違点と類似点に関する詳細は、『iOSテクノロジーの概要』の『Cocoaからの移行』を参照してください。



●必要に応じてプロジェクトに他のフレームワークを追加する

アプリで使用することができる、より多くのフレームワークがあります。
既に含まれているフレームワーク以外を使用する必要があると判断した場合、アプリがリンクすることができるようにプロジェクトにフレームワークを追加します。

project_editor_2x.png

HelloWorld.xcodeprojに他のフレームワークをリンクするには
  1. (まだ開いていなければ)XcodeでHelloWorld.xcodeprojプロジェクトを開きます。

  2. HelloWorldプロジェクトのプロジェクトナビゲータをクリックし、プロジェクトエディタを表示します。

  3. ターゲットリストでHelloWorldをクリックし、追加したいフレームワークのターゲットとしてHelloWorldを指定します。

  4. プロジェクトエディタの上部にある『Build Phases』をクリックします。

  5. 『Link Binary With Libraries』の隣にある三角マークをクリックして開きます。

  6. フレームワークを追加するため追加(+)ボタンをクリックします。

  7. リストからフレームワークを選択し、Addボタンをクリックします。

フレームワークの完全なリストや、それらについて多く学ぶためには、『iOSテクノロジーの概要』を参照してください。



参考文献

Apple/Start Developing iOS Apps Today

Apple/Survey the Major Frameworks

0 CommentsPosted in 資料





Wave SoundTouch music system IV
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Wave SoundTouch music system IV
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR