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

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

お気に入りの色が公開されました

表題の通りですが、初のAndroidアプリ、お気に入りの色が公開されました。

「for Android」とあるとおり、Windows用のアプリケーション、お気に入りの色Android版です。



Android版ではカラーリストが一つしか保持できない代わりに、色相が少しずつ違う色・明度が少し違う色を一覧表示する、カラーテーブル機能がついています。
最近Webサイトのリニューアルなどでこういう近似色のリストが必要になったため、作成しました。


同種のWebアプリは結構あるのですが、そちらだとカラーバリエーションの数が少なかったり、画面占有幅が大きすぎてちょっと自分の利用目的では使いづらかったので。色相をずらすだけですので、プロ用途にはちょっと力不足かもしれませんが、個人のサイト製作などであれば十分お役に立つはず。


初のAndroidアプリということで、ちょっと気合いを入れてデモ動画まで作成しました。ビデオカメラで撮影して、ムービーメーカーでテロップを付加しています。まあ、アプリの種別からしてどう見てもツールアプリですし、デモ動画はあった方がいいかな と(わたしもツールアプリを探すとき、同種のアプリが複数個あればデモを見て選びますし)。

なぜ、Android版?

うちの環境では、メインのPCの周辺にはAndroid端末がいくつか置いてあります。そのため、家ではこれらは小道具なんです。そのため、これらを小道具として活用するためにAndroid版を作成しました。
本当は、先日Windows 8のタブレットを買ったのでそちら用に作っても良かったのでしょうが、とりあえず開発着手時に手元になかったのでAndroidで。所用でAndroidの開発者コンソールの使用方法を取材しなければいけないのもありましたし。

開発後記

とりあえず、はじめてのAndroidアプリケーションということで、いろいろ戸惑うところもありましたが、とりあえず無事に完成。今までは書籍用のサンプルアプリばっかりで、結局リリースまで行ったアプリは一つも無かったんですね。

とりあえず、初めてやったことと言えば、だいたい次の四つかな。

  • 日英対応アプリ製作
  • BuildConfig.DEBUGフラグの利用
  • 簡単な改ざん対策の適用
  • 広告の利用
日英対応アプリの対策

日本語と英語(というか、それ以外の言語)でアプリを起動したときに、それぞれの国の言語で表示されるようにしました。
これについては特に何かということはなく、標準の文字列リソースを全部英語にして、日本語化する部分だけをvalues-ja/strings.xmlで定義し直すだけ。定義が漏れたリソースがあった場合Android Lintで警告されるので、とくに心配することなく対応が出来ます(日本語訳しない文字列リソースには、タグに「 translatable="false"」を付け足すことで、Android Lintの警告を隠すことが出来ます)。

BuildConfig.DEBUGフラグの利用

最近のADTでは、genフォルダにBuildConfigというクラスファイルを生成します。
このクラスファイルにはDEBUGという定数のみが宣言されており、普段はtrueに固定されているのですが、リリースパッケージを生成するとき(Eclipseのメニューより「Androidツール→署名アプリケーション・パッケージのエクスポート」を選択したとき)だけこの値はfalseになるのです。すなわち、これを使えばリリースパッケージとデバッグパッケージで処理を分けることが出来ます。

if (!BuildConfig.DEBUG) {
  // リリース版での挙動
}else{
  // デバッグ版での挙動
}

このBuildConfig.DEBUGは定数ですので、この値により実行されなくなるステートメントは、コンパイル時に最適化で削除されるというおまけ付きです。これで、デバッグ版でのみ実行されるデバッグコードや、公開版でのみ実行されるコードが書きやすくなりますね。


ただし、2013/04/04時点のADTではこのBuildConfig生成処理にバグがあり、Eclipseの「プロジェクト→自動的にビルド」の設定が有効になっているときは、署名アプリケーション・パッケージのエクスポート時にもこの値がtrueのままになってしまうという問題があります(他のサイトでは「Windowsのみのバグ」と記載されていますが、他の記事によるとどうもUbuntu環境上でも同じ問題が出ていると言いますし、Windowsだけとも限らないみたいです)。
そのため、当面の間は、リリース用パッケージを作るときには「自動的にビルド」の設定を無効にしてからパッケージを作成するようにしましょう。ちょっと面倒ですね。

簡単な改ざん対策の適用

書いてしまったら対策にならないような気もしますが、どちらにせよ標的型の攻撃には無力なので。
TechBoosterさんの記事を参考に、簡易なチェックを行う処理を行いました。

広告の利用

これについてはかなり迷ったのですが・・・。
有料版を作る見込みも今のところないですし、いちおう収入が安定しない身分ですしね、背に腹は代えられません。


こちらについては、ひとまずAdmobを利用(もっといい解もありそうな気はしますが)。
Admobでは自分の所有している端末では表示されないようにデバイスID指定でテストモードになるよう設定できるのですが、このままだと、所有端末としてリストされてないデバイスで広告がタップされてしまうという可能性があります。
自分が使う場合は注意すればいいだけなので問題ないですが、「スマートフォン教室の貸し出し端末で広告がタップされてしまう」という問題がありそうですね。スマートフォン教室で貸し出す端末は毎回増減すると思うので、いちいちテストモードデバイス設定はしたくないですし。


自分の所有するデバイスであることを証明する特殊なアプリを入れて、それの存在を確かめて広告を無効化するような処理を入れた方がいいかもしれません。

Windows Phoneマーケットプレイスとの違い

さて、自分はWindows Phoneマーケットプレイスでもアプリを出しているわけですが、それとの違いについてもちょっと触れてみます。

審査の有無

よく言われているように、AndroidのPlayストアには、審査というものがありません。そのため、公開すると指定したアプリは即、公開されます(ただ、内部でウィルスなどの検査処理はやっているらしく、申請してから公開されるまでには2~3時間程度の時間がかかります)。

そのため、公開申請してから1~2週間程度の審査がかかるWindows Phoneに比べると気軽にアプリをリリースできますが、反面、審査で確実に引っかかるようなぽかミス(初回起動時ミスする、画面回転で転ける など)もスルーされてしまうということでもあります。また、Windows Phoneのように、アプリケーション公開前のチェックリストのようなものも存在しません。

アプリの品質についてはWindows Phone以上に開発者側がしっかり管理をしなければならず、よりしっかりとしたチェックを行う必要があるでしょう。

デモ画像の用意

Androidでは、アプリに一つだけデモ動画を設定することが出来ます。動画はYoutubeにアップロードされた「事前に公開されている動画」である必要があります。
Android端末の操作画面録画には、AndroidScreenCastなどもありますが、ちょっとフレームレートが低いので、気に入らない場合はビデオカメラを使って録画してしまった方がいいでしょう。
また、動画の撮り方にも寄りますが、この動画に広告を載せることも考えられます。実際このデモ動画に広告が載ってるアプリも多いですね。

このアプリの今後

ひとまず、このアプリについては今まさに実用しているわけでもありますし、ちょこちょこと更新をして行く予定。動画にもあるとおり、ひとまずメソッドを増やしたり使用者がカスタマイズできるようにしたりしていこうかなと。
あとは、PCとの連携ですね。せっかくWindows用にもお気に入りの色はあるわけですし、それと連携してカラーコードを転送したりするのも面白いかも。


せっかく作ったものですし、まだまだ活用していきたいと思います。それからもちろん、別の種類のアプリなども必要なら作っていこうかな と。