連載
» 2013年07月10日 18時00分 UPDATE

生産性ガチアゲなオープンソースiOSライブラリ(3):iOSアプリのデータ操作はMagical Recordでマジ簡単! (1/2)

ゼロからiOS SDK開発を始める新規開発者でも超高速・高品質な開発を可能にするオープンソースのライブラリを目的別に紹介していく連載です。実際にライブラリを組み込みながら技術的な側面も併せて詳細に説明していきます。今回は、アップル製O/RマッピングのCoreDataを使いやすくするObjective-Cライブラリについて、概要や使い方を紹介します。

[川崎順平, 平川裕多,ソニックス]

アプリの品質と生産性の向上もライブラリが助けてくれる

 アプリ開発を行ううえで絶対的に重要な要素の1つとして「品質」の問題があります。どんなに見た目が美しいアプリを作成しても、どんなに最新の技術を駆使しても品質が悪ければ良いアプリとはいえません。

 品質といってもその定義は非常に広く、見る人によってその定義は異なります。例えば1週間で作れるアプリを1カ月時間をかけて十分に検証すれば品質は完全になるのでしょうか。

 おそらく、それだけでは「完全」とはいいにくいですが、そもそも検証に十分な時間をかけることが難しいのがアプリ開発の現状だと思います。では、どうすれば良いのでしょうか。ここでは高品質を担保する手段を2つ挙げてみました。

  1. バグの温床(品質低下の原因)となるコードを減らす
  2. 開発期間を短縮して、余った時間を検証に充てる

 この2つを実施すれば、少なくとも確実に品質は向上します。

 「それができたら苦労しない!!」と思うかもしれませんが、ライブラリを使えば、可能なのです。

 ライブラリはその主な目的の1つに、スクラッチで作成すると膨大なコードになってしまったり、何度も使われる処理をひとまとめにする点があります。

 「動作の安定したコード」をコーディングする人に依存しない形で使うので、属人的なバグが減ります。もう1つ、コードを書く量が減るということはその分、制作にかかる期間を短縮できるという側面があります。以上の理由からライブラリを上手く導入すれば品質と生産性の両方の向上が見込めます。

 今回はバグが起きやすく、かつ、どんなアプリでも行わなくてはならない「データ操作処理」に特化したライブラリを紹介します。

CoreDataとデータベースの違い

 iOSにおけるデータ保存の方法は「CoreData」と「データベース」の2つがあります。

 CoreDataはアップルがiOS/Mac OS X向けに用意しているフレームワークでデータをモデルごとに抽象化してオブジェクトとして扱える、といったものです。CoreDataはデータの永続化に「SQLite」というリレーショナルデータベース(以降、「RDB」と略します)を使用します。SQLiteは軽量のRDBで、iOS以外にも、Android、ChromeやFirefoxなどWebブラウザでも使われています。

 CoreDataはメモリ上にあるオブジェクトをRDBのレコードに変換して保存、また逆にRDBのレコードをオブジェクトに変換してメモリに展開してくれます。別名、「O/Rマッピングフレームワーク」と呼ばれます(O/Rは「Object / Relational」の略)。

r5fig3.gif O/Rマッピングによるデータベース更新の作業(記事「O/Rマッピングの役割とメリット」より)
r5fig4.gif O/Rマッピングによるデータの取得(記事「O/Rマッピングの役割とメリット」より)

 CoreDataは、O/Rマッピングの中でもテーブルやレコードを意識することなく使え、コード量が減るという、大きな利点があります。しかし、その独自性から習得が難しいという問題点があります。

 今回は、そのCoreDataを簡単に扱うようになれる「Magical Record」というライブラリを紹介します。

MagicalRecordを使ってみる

 今回もサンプルを作成しながらライブラリの中身を見ていきましょう。

手順1 準備

 まず、Empty Applicationを作成します。プロジェクト名は任意で指定してください。今回のプロジェクトでは[Use CoreData]にもチェックを入れます。読んで字のごとく「CoreData使用する」という宣言です。ここにチェックを入れると、CoreDataを扱ううえで、最低限必要なものが生成されます。

ios_lib3_1.jpg

手順2 ライブラリのダウンロード

 GitHubからライブラリをダウンロードして、プロジェクトに追加します。

ios_lib3_2.jpg

手順3 エンティティの追加

 MagicalRecordSample.xcdatamodeldをクリックします、この時点ではまだ何も定義していないので、下記画面のように、中身が空になっています。

ios_lib3_3.jpg

 まずは「エンティティ」(Entity)を追加します。CoreDataでは永続化対象のデータのことを「エンティティ」と呼び、永続化対象のデータは全てエンティティを作成する必要があります。

 エンティティの実体はXMLのデータです(プロジェクト名.xcdatamodeld という名前でファイルが作成されます)。このXMLを使ってモデルクラス(NSManagedObject)やSQLiteのテーブルが生成されます(CoreDataが自動で行ってくれます)。エンティティを追加するには画面下にある[Add Entity]をクリックし、表示されたメニューで、また[Add Entity]を選択してください。

ios_lib3_4.jpg

 今回は「Cat」というエンティティを作成し、[Attribute]には「age」「name」を以下のように指定しました。

ios_lib3_5.jpg

 次に「NSManagerdObject subclass]を作成します。プロジェクトのルートディレクトリでメニューを表示し、[New File]を選択します、その後下記画面のように選択して[Next]を押し、[Create]を押して作成します。

ios_lib3_6.jpg

 ここまで実施すると、プロジェクトの中身は下記のようになっていると思います。

ios_lib3_7.jpg

 上記手順でライブラリを利用する準備はできましたので、ソースコードの説明に入りましょう。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。