Cocoa (API)

Cocoaは、macOS向けのアプリケーションを開発するための主要なフレームワーク(API)です。その起源はNeXTSTEP(後のOPENSTEP)のAPIにあり、macOSのネイティブアプリケーション構築に最適化されています。このため、従来のClassic Mac OS(Mac OS 9.x以前)向けのアプリケーション開発には利用できません。

Cocoaを用いた開発では、Appleが提供する統合開発環境XcodeとInterface Builderが一般的に使用されます。Xcodeはプロジェクト管理やコード編集を、Interface BuilderはGUI(グラフィカルユーザーインターフェース)のデザインを支援します。また、iOSの主要フレームワークであるCocoa Touchは、タッチインターフェースを前提としてCocoaを再設計したものであり、開発環境もCocoaと共通する部分が多くあります。

アーキテクチャ



Cocoaは、Objective-Cをコア言語とするオブジェクト指向フレームワークです。その構造は、OSの機能やコレクションクラスなどをまとめたサービス層であるFoundationと、主にGUIパーツの集合であるAppKitの二層から成り立っています。狭義には、この二つのフレームワーク(Core frameworks)をCocoaと呼びます。一方で、AddressBook APIのような周辺サービスを提供するObjective-Cで記述されたフレームワークを広義にCocoaと捉えることもあります。

基本構造には、MVC(Model-View-Controller)アーキテクチャが採用されています。その他にも、委譲(デリゲート)、ファクトリ、Chain of Responsibilityといったデザインパターンが多用され、抽象度の高い下位サービスと柔軟なViewの組み合わせによって、そのままの利用から高度なカスタマイズまで幅広い適応力を持っています。macOS X v10.3では、ModelとView間の同期を自動化するCocoa Binding(Controller層)が導入され、macOS X v10.4では、モデリングを自動化するCore Dataが実装されました。これにより、開発における記述の抽象度はさらに高まっています。

Cocoa自体は、Objective-C実行環境との連携を確立すれば他の言語からも利用可能です。そのため、JavaPerlRubyPythonCommon 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よりも柔軟性が高いため、インターフェースの差異は大きくなります。

関連事項



プロパティリスト
GNUstep
* SwiftUI

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。