Cocoa (API)

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の二層構造を成し、狭義ではこの二つ(Core frameworks)をCocoaフレームワークと呼ぶ[1]。厳密な区分ではないが、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側から呼び出すことも可能である)。しかしCC++からは直接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よりも柔軟性に優れており、インターフェイスの差違は大きい)。

脚注

[脚注の使い方]

注釈

  1. ^ 他にはCarbon、POSIXX11Javaがある。

出典

  1. ^ What Is Cocoa? | Cocoa Fundamentals Guide | Apple Developer

関連項目

バージョン
macOS logo
アプリケーション
廃止
ユーティリティ
廃止
  • グラブ
  • ネットワークユーティリティ
テクノロジーおよび
インタフェース
非推奨
廃止
開発ツール
低レベル
高レベル
AmigaOS対応
  • BOOPSI(英語版)
  • Magic User Interface(英語版)
  • ReAction GUI(英語版)
  • Zune(英語版)
Mac OS/macOS対応
  • Cocoa (API)
  • MacApp(英語版)
  • MacZoop(英語版)
  • PowerPlant(英語版)
Windows対応
X11下のUnix対応
  • Athena/Xaw(英語版)
  • InterViews(英語版)
  • LessTif
  • Motif
言語別
クロスプラットフォーム
CLI
  • Gtk#
  • Moonlight(英語版)
  • Tao(英語版)
C/C++
  • CEGUI(英語版)
  • Component Library for Cross Platform
  • FLTK
  • FOX toolkit(英語版)
  • OpenGL User Interface Library(英語版)
  • GTK
  • Juce(英語版)
  • Qt
  • Wt(英語版)
  • Tk
  • TnFOX(英語版)
  • Ultimate++(英語版)
  • Visual Component Framework(英語版)
  • wxWidgets
  • YAAF(英語版)
  • XForms
  • XVT(英語版)
Objective-C
Flash
Java
デスクトップ
ウェブ
JavaScript
Common Lisp
Object Pascal
Perl
  • WxPerl(英語版)
  • Perl/Tk
PHP
  • PHP-GTK(英語版)
  • PHP-Qt(英語版)
  • WxPHP(英語版)
Python
Ruby
  • Shoes
  • QtRuby(英語版)
XML
  • Ample SDK(英語版)
  • CougarXML(英語版)
  • GladeXML
  • Lively Kernel(英語版)
  • Pyjamas(英語版)
  • Rialto Toolkit(英語版)
  • XAML
  • XML User Interface(英語版)
  • XUL
  • Wt(英語版)
  • 一覧記事一覧(英語版)
  • カテゴリカテゴリ