A Day In The Life

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

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で撮影 白黒写真を奇麗に取り込むには少しこつがいりましたが以下のサイトを参考にすることでうま…

Android で GPS 衛星からの情報を NMEA 形式で取得する方法

Android 2.0 から GpsStatus.NmeaListener というリスナが追加されました。このリスナは NMEA-0183という形式で GPS 衛星の情報を取得できます。このリスナかなり細かい情報がとれて面白いのでデータを取得するプログラムを作成してみました。 なお NMEA の…

Android の位置情報を確実に取る方法

Android の位置情報は端末や OS のバージョンによって微妙にとれるタイミングやプロバイダがちがうので iPhone にくらべかなり癖があります。中には LocationManager#requestLocationUpdates メソッドを呼んでも30分以上メソッドが呼び出されないなんて事も…

iPhone/iPad & Androidプログラミング入門

iPhone/iPad&Androidプログラミング入門 (日経BPパソコンベストムック) 去年の12月に日経ソフトウェアに書いた記事「16個のサンプルで一目瞭然高度な機能がすぐ使える!」がiPhone/iPad & Androidプログラミング入門に再掲載されました…

Leica IIIf を購入しました。

カメラを本格的にはじめようと思いあこがれの Leica IIIf を購入しました。製造番号は692840でLeica Screw Mount Serial Numbers 1923-1965によると1954年製だそうです。 レンズは Elmar 50mm 1:3.5 を購入しました。これには製造番号がなくノブ裏の番号は7…

豆蔵を退職しました

2010年8月22日をもって株式会社豆蔵を退職しました。 約3年5ヶ月と短い間でしたが、豆蔵の素晴らしいエンジニアの方々と仕事ができ本当に良かったです。在職中お世話になった方々本当に有り難うございました。 豆蔵在職中はアプリケーションフレームワークの…

夏休み

8月7日から18日まで嫁さんの実家の山形に帰ってました。帰省中、折よく山形の花笠まつりと仙台の七夕まつりが開催されていたので見に行ってきました。 山形花笠まつり。旧山形県庁前で撮影(iPhone 3GS) 仙台七夕まつり。藤崎百貨店前で撮影(iPhone 3GS)娘は…

知識ゼロからはじめるiPhoneアプリ開発

iPhone アプリ開発を初めてはや2年。わけわからんレベルからなんとかアプリをリリースするところまでこぎつけました。もともと趣味ではじめた事ですが今は仕事でも iPhone アプリ開発をしています。ここに至るまで自分が調べたことや参考にした文書をアプリ…

メソッド設計で守るべき10個のルール

以前メソッド設計の原則に関する記事を書きましたが 質問をすることで答えは変更されない原則 メソッドの引数はオペランドのみにする原則 それ以前にメソッド設計する上で最低限守った方がよいルールをまとめてみました。 プロパティをメソッドの戻り値代わ…

デザインの限界、機能の限界

人を感動させる製品は機能(技術)とデザインがうまく融合しているものが多いなぁということで個人的に思いついたものをまとめてみました。 デザインと機能が融合したもの デザインの限界 機能の限界 暴走例 ダイソンの扇風機 ±0の扇風機 普通の扇風機 なし ダ…

マルチタスキング対応後のアプリのイベントフローをまとめてみた

※iOS 5の登場でこの記事の内容は古くなりました。最新の情報は以下の記事をご覧ください。 iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する iOS4で導入されたマルチタスキングですが便利な反面イベントの発生順序が…

iPhone の地図上に簡単に図形を書く方法

以前は MKMapView 上に線を引いたり四角形を書いたりするのに自前で View を作成しないといけませんでしたが iOS4 になって地図上に図形を書くためのクラスが追加されました。使い方がわりと簡単なので紹介したいと思います。 地図に線を引く 地図に線を引く…

iPhoneとAndroidでちょっとしたデータの保存方法を比較してみる

データベースを使うほど大げさなものじゃなくて、ちょっとしたデータを保存したいときって結構あると思います。 そんな時iPhoneはNSUserDefaultsクラス、AndroidはSharedPreferencesクラスを使います。両者ともにKey-Value形式でデータを保存できます。ただ…

欧文組版で気をつけること

欧文組版する上で気をつけること。普段ほとんど意識してなかった&知らなかったのでメモ。欧文組版なんて大げさなこと言ってますが英文を書く時に気をつけるべきこととほぼ一致します。 文字を強調するときはイタリック体を使う 文中ではなし言葉や引用を使…

Mac版Inkscapeで文字のカーニング調整をする方法

Windows版Inkscapeで文字のカーニング調整をする場合は「Alt+左右キー」でできるのですがMac版Inkscapeだとカーソルが移動するだけで出来ませんでした。Mac版特有のショートカットキーがあるのかと思いマニュアルを見たのですが「Alt+左右キー」としか記載さ…

タイマーを使って電子コンパスの動きを滑らかに見せる方法

iPhone 3GSの電子コンパスは角度が変わったときに値を取得することができます。AR系アプリや地図アプリなんかでコンパスの値と連動させてUI部品の位置を変更する場合、角度が変わるタイミングでUI部品を動かすとどうしても動きが「カク」っとなってぎこちな…

妻と娘が退院した日のこと

妻と娘が退院した日、妻の両親と甥っ子が病院まで駆けつけてくれました。 その日はとても良く晴れた日で桜がとても綺麗でした。 お祝いをかねて自宅で昼ご飯を食べた後、妻の両親と甥っ子と一緒に近所を散歩しました。 桜坂の桜橋にて甥っ子とお義父さん(3月…