明日祖父母宅に行くのですが、今家でネットが使える状況なのでもう一つ記事を更新したいと思います。
この記事は前記事の続きです。
・MVC――今回CJPolygonのデータベース部を開発するにあたって、MVCと言う考え方に配慮した。MVCとはプログラミングにあたって、コードを三種類のコンポーネントに分類してコーディングするものである。MはModel、VはView、CはControllerを表す。Viewは画面表示を司るもので、Modelは実際のプログラム内部での処理を担当する。そしてControllerがそれらを管理し、繋ぐのだ。MVCと言う考え方自体は結構古くからあるらしいのだが、Cocoaではそれを再定義してオブジェクト指向を徹底し、コードの再利用がより容易になるようにしている。また、プログラマに対してもMVCに準拠したコーディングを行うように推奨している。
・CDPolygon
こうして私はCJPolygonは挫折したが、たまたまインターネットでホームページを見ていて興味深い記事を見つけた。CoreDataである。
その記事はMac関係の本を多数出しているマイコミこと毎日コミュニケーションのマイコミジャーナルの特集記事だった。執筆したのはCocoaプログラミングのパイオニアである木下誠さん。そこにはXcodeの機能としてCoreDataという機能が紹介されていた。結局私はCoreDataがなんなのかは正確にはつかめてはいないが、それはデータベースを利用するソフトの開発を大幅に簡略化できるものらしい。そこで私は自分でも試してみることにした。
まずプロジェクト作成時にテンプレートとして[CoreData Application]を選びプロジェクトを作成する。このCoreDataを使う方法ではデータモデルを使う。プロジェクト内の拡張子が「.xcdatamodel」のファイルを開き、そこでデータモデルを定義する。Xcodeのクラスブラウザは、値を編集できるもののクラス自体を作成することは出来ないが、データモデルブラウザの場合はこれをつかってエンティティを新規に作成できる。つまりコードに一切触らずにプログラミングが出来るというわけだ。
マイコミジャーナルの記事に従って操作を進める。エンティティーを作成した後そのエンティティーが持つプロパティーを設定する。これを(大抵の場合)複数作り、関連性を設定してモデルを作り上げる。木下誠さんの著書「Happy Macintosh Developing Time」によれば、ここで設定を変にいじくると完成したソフトがクラッシュすることもあるらしい。
モデルを作成した後、もっともダイナミックなのがデータモデルブラウザからIBへモデルをドラッグ&ドロップするとき。Optionキーを押しながらすることを忘れないように。
Interface Builderにドロップすると、自動的に表が作成される。この表は入力用のフィールドや検索用のフィールド、そしていくつか表内に項目がありいくつ今選択されているかを表示するものや、レコードを表に挿入したり削除したりするためのボタンなどが用意されている。何より驚いたのは、アプリケーション終了時に入力した内容が自動的にハードディスクに保存されることだ。私がCJPolygonを挫折した理由のひとつにXMLでのデータの保存方法がわからないということがあったが、CoreDataはこれを自動的にやってくれるのである。
私はPolygonに使えるようにInterface Builder上でインタフェースを編集した。Fetchボタンや入力用のフィールドを削除、表のカラム名を日本語化したり(実際は日本語用のリソースを作って編集すべきだが面倒なのでEnglishでそのまま日本語化した。)ウィンドウを画面全体に拡大、カラムを並べ替えた。他にもバグIDのカラム名やそのカラムの内容の文字列の右寄せなどや、ボタンのルック&フィールの変更を行った。
先生のMac(OS X 10.3 Panther)ではこのCDPolygonは動かなかったが、これはこのCoreDataを使ったソフトが実行環境でもCoreDataのシステム(つまり10.4 Tiger以上)を要求するからだと思われる。――
この記事にはまだ続きがあります。続きは数日後に載せるつもりです。