「Cocoa (API)」の版間の差分
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (Apple) - log |
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (iOS (Apple)) - log |
||
4行目: | 4行目: | ||
[[NEXTSTEP|NeXTSTEP]] ([[OPENSTEP]]) のAPIをベースとしており、macOS向けのネイティブ・アプリケーションを構築するのに適している。逆に、これまでの[[Classic Mac OS]](Mac OS 9.xまでのMac OS)向けのアプリケーションを構築する目的で使用することはできない。 |
[[NEXTSTEP|NeXTSTEP]] ([[OPENSTEP]]) のAPIをベースとしており、macOS向けのネイティブ・アプリケーションを構築するのに適している。逆に、これまでの[[Classic Mac OS]](Mac OS 9.xまでのMac OS)向けのアプリケーションを構築する目的で使用することはできない。 |
||
一般に、Cocoaを利用したアプリケーションを構築する場合、[[Apple]]から提供される統合開発環境である[[Xcode]](Project Builderの後継)及び [[Interface Builder]]を使用する。なお、[[ |
一般に、Cocoaを利用したアプリケーションを構築する場合、[[Apple]]から提供される統合開発環境である[[Xcode]](Project Builderの後継)及び [[Interface Builder]]を使用する。なお、[[IOS (Apple)|iOS]]の主要フレームワークである[[Cocoa Touch]]は、Cocoaをタッチインターフェースを前提に作り直したもので、開発環境もほぼ同様のものを用いる。 |
||
== アーキテクチャ == |
== アーキテクチャ == |
2021年5月20日 (木) 23:21時点における版
Cocoaは、macOS用のアプリケーションを構築するためのフレームワーク (API) であり、macOSのアプリケーション開発環境の中で主要な物[1]の一つ。
NeXTSTEP (OPENSTEP) のAPIをベースとしており、macOS向けのネイティブ・アプリケーションを構築するのに適している。逆に、これまでのClassic Mac OS(Mac OS 9.xまでのMac OS)向けのアプリケーションを構築する目的で使用することはできない。
一般に、Cocoaを利用したアプリケーションを構築する場合、Appleから提供される統合開発環境であるXcode(Project Builderの後継)及び Interface Builderを使用する。なお、iOSの主要フレームワークであるCocoa Touchは、Cocoaをタッチインターフェースを前提に作り直したもので、開発環境もほぼ同様のものを用いる。
アーキテクチャ
CocoaはObjective-Cをコア言語とするオブジェクト指向フレームワークである。
OS機能やコレクションクラスなどをまとめたサービス層であるFoundationと、主にGUIパーツの集合であるAppKitの二層構造を成し、狭義ではこの二つをCocoaフレームワークと呼ぶ。厳密な区分ではないが、AddressBook APIなど、周辺サービスを提供するObjective-Cで記述されたフレームワークを広義にCocoaと呼ぶこともある。
基本構造はMVCアーキテクチャで、他に委譲(デリゲート)、ファクトリ、Chain of Responsibility パターンなどが多用される。抽象度の高い下位サービスと柔軟なViewの組み合わせが特に強力で、そのままの利用から高度なカスタマイズまで幅広い適応力を持っている。Mac OS X v10.3ではM-V間の同期を自動化するCocoa Binding(Controller層)、Mac OS X v10.4ではモデリングを自動化するCore Dataが実装され、さらに記述の抽象度は上がっている。
Cocoaそれ自体は純粋な機能セットであり、Objective-C実行環境との通信を確立すれば他の言語からも利用が可能になる。これにより現在ではJava/Perl/Ruby/Python/Common Lispなど、各種のコンパイラ・スクリプト言語との言語ブリッジが確立している(これらの言語内でクラスを定義してObjective-C側から呼び出すことも可能である)。しかしCやC++からは直接 Cocoa を使うことはできないため、macOSでは旧来のC/C++プログラマのためにCocoaとほとんど等価な機能をもったCarbon APIも用意されている。
その他
Cocoaはコードネーム『Rhapsody』でのYellow Boxにあたる。
NEXTSTEP由来のCocoaは旧Mac OSのToolbox API由来のCarbonと必ずしも対立するものではない。Carbon APIをラッピングした物、Core Foundationとして共有基盤へ実装を移した物など、単純にインタフェースとしてCocoa側に出現する物も少なくない(ただし、Objective-Cは一般にCよりも柔軟性に優れており、インタフェースの差違は大きい)