「写真と地図で見る京都 無料版」リリース
「写真と地図で見る京都 夏」、「写真と地図で見る京都 秋」とリリースしてきましたが、より多くの人にこの感動を味わってもらいたく無料版のリリースとなりました。まずはお手にとって日本人ですら感動してしまう京都の風景を堪能してみてください。
「写真と地図で見る京都 夏」、「写真と地図で見る京都 秋」とリリースしてきましたが、より多くの人にこの感動を味わってもらいたく無料版のリリースとなりました。まずはお手にとって日本人ですら感動してしまう京都の風景を堪能してみてください。
![]()
「写真と地図で見る京都 秋」をリリースしました。
「京都 夏」のレビューでも書いて頂けましたが、一番のウリはなんと言っても写真が素晴らしい事です。京都のプロの写真家さんである「村田臣矢」さんによって撮られた写真は、日本人ですら感動と癒しを感じてしまうクオリティーです。ご堪能ください。
「京都 夏」の開発当時、最新の iPhone OS は 3.0 でした。3.0 からはアプリ内でマップを表示できる機能が追加されたため、この機能を使い、写真から地図を表示するという機能を実装する事にしました。しかし、OS バージョン別の普及率を調べてみると、2.2.1 が圧倒的に多く、これでは購入者を大幅に減らせてしまうと思いました。
こちらのサイトで OS バージョン別の普及率が出ています。
iPhoneOS percentages 08/2009
iPhone OS 3.0 Adoption Rate Estimates All Over The Place : 2009/06/29


iPhone では無料で OS の更新ができるため 3.0 のユーザーが多いと思うのですが、iPod touch は有料アップデートのためか依然として2.2.1が多いようで、その割合は2009年8月末時点で全体の 40% ほどを占めています。
そこで我々は、iPhone SDK 3.0 で開発を行いならが、2.2 でも動作が可能な手法をとりましたので、紹介したいと思います。
まず、開発のポイントは2つあります。
ライブラリは通常 Required というモードで追加されます。このモードでは、実機での実行時にライブラリが存在していない場合はアプリが起動しません。 これを Weak というモードに変更する事で、実機での実行時にライブラリが存在していなくても起動できるようになります。今回は 3.0 から追加されたライブラリである MapKit.framework を Weak に設定します。以下の画像が設定例です。

そして、次に OS のバージョンによって動作を変えます。MapKit.framework がリンクされていない 2.2 などでは、その機能を使おうとするとアプリが落ちてしまいます。以下のコードが OS のバージョンを調べ、3.0 以下の場合は Map に関するクラスを作成しないものになります。
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; if(version >= 3.0){ MapController *_map = [[MapController alloc] init]; self.mapController = _map; [_map release]; }
また、2.2 でもマップ表示を実装するために、外部マップアプリで表示する手法をとっています。
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; if(version >= 3.0){ [g_Instance.mapController setTitle:NSLocalizedString([NSString stringWithCString:title encoding:NSUTF8StringEncoding], @"") latitude:latitude longitude:longitude]; [g_Instance push:g_Instance.mapController]; }else{ NSString* url8 = [NSString stringWithFormat:@"%@%f,%f (%@)", @"http://maps.google.com/map?f=q&q=", latitude, longitude, NSLocalizedString([NSString stringWithCString:title encoding:NSUTF8StringEncoding], @"")]; NSString *uelEncode = (NSString*)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)url8, NULL, NULL, kCFStringEncodingUTF8); NSURL* url = [NSURL URLWithString:uelEncode]; [[UIApplication sharedApplication] openURL:url]; }
こちらが 3.0 と 2.2系 での動作を比較した動画です。
ブログ記事を書いた時に twitter に書き込みを飛ばせる Tweetable というプラグインを入れてみました。この記事は twitter に飛ぶかどうかのテストでもあります。さてどうでしょうか?
プラグインの設定には以下のサイトを参考にさせていただきました。
[wordpress]Twitter連携用プラグインTweetableが便利すぎる! – Ryuzee.com