サイトの構築。作品の販売。ブログの投稿。この他にもさまざまな機能があります。 ログイン サイトをはじめよう 非公開サイト このサイトは現在プライベート設定になっています。
こんにちは。お仕事でiPhoneアプリを開発しているid:ninjinkunです。このエントリはiOS Advent Calendar 2011 23日目の記事です。今回はあまり注目されることがなさそうなiPhoneアプリのエラー処理を取り上げてみようと思います。 エラー処理と言うとプログラマが粛々とやるものというイメージで、主に内部のエラーハンドリングのことが中心になりがちです。しかしエラー処理はそれをユーザーに通知するところまで考えて初めて完結します。この記事ではユーザー体験の面と内部処理と両方に言及してみようと思います。自分の今までのアプリでもあまり実践できていなかったので、自戒の念も込めて…。 エラーは様々な状況で発生しますが、ここでは主にHTTP通信のエラーを想定します。HTTP通信はiPhoneのようなモバイル端末では高い確率で失敗します。移動中、地下鉄、山の中の中など通信が不
(iOS Advent Calendar 2011 20日目の寄稿エントリです) iPhone/iPadアプリをリリースした後にダウンロード数、ランキングをチェックするのは当然ですが、どれだけアプリが使われているのかをチェックすることも重要です。そこで今回はGoogle Analyticsを使ってiOSアプリの使用状況を計測をする方法を紹介したいと思います。 Google Analytics for iOSとは iOSネイティブアプリ用のGoogle Analyticsなのですが、計測データの送信部分がObjective-Cで書かれているので、画面の表示回数やボタンのクリック数などを計測することが可能です。ちなみに計測結果はWeb版のGoogle Analyticsと同じ管理画面から確認することができます。 Google Analyticsの設定 Google Analyticsのアカウン
OS X 10.6, iOS 4.0から使えるようになったブロック構文。iOS 3系のデバイス(特にiPad)のことがあったため、なかなか本格的に使う機会が訪れなかったのですが、先日iPadもOSが4.2となりブロックが使えるようになり、これでようやくブロック構文を本格的に使って実装を行っていく事ができそうです。 ブロックを使うメリット 詳解Objective-C 2.0(改訂版)には「ブロックオブジェクトを用いることで、関数を呼び出す箇所で行いたいと考えていることを、まさにその位置に、そこにある情報を利用して記述することができる(P.331)」と書かれています。 例えば、通常非同期処理を実装するときは処理が完了したときに実行したいコードをコールバックメソッドという形で実装します。この方法で実装すると、非同期処理を呼び出しコードと結果をうけて実行されるコードがソースコードの中で別々の所に記
以前、タイトルに「(数字)の理由」とか入れるとブクマが伸びると教えられましたが嘘だと思っています、happy_ryoです。 このエントリはiOS Advent Calendar 2011の11日目です。 昨日は、@watermint さんのエントリでした。 appCodeはJetBrains社が開発した、XCodeの代替IDEです。 InterfaceBuilderに対応する機能は無いので、その部分はXCode4を利用する必要があります。(JetBrainsの製品では他にIntelliJ IDEAが有名ですね。) それでは、末広がりという事で8つの理由、はじめます。 コード補完が強力 XCodeのコード補完を「残念だ」と思ったことはありませんか? プロパティとメソッドの順番はバラバラ…。自分が定義したプロパティ/メソッドなのか、親クラスが元々持っていた物なのか…。appCodeを使えばそん
このブログではおなじみの「じゃんけんゲーム」の開発チュートリアル。 iPhoneアプリを作ってみよう(Xcode4編)第1回:じゃんけんゲーム 非常にシンプルで基礎的な内容のチュートリアルですが、今回はこれを元に「iOS端末間で遊べる対戦型ゲーム」を作ってみよう、というメモ。 今回の概要 今回の概要は以下。2台の端末をBluetooth接続してじゃんけんするアプリ プロジェクトの作成 まずはプロジェクトを作成します。本内容では「Single View Application」を選び、プロジェクト名は「vsjanken」としています。 UIの作成 まずはUIの作成からですが、基本は以下と同じです。 iPhoneアプリを作ってみよう(Xcode4編)第1回:じゃんけんゲーム とはいえ、Xcode4.2になってから少し変わった部分もあるので、ざっと紹介しておくことに。 まず、「ViewContr
名探偵コナン並みの推理力をもったプログラマーにデバッグとか手伝ってもらったらどうだろうか。 ? Takayuki Okazaki (@watermint) December6, 2011 なんて思ってたら、 @watermint つまり、「毎週超難解なバグが発生する」ということですね?>< ? パレオはせとあずさ♂?熱烈歓迎DeNA/ (@setoazusa) December6, 2011 !!! お客様の中に名探偵の方はいらっしゃいませんか?>< ということで、iOS Advent Calendarのネタです。今回は、iOSデバッグ界隈の中ではマイナーと言われるか、一部のファンに熱狂的な支持!といわれるか絶妙なバランスを保ったDTraceでのデバッグを取り上げます。 DTraceはもともと、Sun Microsystemsによって開発されSolaris 10に搭載されたデバッグフレ
iOS Advent Calendar 9日目担当のntakuです。 もし、iOS開発する上で一番大変なことはなんですか?と聞かれれば間違いなくUIの開発!と答えます。同じ価値や機能を提供するにしても、使っていて気持ちが良いUIであるかどうかでアプリの評価は大きく変わってくると思います。 何がベストなのか、はやはり実際にプロトタイプを作ってみないと分からないわけですが、あのアプリのUIをちょっと真似してみようと思ったり、このアプリと同じように作ってくださいと言われるとそれだけで数日かかってしまうこともざらにあります。 そんなことを繰り返していると中々アプリが完成しないわけなのですが、その期間を少しでも短縮するために、私が開発する際に活用しているのがCocoa Controlsというサイトです。 Cocoa Controls Cocoa ControlsはiOSやMax OS X開発者が開発
iOS で SQLite を簡単に扱うためのライブラリ、FMDB についてまとめる。 もくじ FMDB とは? FMDB の仕様準備 データベース作成と open/close CREATE INSERT DELETE SELECT トランザクション 型 サンプル プログラム Lita FMDB とは? FMDB は、SQLite を iOS の Objective-C で扱いやすくするための Wrapper ライブラリ。 GitHub で公開されている。 GitHub – Social Coding ccgus/fmdb インターフェースや使用感は、JDBC や ADO.NET に近い。よって、これらを利用したことがあれば、スムーズに理解できるだろう。 FMDB の仕様準備 まず、FMDB を利用したいプロジェクトで SQLite 用のライブラリを有効にする。手順は以下。 Xcode 左
同一wifi内のiPhone同士で通信しあうにはBonjourを使うと簡単にできるらしい。簡単にっていうのはアドレスの割当やらホストの解決、公開サービスの検索なんかを自動的にやってくれるみたいだけど、それ以外でも結構大変だったのでその記録。 主な手順としては、 サーバ側がNSNetServiceを使ってサービスを起動 クライアント側はNSNetServiceBrowserを使ってサーバとサービスを検索 見つかればNSInputStreamやNSOutputStreamを使ってデータをやり取り という感じで結構簡潔。 まずはプロジェクトの準備。新規プロジェクトをTab Bar Appricationから作成します。左のタブをServer(ServerViewController)、右のタブをClient(ClientViewController)として進めます。 ServerViewCont
基本的にはNSManagedObjectContextはスレッド毎に作成して利用しなければいけません。以下は、その為にスレッド毎にContextを作成して管理するためのコードです。複雑なアプリでなければ、この管理法で十分でしょう。シングルトンなManagerクラスでコンテキストを管理する方法は簡単ですが、スレッドを多用する場合はスレッド毎に管理する方が良いでしょう。 managedObjectContextForCurrentThreadでコンテキストを取得し、保存は[NSManagedObjectContext save:&error]のように、クラスメソッドを呼びます。保存するとNSNotificationでコンテキスト自身のmanagedObjectContextDidSave:が実行され、メインスレッドのコンテキストに変更が反映されます。スレッド毎に自動的にthreadDictio
例えば UIKeyboardWillChangeFrameNotification の通知を受け取りたい。普通に NSNotificationCenter へ登録すればいいのだが、iOS 4 でこれを実行するとクラッシュする。 この通知は iOS5 から導入された新しいもので iOS4 に無いのが原因。この通知名は NSString* const で定義されている。 // UIWindow.h UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); そこでこの定数の有無をチェックしたい。調べると Appleがドキュメントを出していた。 SDK Compatibility Guide: Using SDK-Based
使い方は、まずHGPageScrollView を作りメインのビューへ貼る。 HGPageScrollView *pageScrollView = [[[NSBundle mainBundle] loadNibNamed:@"HGPageScrollView" owner:self options:nil] objectAtIndex:0]; [self.view addSubview:pageScrollView]; サンプルではページの定義を XIBファイルで行っていた。XIBで定義すれば容易にカスタマイズできる。 後は Data Source/Delegate を実装すればいい。 @protocol HGPageScrollViewDataSource @required // Page display. Implementers should *always* try to reu
これまでの記事はこちら: [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 [iOS5] ARC : Outletにはweakプロパティを使おう [iOS5] ARC : 循環参照 ARCまとめの最終回はAutoreleaseとキャストについてです。また、最後で簡単にですが、Xcodeの環境設定についても触れます。 Autorelease ARC環境下では、これまでのNSAutoreleasePoolは使えません。そうは言っても、別にAutorelease環境がなくなってしまったわけではなく、作法が少し変わったのですね。 まずは、参考までにmain.mを見てみましょう。 非ARC(マニュアルメモリ管理) int main(int argc, char *argv[]) { NSAuto
随時追記。自分で確認していない情報もあります。 addSubveiw: しただけで viewWillAppear: が呼ばれる viewDidAppear: なども同様。iOS 5以前はメイン以外のコントローラのは呼ばれなかったので、手動で呼ぶようにしていた場合は要注意 http://hmdt.jp/blog/?p=261 ※ willRotateToInterfaceOrientation:duration: や didRotateFromInterfaceOrientation: は従来どおりメインのコントローラのしか呼ばれない parentViewController が nil になる 親のViewControllerを取得するにはiOS 5からできた presentingViewController というプロパティを使う http://www.comgate.jp/taiata
[読了時間:1分] 米ブルームバーグ通信は、AppleがiPad上でのゲームの月額課金を認めたと報じた。米シアトルのゲームメーカー、Big Fish Gamesが提供するゲームに関し月6ドル99セントの月額課金が認められた。これまでiPhoneやiPad上のAppStoreを通じて販売されるゲームは、最初に1度支払うだけの「買取型」しかなかったという。 Big Fish Gamesによると、「月額課金する理由を理解してもらう必要があったので、通常よりも承認プロセスに時間がかかった」という。 蛇足:オレはこう思う 以前、夏野さんが講演かなにかで、月額課金の優位性を語っていた。毎月継続して料金を支払ってもらうためには、本当にいいゲームを作らないといけない。なので月額課金のほうが、いいゲームがそろうようになる、とかいうような話だったと思う。 Appleがそういう考えに変わったのか、それとも今回の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く