★つれづれ出張所♪

プログラム開発情報(主にWindowsPhone!)を発信していま~す。(*^_^*)

Windows Phone

考えよう!?あの施設についてのアプリです。

結構前につくった(珍しい!?)アプリです。
(こう言うの荒れるからあまり宣伝したくなかったけど、とりあえず・・・)

dicon173 Download-JP-Med

日本にある原発施設までの距離を計測できるアプリです。
d01
意外と近くにいっぱいあるんですよね。作ってみてビックリしました。
あとこれ日本よりも近くのアジア圏の方のダウンロードが異様に多いです。。。

あっ、自分は推進派でも廃止派でもありません。徐々に廃止するべきだとは思いますが・・・ハイ

間もなくWindowsPhone開発始めて1年経ちます

WindowsPhoneの開発をはじめて1年が経とうとしています。
その間に微妙なものも含め(^_^;)アプリを10本公開しました。

そもそものきっかけは、OBD2と言う通信規格でクルマの情報を取り出してそれを表示するアプリが欲しかったから。Android(iPhoneも一応)ではその手のアプリが出ています。
Androidも一時期使っていたのですが、あまりにも使い勝手が悪過ぎて(汗、自分で作るしかないと思いたち・・・。でもAndroidでベータ版もどきでセンサー取得までは作ったのですが、あまりにもUI等の画面周りの開発が面倒なので放置しました。(>_<)

そしてWindowsPhoneに出会い、開発も個人でやるには十分過ぎる環境だったので一気に10本もアプリを作った次第。そしてその前段階で作ったのが GPS Logger-san! です。(^_^)v
ただし前途した OBD2 を使うデバイスが、Bluetoothで動作するものでして、WindowsPhoneでは一切プログラム出来ない!(APIが公開されていません)シロモノです。いつかは出来るようになるかな?と思ってはいたけど現段階で全然出来ません。とほほ。

そしてWP8の前にWindows8 Metroで出来ないかと思っていたらどうやらMetroStyleアプリではBluetoothのAPI(SPP)は無い?模様・・・(涙)。と言うことでWP8でも望み薄?です。
(そもそもiPhoneもBluetoothプログラムできないのでそんなもん?かと。Androidだけ特殊なのかな?)

と言うことで、iPhone用に出ているOBD2のデバイスをGETする事にしました。
(多分どうにかなるだろうと見切り発車です)

[Amazon]で結構売っています。
http://www.amazon.co.jp/s/ref=nb_sb_noss_1?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dautomotive&field-keywords=obd2+wifi

で、モノは一般的なBluetooth(or USB or RS232C)ではなくWiFiで動作するものです。
WiFiであればWindowsPhoneからのアクセスは出来るはず!?です。
(自分は eBay で競り合って落としました。日本で買うと値が高いっすw)
CIMG2226
と言うことで品物が無事届き、本日クルマに取り付けてみてチェックしました。
まずは、Win7ノートPCで、TeraTermを使い TCP/IP@WiFi による Telnet で検証してみました。

以下が手動検証のログの一部です。
==============================================
ATWSELM327 v1.5>ATZELM327 v1.5>ATE0OK>OK>OK>ELM327 v1.5>ELM327 v1.5>OBDII to RS232 Interpreter>28.3V>OK>AUTO>SEARCHING...UNABLE TO CONNECT>AUTO>SEARCHING...UNABLE TO CONNECT>ELM327 v1.5>?>atzELM327 v1.5>atz

ELM327 v1.5
==============================================

なんか出てるけど訳分からん!TeraTermの設定を変えて・・・もう一回

コマンド atz を叩くと
==============================================
>atz
atz

ELM327 v1.5
==============================================

と無事返答がありました!パチパチ!!!
※チップメーカーのスペックシートでは v1.5 は無いらしいです。パチ物って事ですなw
http://www.elmelectronics.com/obdic.html

続けてat rcを入力。。。
==============================================
>at rc
at rc
?
==============================================

コマンドが違ってましたw

at rvを入力。。。
==============================================
>at rv
at rv
12.1V
==============================================

12.1Vと電圧の返答。(バッテリー弱っている?(^_^;))
エンジンをかけて、、、もういっかい at rvを入力。。。
==============================================
>at rv
at rv
13.7V
==============================================

13.7Vと電圧の返答。良い感じ。

それからOBDコマンド 01 0c を入力。。。
==============================================
>01 0c
01 0c
SEARCHING...
41 0C 0D F7
==============================================

返答 41 0C 0D F7 と言うことは、エンジン回転数 893rpm 。良い感じ!

アイドリングが安定した段階でもう一回。
==============================================
>01 0c
01 0c
41 0C 0D AD
==============================================

875rpm。うん大体タコメーターと合っています♪

これで野望への第一歩が整いました!
これからWindowsPhone用にTeraTermバリのWiFi通信プログラム作っていきます。


と、その前に・・・何やらキャンペーンやってます。
http://msdn.microsoft.com/ja-jp/jj590863

何か貰えるらしいので、完走賞目指してこちらの開発を先にやってみようと思っていますw

GPS Logger-san!より便利になりましたヨ♪

機能をUPさせ先週と今週にわたって(実際のプログラムはもっと前・・・)立て続けにバージョンアップを繰り返しておりました。
sky00
そして本日、念願の機能を入れたバージョンアップ(Ver1.7)の審査が通りました♪
(間もなく公開 ↓ されると思います)
http://www.windowsphone.com/ja-JP/apps/dcf29c13-6c6b-460f-8ed9-d17b4d56d184

まず先週は、最高速度や最高高度の記録をODO上(リセット可能記録)でも記録できるようにしました。
これで、今回だけの最高速度や高度などをチェックできます。実は作ってから自分が欲しかった機能でもあります。(^_^;)
sky01
それから、寄付して頂いた方からの要望として直接Google Earthやbingマップ等で読み込める .kml 形式の直接アップロードに対応しました。今まで別ツールを提供しておりましたが、これでWindowsPhoneだけでも完結できます。(申し訳ありませんが、この機能は寄付{購入}して頂いた方への機能になります)

で、今日審査が通った本命の機能。それは大変要望の強かった画面ロック中もログ記録を続ける機能が入りました!(裏で動いてしまう、この機能を入れると審査が通るか不明だったので2回に分けてバージョンアップ申請しました)
これでランニング中などに不意に画面に触れて動作が止まってしまうということが無く、ごく自然に使えるようになりました。(^_^)v
またログ記録には関係ないセンサー等も停止するようにしましたので、バッテリーの持ちも多少良くなりました。
消費カロリーも出ますので、ランニングメインの方もぜひお使いください♪

クルマ(バイク)、自転車、ランニングとオールマイティに使えるようになった『GPS Logger-san!』を皆様、今後ともヨロシクお願いします。

PS.
まだまだ機能入れる予定ですよ!また長い目でお待ちくださ~~~いデス。

Jリーグ順位表を作り直しました

結構前から出来てはいたんですが、チェックに時間がかかってやっと公開です。
02 01
Jリーグの試合のあるときに実験しないといけないので大変でした。(^_^;)

で、最初にお詫びです。
このアプリは自分がはじめてWindowsPhone向けに作った記念すべき!?アプリです。
それから幾多の時を経て、プログラム技術も上がり!? バージョン2.0 になって、それらしく皆さんに公開できるようになったかと思います。(^_^;)
とは言え、使って頂いている方には申し訳ないですが、機能追加等は『EX』版で行おうと思っています。
無償版から有償版にチェンジするにも忍びないと思いましたので機能追加は別アプリにさせて頂きました。
(今までの『Jリーグ順位表』は、バージョンアップして見た目は変わっていますが機能は同じく順位のみです)
ご理解のほどよろしくお願い致します。m(_ _)m

21 14
『EX』版には、J1,J2の順位表と試合結果、ナビスコカップの試合結果、ゴールランキングと入れ込みました。

それにしても今回は、申請してから10日以上審査(新規申請とバージョンアップ申請の2つです)に時間がかかりました。込み合っていたんですかね・・・。


今までの『Jリーグ順位表』版
http://www.windowsphone.com/ja-JP/apps/20293364-e2a5-428b-bfa8-30bcf778a326

新しい『Jリーグ順位表EX』版
http://www.windowsphone.com/ja-JP/apps/fe465ff5-9efb-4f0d-8f54-1154af4d4a0d

PS.
既にバージョンアップ申請してあります。微妙な部分!?を更新しています。
更新までに一週間くらいは、かかるかと思います。

Lap StopWatch!公開しています

ぜんぜん記事にしていませんでしたが、ストップウォッチを公開しています。(^_^;)
http://www.windowsphone.com/ja-JP/apps/d47d7925-12ba-4418-bcb1-03465e06262e

05 03
GPS Logger-san!の開発で得た技術をつかって作っています。
自分で言うのも何ですが、見た目も含め何気に便利です。

また、地味~にバージョンアップを繰り返していますヨ!

06
CSV形式でSkyDriveにアップできます。
有料にしちゃってますが、無料でほとんど全ての機能が使えます。Excel形式のみ有償版です。
ぜひお試しください。

バージョンアップ通って晴れてアプリのご紹介!です

今回のアプリですが、マーケットに初公開されてからすぐにバージョンアップを行い、そのバージョンアップ版が通ってから紹介しようと思っていましたが、思ったよりも時間が経ってしまいました・・・(>_<)

その理由は、位置情報関連で審査に落ちたから・・・(汗(汗(汗(汗(汗(汗(汗

今回落とされたバージョンアップ版は、位置情報関連はまったくプログラムや文章等をいじっていないんですよね。何で落ちたのか腑に落ちませんが・・・。(初めての人だと『?』状態になっちゃうんじゃないでしょうかね?)

で、再度申請です。その際には何も修正していません。だってちゃんと作っているから(笑)。前回申請するときにテスター宛にその旨を書いておいたんですが、まったく見ていなかったと思われます?
今回の再申請では、強い口調で『日本語』で書いたら通りましたw

icon_FuelMemoそんな感じで、やっとバージョンアップした『ガソリン給油メモ』を紹介できる様になりました!
(前置き長いぞw)
http://www.windowsphone.com/ja-JP/apps/fe23e43a-51b9-496a-817c-0f63a7d0a1b3

01
自分クルマとか好きなので、定番と思われるアプリを作ってみました。(^_^;)
まずは、クルマ(バイク等)をカメラで撮って登録してください(最大10台までOK!)。そして位置情報もONにしてくださいね。
06
そしてガソリンスタンドで給油したら給油量・金額・走行距離を入力してください。そしたらその位置と共にデータが保存されます。また、Twitterの登録をしておけば同時につぶやけますよ。(^_^)v
(あと、入力には特に気を使いました。素早く入力できるように「フォーカスを移る」ボタンを付けたので入力後にはこのボタンを押してくださいね。使い勝手が変わりますよ)

そして給油の履歴に一覧が表示されます。
また、位置情報から給油地点も地図で見れます。遠出をしたときにドコで入れたかが直ぐに分かりますね!
02 03

またこの履歴データは、SkyDriveにアップロードも出来ますヨ!
※タブ区切りのテキスト形式です。Excelにコピペできます

それとタイルにアイコン登録すると平均燃費もでるようにしました!
※やっとタイルの使いこなし方が分かってきた気がします(^^ゞ
30

そして、今回のバージョンアップで変わったのがこのチャート機能!履歴をグラフ化します。
14
グレープシティさんの無償利用プログラムを使わせてもらいました。
http://www.grapecity.com/tools/info/componentonewp2012/provided_free.htm

前回バージョンでは、自分で作ったグラフを入れてはいたのですが、よりカッコよくなりました♪
 ( 旧 ⇒ 新 )
04 ⇒ 25

そしてもう一丁!SkyDriveにアップできる形式にExcel(.xlsx)形式が加わりました。
これもグレープシティさんのコンポーネントを使ってます。

お試し版では一部機能制限(管理できる車両が1台とExcel形式が使えません)がありますが、ほとんどの機能が使えます。気に入って頂ければ寄付してもらえればと思います♪

今回は、グレープシティさんのコンポーネントを使って見栄えが良くなりました。感謝です♪
(使い方にちょっとクセがありましたが。Chartは、描画が遅いっす・・・てかタスクが止まるぅ~)
これ、他のアプリにも使えるので採用しようと思っています。(*^。^*)


それにしてもOSシェア等でアプリ数が良く言われますが、それって大事なんですかね?
本当に使えるアプリは、そのうちの何%あるんだろうか?

WindowsPhoneのアプリを一気に公開したらブログに凄いアクセス数が…

WindowsPhoneのアプリを一気に公開したらこのブログ凄いアクセス数で恐縮しております。(^_^;)
更に久しぶりにマーケットのレビューを見たら書き込みが!本当にアリガトウ御座います。
(レビューにコメントを返すには、バージョンアップ毎に1度のみなので、このブログにてお返事します)

icon_WayTraffichttp://windowsphone.com/s?appid=bb22dc90-f59a-4723-9698-981ee5aaa288
まずは「日本道路交通情報」。こちらには、購入(寄付!)して頂けた方からの書き込みが!ダウンロード数が多い割には、「・・・」なので本当に感謝です!(ToT)

icon_KantoRainThunderhttp://windowsphone.com/s?appid=98c31a3e-79ff-4976-9d47-755048703ec4
「雨量・雷観測情報」には、ご要望がありました。桜の開花情報、台風情報、紅葉情報、積雪情報とか良いですよね。考えてみます。ただし優先順位はちょっと低くなっちゃうかもしれません。ご了承を・・・。

icon_GpsLoggerSanhttp://windowsphone.com/s?appid=dcf29c13-6c6b-460f-8ed9-d17b4d56d184
「GPS Logger-san!」は、変換ツールで実力発揮!とかのお褒めのお言葉と、高度計、登山ルート、写真との連動など登山用とのご要望が!一応、高度は内部にはデータを保持しています。もうちょっと経ったら手を入れる予定です。あと、自分登山は良く分からないのですが、調べてみますね。出来そうなら考えてみます!

icon_J-LeagueResulthttp://windowsphone.com/s?appid=20293364-e2a5-428b-bfa8-30bcf778a326
バージョンアップしたばっかりの「Jリーグ順位表 2012」には、早速の書き込みがありました♪
その他のデータ(得点ランキング等)を表示できるようにとの構想は、ありますヨ!ただしちょっと待ってください。もう開発が追いつきません。アップアップです・・・(汗

と言うことで、バージョンアップや改善など、更に作りたいものが沢山あるので優先順位を付けさせてもらおうと思っています。(^^ゞ

■優先順位(A=高~D=低)
済)ガソリン給油メモ
 これは、すでに日曜日にバージョンアップ申請出しました。結構、変わっているかもしれません。お楽しみに!
A)新アプリ1
 現在、アプリコンテストに出そうかと作成中です。コンテスト用の本命アプリになるはず!?
B)Jリーグアプリ
 要望等を取り入れてがらりと変更しようと思っています。もしかしたら別アプリにしちゃうかもしれません(汗
B)新アプリ2
 自分が欲しいと思っている定番アプリ?が無いので作ってみようと思っています。ただし他の人が作ったらキャンセルしちゃうかも?
C)Lap StopWatch!
 まだやり残したことがあります。でも、他のアプリを優先させてください!
C)GPS Logger-san!
 まだ、やりたい事があります♪ちょっと優先順が低くなっちゃうかもしれませんが待っていてください。
D)雨量・雷観測情報
 要望が可能なら入れますね!

とりあえず、こんな感じで進めようと思ってます。
とは言え不具合があればその都度対応しますし、順番は気が変わることもあるかと思う(BランクとCランクは逆にするかも!?)ので、その点はご了承ください。(^_^;)

新規WindowsPhoneアプリを4つ一気に公開しましたよ♪

みなさま天気の悪い日いかがお過ごしでしょうか?昨日はレッズも勝ったので天気悪くても気にしないw
そんで、こんな日は家に引きこもってアプリ作りですね!(笑)

と言うことで、アプリ一気に作ったり更新しました。
まず、4つもアプリ一気に公開しました! 気合順{おすすめ}に並んでいます(笑)

①ガソリン給油メモ
icon_FuelMemo
http://windowsphone.com/s?appid=fe23e43a-51b9-496a-817c-0f63a7d0a1b3
※有料ですが、お試し版でもほぼ制限無く使えます

②Lap StopWatch!
icon_LapStopWatch
http://windowsphone.com/s?appid=d47d7925-12ba-4418-bcb1-03465e06262e
※有料ですが、お試しでも制限無く使えます!(すでに外国の方が買っていただけたようです。感謝!)

③いまドコ!?住所
icon_ImaDoko
http://windowsphone.com/s?appid=12e4504a-2565-4ab9-bc20-ece24d385423
※無料です

④漢字時計
icon_KanjiClock
http://windowsphone.com/s?appid=105905e8-3291-4f3f-886b-2f2168606d8c
※無料です

一気に公開したのは、評価デバイス配布プログラムに申し込むためです。(^^ゞ
(規定により詳細は書けませんのであしからず・・・)

いままでの開発した資産(公開、未公開含む)が増えていたのと馴れもあって、期間の割には良いものができたと思っています。ただし「④漢字時計」を除いて・・・w
「④漢字時計」は、他のアプリが初回の審査に落ちて(爆)こればヤバい!と思い急遽作ったものです。一応、端末の回転には対応しておりますが・・・(^_^;)

それから既に公開してあると言うか一番最初に作った「Jリーグ順位表」アプリ。2012年度に対応しています!ただしこちら公開してから気が付いたのですが、強調表示するチーム名選択で選ぶチームが、J2に降格した所がJ1のままでした。。。m(_ _)m
即効で修正したバージョン(Ver 1.3)を申請しているのでしばらくお待ちください。なんかおかしいなとは思っていたんですけどね。J2チームが多くて気が付きませんでした。チーム増やし過ぎですよw

と言うことで、個々のアプリについては別エントリーで記載します。たぶん・・・(^_^;)

やっと分かった♪GPSを扱うための注意点と言うか不具合?

今までに何度か紹介しているGPS Logger-san!アプリですが、ごくまれに起こる不具合があったものの再現性が分からなく「?」な状況でした。ごくまれといっても数時間に一度くらい?なので実用上は問題ないとは思うもののどうしても気になっておりました。

で、クルマで移動しながら、かれこれ数十時間!?やっと実機&デバッガを繋いで問題ポイントを発見することが出来ました!

問題ポイントは、2点ほどあります。。。

■1つめ
以下の様な感じでGPSの設定を行い・・・

void init_gps(){
  gps_watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
  gps_watcher.PositionChanged += new EventHandler>(gps_watcher_PositionChanged);
  gps_watcher.StatusChanged += new EventHandler(gps_watcher_StatusChanged);
  gps_watcher.Start();
}

GPSポジション(緯度、経度)の取得を以下のように行うと思います。

void gps_watcher_PositionChanged(object sender, GeoPositionChangedEventArgs e)
{
  double d0 = e.Position.Location.Latitude;
  double d1 = e.Position.Location.Longitude;
}

この取得時に、ごくまれに緯度、経度の値が NaN で出て来るときがある!
これをこのままのNaNで計算すると例外が発せられるハズです・・・。(←ちょっとうろ覚え)
これは、結構頻発します。感覚として1時間に1度ほど。。。(^_^;)
以下のように調べれば、対策が可能です。
  if( double.IsNaN(d0) ){
    // NaN 対策処理を行う
  }

■2つめ
先ほどの値ですが、これ以外にも予期せぬ値が出るときがあります!
こちらは、数時間(感覚として5~6時間?)に一度ほど・・・w
そして、マップにピンなどを立てるときに良く使用するGeoCoordinate()の引数の範囲を超えてしまいます。
  map1.Center = new GeoCoordinate(d0, d1);
範囲外の値を入れると例外が発せられます!(←今回、長い間不明だったのはコレ!)

怖いですねぇ~。てっきり緯度、経度共にその範囲内でしか出てこないと思っていたのでビックリです(汗
取得した値が正しいか?きちんと調べてから使いましょう。

ちなみに htc mozart での結果です。エミュレータでは出たことはありません。他の端末は、持ってないので知りませんが、AppHubのクラッシュレポートが多いので(涙)多分同じだと思います。


原因が分かったのでGPS Logger-san!アプリを速攻で修正して、すでにアップデート申請を済ませております!
また、こちら↓を拝見すると、、、
  『マップシンプルに見る Location Serviceの使い方』
 http://blogs.msdn.com/b/shintak/archive/2012/03/05/10277518.aspx
デフォルト状態の扱いが違っていました。(なぜ申請が通ったのか不明ですが・・・w)
次に申請したときに落ちるのもイヤなのでデフォルトOFFに直しておきました。

と言うことで、今回は不具合修正が主となるアップデート(Ver1.5)です。m(_ _)m
無事に審査が通れば、土日くらいにはアップデートが開始されると思います♪

PS.
でもこれで完全に直ったか?まだ不安がつきまとう・・・(^_^;)

バージョン管理ツールのすすめ

GPS Logger-san!アプリのテストも兼ねてノートPC積んでクルマで4時間以上はしってきました。
結果は、、、再現せず・・・。今回これだけ、確認して再現しないってことは、ほぼ問題ないと見て良いのかな?
また、遠出をする機械があれば、またチェックしようと思いますが、当面はお預けです。

そして、本題。
プログラムを開発しているときのバックアップって皆さんどうしてますか?
自分は、構成管理ツールと言われるSubversionを使っています。
http://ja.wikipedia.org/wiki/Apache_Subversion
Apacheを入れたLinuxで使えます。
プログラムソースなんか、ほとんどテキストですので大した容量も食わないので、古いPCにLinuxを入れてSubversionを構築できちゃいます。自分は、相当古いファンレスPC(CPUにVIAの800MHz!)にVineLinuxで構築してます。でも、URLに示したWikiでは、コマンドラインツールで面倒そうです・・・。
※クライアントは、そこそこ良いPCが必要です。が、WindowsPhoneの開発していれば良いPC使ってますよね?(^_^;)

でも、問題ありません。便利なツールがあるんです。その名もTortoiseSVN!
http://tortoisesvn.net/
Windowsで使えるGUIツールです。次のURLから32 or 64bitバージョンがダウンロードできて日本語もパッチを当てれば問題なし!
http://tortoisesvn.net/downloads.html
※最初にOS別の本体をインストールしてから、Japanパッチをインストールします。

それで何が便利か?と言うと、ソース等をこのツールでコミットしていくとその時点でのバックアップが簡単に出来るんです。更に過去に遡って差分が取れたり便利機能がいっぱい!

例えば、、、
名称未設定 1
これが自分が今管理しているプログラムの構成(Subversionの中身)です。
※よ~く見ると、まだ未公開アプリのフォルダがあるけど、まだ秘密(作成中?)ですw

沢山のアプリを開発していると、どれがどれだか?覚えるのも大変だと思います。
そこで、各アプリごとにキリの良い段階で、ファイルをコミット(変更追加)していきます。このときに一緒に何を変更したのかも簡単にメモ(記載)します。

また、コミットするファイルも変更されたファイルを自動で探してくれます。
名称未設定 2
このキャプチャでは、MainMenu.xaml.csが変更されているのでリストアップされています。

さらに変更箇所の差分も見れます。
名称未設定 3
これらを確認して、問題なければ最終的にコミットします。
(自分は、とにかく変更したら何も考えずにどんどんコミットしちゃっています)

こうする事により、その時々で過去に遡ってのメモと差分を見比べたりして、時にはなんだこのソース?なんで変えたんだっけ?と思い出せなくても簡単に過去の履歴が分かります。
また、画像等のバイナリデータもどんどんこれに突っ込んでいきます。アイコンや画面キャプチャなどもアプリの申請前に自分は保存しています。あとで、どこ行った!って探すのも便利なんですよ。

特に個人で余暇に開発していて、開発の間が開いてしまうと思い出すのも一苦労かと思います。
最初はLinuxの構築とか大変かもしれませんが、後々身にしみて便利さが分かってくると思います。

ここで書いたこと以上に沢山の便利機能がある『Subversion』 と 『TortoiseSVN』。先人たちが数々の文献をネット上に残してくれているので、検索してみてください。

本来であれば、複数人でのチーム開発をターゲットとしているツール類ですが、個人での使用するメリットも沢山あります。この便利なツールを導入するのをオススメします!