iOSのデータベース(Core Data)が使いにくいよぉ…

2012年、新年明けましておめでとうございます!

昨夜1晩かけて動かなくなったアプリの復旧をしました。

なんとか夜が明ける前に動くようになりました。

感想は、Core Dataは使いにくくて、遅い!です。

いえ、すみません、使い方が悪いんです。

5,000件以上のデータを作成するのに1秒以内のレスポンスを期待してはいけないですよね…。

iMacのシミュレータでさえ数分かかるのに、恐いもの見たさで実機のiPad2で試してみたらあまりの遅さに耐えきれず、お風呂に入ってしまいました。きっと処理し終えるまでに30分くらいかかったことでしょう。

しかし、使いにくいというか制御が難しいというのは、率直な感想です。

だって、データベースファイルのオープン(作成)が非同期なので、使う直前にオープン処理をするとオープンする前にデータ作成処理が走ってしまって、クラッシュしてしまいます。

そして、遅いから別スレッドで処理させたくても、スレッドセーフではないのでじっと待っているしかありません。

いったんデータができてしまえば、毎回毎回計算するよりも圧倒的に速いですけどね…。

さらに、データベースに格納するデータは整数(NSNumber)や文字(NSString)などの決められたデータタイプしか簡単には上手くいきません。自分で作ったクラスのオブジェクトやらCの構造体なんかをデータ登録しようとすると、ドキュメントにはその方法がなんとなく書いてあるっぽいのですが、OS Xでしか使えない技が含まれていたりして、試してみたらコンパイルエラーになったり、実行時にエラーになったりと、いろんな意味で心が折れました。

よく考えると、データベースに格納する前にただの数字をオブジェクトのNSNumberにして、取り出して使う前にもNSNumberから数字に変換したりしてたら、そりゃ、遅くもなりますよね。オンかオフのビットデータのBOOLでさえNSNumberのオブジェクトにしないとデータ格納できないなんて…。出来たデータベースファイルも巨大なサイズになってました。まぁ、一気に5,000件もデータ登録するほうも馬鹿なんですが。

新年早々、愚痴っぽくてすみません。

うっぷんが溜まってしまって…。

 

2012の目標

さて、元旦なので、2012年の目標を立てます。

・App Storeでアプリデビューをする

・本格的にホームページデビューする

App Storeでアプリデビューする

今の状況は大変厳しいですが、なんとか完成させて、Appleの審査を通して、アプリデビューを果たしたいです。

まだ、今作っているアプリの他にも何個か作りたいアプリがあるのでデベロッパーの資格がなくなるまでにはそれを作りあげてApp Storeに出したいです。

アプリを作るとなると、プログラミングもさることながら、デザイン部分のハードルも結構高いですね。デザイン部分も1年かけてぼちぼち腕を磨いていきたいです。

本格的にホームページデビューする

これは、今のjimdoがすでに無料で出来ることの範疇をこえつつあるので、なんとかしないといけないという意味もあります。

というのも、Googleのパフォーマンス測定ツールでみると、このホームページはネット全体の73%よりもレスポンスが悪いとでていて、自分で使っていても遅いと感じるのでjimdoのサポートの方に相談しました。その結果、レスポンスが悪い原因がどうやらコンテンツが多すぎるせいらしく、これ以上はそんなにコンテンツは増やせないからです。

別にサーバーを借りるとかしないといけないのかもしれません。

jimdoは、特に勉強したりしなくても、ボタンを押して文章を入力したり画像ファイルを選択するだけでコンテンツが作れるので楽でいいのですが、他のサーバーに移るとなるときっと勉強しないといけないのでしょうね。ちょっと大変そうですが、試行錯誤してやってみたいと思います。