iPhoneSDKで現在位置取得&地図表示
TamaCです。
iPhoneアプリをいじってみたのでメモ代わりにのこしておきます。
Objective-Cを1週間ほどやってみたのですが、
なかなか難しいですね。
初めてObjective-Cを触る方は、どこがObjective-Cのコードで、どこがiPhoneSDKのライブラリなのかをはっきりわけるとこから入るといいと思います。
ところで、現在位置を取得して位置表示など簡単なアプリを設計しましたので
復習がてら書きます
開発ツールバージョンは
xcode4.0.2
iOS SDK4.3
です。
xibの設定
xibは最初にできあがりイメージをつかむのにも、私は最初に基盤だけ設定します。
画面の大半をMKMapViewにして
下の方にLabelを配置しました。ドラッグアンドドロップでできるわかりやすいインターフェースです。
フレームワークの追加
今回の現在位置のマップを表示するにあたって
・現在位置の取得
・マップの表示
が必要です。デフォルトではこのような機能を実装するには大変なので、簡単に使えるようにライブラリ追加して使えるようにします。
ちょっとわかりにくいですが
左上の「CurrentMap」からTARGETSの「CurrentMap」、右側の「Build Phases」からその下の「Link Binary With Libraries」の▶をクリックします。
するといま入っているフレームワークが出てくるので、その下の「+」記号をクリックします。
クリックすると既存ライブラリが出てくるので、
位置情報関連ライブラリの「CoreLocation.framework」と
マップ関連ライブラリの「MapKit.framework」と追加します。
CurrentMapViewController.hの設定
だいぶ準備が整ってきたのでコード編集にいきます。
CurrentMapViewController.hを編集します。
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> // 位置情報関連のライブラリ読み込み #import <MapKit/MKmapView.h> // 地図情報関連のライブラリ読み込み @interface CurrentMapViewController : UIViewController<CLLocationManagerDelegate> { MKMapView *mapview; // 地図表示用 UILabel *locationlabel; // 下部の表示用 CLLocationCoordinate2D coordinate; // 現在の緯度経度 } @property (nonatomic, retain) IBOutlet MKMapView *mapview; @property (nonatomic, retain) IBOutlet UILabel *locationlabel; @property (nonatomic) CLLocationCoordinate2D coordinate; @end
こんな感じです。nonatomic とかはまだ勉強中です。よく使うので今のところおまじないの感覚です。
xibの編集
ここでCurrentMapViewController.hでIBOutletを定義したので、xibファイルで場所を結びつけてあげます。
IBOutletで定義した変数はxibのどこかの部分と結びついている = 画面からタッチした後の動きなどを定義するためのパイプ役
と考えてもらっていい思います。
CurrentMapViewController.xibで
「File's Owner」を選択し、
右側の→記号をクリックします。
すると下のような画像が出るので、○部分をドラッグアンドドロップして、MKMapViewとLabel部分に結びつけます。
CurrentMapViewController.mの編集
まずはCurrentMapViewController.hで定義した変数をsynthesizeします。
#import "CurrentMapViewController.h" @implementation CurrentMapViewController @synthesize mapview; @synthesize locationlabel; @synthesize coordinate;
viewDidLoadの編集
同じファイルのCurrentMapViewController.mのviewDidLoadの編集。
アプリが起動したタイミングで呼ばれるメソッドです。
- (void)viewDidLoad { [super viewDidLoad]; CLLocationManager *locationManager = [[CLLocationManager alloc] init]; if ([CLLocationManager locationServicesEnabled]){ // 位置情報が取得可能か locationManager.delegate = self; [locationManager startUpdatingLocation]; // 位置取得開始 } else { NSLog(@"ロケーションサービスを利用できません"); } }
現在地が取得できた場合のメソッドのオーバーライド
こちらも同じくCurrentMapViewController.m内で次のメソッドを定義します。
これは追加したライブラリのCoreLocation内のメソッドのオーバーライドです。
ファイルないであれば基本的に場所はどこでも良いので追加します。
// 位置情報が取得できた場合の処理 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { // 緯度経度取得の確認のため。 NSLog(@"緯度:%fと経度%f", [newLocation coordinate].latitude, [newLocation coordinate].longitude); coordinate = newLocation.coordinate; [self displayLocation]; // 取得した座標を中心に地図を表示 MKCoordinateRegion zoom = mapview.region; // どのくらいの範囲までズームするか。※値が小さいほどズームします zoom.span.latitudeDelta = 0.001; zoom.span.longitudeDelta = 0.001; // ズームする [mapview setRegion:zoom animated: YES]; // 動きをつけながら表示 [mapview setCenterCoordinate:newLocation.coordinate animated:YES]; // ラベルに書き出す [locationlabel setText:[NSString stringWithFormat: @"緯度:%.2f 経度:%.2f 方位:%.0f", coordinate.latitude, coordinate.longitude, 0]]; // 方位はシュミレータだと取得できなかったので、また今度。 }
勉強あるのみ。
日々勉強ですね。C言語も知らない私にとっては最初つらいものがありましたが
ちょっとやるとおもしろさ感じました。
開発はやっぱ楽しいですね。
べた書きだらけで良いコードではないと思いますが
誰かの参考になればと思います。
RTM活用メモ
RTM使おう。
Remember The Milkは2年前くらいから使っているのですが、あまり使う機会がなく放置してましたが、
最近やらなければいけないことが増えすぎて、そろそろタスク管理しなきゃなーと思いはじめ、またRTMを使ってみました。
にしても、ただ公式web上でタスク管理をしているだけれはなかなかタスク意識が持てません。
しかしクライアントソフトを入れることで使いやすさ、忘れやすさはグンと上がります。
Windowsクライアント
使用OS: windows7
ガジェット使いました。
ダウンロードはこちらから
http://gallery.live.com/liveItemDetail.aspx?li=55ccf415-af76-4a33-bad6-5bdaa370b214
ガジェットの右側にある、設定アイコンをクリックして
最初にログイン設定をします
タスクのリロードはガジェットの右上にあるアイコンをクリックして、
リロードマークをクリックします。
デスクトップ上に常に表示されるので、
タスク一覧がしやすいです^^
macクライアント
使用OS: Mac OSX 10.6.4
MilkMaidというものを使いました。
あちこちの記事で見かけたのですが、使いやすそうです。
ダウンロードはこちらから。
https://github.com/jgallen23/MilkMaid/downloads
インストールすると、こんな感じでタスクが表示されます。
シンプルでいいですねー
未完了のタスクが数で表示されます。
いっぱいたまってるな。。牛乳買わなきゃ;
iPhoneにも多数アプリがあるようなので、こちらも併せて使うとタスク管理がより効果的になりそうです。
symfony propel:insert-sqlでエラー出たよ
symfony propel:insert-sqlでエラー
symfony propel:insert-sqlしたらエラーになった。
Execution of target "insert-sql" failed for the following reason: /usr/share/pear/symfony/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1: [wrapped: could not find driver]
[phing] /usr/share/pear/symfony/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1: [wrapped: could not find driver]
Some problems occurred when executing the task:
build-propel.xml:275:1: [wrapped: could not find driver]
If the exception message is not clear enough, read the output of the task for more information
解決
yumでpdo-mysqlをインストールした。
※php5.3をあつかうためremiで配布されているPHPを使用しています
sudo yum --enablerepo=remi install php-pdo
して、
sudo yum --enablerepo=remi install php-mysql
で解決。
途中コンフリクトエラー起こしたのでremi経由で入っていないphp-mysqlを一旦削除して
mysql入れ直した。
もう一度
$ symfony propel:insert-sql
This command will remove all data in your database.
Are you sure you want to proceed? (y/N)
y
>> schema converting "/xxx/config/schema.yml" to XML
>> schema putting /xxx/config/generated-schema.xml
>> propel Running "insert-sql" phing task
>> file- /xxx/config/generated-schema.xml
入ったー
crontab の設定で日付の入った名前のファイルをつくろうとしたらエラーでたよ
やりたかったこと
cron で毎日行うバッチ処理でファイル名に日付入りのものを作ろうとしてこんな感じでcrontabに記述してた。
0 5 * * * /bin/sh ~/batch.sh > ~/`date +%Y%m%d`.log
エラー発生
みたいにやってたらどうも動いてないのでcronのメールの中身見てたらエラー出てた。
なんぞこれ
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
原因
ふむ。。いろいろ調べてみると
同じようにひっかかってる人がいたので原因判明(=´∇`=)
cronだと%がコマンドの終わりと解釈されるみたい。
なんでバッククォートの対の対応が見つからない、ってのでエラーはいてたのね。
historyの記録件数の変更と日付表示
記事数があまりにも少ないのでちょっとしたメモでも書いていこうと思いました
historyの記録件数を10000件にして日付(時間付き)表示にする
設定ファイルに
HISTSIZE=10000 HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTSIZE HISTTIMEFORMAT
のように書いて suorceコマンドなどで設定反映。
Happy Hacking keyboard と blue ESCキー が届いた^^
ついに手に入れました!
昨年あたりから欲しかったものですが高価のためずるずるとひきずってましたが
PFU 50周年キャンペーンにやられてしまい、
PFUダイレクトにて思い切って購入しました。
……やっちゃいました。
買ったのは、Happy Hacking Keyboard Professional2 墨 無刻印。
Blue ESCキー装着した
ちょっとポップな感じになります。
本当に欲しいのは昨年のキャンペーンの赤Ctrlキーなんですが。
全部黒のほうがかっこいいと思ったので、しばらくは青ESCは付けずに使用することにした。
感想
良いよこと悪いところの素直な感想。
GOOD!!
結論
良いキーボードを持ちたいと思うのであれば持っていて損はないと思います。
むしろキーボードをいずれ良いものにしたいなと言うのであれば早いうちに買っておいたほうがいいかも。
私にとってはメリットのほうが大きく、このHHKBを使ってのタイピングが楽しいです。
特に私はこの打鍵音が大好きです。心地よすぎて眠たくなるくらい。
ちなみに、慣れないうちは危険な作業はやめたほうがいいですww
しばらくはタイピングに病み付きになりそう。
ではでは。
※赤Ctrlキー求む!!!