Study CoreData 0 序章 〜日本語で覚えなくっても良いじゃんね~

え〜と、かなりブログの更新を怠けている真っ最中ですが^^;
突然ですが、ほぼ初となる『iPhone/iPadアプリ開発者向け』のエントリを本日から始めます。
 
題材は『CoreData』ですっ!
 
なぜ、急にこのエントリをする事にしたか?と言うと、

・まだまだ、CoreDataに関する日本語の情報が少ない気がする。
・あってもMac向けにInterfaceBuilderでの作業ですむようなやり方だったりして、iPhone向けに応用するのが難しい。
・書籍やWebで紹介されているチュートリアルの範囲内では、構造が単純すぎて実際にアプリで使えるレベルの使い方が分からない。(or 難しすぎてわからない)
・今開発中の”TapDays”には『ゼッタイ不可欠!!』だから。

 
などなど…。
色々調べていくと洋書で習得されている日本の開発者の方も多いようですが、僕には…(>~<;)
 

 
それと、CoraDataについて解説する書籍や日本語の情報を見ると、CoraDataで扱うクラス名など(結構多い)が何だか難しい熟語とカタカナを組み合わせた専門用語(?)で呼ばれています。
個人的には、それこそが
CoreDataを分かりにくくさせている一因
なんじゃないかと思うワケです。
(管理対象オブジェクトコンテキストとか永続ストアコーディネータとかソート記述子とか…なんだそれ???って…^^;)

例えば、NSMutableArrayを憶えるのに
『可変配列』じゃなくて
『初期化後に変更できるArray』でいいと思うんですよね。
結局日本語で覚えてもコード上では使えないワケですし。
 

なので、
CoreDataに特有の日本的専門用語を出来るだけ使わず分かりやすく、かつ最低限アプリとして使えるような構造のCoreDataの利用ができるようになるエントリを。
と考えました。

 
ただし、このエントリは僕自身が勉強しながら整理していくためのものでもあります。
僕自身初心者をちょっと脱せたかな?って程度のレベルなので、間違いや説明不足な点は多々出てくるかと思いますので、その辺りも頭の片隅に置きながら参考にして頂けたら幸いです。
 
もちろん突っ込み大歓迎です!!(笑)
 
(※ちなみにCoreDataの習得に焦点を絞るために、ある程度のアプリ作成経験があるという前提で書いていきます。まだアプリの作り方が全く分からないという方は先に別の書籍やブログなどから情報を得る事をオススメします。)
 
 
…と、そんなこんなでこのシリーズで完成させるアプリのデモムービーを用意しました!
 
使用したキャプチャソフトがまだ体験版なため、でっかい透かしが入っていますが目をつむってやってくださいませ<(_ _;)>
(2分ちょい。Wifiとかだとちょっと重いかも?)
 
どど〜〜〜ん!

Music: © 2001-2010 Kevin MacLeod.

いかがでしょう?
長い道のりではありますが、こんな感じのアプリが完成します。
 
 
それと、このシリーズの中で使われるCoreData以外の部分(特にUITableViewなど)は、説明/使い方ともにかなり簡略化しているのでその辺りは気に留めておいて頂けると助かります。
このシリーズは否応無しに長いエントリー(20回以上??)になると思いますが^^;、最後の回にはこのシリーズの中で参考にさせて頂いたサイト/ブログや書籍なども紹介させてもらう予定です。
 

それまで、1日に一回ずつエントリしていきますので
『これからCoreDataを!』って方や
『もう、一回挫折したよ…(T ^ T)』な方も
参考にして頂けたらなと思います。(実は僕も挫折しかけたことが…)

加えて、CoraData以外でも開発に関してのちょっとした余談やTipsなんかもたま〜に入れていこうかな?と。
 
 
さっ!!
それでは、さっそく初めていきましょう!

今回のエントリでは、主にCoraDataを理解するための『準備作業』をしていくことにします。
実際にCoreDataに挑むのは次回からなので、まぁ気楽にいくことにしましょう。
 
 
1. 新規プロジェクトを作成する
 
Xcodeの新規プロジェクト選択ウィンドウで、iPhone OS→Applicationを選択。
今回は、CoreDataの習得に集中できるように『Navigation-based Application』を使用します。
 
この際に右下のペイン<Product>iPhone <Use Core Data for Strage>のチェックボックスをオンにして<選択…>ボタンをクリックします。
この設定をしておく事で、CoreDataに最低限必要なメソッドやプロパティなどをXcodeが自動的に用意してくれます。
 
そして、プロジェクト名を<TodoCore>とし、任意の場所にプロジェクトを作成します。
 
 
2. 何もしてないクセにいきなりプロジェクトをビルドしてみる。
 

 
すると、自分ではまだ何もしていない状態で、このようにデータ(タイムスタンプ)の追加と削除ができるプロジェクトが生成されている事が分かります。
 
それでは、さらにいくつかのデータを変更した状態でビルドを終了し、再度シミュレータから起動してみてください。
ちゃんとデータが保存され、ビルド終了時と同じ状態が再現されている事が分かると思います。

つまり、新規プロジェクトを作成しただけなのに、
データの追加/削除/保存の処理が自動的に作成されている
と言うワケですね。
 
Appleやってくれるぜ♬
 
 
では、次にこの実装を見ていくことにしましょう。
…というのは次回からにして。

その前に、今回のシリーズでCoreDataの仕組みを分かりやすく理解するために、このプロジェクトからxidファイルを削除し、InterfaceBuilderから切り離す作業をしておくことにしましょう。
 
 
3. プロジェクトからInterfaceBuilderを切り離す。
 
まず、以下の画像のように<グループとファイル>ペインのグループ内にある2つのxibファイルを選択し削除します。
この際にこれらのファイルをプロジェクト内に残さないようにするため、<一緒にゴミ箱に入れる>を選択してください。



 
次に、<Other Sources>ファイル内のmaim.m

int retVal = UIApplicationMain(argc, argv, nil, nil);

となっている部分の最後の引数を以下のように@”TodoCoreAppDelegate”に変更します。
(※ここでプロジェクトのAppDelegateクラスの名称を正確に入力しないとビルドエラーになるので注意してください。)

 
そして、<Resources>フォルダ内<TodoCore-Info.plist>から<Main nib file base name>キーを削除します。

 
これで<TodoCore>プロジェクトはInterfaceBuilderから完全に解放されました。
 
念のため、ここで再度ビルドしてみてください。
アプリが以前と同じように動作すればOKです!次に進みましょう!!

…と言いたいところですが、本当はこの状態ではプロジェクトは起動しません。
(問題なく起動されてしまったのは、おそらくシミュレータ内に以前のxibのデータなどが残されているからだと思います。試しに一度シミュレータ内のアプリを削除すると起動できなくなります。)
なので、xibファイルがしていた初期化処理などをコードに加えて完全な状態にします。
 
 
4. AppDelegateクラスに変更を加える。

まず、<TodoCoreAppDelegate.h>内の2つのプロパティ(UIWindowとUINaviationController)の”IBOutlet”という部分を両方とも削除します。


 
<TodoCoreAppDelegate.m>[awakeFromNib]メソッドを削除して、[application:didFinishLaunchingWithOptions:]メソッド内に初期化処理や[awakeFromNib]で削除したmanagedObjectContextの記述を加えます。

<変更前>
<変更後>

 
以上で本当にInterfaceBuilderとお別れできました(^〜^;)
お疲れさまです。
 
 
5. 静的アナライザを設定する(オプション)

それとついでですので、静的アナライザをオンにしておくことにします。
(これは補助機能ですので、かならずしも設定しなくても構いません)
 
<グループとファイル>ペインの一番上にある<TodoCore>ファイルをダブルクリックして、ビルドタブを選択。
“静的アナライザ”と検索して表示されたののチェックボックスをONにします。

これをしておく事で、インスタンス化したオブジェクトの解放のし忘れなどをある程度チェックしてくれるようになるので、コーディングしていく上でのケアレスミスを発見できるようになります。
ただし、すべてをチェックできる訳ではない(※プロパティなどはチェックされない)ので頼りすぎは禁物です^^;


 
…と、ここまででCoreDataを勉強するための準備は整いました。
次のエントリーでは実際にCoreDataに触れていきたいと思います。

それでは、またあした〜

広告

Study CoreData 0 序章 〜日本語で覚えなくっても良いじゃんね~」への13件のフィードバック

  1. 初めまして!twitterの投稿から飛んで来ました!

    個人的に、かなり困っていた題材ですので、非常に楽しみにしています!

    明日以降も一緒に勉強して行こうと考えてますんで、頑張ってください!

  2. ピンバック: Tweets that mention Study CoreData 0 序章 〜日本語で覚えなくっても良いじゃんね~ « Everything was born from Love -- Topsy.com

  3. Pochiさん、初めまして。
    そしてコメント頂き、ありがとうございます

    ご期待に応えられるようにがむばりますので、今後ともよろしくです!

  4. ピンバック: [朝刊] 本日は参院選投票日です。

  5. ちょうど、coredataをどうやって使えばいいのか悩んでいたので助かります。
    今後を楽しみにしています。
    がんばってください。お願いします。

    • fughさん、初めまして。コメントありがとうございます!

      このシリーズで、少しでもCoreDataの使い勝手が理解してもらえたらウレシイです。

      応援ありがとうございます!
      今後ともよろしくお願いします

  6. ピンバック: 話題のアプリ『Clear』のUIを独自実装してみた!(+Gumroand) | Everything was born from Love

  7. ピンバック: 100DL突破!? Re:ClearのGumroadでの販売経過まとめ | Everything was born from Love

  8. すいません。このToDoアプリのサンプルコードって頂けないでしょうか?

    • OneLifeさん、はじめまして。
      コメントありがとうございます!
      この連載の趣旨に反するので、コードはお渡しできません。

      すみませんがご了承くださいませ。

      • 了解しました。
        返信ありがとうございます。

  9. ピンバック: Akkie’s BrainHacks » この土日はWordPressの整備とCoreDataの理解に使おう

  10. ピンバック: iPhoneアプリ開発日誌 〜CoreData « matsuyuta's Room

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中