Macintosh Developer Online (MDOnline)


2001年7月15日発行号 - Cocoaはやっぱり!出張版、スタート!



お待たせしました。鶴薗さんの連載を開始します。今回はとりあえずは導入という感じですが、励ましあるいは要望などがありましたら、ぜひともメールなどで伝えてあげて下さい。鶴薗さんのページにメールアドレスがありますが、こちらにメールをいただいて転送してもかまいません。
さて、先週の後半に秋葉原にメモリを買いに行きました。Windowsのデスクトップ用なんで、まあ、なんでもいいんですが、256MBのメモリが、なんと3500円前後にまで値下がりしています(168pin, PC100, CL2)。会社の同僚に聞けば、先週あたりは4500円くらいだったとかで、悔しがっていましたが(笑)、しかし、あまりにすごいメモリの値下がり状況ですね。いったいどうなってしまったんでしょうか。うちで妻が使っているマシンは、一昨年の年末くらいに組み立てたやつなんで、気がついたら64KBのメモリしか入っていない状態だったのです。それでも、全然普通には使えていたのですけど、Office XPを入れるとなんかすごく不安定になり、また、インストールできないコンポーネントも出てくるやらで、とりあえずメモリを足してみようという方針です。それでもだめだったら、Windows Meをやめて、Windows 2000を入れようかと思っていますけど、どうなることやら…。それでまあ、自分のPowerBook G4ですが、最初から256MBあるので、そんなにメモリ不足になっているという雰囲気でもないのですけど、なんかこんなに安いのならもう256MB! といきたくなりますね(笑)。Webサイトをちらほら見ると、7800円かぁ〜、汎用品の倍はするんですねぇ〜。
(新居雅行 msyk@mdonline.jp


鶴薗賢吾のCocoaはやっぱり!出張版》Mac OS X対応アプリケーションをCocoaでプログラミング(1)

■ あいさつ
どうもはじめまして。今回より月に一度Cocoaに関する連載を書くことになりました鶴薗賢吾と申します。Cocoaに関しては、「興味はあるんだけど情報が少なくどう手を付けてよいのやら…」と思っていらっしゃる方も多いのではないでしょうか。この連載では、多少なりでもそういった方の手助けになればと思っています。
かくいう私自身も勉強中の身でして、この連載を通じてさらに勉強してきたいと思っていますし、色々と読者のみなさんよりの情報やフィードバック等も期待しているところです。よろしくお願いいたします。では、早速始めたいと思います。

■ Cocoaとは何か
Mac OS Xの構成図を見ると分かりますが、Mac OS Xで動作するアプリケーションには、「Classic、Carbon、Cocoa」の3種類の形式があります(Javaを含めている図もありますので、この場合は4種類となります)。

◇図1. Mac OS Xの構成図
 

Classicは、従来のMac OS 9までで使用されてきた形式です。Mac OS Xに備わっているClassic環境によって動作します。ただし、Mac OS Xに備わっている新しい機能(プリエンプティブマルチタスク、メモリ保護、Quartzによる高機能なグラフィック等々)をフルに利用することはできません。
Carbonは、Mac OS Xの新しい機能を利用するためにClassicから発展して作られた、Mac OS Xネイティブの新しい形式です。CarbonからはMac OS Xに備わっている新しい機能を利用することが出来ます。また、開発者の視点から見ると、CarbonのAPIはClassicのAPIと似ているため、既存のClassicアプリをゼロから作りなおすことなく、Mac OS X対応させることが可能です。
Cocoaは、Carbonと同様にMac OS Xの新しい機能が使える新しいアプリケーションの形式ですが、ベースになっているのはNeXT Computerで生まれた「OPENSTEP(旧NeXTSTEP)」です。そのため開発方法が今までとは全く異なります。Carbonがあるにもかかわらず、Cocoaというものが用意された理由は、なんといっても「開発が容易である」ことです。Mac OSは(つまりClassic APIは)、長年の建て増しの繰り返しによって継ぎはぎの目立つものになってきました。CarbonもClassicをベースにしているため、整理はされているものの同様の性質を持っています。
Cocoaは、非常にエレガントな作りになっていて、「10倍簡単に開発ができる」というような表現を見掛けることがあります。OPENSTEP自体は随分昔に開発されたものですが、基本設計のよさもあり、それを引き継いだCocoaは今でも十分新しく、Mac OSの開発環境としては最も優れたものといえます。これから新規にMac OS X対応のアプリケーションを作る、もしくは、これからMac OS Xのプログラミングの勉強を始めるという方には、CarbonよりもCocoaの方が非常に魅力的な解になるでしょう。

■ 開発ツール
Cocoaの開発を容易にしている1つ目の理由は、開発用ツールにあります。Project BuilderとInterface Builderが2大開発ツールで、以下のようなものです。


特にInterface Builderが特徴的で、2つのオブジェクトをグラフィカルに接続しながらアプリケーションを組み立てていくことができます。2つのオブジェクトを接続をすることで、そのオブジェクト間でメッセージを送ることができるようになります。また、その接続状況を確認する画面もあります。

◇図2. Project Builder
 

◇図3. Interface Builderでオブジェクトの接続を行っているところ。(印刷ボタンからプロフィールに接続しています)
 

◇図4. Interface Builderの接続状況確認画面(印刷ボタンからプロフィールに「print」メッセージが送信されることが分かります)
 

■ フレームワーク
Cocoaの開発を容易にしているもう1つ目の理由は、フレームワークにあります。FoundationとApplication Kitが2大フレームワークで、以下のようなものです。

Foundationの方は、ソフトウェアを開発する上で必要となる基礎的なクラスを提供してくれます。Application Kitの方は、ユーザーと対話するためのユーザーインターフェイスやグラフィカルな要素を扱うクラスを多く含みます。どちらも全面的にオブジェクト指向を取り入れたエレガントなものとなっています。
MACWORLD Expoでよくデモされていたような、画像を回転したり透明度を変えたりといったことも簡単です。印刷やPDFへの出力、ムービー再生、スクリーンセーバーの作成も簡単にできます。また、UNIXのコマンドも呼び出せますので、UNIXのプログラムにMacらしいユーザーインターフェイスを付加するような用途にも使うことも可能です。

■ コーディング無しで作れるアプリケーション
さて、Cocoaの開発環境の優秀さの一端を見ていただくために、コーディングをしないでここまでのアプリケーションが作れるという例をお見せしましょう。プロフィール入力を行うアプリケーションです。

◇図5. コーディング無しで作ったサンプルアプリケーション
 

図に書いているように、以下のようなことがコーディング無しで実現できます。

印刷は簡易的なものになりますが、印刷プレビューを表示させると以下のようになります。

◇図6. 印刷でプレビューを表示させたところ(手前のウィンドウが印刷プレビュー)
 

これはちょっと極端な例かもしれませんが、Cocoaでは、これくらいのことはコーディングをしなくてもできてしまうのです。

■ 開発言語
Cocoaの開発で使用する言語は、「Objective-C」もしくは「Java」です。Cocoaの2大フレームワークはObjective-Cで記述されていることもあり、この連載では、Objective-Cを使います。
Objective-Cは、馴染みのない方が多いかと思います。Cocoaという新しいものに加えて、新しい言語も覚えなければならないのかと思われるかもしれません。でも、Objective-Cは、ANSI C互換のC言語で、そこにシンプルな形でオブジェクト指向の機能拡張を行っています。ですので、C言語が分かる方であればさほど修得には時間はかかりません。
C言語ベースにオブジェクト指向の拡張を行った言語としてはC++の方が一般的ですが、かなり多機能で修得には時間がかかります。しかし、C++の複雑さに挫折した方でも、Objective-Cならなんとかなるかもしれません。それくらいシンプルな言語です。でも、かなりダイナミックで強力な機能を備えています。プログラム言語の善し悪しを論じるのは難しいですが、かなり面白い言語であることは間違いないと思います。
Javaに通じている方は、JavaでCocoaの開発を行うことも可能です。Javaを使う場合は、Java Bridgeを経由してObjective-Cで書かれたフレームワークを使うことになり、パフォーマンス的には多少不利なところもあります。
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》Mac OS X対応アプリケーションをCocoaでプログラミング(2)

■ 開発環境の入手方法
もしかすると、Cocoaで開発をする最大のメリットは、開発環境が安価に手に入ることかもしれません。14,800円のMac OS Xのパッケージには、開発ツールが標準でついています。Macでは、こんなに安価な開発環境は他にはありません。
また、Appleの開発者向けのサービスである「Apple Developer Connection(ADC)」に入会することで、Appleのサイトより無料でダウンロードすることができます(ファイルは巨大ですので常時接続環境がないと辛いですが)。ADCのにはいくつかのコースがありますが、「Onlineプログラム」は無料ですので入会して損は無いでしょう。

◇Apple Developer Connection プログラム
 http://developer.apple.com/ja/membership/index.html

■ Cocoaの欠点
いいこと尽くめのようなCocoaにも欠点はあります。ここでは、その欠点についても触れておきましょう。

〈CocoaアプリはMac OS X専用〉
Cocoaで開発する最大のデメリットは「CocoaアプリがMac OS X専用であること」でしょうか。Carbonアプリは、Mac OS 8.6以降で動くように開発が出来ますが、Cocoaではそれはできません。古いマシンや古いOSでも動くようにという要求がある場合は、Cocoaでの開発はマッチしないといえます。

〈大規模なClassicアプリからの移行は大変〉
Classic/CarbonとCocoaの間にはAPIの互換性がありませんので、既存のClassicアプリをCocoaへ移植する場合、Carbon化するよりも一般に工数がかかります。小規模なものであれば、開発の容易さもありますので、ゼロから作りなおすという手もあるかもしれませんが、大規模なものには向かないといえます。

〈Cocoaは発展途上〉
Mac OS X自体が発展途上であるともいえるのですが、CocoaはOPENSTEPから発展してきたために、従来のMac OSの作法を完全には身に付けていないところがいくつか見受けられます。例えば、


というような点です。CocoaアプリからはCarbon APIを呼び出すことができるため、以上の問題は解決できない問題ではありませんが、CocoaとCarbonの両方を知らなければならないということには変わりありません。これは、今後のCocoaのフレームワークの改善に期待するしかありませんが、現状としては、Mac OSらしいアプリを作るのには多少面倒な手続きが必要になることがあります。

■ 情報源
最後に、現在手に入るCocoaの開発情報源を紹介します。情報は豊富にあるとはまだまだ言い難いのですが、徐々に増えつつあります。また、Cocoaで作成されたフリーウェアは、ソースコードが公開されているものが比較的多く参考になります。日本語による情報はもう少し増えてほしいところですが..。

◎ WEBサイト

◇Cocoa (英語)
 http://developer.apple.com/cocoa/
AppleのオフィシャルなCocoaのサイトです。Cocoaに関するドキュメントやCocoaのメーリングリスト(英語)があります。

◇Cocoa Sample Code (英語)
 http://developer.apple.com/samplecode/Sample_Code/Cocoa.htm
Appleが配付しているCocoaのサンプルコードが置いてあるサイトです。

◇Discovering OPENSTEP (PDF)
 http://developer.apple.com/ja/techpubs/pdf/DiscoveringOPENSTEP-J.pdf
アップルが日本語で配付している資料は少ないのですが、最も本格的なものといえば、この「Discovering OPENSTEP」です。名前から分かるようにOPENSTEPの解説なのですが、大半は今でも通用しますのでダウンロードしておいて損はありません。オブジェクト指向についての解説もあります。

◇Nito’s Page
 http://www.fsinet.or.jp/~nito/index-j.html
Cocoa倶楽部というメモリ管理や例外処理についてかかれた記事や、OPENSTEPの詳細な解説があります。

◇HAPPY Macintosh Developing TIME!
 http://www05.u-page.so-net.ne.jp/xd5/mkino/HMDT/
Cocoaについての調査結果をアクティブに発表しているサイトです。サンプルも多く参考になります。

◇Java de Cocoa
 http://underwater.lab.nig.ac.jp/~takaho/computer/osx/index.html
JavaでのCocoaの開発情報は比較的少ないのですが、日本語のサイトではこちらが一番充実しています。

◇Cocoa Dev Central (英語)
 http://www.cocoadevcentral.com/
テーマ毎に短かめのサンプルを用いて解説を行っていて分かりやすいです。

◇Vermont Recipes (英語)
 http://www.stepwise.com/Articles/VermontRecipes/
丁寧なチュートリアルや充実したリンク集があってお薦めのサイトです。

◇Native OS X Application : Cocoa Source Code (英語)
 http://osx.hyperjeff.net/Apps/CocoaSource.html
Cocoaの公開されているソースコードへのリンク集です。大量のリンクがあり、生きた教材であるソースコードを沢山見ることが出来ます。

◇Omni Group (英語)
 http://www.omnigroup.com/
NeXT時代からのデベロッパー。OmniWeb等でMac OS Xのアプリも多数リリースしています。メーリングリストや高機能なフレームワークも配付しています。

◇Cocoaはやっぱり!
 http://www.big.or.jp/~crane/cocoa/
手前味噌になってしまうかもしれませんが、私が書いているサイトです。順に読んでいくことでCocoaを理解できるように書いています。サンプルコードも沢山あります。

◎ 書籍

◇Mac OS Xプログラミング入門 Objective-C
 萩原剛志著 広文社 ISBN4-87778-068-8
残念ながら日本語のCocoa解説書は現在この1冊だけです。タイトルどおりObjective-Cに絞った解説ですので、やや地味な内容ですが、Cocoaに関する知識の地固めには欠かせない情報が豊富にあります。アプリケーションを作るために不可欠なApplication Kitについての解説は少なく、そういった情報に関しては、現在はWeb上から得ることになります。

◇Learning Cocoa (英語)
 Apple Computer, Inc. O’REILLY ISBN0-596-00160-6
現在、唯一のCocoaアプリケーション開発の解説本です。ただし英語です。また、内容的にはAppleのサイトからダウンロードできるPDFの内容が中心です。ですので紙で読みたい方には悪くありませんが、画面で読めればいいという方は、PDFをダウンロードしましょう。

■ 終わりに
いかがだったでしょうか。Cocoaの開発環境は、高機能で効率的に開発が出来ることがちょっとは分かっていただけたのではないかと思います。もし、Mac OS Xのパッケージをお持ちであれば、今すぐにでも始められます。週末にでもチャレンジしてみてはいかがでしょうか。
今後毎月一度のペースで、サンプルを交えたすぐに役に立つCocoaのワンポイントレッスン的なものを書いていきたいと思っています。
[鶴薗賢吾]

カテゴリ:


Webアプリケーション開発に関するセミナーをびぎねっとが開催、WebObjectsも紹介

Bigi.netは、Webアプリケーション開発に関するカンファレンス「Web Developers Conference 2001」を、2001年7月24日(火)11:00〜16:30に開催する。アップルコンピュータは、プラチナスポンサーとなっている。場所は、東京・水道橋近くの東京コンファレンスセンターで、定員は240名、参加費は10,000円となっている。セミナーは並行して行われる「エンタープライズトラック」「テクノロジートラック」の2つのプログラムに別れており、合計、8つのセッションが開催される。エンタープライズトラックは、スポンサーからのプレゼンテーションが並んでおり、アップルコンピュータからは13:00〜14:00に「次世代の開発運用環境「WebObjects 5」」として、同社マーケティング本部プロダクトマーケティング マネージャ鷲滝薫氏による講演が開催される。エンタープライズトラックでは、他に日本アイ・ビー・エムによるWebSphere、オラクル社によるOracle 9i、NECソフトによるLutris Enhydraをテーマにした講演が開かれる。一方のテクノロジートラックでは、京大学情報基盤センター助手の安東孝二氏による「Apacheのパフォーマンスチューニングポイント解説」、メディアフロントの小松誠氏による「PHPで作るXML-DBシステム」、エア・ロジックの羽生章洋氏による「今、Web開発でJavaをはじめる理由」、テューンビズの早川仁氏による「WebDAVによるWebコンテンツの分散オーサリング」といった講演が行われる。Web開発についての初歩的な講演ではなく、実務者にとって知りたい一歩進んだ内容がテーマに挙げられている点は注目できるだろう。

関連リンク:Web Developers Conference 2001
カテゴリ:WebObjects, サーバー製品, イベント


Inside Mac OS X: Aqua Human Interface Guidelinesが書籍として入手可能に

「Inside Mac OS X: Aqua Human Interface Guidelines」が書籍として、FatBrain.comより入手可能となっている。価格は$46で、256ページとなっている。出版時期は2001年5月と記載されている。Mac OS XのAquaを利用したソフトウエアを開発する上で、ユーザインタフェースの設計をどのように行うのかを記載した文書であり、その意味では、Mac OS Xでのソフトウエア開発者は必携のドキュメントであると言えるだろう。

◇ADC Developer Library
 http://www1.fatbrain.com/documentation/apple/

なお、同じドキュメントのPDF版がAppleのサイトよりフリーでダウンロードはできる。以下がそのアドレスである。ダウンロードのリンクではPreliminary版との記述がある者の、ダウンロードできるのは2001年5月という日付けが記載されており、おおむね上記のドキュメントと同じである模様だ(ページ数も同一である)。ペーパードキュメントを入手するか、PDFで済ませるかを検討するということになるだろう。

◇Aqua Human Interface Guidelines (Preliminary)
 http://devworld.apple.com/techpubs/macosx/SystemOverview/AquaHIGuidelines/AquaHIGuidelines.pdf

カテゴリ:雑誌、書籍, ユーザインタフェース


Cocoaで作るアシスタントプログラムを作るためのテンプレートが公開

Stephane Sudre氏は、Mac OS Xでのアシスタントアプリケーションを作るためのフレームワークである「Assistant Kit 0.8」をフリーウエアとしてリリースしている。作成するのは、Objective-CベースのCocoaアプリケーションとして稼動するアシスタントである。ダウンロードしてProject Builderの関連フォルダにインストールを行うと、新規プロジェクトを作成する時に、アシスタント向けのプロジェクトのテンプレートを選択できるようになる。また、新規ファイルのテンプレートとして、最終的な処理を行うクラスを生成することができるようになる。まだ、ドキュメンテーションが不完全であるが、アシスタントアプリケーションを手軽に作ろうと考えているのなら、ダウンロードしてチェックする価値はあるだろう。サンプルプログラムとして、SimpleAssistantというプロジェクトがソース付きで含まれている。これと、テンプレートで作られたプロジェクトを並行して調べれば、独自の設定項目を付け加える方法などはおおむね理解できると思われる。アシスタントのページごとにnibファイルを用意し、そこではNSCustomViewでアシスタントのページを設計する。その各ページをコントロールするクラスとしてAKPaneControllerのサブクラスを定義する。また、全体的なコントールを行うために、PaneList.plistというファイルの記述を変更すると言ったところがポイントになる模様だ。なお、ダウンロードしたファイルをStuffIt Expanderで解凍すると、ファイル名が短くなって途切れてしまうフォルダも出てくるため、解凍はtarコマンドを使うなどするのが良さそうだ。

関連リンク:White Box: What’s New
カテゴリ:Cocoa, 開発情報