にけのて
Nike+iPod と JogNote を使ってジョギング。で、Mac から Nike+ のデータをあれこれ見たくなったので、ちょこちょこっと作ってみた。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Mac の にけのて 最初から
Visual Studio 2008 を使って C# で Windows 版のにけのてを作った時に、新しい事を知ったりちょっと UI や中の作りを変えてみたりした。というわけで、Mac もそれに合わせてまた1から作り直してみてる。Objective-C 2.0 でガベージコレクション様に全てを任せて!
nikeNoteMainWindow


XML ファイルのパース
今回は XML ファイルのパースで XPath を知った件。こんなんあったんだ~!
Mac で作ってた時は NSXML~の API リファレンスを斜め読みして、あ~だこ~だ言いながら NSXMLNode をたぐってなんとかなるじゃん!と、かなり強引にパースしてた。で、Windows の C# で XML はどうするのかな?とググってみたら思い切りたくさん情報が!そこで初めて知った、XPath。ってか、最初に XML パースする時に調べて気付けよ!って感じなんだけど…。

にけのて のメイン画面で表示している各種データは、ワークアウトデータの中にある <RunSummary> データそのまま。これはツリーの上から辿ると <sportsData><runSummary> の順になって、XPath を使ってこんな感じでゲットできる。

NSArray* runSummary = [rootNode nodesForXPath:@"/sportsData/runSummary" error:&myError];

これで の中に入っている <distance> や <duration> なんかの各ノード(NSXMLNode)が配列になって runSummary に入る。後は配列を Fast Enumeration でアクセスすれば OK!


次に 1km 毎のラップタイムだけど、これは <sportsData><snapShotList snapShotType="kmSplit"> の中に 1km 毎に <snapShot> として入ってる。でも、この snapShotType="kmSplit" の部分が kmSplit、mileSplit、userClick の3種類ある。この中から snapShotType="kmSplit" だけをゲットするには以下の XPath。

NSArray* kmSnapShotList = [rootNode nodesForXPath:@"//snapShotList[@snapShotType='kmSplit']" error:&myError];

これで snapShotType="kmSplit" の中身 <snapShot> が配列でゲットできる。で、これを Fast Enumeration でアクセス!

for(NSXMLNode* snapShot in kmSnapShotList)
{
NSMutableDictionary* snapShotDictionary = [NSMutableDictionary dictionary];
for(NSXMLNode* snapShotData in snapShot)
{
[snapShotDictionary setValue:[snapShotData valueString] forKey:[snapShotData name]];
}
[snapShotArrayController addObject:snapShotDictionary];
}
(う…、インデントが…。タブ駄目なのね。)

こんな感じで 1km 毎の <snapShot> の中身 duration, distance, pace の値を、snapShotArrayController に binding されている NSTableView に表示ができる。(ちょっと日本語変?)
ってか、Fast Enumeration 凄い便利!


それにしても、今思うと最初は凄い頑張ってデータ取り出していたんだな~。本当はこんなに簡単にデータ取り出せたのに…。
XPath のこんなもあるのね。


スポンサーサイト

テーマ:Mac - ジャンル:コンピュータ

にけのて for Windows を Visual Studio で作ってみた
先日 Visual Studio 2008 の DVD が手元にやってきた。というわけで、GW 中に Visual Studio 2008 を使って「にけのて」の Windows バージョンを作ってみたので、その簡単なメモ。

nikeNoteWin06


C# とインテリセンス
言語は C# を選択。なんか MS 一押しなんでしょ? せっかくだから C# でトライ。で、今回の驚きは噂には聞いていたけれどインテリセンスって凄いな~って事。C# のドットで繋げる記述とインテリセンスの組み合わせでさくさくとコードの入力ができる。API 全然知らない自分でも出てくる候補でなんとなく先に進める。簡単なリファレンスガイドにもなってくれたりして、こりゃ凄いな~。Xcode で Objective-C の時にも候補を出したりできるけど、こんなに使い勝手が良いとは言えないし。
その代わり? デザインの編集は InterfaceBuilder の方が全然使いやすい気がする。IB ならわからなくてもアレコレいぢってるとなんとかなるし。ま、自分の場合はWindows での作り方を良く知らないから使えないってのかもしれないけど、凄く一生懸命プロパティ見たりしてもなんだかどうにもわからないんだよな。結局、ウィンドウサイズを大きくしたら中のグラフが大きくなるってのはできなかった…。ばねと突っ張り棒の変更が見つからないんだよ~!

情報量が桁違い!
やっぱり Windows 環境は凄い! ググったら物凄い量の情報が出てくる! 少ない情報を、しかも英語で読むって必要が全くなかった。この辺りは Mac と全然違うな~。今回、XML をいぢる辺りで色々と勉強になった。Cocoa でももっと簡単にワークアウトのデータをあれこれできたんだな~。後で作り替えよう!

勉強不足は否めない
でも、結局やり残している事はたくさん。ListView での Binding やウィンドウのサイズに合わせてグラフ(PictureBox)のサイズも自動的に変わるとか、Xcode と IB ならサクっとできるんだけど VisualStudio だと見つからないってのが結構ある。ちゃんと勉強すれば良いのだろうけど、今回はちょこっと触ってみたって範囲でやってみようと思ったのでこんなもん。
でも、おかげで色々と新しいことを知ったりもしたので、ちょっと Mac の方もアップデートしてみようと思った。Objective-C 2.0 でプロパティや Fast Enumerator をガンガン使うと結構コード書くのが早くなりそうだし。せっかくなのでガベージコレクション様に全てを任せて最初からのびのびと?書いてみよう!



テーマ:プログラミング - ジャンル:コンピュータ




プロフィール

Author:paraches
Nike+iPod で走ってお腹を…

にけのて ダウンロード

Nike+iPod

温泉旅行

宿・ホテル予約ならじゃらんnet

最近の記事

Zenback

ランキング

人気ブログランキングへ

アクセストレード

バリューコマース

最近のコメント

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。