HMDT | HMDT Blog | ページ 9

カテゴリー : HMDT

mergeChangesFromContextDidSaveNotification:って何のために?


先日は、MOSAでCore Dataセミナーをやってきました。参加された方々、お疲れさまでした。

で、そのとき質問があって、NSManagedObjectContextのmergeChangesFromContextDidSaveNotification:に関する事だったんだけど、そのとき「このメソッド、あんまりよく分からないんだよねー」と答えてしまいました。そしたら、アンケートで「このことが聞きたかったのに残念だ」という意味のことを書かれてしまったので、ちょっとこの場でフォローします。

まず、前提。状況としては、複数スレッドからCore Dataにアクセスしている。スレッド毎にmanaged object contextを作成し、同一のpersistent store coordinatorを使う。

まず、サブスレッドを立てて、managed objectを追加したとする。そうすると、そのスレッドのmanaged object contextでは、追加される。でもこの追加は、メインスレッドのmanaged object contextからは検知されない。どうもオブジェクトの追加は、managed object contextレベルで行われているらしい。サブスレッドが終了すると、この追加もそのまま消えてしまう。

そこで、サブスレッドでオブジェクトを追加した後、保存を行う。そうすると、追加されたオブジェクトがデータベースに保存される。データベースに保存されるので、永続化される。この変更は、メインスレッドのmanaged object contextからも知る事ができる。保存後にフェッチすれば、追加されたオブジェクトを取得できる。

で、保存すると、NSManagedObjectContextDidSaveNotificationが通知される。それを捕まえて、Appleのドキュメントによれば、managed object contextのmergeChangesFromContextDidSaveNotification:を呼んでやれば、変更がマージされる、ということになっている。でもねー、保存した時点でデータベースに変更が反映されているんだから、マージする必要あんの?ってのが疑問としてあった。だから、「Appleのドキュメントに、このメソッドを呼べって書いてあるから呼ぶけどさー、これ別に呼ばなくても構わないんじゃないの?なんのためにやるのか、よく分かんないんだよねー」って思ってた。

そのときの質問は、mergeChangesFromContextDidSaveNotification:はメインスレッドで呼ぶ事になっているけど、そのときに時間がかかったりしないか、パフォーマンスは大丈夫か、というものだったんだけど、基本的には重い処理は保存のところなので、それは別スレッドで呼ばれるから大丈夫だと思う。

この、mergeChangesFromContextDidSaveNotification:を呼んだときの、別managed object contextのオブジェクトのマージって、どんなことが行われるんだろか。いまメモリ上に保持しているmanaged objctに限ってマージされる、ってことなのかな。であれば、リフェッチすれば、そもそも気にしなくていいのかな。

最近のHMDT


いや、暑っいですね。まだまだ暑いですね。

最近のHMDTですけど、ちょい大きめの案件にかかりきりになっておりまして、ようやく先日それが公開されて、まだまだ怒濤のアップデートは続くんですけど、ちょっと一息、という感じです。

その案件は、まぁいわゆる受託開発の案件で。受託は好きなんですよ。いろんなコンテンツやサービスを使って、うち単体じゃ作れないものに触る事ができるからね。ただ会社の経営を受託メインで回していると、仕事があるときは忙しくて他のことはできなくて、仕事がなくなるととたんに運転資金不足になってしまうんで、なんつーか、なかなかに面白くない事もある。

受託が忙しくてグダグダになってくると、いつも沸々と自社案件をやりたくなるんですよね。ネタはある。いっぱいある。アイディアはある。たくさんある。技術力もある。技術者もいる。そんなら、やれるんじゃね?いや、うちの会社見渡すと、足りないピースがある。それはデザイナーの人。

「アプリデザイン」とか「ユーザエクスペリエンス」って言葉があるけど、うちではこれを3つの要素に分けて考えている。まず「アピアランス」。これは見た目の事。次は「レイアウト」。これはボタンやスライダーといったUI部品をどう配置するかという事。そして「ビヘイビア」。これは、それぞれのUI部品がどのように機能したり、アニメーションしたりするか、という事。

普通にデザインっていうと、アピアランスを作れる人はたくさんいる。でも、レイアウトやビヘイビアのことまで考えてデザインできる人ってなると、グッと減っちゃう。なぜなら、レイアウトやビヘイビアは紙のデザインにはない、アプリ特有のものだから。百歩譲ってWeb系の人はレイアウトまだ考えられるけど、ビヘイビアまでは踏み込めない。

そこまでデザインできる、またはそこまで支配してコントロールしてやりたいという気概を持ったデザイナーの人。それがうちの会社には欠けてるな。一緒に仕事しているデザイン会社の方々はすごいんだけど、超売れっ子でなかなか頼めない。

ということで、そんなデザイナーの方がいないかなぁー、と探している今日このごろでした。

WWDC全日程終了


WWDC2012、無事全部終わりました。参加された方々、お疲れ様。これからホテルチェックアウトして、帰ります。

振り返ってみると今年のWWDCは、まず思うのは、熱狂はなかった、ってことかな。だいたいAppleのイベントってのは、熱狂的(enthusiastic)っていう形容詞がつけられるんだけど、そこまではいかなかったね。初日の基調講演は、Tim Cookの初舞台だったけど、ゆっくりと噛み締めるように語りかける口調だった。誠実さは伝わってくるけど、どうしたって比較してしまう、Jobsの聴衆すべてを引き込んで熱狂させていくマジックと比べると、物足りないのはしかたない。

iOS 6は、新規の開発項目があまりない。ユーザからみると、マップとかSiriの機能アップがあるけど、それは開発者にはあんまり関係ないからなー。新規のものとしてはPassbookがあるけど、あれは現実のサービスとリンクさせないとなかなか難しいので、うーん手が出しづらい。

それよりも、既に実装済みの機能が純正でサポートされるようになったので、それを置き換えるか、って話になるね。Facebookとか。確かに純正の方がいろいろと嬉しいんだけど、手間暇かけた割には、新規の無しってことになるので、ユーザにアピールしづらい。

こう考えていくと、なかなか熱狂的にiOS 6を迎えるって気分にはならないんだよねー。あ、新しいIn App Perchaseはいいと思う。あと、新規追加されたCocoaのクラスにもいいものはある。あと、AV系でもいい拡張があった。って、渋いところではいいものはあるんだけどね。

久しぶりに参加して、勉強漬けの5日間を過ごした。やっぱり、勉強は大事だね。仕事でプログラミングすると、勉強する機会がなかなかない。そもそも、教えてくれる人が存在しないんだから、勉強しようがない。だから自分で調べることになるんだけど、それだとどうしても自分のできる範囲プラスアルファにしかならない。こういった状況で、きちんと教えてくれる機会があるってのは、とんでもなく嬉しい。

もっと技術力を上げるために、まだまだきちんと学んでおかないといけないことがたくさんあるなぁ、と思った。特にやらないといけないと痛感したのは、InstrumentsとLLDB。これらをちゃんと使いこなされ場、開発の効率がグンと上がるはず。いままで適当に使っていたけど、WWDCのセッションを聴いたら、もっと網羅的に理解しないとダメだ、と思った。

とりとめがないけど、いやー、やっぱりWWDCはいいねぇ。また来年もこれるように、一年間がんばろう。

WWDC特集含む、HMDT JOURNAL Vol.009


現在、WWDC会場。隣で、セッション待ちの長い行列ができております。今年はとにかく、セッション待ち行列が長い。

HMDT JOURNAL Vol.009配信開始しました。今回はWWDC特集!

Vol.009の最初の記事は、『WWDC2012特集 – iOS 6の新機能』だ。WWDC2012では、iOS 6が公開された。この新しいOSについて、現時点で公になっている情報をもとに解説記事を書いてみた。

続いての記事は、『iOS API探訪』。Core Image 編の第2回だ。今回からは、Core Imageが提供している膨大な数のフィルタを紹介していくよ。まず最初に取り上げたのは、ブレンドモードフィルタだ。2つの画像を重ね合わせて合成するこのフィルタ。たくさんの種類があってどれを使えばいいか迷うけど、それぞれの特徴をちゃんと解説した。

3本目は『UI向上委員会』。おぉ、久しぶりだ。ちょっと趣向を変えて、Core Animationフレームワークにある、CAEmitterLayerというクラスについて解説してみた。このクラス、最近使ってみたんだけど、非常に強力なエフェクトを実現できる。放射アニメーションができるんだよね。上手く使えば、とてもドラマチックなユーザインタフェースが実現できると思うよ。

そして最後は『フォントとコードの話』。前回からの続きで、Core Textの機能を網羅的に解説している。これでCore Textはバッチリだ。

HMDT JOURNALは、サンプルを無料でダウンロードできるんだけど、今回は『WWDC2012特集 – iOS 6の新機能』に関しては、記事の全文をサンプルに含めた。iOS 6に開発者として興味ある方は、ぜひ読んでみてね。

『スマートフォンUXの最前線』レポートが登場


こないだやった、Web Cat Studioというところでの勉強会の講演なんだけど、テキスト化されたみたい。

HMDT&ニコ動アプリ開発者が語る! Web CAT Studio「スマートフォンUXの最前線」勉強会レポート

暇だったら読んでやって下さい。結構、言いたい放題させてもらいました。はてなの方の編集が、とても分かりやすく、自分の感想も織り込んでいるので、読んでて楽しいです。

WWDC基調講演直前


おはようございます。いま、アメリカ時間の6月11日0時。WWDC基調講演当日の真夜中ですね。あと9時間くらい、ってとこですか。

今回は、朝の9:30にサンフランシスコについて、市内に移動して会場でレジストレーションしたのが11:00。昼ご飯食べて、ホテルにチェックインしたのが13:00。そっから、ずっと寝てました。寝た、寝た。10時間以上、寝た。

ということで、体調バッチリで、明け方4時からの基調講演行列に並ぶ予定です。

サンフランシスコは、相変わらずの雲一つない青空のもと、暑いんだか寒いんだかよく分からない天気です。これから5日間。仕事を忘れてiOSとOS Xだけに浸る日々が続きます。堪能させていただきますよ。

HMDT JOURNAL Vol.009はWWDC特別号


週刊宣言をしたHMDT JOURNALですが、Vol.008以降ちょっと休止しています。

でも、いよいよ復活!Vol.009は、特別にWWDCの記事を載せるぜ!基調講演の内容を、開発者ならではの視点から解説する。予定。

11日に基調講演があるんで、終わった直後から原稿書き始めて、その日のうちに配信したい。できるんだろうか。

あと、Vol.009から、誌面デザインが刷新されるよ。いままではiBooksのデフォルトテンプレートをつかってたけど、新しくデザインしてもらったぜ。

てなことで、11日、日本時間だと12日、に発売予定ですのでよろしくお願いします。

久々に講演「スマートフォンUXの最前線」


今更の告知なんだけど、久々に講演やります。WebCatStudioが主催する、勉強会かな?、「スマートフォンUXの最前線」ってとこで。申し訳ないんだけど、すでに定員オーバーしています。

私は、「iOSデバイスの進化に伴うアプリ開発とデザインの変遷」ってタイトルで話します。いまひとつピンとこないタイトルかもしれないけど、うちの会社って、まぁ一応は、iPhoneアプリの黎明期からずっと開発をやっているわけで。その間、デバイスやOSが進化し続けていったけど、それにともなってアプリのデザインがどう変わっていったのか、っていう話をします。

もう一つテーマがあって、これは企画者からの要求なんだけど、アプリの受託開発について話してくれ、と。受託開発と自社開発の対比をしたい、ってのが意図らしい。たしかに、うちの会社は開発しているアプリの90%が受託開発です。でも、あんまり受託っぽくないというか、結果として好き勝手にやっているというか。参考にならないかもしれないけど、HMDTでどういう風に受託のアプリ開発を進めていくか、って話もします。

いままで私がやるセミナーとかは、iOSやOS Xの技術解説が多かったんだけど、今回はHMDTがいままでやってきたことに焦点をあてます。ということで、いつもと毛色が違ったものになるかな。

講演は、15日の19:00から。席はいっぱいだけど、Ustreamはやったりするんじゃないかな、たぶん。

 

HMDT JOURNAL Vol.008ようやく配信開始


HMDT JOURNALVol.008の配信がようやく開始!Vol.007から間が二週間空いてしまった。忙しかったんですよ、って言い訳はなしですよね。みんな忙しいんだから。

一本目は『たのしいiPhoneプログラミング』から。今回からは、プログラミングからは離れて、アプリを実機にインストールするための手順を紹介していくぜ。やっぱりiPhoneアプリは、iPhoneの中で動作してなんぼだもんね。

続いては『新Dynamic Objective-C』。Blockの話が始まった。Blockは、最近強化されたObjective-Cの機能の中でも、すぐに使える便利なもの。始めはちょっと文法に違和感があるけど、慣れたらもうこれなしではやってられない!

最後は『フォントとコードの話』。Core Textを取り上げています。HMDT JOURNAL の感想を色々いただくんだけど、取り上げてほしいフレームワークに必ずCore Textが入っているんだよね。そんなに興味あるのか、みんな。それとも、使いにくいと思われているのか。それともそれとも、やっぱり縦書きをやりたいのか。縦書きは今回で軽く触れているけど、そのうちじっくり時間をかけてやるぜ。

 

 

WWDC 2012


WWDC 2012チケット予約開始!買ったぜ!

今年は行くぞ!3年振りだ。

HMDTからは、私含めて3人で行く予定。仕事として行くという扱いなので、もちろん全額会社持ちでございます。

iOS 6とMountain Lionで、頭のはち切れそうな一週間になるでしょう。