Objective-Cの勘所1 開発環境と用語

仕事でiPhoneアプリをAndroidアプリへと移植することになり、Objective-Cに入門した。覚えたことをメモとして残しておく。

Objective-Cとは何か

主にApple製品で動作するアプリケーションの作成に使われているプログラミング言語である。Objective-CはSmalltalkライクな言語である。Smalltalkは祖先にSimura, Lisp, LOGOなどのプログラミング言語を持ち、Objective-Cにも影響を与えている。

開発環境として準備したもの

  • Macintosh mini(OS X MountainLion/プロセッサ 2.3GHz Intel Core i5, メモリ 6GB 1333MHz DDR3)
  • Xcode(iPhoneSDK同梱)
  • SCPlugin(Subversionクライアント)
  • SourceTree(Gitクライアント)
  • mi(Macのエディタ)

開発環境関連の用語

Cocoa

Mac OS X用のアプリケーションを構築するためのフレームワーク(API)であり、Mac OS Xに実装されている開発環境の一つ。Mac OS X開発の基盤となった旧NeXT社のOS「OPENSTEP」の流れを受け継ぐ環境で、Mac OS Xの機能をフルに引き出したソフトウェアをオブジェクト指向に基づいて開発することができる。開発言語としてはOPENSTEP標準だったObjective-CやJavaが利用できる。
※CocoaはFoundationとAppKitを骨格として構成されている。

Cocoa Touch

iPhone/iPod touch/iPad用のアプリケーションを構築する為のフレームワーク(API)であり、iPhone SDKに含まれる開発環境の一つ。
※Cocoa TouchはFoundationとUIKitを骨格として構成されている。Cocoa TouchはCocoaフレームワークよりもさらにコンパクトな設計になっている。

NSObject

CocoaクラスライブラリやCocoa Touchクラスライブラリのトップレベルのオブジェクトのクラス名。NSObjectのNSはNextSTEPの略である。CocoaはNeXT社が開発していたオブジェクト指向プログラミング環境NeXTSTEP/OpenStep の発展版である。その為、このような名称が引き継がれている。
※自作クラスの先頭には、そのクラスの作成者の属する会社やグループを表す2〜3文字からなる略称をprefix(接頭語)としてつけることが推奨されている。

Foundation

Cocoa/Cocoa Touchの骨格とも言えるCocoaフレームワーク/Cocoa Touchフレームワークの一つ。基礎的なクラスを提供する。

AppKit

Cocoaの骨格とも言える、Cocoaフレームワークの一つ。UIやグラフィカルな要素に関するクラスを提供する。

UIKit

Cocoa Touchの骨格とも言える、Cocoa Touchフレームワークの一つ。CocoaのAppKitに相当するCocoa Touchでの明確なフレームワークは存在しないが、あえて言うならUIKitがそれにあたる。

Interface Builder

Xcodeに統合されているGUIのデザインファイルを作成する専用ツール。作成されたファイルは.xibという拡張子を持つ。Xcode3.2までは、.nib拡張子のファイルをダブルクリックしてInterface Builderを起動し編集をしていたが、Xcode4から拡張子が変わり、Xcodeに統合された。今でもその名残からxibファイルはnibファイルと呼ばれる。

プリプロセッサ命令

#importのように頭に#が付く命令。この命令はコンパイルする前の準備段階にプリプロセッサにより評価される。
※「プリプロセッサ」とはコンパイルの前に前処理を行うプログラムのことで「前処理系」とも呼ばれる。この「プリプロセッサ」に対しての命令を「プリプロセッサ命令」と言う。

コンパイラディレクティブ

@interfaceのように頭に@が付く命令。これはObjective-Cへの命令文である。@が付いてる部分が、厳密な意味でのObjective-C言語である。Objective-CはC言語の拡張であるので、Objective-CのコードにはC言語のコードが含まれる。なので、厳密な意味でのObjective-Cとしてのコードには頭に@が付く。

参考
Objective-C/基本 – iPhoneアプリ開発の虎の巻
viva Cocoa / Objective-C 入門
SDKで始めるiPad/iPhoneアプリ開発の勘所(1):いまさら聞けないiPhone/iPadアプリの作り方の基礎
Cocoaの素、Objective-Cを知ろう(1):Objective-Cは特殊な言語?