A Day In The Life

とあるプログラマの備忘録

iOS アプリの画面開発の基礎を理解する

前回の記事「iOS アプリの構造がどのようになっているか紐解いてみる」で iOS アプリの構造について説明しました。深いところの説明ばかりだったのでもう少し浅いところ、画面の見た目や画面遷移を実装する方法について説明します。 ユーザの要望がどのよう…

UIViewController の基礎知識

内容が薄かったため下記ページに統合しました。 iOS アプリの画面開発の基礎を理解する

iOS アプリの構造がどのようになっているか紐解いてみる

iOS アプリの構造がどのようになっているのか理解しなくても簡単なアプリを開発することは可能です。実際自分も iOS アプリの開発をはじめたことろはそうでした。しかしアプリの構造を理解していないと複雑なアプリ、例えばタブとナビゲーションを組み合わせ…

iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する

iOS は タッチパネル式端末用に最適化された OS で ユーザが端末を操作しやすいように GUI の仕組みが提供されています。iOS アプリ開発では主に GUI を操作するプログラムを実装していきます。iOS の GUI プログラムはイベント駆動型と言われるプログラミン…

コロプラは永久に不滅です。

私事ではありますが2012年3月31日を持ちまして株式会社コロプラを退職することになりました。3月4日が最終出社日でした。 在職中お世話になった皆様本当にありがとうございました。コロプラに入社したのは2010年8月23日で1年7ヶ月と在籍期間は短いですがとて…

シンプルで簡単に HTTP 通信が出来るライブラリを公開しました

iOS で HTTP 通信をするときはいつも ASIHTTPRequest を使っていました。 しかし残念なことに最近 ASIHTTPRequest の開発が終了してしまい Automatic Reference Counting(ARC) に対応する予定もないようなので自分で ARC に対応した HTTP 通信のライブラリを…

新作アプリ即興ピアノをリリースしました。

昨日2月14日に新作iPhoneアプリ「即興ピアノ」をリリースしました。 即興ピアノは音階を固定(例えば C Major とか G Major とか)してピアノを弾くことができます。音階が固定されているので適当に弾いても音がにごらず即興演奏で弾いたかのように聴こえます…

失敗しない iOS In-App Purchase プログラミング

最近、無料アプリや無料ゲームにアプリ内課金を設置してユーザにアイテムを購入してもらうタイプのものが増えています。App Store トップセールスのうち半数以上がこの無料 + アプリ内課金で占められています。今後アプリ内課金は iPhone/iPad アプリで儲け…

サルでもわかる Core Data 入門【実装編】

サルでもわかる Core Data 入門【概念編】の続きです。今回は実際に Core Data を使ったプログラムを作成します。 サンプルアプリの概要 アドレス帳アプリを作りながら Core Data の使い方を説明していきます。 以下はサンプルアプリの画面構成です。 連絡先…

サルでもわかる Core Data 入門【概念編】

iOS でデータを永続化する方法の続きです。今回は Core Data を使ったデータの永続化方法について説明します。 本記事では複雑で習得が難しいとされている Core Data について概念編と実装編の2回に分けて説明していきます。記事の全体的な流れとしては Core…

NSUserDefaults を使ったデータの保存方法

iOS でデータを永続化する方法の続きです。今回は NSUserDefaults クラスを使ったデータの永続化方法について説明します。このクラスを使うと簡単にデータの保存と読み込みが出来るのでアプリ開発で頻繁に使用されています。 NSUserDefaults って何? アプリ…

iOS でプロパティリストを使ったデータの保存方法

iOS でオブジェクトをシリアライズする方法に続き今回もデータ永続化方法の紹介です。 iOS にはプロパティリストと呼ばれるファイル形式があります。プロパティリストは NSArray や NSDictionary クラスを使って簡単にデータの読み書きができます。 ここでは…

iOS でオブジェクトをシリアライズしてファイルに保存する方法

iOS でデータを永続化する方法の続きです。今回はシリアライズされたオブジェクトの保存方法について説明します。シリアライズされたオブジェクトはファイルで保存することが容易なためデータ永続化の際に頻繁に使用されます。 シリアライズ自体はデータの保…

iOS でデータを永続化する方法

iOS データ設計入門の続きです。前回は iOS であつかうデータ全般について書きましたが今回はデータをフラッシュドライブに保存する方法について説明します。 データの永続化って何? メモリにあるデータはアプリを終了すると消えてしまいます。 アプリを終…

UIWebViewにJSのライブラリを動的に読み込ませる方法

UIWebView で表示している HTML ページに Javascript ライブラリを動的に読み込ませる方法です。 使う場面はそうないと思いますが、興味本位で試してみたらできたので記事にしました。Google Libraries API という Javascript のライブラリを使うと簡単に出…

iOS であつかうデータの種類と生存期間

内容を全面的に見直して以下の記事に集約しました。 iOS データ設計入門

Android のソフトウェアキーボード表示・非表示を検出する

Android でソフトウェアキーボードの表示・非表示を検出する方法です。 LinearLayout クラスの onMeasure メソッド内でビューの高さを測ることでキーボードが表示されているかどうか検出できます。 import android.content.Context; import android.util.Att…

iOS 組み込みの効果音を鳴らしてみる

iOSにはいくつか組み込みの効果音が用意されていて AudioToolbox フレームワークを使うと簡単に鳴らすことが出来ます。 手順 プロジェクトに AudioToolbox.framework を追加します。 AudioServices.h をインポートします。 AudioServicesPlaySystemSound 関…

NSOperation 非並列実行モードと並列実行モードの使い分け

バックグラウンド処理を手軽に実行できる NSOperation クラスですがこのクラスをきちんと理解して使うには NSOperationQueue クラスについて理解する必要があります。 前回の記事で NSOperationQueue の使い方について説明しました。まだお読みでない方はこ…

CLLocationManagerDelegate のメソッド内で CLLocationManager インスタンスを release すると EXC_BAD_ACCESS で落ちる

CLLocationManagerDelegate の didUpdateToLocation メソッド内で CLLocationManager のインスタンスを release すると EXC_BAD_ACCESS が発生してアプリが落ちるという現象にハマったのでその対処方法をまとめます。 @interface HogeController : UIViewCon…

Android でライブラリの追加無しでマルチパート POST する方法

Android SDK には Apache Commons の HttpClient など HTTP 通信するためのライブラリがあらかじめ搭載されているのですがマルチパート POST するためのライブラリがありません。Apache のライブラリをプロジェクトに自前で追加してもいいのですが必要のない…

NSOperationQueue スレッドと処理の関係

iOS4 になって NSOperationQueue クラスの仕様に追加がありました。以前は並列処理しか出来なかったのですが mainQueue メソッドが追加になり逐次処理も出来るようになりました。変更点も含めて NSOperationQueue の使い方をまとめてみます。 NSOperationQue…

Nexus S を快適に使うために1番よいデータプランは何か

ゴールデンウィーク中に Google の Nexus S を購入しました。 Google Nexus S【アンドロイド2.3搭載シムフリースマートフォン】 日本で SIM ロックフリーの端末の契約は色々と制約が多いです。Nexus S をメインで使うか2台目で使うかで最適なデータプランも…

まずは何が出来るか考えてみた

東北地方太平洋沖地震関連の以下の記事とても考えさせられます。 あの恐怖と屈辱は、記憶よりさらに奥に刻みつけられてしまっている。阪神大震災で家を失った方の記事です。 被災者の役に立ちたいと考えている優しい若者たちへ〜僕の浅はかな経験談〜阪神大…

Android で LocationManager と MapView を連携させる

Android で Google Map を使ったアプリを作成しようとしたのですが、ライブラリに癖があって結構苦労しました。そこで LocationManager を使って MapView(Google Map) 上に位置情報を表示させる簡単なサンプルプログラムを作成してみました。 サンプルプログ…

Javascript 関数の戻り値を Android から取得する方法

Android の WebView を使って Javascript 関数を呼び出すには WebView#loadUrl メソッドを使います。ただしこの方法だと関数の戻り値を取得することができません。 一番簡単で手軽な方法として Javascript の alert 関数を使って WebChromeClient クラスの o…

フランスから届いたトイピアノ

今週木曜日にフランスからトイピアノが届きました。 娘の誕生日プレゼントのために eBay で Michelsonne というメーカーのトイピアノを探しているときに知り合ったフランス人の方から購入しました。メーカーは不明です。映画アメリの音楽担当で有名なヤン・…

iPhoneアプリ開発時のメモリ管理で気をつけること(マルチスレッド編)

以前iPhoneアプリ開発時のメモリ管理で気をつけることという記事を書いたのですがマルチスレッド時のメモリ管理に関して全く触れてなかったのでまとめてみました。 NSAutoreleasePool はスレッドごとに作成する 処理を別スレッドで実行する場合、スレッドご…

Mac が立ち上がらなくなった時の対処方法

昨日、家の iMac が突然立ち上がらなくなりました。結構苦労しましたが最終的に fsck_hfs コマンドで修復できました。その時の対処方法をまとめました。 症状 電源ボタンを押すとアップルマークとインジケータが表示されインジケータの途中で Mac の電源が落…

ライカで撮った写真をスキャンしてみた

先週スキャナ付きの複合機を買ったのでライカで撮った写真をスキャンしてみました。 神宮前の銀杏並木 神宮前その2 自由が丘の桜並木 Leica IIIf Elmar 50mmで撮影 白黒写真を奇麗に取り込むには少しこつがいりましたが以下のサイトを参考にすることでうま…