Core Data on iPhone

March 23rd, 2009 | Categories: General | Tags:

今回の iPhone OS 3.0 のバージョンアップで開発者の視点から一番注目しているポイントが Core Data の導入です。

この「Core Data」というのはMac上の開発では以前から使える技術で、開発する上では大変便利な機能なんですが、ユーザーにとっては新しい機能が増えるわけではありません。
ユーザー視点からみると影響はないんですが、個人的には一番欲しかった技術でした。

iPhoneでは、当初からデータベースとして、SQLiteが使えるようになっています。
ただ、当然のことですが、データベースアクセスの際にはSQL文を記述する必要があるので、SQLiteを使用するためには、SQL文を書くか、DBアクセス用のラッパークラスを使うなどするしかありませんでした。
でも Core Dataを使うと、SQL文を全く書かずにSQLiteが使えるようになり、開発が格段に楽になります。

こちらは、Mac用のCore Dataの概要のドキュメント。
Introduction to Core Data Programming Guide
こちらはその日本語版ですが、リビジョンが古いので注意。
Core Data プログラミングガイド

やっぱりデータアクセスのスピードを考えるとデータ保存はファイルよりデータベースにしたいけど、SQL文書くのは面倒くさくていやだな……とずっと思っていました。
かなり古い時期からリリースされているSQLiteBooksという iPhone用のサンプル簡易書籍管理アプリケーションがあるんですが、そのサンプルではSQLiteデータベースに情報を格納する仕組みになっています。
ただ、ソースコードがかなりややこしく、見ただけでやる気がなくなってしまったんですよね……。

今回、iPhone上でCore Dataが使えるようになったので、新しいTutorial Documentが出ています。
(ドキュメント名は「Core Data Tutorial for iPhone OS」。iPhone Developerサイト内なので、直接リンクはしないでおきます。)
このTutorial Documentでは、初めてCore Dataを使う開発者向けに手順が細かく書いてあり、指示通りにプロジェクトを作っていくだけで、データの読み込み・保存にも対応している編集可能なTableViewがあっという間にできてしまいます。

ただし、初版(2009/03/15)では LocationsAppDelegate.m に一部間違いがあります。正しくはこちら。
(3/19にリリースされたpdfの第二版では修正されていますが。htmlバージョンはまだ間違っているようです。)

- (void)applicationDidFinishLaunching:(UIApplication *)application {

RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePlain];

//ここの5行が抜けてました。
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
// Handle the error.
}
rootViewController.managedObjectContext = context;

UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];

[rootViewController release];
[aNavigationController release];
}

(このドキュメントの中で作っているLocationというアプリケーションは、サンプルコードとしてリリースされているので、そちらで確認した方がよいでしょう。)

また、Core Data BooksというCore Dataを使った書籍管理サンプルアプリケーションも新しくリリースされていますが、これも必見。
SQLiteBooksと全く同じことが、Core Dataを使うとこんなに少ないコードで実装できるのかと思うと、くらくらしていきます……。

Core Data は、iPhone上でのデータベースアクセスを飛躍的に楽にしてくれる技術です。
これから参加する人も含め、iPhone開発者は絶対チェックすべき情報だと思います。

1 trackbacks

  1. ヨミ Trackback | 2010/02/14