フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Xcode and iOS SDK 4.2

iPhoneアプリを作るにあたり、まずは開発環境が必要。Xcode and iOS SDK 4.2をダウンロードするところからスタートだ。実は、このiOS SDK4.2は以前に一度ダウンロードしたことがあるのだが、19時間?と半端なく時間が掛かる。3.52Gというサイズも半端ではないのだが、53.1KByte/secという通信速度の遅さが最大の原因である。しかも、前回ダウンロード時は完了後にdmgファイルが壊れていて認識できないという事態にもなったり、とにかく大変なのだ。

今回、Mac Book Airを手にし、新たな気分で再度ダウンロードしているのだが。。。やはり時間が掛かる。インターネットの通信速度を計測できる「Speednet」のサイトでテストすると、500Kbpsと出た。500Kbit/setとは62.5Kbyte/Secということで、ダウンロードの通信速度とほぼ等しい。ADSL50Mの回線を使っているはずなのだが、いくらベストエフォート型といえ、100分の1とは遅過ぎではないだろうか。

他の手段としては、これほど大きなプログラムであればDVDで配布しているのではないか?と考える。XcodeはMac OS XのDVDに実際に同梱されているのだが、肝心のiOS SDKが入っていない。何か雑誌にiOS SDKが付録についたものは無いだろうか。。。と、ダウンロード中にいろいろ考えてしまうのだった。
スポンサーサイト

iPhoneアプリから本を検索する方法

iPhoneアプリから本を検索する方法について調べてみた。幾つかのアプリでは実際にISBNやキーワードから本を検索しているものがあるので不可能ではないはずだ。むしろカンタンにできるのではなかろうか。。。とさえ思われたが?

検索といえばインターネット。今回やりたいことはインターネットに接続して情報を引っ張ることになる。書籍をいろいろひっくり返して調べると、どうやらNSURLを使うことでサーバへのリクエストを受け取ることができるようだ。リクエストの方法はURLの後ろにパラメータをくっつけて問い合わせることで要求が掛かる。リクエスト仕方はiPhoneアプリというより検索サービスを提供するサーバー側の仕組み。つまり、サーバーにアクセスするのはスマートフォンでなく、PCからでも同じ結果が帰ってくる。

それでは、どの検索エンジンを使えば良いのか。本といえばやっぱりAmazon。そしてAmazonは開発者向けに商品検索のAPIを公開している。なるほど、アフィリエイトを使ったWebサイト向けのサービスで準備されているわけだ。Amazonならば鉄板だろうと思いきや、色々調べてみるとAmazon APIはセットトップボックスを含むスマートフォンからのアクセスを禁止しているということだ。うーん、トラフィックが高くなることを懸念しているのだろうか。とにかくiPhoneからAmazonへの検索は現在のところ禁止されている。

次の検索エンジンの候補は図書館。図書館も蔵書を検索するAPIを公開している。これは使えそうかと思いきや、どうやらキーに図書館とISBNを指定したAPI仕様の模様。やはり図書館利用者向けの用途と考えておいたほうが良いだろうか。

次なる候補は楽天。楽天もAmazonと同じように商品検索のAPIを提供している。しかも書籍検索の専用APIを持っているのでこれは期待できそう。まず楽天会員になり、開発者登録を行う。開発者IDが発行されるので検索するURIのパラメータに追加するだけでカンタンに書籍の情報を取得することができた。試しに本(洋書)のタイトルで検索を掛けるとどうも和書ばかりヒットしてしまう。よくよく調べると、洋書検索用のオペレーションが別に準備してありこっちを使えば洋書ばかりヒットした。う~ん、楽天は開発側のニーズを良く分かっているなぁ。。。と関心してしまった。今度から楽天を応援しよう。

というわけで、iPhoneから本をキーワード検索する方法は「楽天を使う」ということで決まり。後は受領したXMLデータをパーサーで解析して画面に出せばOK。複数件ヒットしたときのために配列で受けてリスト形式で出すことになりそう。このへんは書籍にあたればサンプルは多いのでなんとかなると思われる。

カンタンそう、と思った割には意外と手こずって、やり方が分かってしまえばカンタンだったというお話。

iPhoneアプリ レビュー中

開発中のiPhoneアプリ1本目、コーディングとテストの目処がつき、次はApple Storeへ登録という運びになる。しかしその前に控えているのがAppleによるレビューである。Androidのアプリケーションとの違いはiPhoneアプリはAppleによる審査を挟むことにより一定の品質が確保されるという点だ。利用者にとっては有り難く、開発者にとっては頭が痛い話のようであるが、悪いばかりの話ではない。第一に、iPhoneアプリは審査済みという保証が受けられること。そして、開発者側の意識が向上するという利点がある。特に、個人による開発の場合は品質レベルが低くなる恐れがあるのでリリース前にこういったハードルが設けられているときちんと支度するモチベーションになるということだ。

アプリの開発と一口に言うが、リリースに至るまでにはかなりのステップがあった。

・コーディング
・テスト
・サポートページの準備
・AppStore用のiconの準備
・スクリーンショットの準備

などなど、コツコツと準備を重ねた上でようやくAppStoreへの登録申請をすることにした。ここまで準備しても登録の段階でなにかと引っかかる。アプリの公開とはずいぶんと根気が必要な仕事であった。

【トラブルその1】Bundle IDのエラー
アプリケーションの情報を登録していく時に、Bundle IDでエラーが出た。xcode側のInfo.plistの記述と一致させれば通るようだが一致させているにも関わらずエラーになる。よくよく調べてみると、com.yourcompanyname.~というデフォルトの値を設定していることがエラーの原因のようだ。「yourcompanyname」のところを自分で付けた名前に変更することでエラーは解消した。

【トラブルその2】プロビジョニングファイルのエラー
アプリの情報を登録した後、次にリリース用ファイルの転送となる。しかし、ファイルの転送チェックで早速エラーが起きた。プロビジョニングファイルの不正。結論から言えば、開発用と配布用でことなるプロビジョニングファイルを持たなくてはならなかった。開発用のプロビジョニングでリリース用ファイルをビルドしたことが原因であった。Developer Centerに行って配布用のプロビジョニングを生成し、再度ビルドを行うことで問題は解消した。一つ気になったのは、配布用のプロビジョニングでビルド&実行を行うと、実機にロードすることができないことである。というのは、配布用のプロビジョニングを確認すると、ターゲットデバイスが全く登録されていない状態であった。しかし、配布用のビルドなのでこれでも良いのか。。。疑問は残ったがとにかくプロビジョニングを差し替えることでファイル転送のチェックはパスした。

【トラブルその3】BackgroundModeのエラー
BackgroundModeで動作させるつもりはなかったが、Info.plist内でコンフィグの項目が追加されているためにエラーとなった。これはコンフィグ項目を削除することでエラーは解消した。

以上のようなエラーを解消しつつ、何度かのリトライをすることでようやくアプリケーションの転送が完了した。現在のステータスは「レビュー中」。これからAppleによるレビューが行われ、問題があればReject、通れば晴れてApp Store に公開となる。一度でパスすることは期待していないが、早くApp Store にアプリが出ないものかと楽しみで仕方が無い。

語数電卓

申請中のアプリが公開された! 先週の週末に公開依頼を出してAppleによるレビュー中のステータスだったが 「Ready for Sale」に変わった。つまり、リジェクトされずに審査OK。Apple Storeに並びますよと。

アプリの名前は「語数電卓」。ペーパーバックの概算語数を数えるためのアプリケーション。知り合いに「iPhoneアプリを作ったんだよ~」と話をするのはいいのだが「どんなアプリ?」と聞かれると説明が大変なのが難点。ペーパーバックの語数を数えたいときに、1行あたりの単語数と、行数と、ページ数を入れて計算するんだよ、と説明すると「???」となる。何故もっと分かりやすいテーマのアプリにしなかったんだろう。。。少なくとも最初の1本は。と思わないでもないが。「ペーパーバックの語数を知りたい」という人向けのアプリ。

語数電卓_ss1

リリースだ!やったやった~と喜んでいるのもつかの間、さっそく不具合がぽろぽろと見つかる。App Storeに表示されるタイトルにスペルミスが。。。そもそも「語数電卓」というアプリにしたかったのだが、「WordCal(i)culator」と出ているではないか。確かに、アプリケーションを登録するときにアプリのタイトルにそれっぽい名前を入れたのだが、そこの入力項目がApp Storeのタイトルに行くと思っていなかった。他にも、「著作権表示」のつもりで入力した項目がApp Storeでは「会社」に割り当てられることが判明。その辺も修正したり。。。早速Ver1.1の仕事である。こういったメンテナンスもアプリケーション公開のサイクルの1つということかな。

アプリケーションに不具合があったときに開発者に連絡が取れるような手段を準備することが公開にあたり要求される。そこで作ったのが語数電卓のサポートページ。こういったサポートページで問題を吸い上げてBug Fixするのもアプリのライフサイクル。公開して終わりではなく、むしろこれからがスタートという感じがする。

iPhoneアプリを出すまでに掛かった時間

iPhoneアプリを作ったよ!と話をすると、「時間はどれくらい掛かったの?」ということを聞かれる。「時間」で言えば、アプリケーションの大きさによるものが大きい。一方で「期間」という言い方にすれば、なんとなくどれくらいの準備期間が必要なのかイメージが湧くと思う。これは自分でもとても興味がある質問なのでタイムライン上で振り返ってみることにする。

Mac購入 :2010.12.05
第一期勉強中 :2011.04.19
Magic Mouse購入:2011.05.29
第二期勉強開始 :2011.10.14
アプリ公開申請 :2012.02.12
リリース :2012.02.16

最初にMacを買ったときには「何か作りたいな」と思っていたが、最初の半年はなんとなく過ぎていった。Macの操作にも慣れていないし、開発言語、環境もはじめてでそのへんの操作習得に使っていたようだ。夏場は仕事が忙しくて4~5ヶ月は休止。昨年の10月から再開して最初のアプリ完成に歩を進めることができた。Macを買ってから数えると1年2ヶ月になるが、やはり時間を掛けて取り組み始めた10月以降が「準備期間」として数えるのに適切のようだ。

都合4ヶ月。

数字にしてみると思ったより長い。といっても、教本を見ながら「写経」していた期間が2ヶ月、「自分のアプリ」に向けて動き出したのが2ヶ月という感じだったろうか。0を1にするにはとてもエネルギーが必要だ。しかし、1から2、2から3はそれほど大変ではない。これから先は新しいことに挑戦するにも、最初に貯めたノウハウの上で考えることができるので楽になるはずだ。この先どれくらいの期間でリリースできるようになるのかを計っていくのも面白そうだ。

iPhone&iPod touchアプリを作ろう! (はじめてのプログラミング)

iPhoneのプログラム本は沢山読んだ。それこそ、10冊は下らないのではないだろうか。どの本も多少の差はあれ見るべきところがある。最初は理解できなかったが後から読み直すと「良いこと書いとった!」なんてこともある。そういうわけで折角なので読んだ本について一冊づつ振り返ってみよう。

「iPhone&iPod touchアプリを作ろう! (はじめてのプログラミング)」は確か、最初に買った本である。開発環境のダウンロードと構築はこの本を見ながらやった。本にソースが全部載っていて、打ち込みながら動かしてみるというスタイルで学習できる。写真もふんだんに利用してわかりやすく説明してあるが、インターフェースビルダー自体が超難解だったため最初はすぐに理解することができなかった。。。この本に沿ってボタンを置いて、コードを書いて、関連付けをして、動かしてみて、とやると実感が沸くのだが、動かなかったときが初心者にはキビシイのかも。ちなみに最後の章の一番大きなプログラムは途中で投げてまだ動かしていない。。。

章ごとにサンプルプロジェクトが乗っているので、章が変わるたびに新しくプロジェクトを作るようになる。これをやりながらプロジェクトの作り方が身に付いた気がする。最初はどんなテンプレートがあるか一度に理解ができなかったが、次第にわかるようになってきた。実際に手を動かしてみるには良い一冊。動かないときに聞ける人が近くにいるとなお良いかも。


iPhone&iPod touchアプリを作ろう! (はじめてのプログラミング)iPhone&iPod touchアプリを作ろう! (はじめてのプログラミング)
(2010/09)
石黒 尚久

商品詳細を見る

iPhoneでグラフを描く

iPhoneでグラフを描くには幾つか手段がある。まずは手で書く。これは大変。次にライブラリを使う。うまく組み込めればすごく便利。そこで、以前からチャレンジしていたライブラリ「s7GraphView」を使ってグラフを描いてみることにした。テーマはもちろん「本」ですよ。

GraphSample_201203.jpg

緑の線が読んだ本の数字。これを1冊1000~9000語でランダムに散らします(たまに0が入るのはご愛嬌)。それを累積したのが青の線。並べて絵にすると、こんな感じになるんだ。。。100冊くらいデータを作ってみるとだいたい40万語くらいになるんだな~。思ったよりあっさりした絵になってしまい、どうしたらカッコいいかなと悩み中。
青い線の下は塗りつぶしにしたいとか、緑の線は棒グラフにしたらどうだろうとか、やってみたいことはたくさんある。しかし、「s7GraphView」だとどうも直線を引くのが専門で、グラフのバリエーションはあまりなさそう。。。折角ここまで描けたので他のライブラリに乗り換えるのももったいないな~、でもこのままだともう一歩。というわけでとりあえずブログに上げてみた。iPhoneらしくすっきりしたグラフに見えなくもない。どうだろう?

語数電卓 Ver1.1

先日公開したばかりのアプリ、細々としたバグを修正するためにアップデートをかけた。
そしてようやく語数電卓 1.1版がリリースされたがこれが結構大変だった。。。

何が大変かというと、レビュー待ちの時間が長いこと。
レビュー待ちの期間はほぼ一週間。
この一週間がほんとうに「待ち」の期間のため何も触れない。
もしもNGをもらったら修正して再度1週間待ちである。
実際、今回のアップデートも1回差し戻しを受けて画面を作り直したし。
NGをもらうと一週間の待ち時間を含めて精神的なダメージが大きい。

この一週間のタイムラグがあるため、ちょっとペースが掴みづらい。
裏で次の版を準備したり、何本かのアプリを平行して作ったりすれば巧くまわせるのだが。

次は1.2版。
1.1版はほとんどソースを変えていないので次はちょっと機能を入れて行きたいかな。

fetchedResultsController how to change sort

iPhoneを使っているとリストビューを使った画面が頻繁に出てくる。このリストビューの画面は、アプリケーション内部で持っているデータベースから情報を取得して、一覧(リスト)形式で見せるのに非常に都合がよく、定番の画面といえる。データベースのアクセスも、「どのデータ項目を」「どの並び順で」取得するかを指定すればカンタンにデータを取ってくれる。xcodeにはデータベース付きのリストビュー形式画面のひな形プロジェクトまで準備されているので、データの永続化(電源を切ってもデータが残るようにすること)は比較的ハードルが低い。

しかし、準備されているひな形を変えようとすると極端にハードルが上がる。今回やりたいのは、一度表示したリストに対し並び順を変更して再表示したいということ。例えば、最初に日付順で並べているリストをボタンを押したタイミングで語数順に並べて表示するということをやってみたい。普通に考えれば「もう一度検索走って再表示」なのだが、それをxcodeで実現するのに相当苦労した。。。

まずDBにどうやってアクセスしているか、だいたいのイメージしか持っていなかった。ひな形のソースを解析すると、データ取得条件やソート条件を指定している「fetchedResultsController」が肝というのはわかった。しかし、これをどうすれば良いかがさっぱり分からなかった。まずfetchedResultsControllerの中でソート条件を指定しているところを修正してみる。条件を変えると取得する結果が変わるのはすぐに確認できた。しかし、条件を変えて再表示ができない。再表示には「reloadData」を使ったが、「fetchedResultsController」は最初の1回しか通らず、動的に検索条件を変えることができなかった。

悩むこと一週間、国内のサイトは色々見たけれど「ズバリこれです」という解答は見つからなかった。困った末、海外サイトしかないと思ってGoogle先生に質問したのが「fetchedResultsController how to change sort」。すると、海外サイト「stackoverflow」からズバリの記事がヒットした。「Changing the Sorting in an NSFetchedResultsController on the fly」という質問のやりとりを読むと、検索条件を変えて走らせるやり方が回答されていた。それを実装すると・・・

SortSample_2.png
この並び順が
SortSample_1.jpg
こうなる。

できた!「stackoverflow」に感謝!!

fetched results controller how to change group

前回解決したかに見えたfetched results controllerとの戦いは実は続きがある。前回はソート順を変えて再表示することができた。やったやった~と喜んでいたのも束の間、よくよく見るとグループが変更できていないことに気がつく。これは何を言っているかというと、最初はグループなしでただ単純に日付順にリストを作っていた。つまり、全体で1つのグループを作っていた。次にリストを「語数」というグループに分けて、グループごとに並べ替えるということをやろうとしていた。サンプルで動かしていたのは最初から語数でグループ分けしたものを日付順にならべていたため、なんとなく動いているように見えた。しかし、グループの分け方を変えるには調べたやりかたでは実現できなかったのである。

さらに調べまくって得た結論は次の通りである。
・グループの条件は初期化時に指定するので、後からは変えられない
・NSFetchedResultsControllerはNSFetchedResultsControllerでできることしかできない(当然か)
・GROUP BYのように直接的にデータベースを扱いたいならばNSFetchedResultsControlleを使わない
・NSFetchedResultsControllerのクラスを継承して独自処理を作る
・リストを切り替えたいならば、複数のNSFetchedResultsControllerオブジェクトを作り、表示を切り替える
・NSFetchedResultsControllerをreleaseしてもう一度作る

これはもう、画面を2枚作って切り替えろということか。。。と半ば諦めていたがとりあえず最後に「eleaseしてもう一度作る」をやってみた。すると、エラーもなくあっさり動いた。たしかに次のようなコード例を見かけたがどう使って良いかわからなかった。

[fetchedResultsController_ release];
fetchedResultsController_=nil;

fetchedResultsController_のソースにブレークポイントを張って動きを見たが、はじめてリストを表示するときに初期化が呼ばれ実際の『Fetch』が走る模様。ということであれば、ボタンを押したタイミングでリリース&再作成と再表示をすればよいという結論に達した。動かしてみたら動いた。たった2ステップとはなんともあっけない。悩んだ末の答えは意外とこういう単純なものかもしれない。きっと100ステップくらい書き直したら間違った直し方なんだろうなー。

結局、イベントを受けて初期化を走らせ、初期化のなかでボタンが押されている条件を見てリストを作る条件を変えることにした。とにかく今度こそうまく行った!?

iPhone5発表

遂にiPhone5が発表された!

画面拡大、軽量、薄型、LTE対応。いずれもiPhone4からiPhone4Sのマイナーチェンジには無かった大きな変更だ。期待に対してサプライズが無かったとの見方もあるが、それぞれ評価してみたい。

・画面拡大
従来のiPhoneから縦に拡大している。アプリケーションの並びが4行だったのが5行に増えているのでぱっと見て分かるくらい縦長になっているのだ。アプリケーション開発の立場からするととても喜ばしい。情報を表示する領域が増えたので詰め込まずに広々表示できるからだ。もともとiPhoneを片手で操作して親指が届く範囲は限られている。そのため縦に伸びたということは操作エリアではなく表示エリアが伸びたことになるのだ。リスト形式の表示に対してソフトキーボードを表示するとリストが本当に狭くなっていた。縦長になった分、リスト部分が多く表示できる。一つ問題なのはこれまで作られてきたアプリケーションである。画面サイズが変わった分はどうなるのだろう。これまでに開発した画面は作り直しが必要か、フレームワークで変換してもらえるのか?はたまた空白で表示されるのか... iPhone4Sを一年前に買ったばかりなのですぐにiPhone5に乗り換える予定はないのだが、開発用に必要性を感じている。

・軽量、薄型
画面が大きくなって、増量だとがっかりしたところだが、軽量、薄型とは。素晴らしい。

・LTE対応
ここはiPhone5が〜というより、国内キャリアの問題になる。3Gと同じ価格でLTEを使えるのがベストだがそうはいかないだろう。回線の整備、価格の設定を予想すると、すぐにiPhone5乗り換えというモチベーションにはならなさそうだ。テザリング対応の有無も気になるところだ。すべてはキャリア次第。Softbankとauで大きくサービスに差がでてくるのでれば、iPhoneを使いつつキャリア変更ということもありうるかもしれない。

総合して評価すると、やはり、これから発表されるキャリアのサービス次第。前回のソフトバンクのiPhone4乗り換えキャンペーンのような超お得な特典がなければ乗り換えは急ぐことはない。しばらく様子を見るとしよう。

CorePlotでグラフを描いてみる

久しぶりiPhoneアプリについて。iPhoneアプリでカッコいいグラフを描く方法を探していた。調べたところ色々なフレームワークがあるがCorePlotというのがどうも良さげな感じだ。カスタマイズができそうなところ、グラフの見た感じがスタイリッシュな仕上がりになるのが最も使ってみようと思わせる点だ。

色々なサイトで実装記事が紹介してあるので、では早速!とプログラムに組み込んでみる。けれどもエラーの連発でまったく動かない。エラーの意味を調べて、ここが悪そうだと当たりをつけて、一つづつ問題を解決していくと、ああ、ここのサイトのこの説明はこうだったのかと理解することができた。

最終的に以下のサイトを参考に作業を進めた。分かってしまえばここが一番シンプルで分かりやすかった。
http://d.hatena.ne.jp/paraches/20110714

1.新規プロジェクトの作成。
自分はTabBarアプリケーションを作成した。プロジェクト名は「CorePlot2」(適当だ。しかも失敗して2番目のプロジェクトだ。)

2.CorePlotのダウンロード、コピー。リソースの追加。ビルドオプションの設定。
これらの作業は↓のサイトの解説が分かりやすかった。
http://dev.classmethod.jp/smartphone/iphone/core-plot/

3.コードの実装
TabBarアプリケーションのひな形を使うと、FirstViewController.h,FirstViewController.mが生成される。これらに手を加えていけばよい。.hの方は、 #import "CorePlot-CocoaTouch.h"との追加。.mのほうはviewDidLoad内にサンプルコードを書いて行けば良い。

ここでビルド&実行をすると、コンパイルは通るが実行時エラーとなった。『unrecognized selector〜〜』というエラーが起きており、エラーメッセージを検索してもさっぱりわからない。調べて行くうちに、どうもUIViewControllerをどこか変えないといけないんじゃない?という気分になってきたが、解決に至ったのは次の問答だった。
http://stackoverflow.com/questions/3556143/i-am-using-core-plot-i-am-getting-an-error?answertab=oldest#tab-top

はじめに読んだときは何のことだかわからなかったが、色々なサイトを調べて一周してくると、すべてここに書いてあることがわかった。結局、ひな形にはFirstView.xibにUIViewControllerがくっ付いているので、CPTGraphHostingViewに置き換えればいいよ。そのためにはTool -> Identity Inspectorを使えば良いということだった。至れり尽くせりの解説だった。

ここでエラーを一つ乗り越えたが、実行すると次のエラーに。やはり『Unrecognized selector〜〜』なのだが、次はここの問答で解決した。
http://code.google.com/p/core-plot/issues/detail?id=154

リンカオプションに「-all_load」を付けるというもの。ふーむ、いろいろあるのだな。。ここまで修正して実行するとようやく目当ての画像が出力できた。やっぱり動くと嬉しい。
ss2013-02-15 21

CoreDataでGroup Byを使う方法

iPhoneアプリでは永続的なデータはCoreDataを使って保存する。保存されたデータを取り出すのもCoreDataフレームワークを利用する。SQLiteで直接SQLを発行することもできるそうだが、手続きが大変、コードが長くなる等のためCoreDataを使うほうが簡単と理解している。そのCoreDataに格納したデータをグループ化して取り出そうというのが今回のテーマ。平たく言うと、読書記録をCoreDataに格納しておいて、月あたりの読書数の合計を取り出す方法を実装しようとしている。

キーワードを変えながら検索していったところどうも「setPropertiesToGroupBy」を使うとGroup By的なデータの引き方ができる模様。サンプルコードも紹介してある。
http://ameblo.jp/tamiorock/entry-11125409042.html
CoreDataありのプロジェクトを出力し、サンプルコードを乗せてみる。ビルドは通るがwarningが1件。そのまま実行すると落ちる。指摘の内容を見ると

warning: 'NSFetchRequest' may not respond to '-setPropertiesToGroupBy:'

というものである。要はNSFetchRequestクラスには 'setPropertiesToGroupBy'なんてメソッドはありませんよ。と言っている。おかしい、そんなはずはない。確かにサンプルコードはNSFetchRequestを使っているではないか!しばらく悩んだが、xcodeの機能でメソッドの定義もとへジャンプする機能がある。そこでsetPropertiesToGroupByの定義を辿ろうとすると、飛べない。他のメソッドでジャンプすると。NSFetchRequest.hに飛んだ。たしかにヘッダにsetPropertiesToGroupByの定義がない。ということは。。。CoreDataがsetPropertiesToGroupByに対応していないということか。

NSFetchRequestのClass Referenceを調べると'setPropertiesToGroupBy'はiOS5から使える。今の自分の環境はiOS4.2。xcodeのバージョンを上げないといけないことが判明した。そういえば自分のxcodeは1年前にインストールしたまま使い続けている。ストーリーボードも入っていないし古くなっているんだな。。。ということでxcodeのバージョンアップにとりかかることにした。Snow Leopard向けのxcodeはApple Developerから入手することができた。ダウンロード&バージョンアップが完了すると晴れてiOS5に対応したxcode4.2が起動できた。
これでsetPropertiesToGroupByが試せるっっ!と思ったのも束の間、UITableViewかつCoreDataを始めから持ったタイプの雛形プロジェクトが作れなくなっている。前のバージョンだといきなりデータがぽちぽち追加できて便利だったのに。空のプロジェクトにCoreDataは付けられるのでそれで試すのか。バージョン違いの操作に慣れるのに一苦労しそう。。。

と思った矢先「UITableViewかつCoreDataを始めから持ったタイプ」はMaster-Detail Applicationで作ることができた。これで試してみよう〜

BookStocker

iPhone用アプリの記念すべき2作目がApp Storeにならんだ。名前はBook Stocker。
BSICON-512.png
カメラでバーコードを読み取り、本のタイトル、著者、出版社と表紙のサムネイルを探してくる。
キーワード検索でタイトルや著者を探すこともできる。

本はこんな感じで「ストック」。
BookStocker.jpg


【こんな風に使ってみよう】

①オフ会で紹介された本をメモるときにストック

②新聞や雑誌のレビューで面白そうだなと思った本をストック

③自宅にある本をストック

気になった本、持ってる本のリストをいつも持ち歩くことができる。
本屋さんや図書館で「あの本なんだったけ~」「この本持ってたっけ??」いうときに便利。


【このアプリのセールスポイント】

その1.すぐに使えること
よくある蔵書管理アプリはアカウント作ってログインしてからサービスが使える。
今回のコレはアカウント作成なし。ダウンロードしてすぐに使い始められる。

その2.フォルダー分けができる
iPhoneの中にデータを持っておくはいいけど、全体の一覧だけだとどうしてもそのうち見づらくなる。
そこで今回作ったのが「フォルダーわけ」。
フォルダーを作って、本を移動することができる。メールのフォルダー分けをイメージするとわかりやすい。

その3.入力不要
カメラでバーコードを写して、ISBN検索。結果をメールにして飛ばすまでタッチだけで操作できるようにした。
(もちろん、事前にメールアドレスの設定をしていれば、だけども)


【この先にあるもの】

バーコードで本を特定して、タイトルを探せるようになった。
次はやっぱり語数が探せるようになるといいな~~~
ISBNから語数を検索できるようなAPIがあるといいんですけどね ;-)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。