TokoTokoSoftware

TokoTokoSoftware

iPhone / iPadアプリを作っている団体「トコトコ」です
大学生二人でMacBookつかって頑張ってます!!

Amebaでブログを始めよう!
おとといすごい地震がありましたね。
過去最大級だとか・・・・・

みなさん無事だったでしょうか??



地震があっても東京は1日経てば何事もなかったかのように仕事が始まり、いつも通りの生活になってしまって
現地の人大丈夫かなぁと思いつつもプログラムしてます。


CoreDataとSQLiteですが、これって非常に重いってことに最近気づきました。

CoreDataもSQLiteもどちらもSQLを作って、それを実行してデータをうけとるという行程を含むんですが、
どうやらこのSQLの実行がかなり重い様子・・・・・

なんと1回のSQLに0.05秒とかかかってしまうときがあるんです!

・・・・・・少なく見えるって??
そんなことはないんです。
例えばテーブルでデータを表示しようと言うとき、もしcellの生成ごとにSQLを読んでいたらスクロールがかくかくにってしまうのがわかるぐらいの遅さです。


早くするにはどうしたらいいかと言えば、SQLを発行しなければいいということで、tableを作ったときに一度全部のデータを取り出してメモリに補完しておくとか
そういった対策が必要になります。

自分は画像データをバイナリとしてデータベースに突っ込んで保存してたんですが、
テーブルの表示でかなり遅いことに気づいて
データベースには画像ファイル名だけ書いて、画像ファイルはdocumentディレクトリにおいてロードするようにしただけでかなり早くなりました!


最近CoreDataにはまって、CoreData Loveになりそうですヾ(@°▽°@)ノ

CoreDataってただのデータ保存用の関数とかがあるだけって思ったら
どちらかと言えばモデル作成キットみたいな感じなんですね!

CoreDataとSQLiteを比べていた昔が懐かしい・・・・
そもそも方向性が違ったなんて考えてもいませんでしたよ




で、最近CoreDataのUndo / Redo を実装してるんですが、
ちょっと使い方をミスったのでここで紹介しときます

自分はUndo/Redoのテストとして、ボタンをクリックしたらUndoするとかの方式ではなくて
NSLogをつかってテストしてたんですね。

すると、Undoをするとなぜか最初の状態に戻っちゃうんです・・・
1、2、3って値を入れてUndoすると2になってほしいのに1になっちゃうんです
Redoすると3になって「あれ?2は????」ってなったんですね

で、しばらく(3日ぐらい)悩んだ結果わかったのが、自動グループ機能の効果でこうなってることがわかりました

なんと、UndoManagerには自動グループ機能があって、それにより
「2、3を入れるので一つの動作」
と覚えたらしいんですよ
それでUndoすると「ひとつもとに戻す」=「2、3を入れる前の状態にする」ってことで
1になっちゃったんですね


こんな機能いらない!!って思ったんですけど、
グループ機能をよく知るとかなり便利だったりするんですよ

グループ化されるのは1ループごと(システムに制御が戻るまで)らしいので、
一気に3つデータを変えるとかやったときに、それをグループ化して勝手に一つの動作って覚えてくれるんです

今回のNSLogでのテストみたいに、システムに制御が戻る前にUndo/Redoをやろうとするとあれ?へん??ってなるんですが、実際損な風に使うことって滅多にないんですよね


学校が受験やら春休みやらで結構しまってしまうので、ちょっと前からいい活動場所をさがしていたんですが、やっとちゃんとした活動場所ができました!

なんと、ワセダのインキュベーションセンターのコミュニティ会員になったのです!
場所は早稲田(都電荒川線の駅の近く)。

入居した訳ではないので専用のスペースがある訳ではないですが、
共用のスペースやデスクがあり、とっても活動しやすいです!!

そしておかげで住所ができました^^

いままできちんとした住所がなかったので、これはとてもうれしいです
さらに来客があるときに会議室を使えたり、もうこの活動場所ははなせない!!ってぐらい便利になりました


欠点は駅から遠いところ・・・・
都電荒河川の駅には近いんですが、普段使う高田馬場からは歩いて20分ぐらいかかるという・・・・
まぁ健康のための日比野を-キングと思えばそこまでクでもないかな~って感じ

自分は高校のときは通学がそれぐらい歩いていたので、ちょっと懐かしいなと思いつつ
やっぱり近いって便利なんだなぁと再認識しつつ歩いてます