高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Windows Phoneアプリ二つが公開されました

申請していたWindows phoneアプリ二件が公開されました。

声かけカメラのほうはバージョンアップ。おしらせ水準器のほうは新作です。

声かけカメラのバージョンアップ

おおまかには向こうに書いてあるとおりですが

  • 撮影解像度の変更機能を追加(有料版機能)。
  • カメラ画面表示直後にフラッシュ状態を操作すると強制終了する不具合に対処(フラッシュボタンを一時的に押せなくした)。
  • ストアの「アプリの要件」欄に、実際にはアプリケーションが使用しない権限が指定されている問題に対処。

の三つです。
左のアプリ情報ではバージョンの表記が「1.0.0.0」のままとなっていますが、「1.1.0.0」が正しいです(急ぎではないと思うので次のバージョンアップで対応します)。

撮影解像度の変更

読んで字のごとくですが、写真の解像度変更画面を設けました。前は端末標準カメラの解像度設定を引き継ぐものと思っていたのですが、端末を修理初期化したあとなぜか設定を引き継がなくなってしまったので、急遽作成。

なお、こちらは有料版のみの機能となっています(無料版では端末カメラで撮影可能な最大解像度に固定されます。たぶん)。

フラッシュ状態操作時に強制終了する不具合

アプリが起動してからカメラの初期化完了(0.5秒程度)の間にフラッシュを操作すると落ちてしまう不具合に対処しました。といっても、それまでの間フラッシュボタンが無効化するだけです。あまりきれいな対応ではないですがこれしか思いつかなかったので・・・。

アプリの要件欄修正

前回のバージョンは、アプリ情報のアプリ要件になにやら使わなさそうな権限が載っていて妙な感じでしたが、必要な権限のみに絞りました。ご迷惑おかけしました。

おしらせ水準器

こちらは、現在端末が水平になっているのかどうかを示す、よくある水準器アプリです。ただ、水平であるかどうかを音声で知らせる機能がついています。Windows phoneにも水準器アプリはいくつかあるのですが音声を鳴らすソナー機能までついているものはありませんでしたので作成しました。

自分がイベント用に持っているプロジェクタの三脚には、水準器は一応ついているのですが、当然見ながらでないと状態が確認できないのでとにかくめんどくさい。
そのため、今回のWindows phoneアプリトライアスロンをきっかけに、ちょっとつくってみました。Windows phoneってあまりこういう文具的なアプリを載せて使う環境ではないのかな とは思ったのですが、まあ、こちらの方が使いやすいし、いいかな と。

有料版

こちらも、有料版があります。有料版はソナーのタイミングを0.5〜10秒で設定可能です(試用版では5秒固定)。
家で試用した限り5秒だとなんとか使える、3秒で普通に使える、1秒で割と快適 な印象でした。ので、この設定としています。

開発後記

Windows phoneアプリトライアスロン3種目目の公開と、1種目目の修正です。声かけカメラのほうは、アプリ情報欄のバージョン番号は古いままですが、すでにインストールしている人にはアップデート通知が通常どおり通りますし、はじめて使う人にとってバージョン番号はそれほど重要でないと考えたので、ひとまず問題は無いかな と。そのため次のバージョン公開時に修正 と言うことにする予定です(というより、このバージョン番号、アプリ公開のコンソールで直接開発者自身が手動で変更しないといけないのですね、知らずに公開してしまいました)。

声かけカメラ

現在未公開のWindows phoneアプリトライアスロン2種目目でもカメラを使いましたが、やはりWindows phoneでカメラというのは厄介なものです。
様々なタイミングでカメラ切り替えが起きるため、ふとしたきっかけでカメラが破棄されていたりnullになっていたりと厄介なことが多数。

具体的には、次のようなタイミングでカメラが意図せずnullになったり、破棄されていたりする(ちなみにカメラの実装例はMSDNに掲載されているので、この内容が理解できていることが前提です)

  • カメラが初期化される前に、別の画面に遷移したとき(Camera.InitializeがDiposedまたはnullの状態で呼び出されてしまう場合がある)
  • カメラが初期化されたと同時にスレッドで処理を実行するとき(方法: Windows Phone 用カメラ アプリケーションでグレースケールを処理するなど。処理開始時にカメラがDisposedまたはnullになることがある)
  • (当然ではありますが)アプリケーションバーアイコンボタンでカメラに関連する処理を行う時。

カメラが初期化される前に別画面に遷移する等の処理は、タイミングによっては例外補足自体が不可能なケースがあります。
なので、カメラを使うアプリのアプリケーションバーアイコンボタンでは画面遷移を行わないようにしましょう(標準カメラアプリに画面遷移が一つも無いのはそういう理由なのかなあ とか思ったり)。


なお、それでもカメラアプリから画面遷移を行いたい場合は、アプリケーションバーメニューに配置すると良いようです。というのも、アプリケーションバーを引き出す間にカメラの初期化が終わってしまうため。
IS12Tで試した限りだと、この状態でもカメラの初期化でエラーを起こすのは、もはや「起こそうと思って起こさないと無理」なレベルでした(二本指でメニューを素早く操作する・カメラ起動中にタイミング良くBACKキーを長押しする など)。機種によっては問題が起こる可能性もありますし、本来であればもう少し根本的な修正を行うべきな気がしますが・・・。

おしらせ水準器

こちらは比較的単純なアプリです。骨組み自体は4時間程度で完成させました。音声作成は、声かけカメラでも使っていましたが、Kanawaveというソフトを使用しています。

仕組み自体はすごく単純で、第24回 加速度センサーを使ってみよう!:Windows Phoneアプリケーション開発入門|gihyo.jp … 技術評論社の加速度センサーのサンプルで得られる値を、中心円の移動可能領域の半径で乗算して中心円のマージン値としているだけです。ただ、そのまま実装するとソナー音声を鳴らしたときスピーカーの振動で本体がぶれてしまうので、音声が鳴っている間はセンサーからの値取得を無視しています(そのため、ソナーの音は200ミリ秒で鳴り止むように統一している)。

アプリの名前

Windows phoneでは、アプリはスタート画面にピン留めするか、アプリ一覧から選択することで起動します。このアプリ一覧は、日本では「あかさたなはまやらわ漢数アルファベット」の順でならぶため、ひらがな(とくにあかさたな行あたり)が名前の先頭に着いてるアプリは先頭の方にならび、ピン留めしなくても使いやすい という特徴があります。このため、以後のアプリはなるべく「ひらがな+漢字」の組み合わせでいこうかな と思ってます*1


とくにおしらせ水準器のような文房具として使うタイプのアプリは、使用頻度自体は高くないのでピン留めはされにくいでしょうが、ちょっとした機会に使いたくなるタイプのもの。となると、名前の先頭にア行の文字が入ってた方がいいんですよね(英語版だと「SoanrLevel」という、アプリ一覧上位に並べる意図全くナシのアプリ名ですが・・・)。


ひとまずこんな感じで、アプリが二つ連続で公開されました。審査の期間は昔Vectorにアプリを掲載依頼したのと大体同じくらいなのですが、今回のようにバグ修正が絡んでいたりするとついまだかまだかと思ってしまいますね。
他の開発者の方も言われているとおり、審査申し込み後のアプリ差し替えや審査のやり直し申請は出来ない(審査完了〜アプリ公開の間か審査リジェクト後のみ、審査のやり直しが可能)ため、Windowsでやってたとき以上にしっかりテストしたアプリを出すようにしないと。

*1:IS14SHのランチャーなどAndroidでもアプリ名をあいうえお順でインデックスするランチャーは少なくないので、Androidでもこの命名規則で行くかも