商用Androidアプリ開発

商用Androidアプリ開発
株式会社チェリービット
$
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
目次

開発工程
◦
◦
◦
◦
◦
◦
◦

システム設計
機能仕様
インタフェース仕様
データベース仕様
画面仕様・画面遷移
実装
デバッグ・テスト
公開
◦
◦
◦
◦
◦
無料公開
有料公開
アプリ内課金
月額課金
広告連携
保守
 技術Tips
 その他のTips

Copyright 2012, CherryBit Co.,Ltd., All rights reserved
開発工程
ヒアリング
マーケティ
ング
企画書
作成
シス
テム
設計
機能設計
実装
要求仕様まと
め
・インタフェース仕様
・データベース仕様
・画面仕様/画面遷移
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
テス
ト
リリース
システム設計

企画書に記載の機能を実現するためのシステムの全体構成を決
める
◦ Webサービスの選定
◦ 端末側のコア技術の選定
 Bluetooth、センサー、GPS、ネットワーク、NFCなど

マネタイズに使用する技術
◦ 広告、アプリ内課金、月額課金、有料化など

独自サーバの場合は別途サーバ仕様
◦ レンタルサーバ? 自社サーバ?
◦
◦
◦
◦
◦
◦
無料:GoogleAppEngune、AmazonWebSservice(EC2/S3)
有料:さくら
OS:Windows? Linux?・・・
アプリケーションサーバ:Tomcat? Apache? JBoss?・・・
DB:MySQL? PostgreSQL?・・・
言語:Java? PHP?・・・
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
システム設計(例)
クーポン管理サーバー
AWS+MySQL採用
CPC広告配信
AdMob
②位置情報(GPS)
クーポン情報
支払い情報
顧客情報
①お店探し
アプリ起動
クーポン適用/支払
⑤クーポン表示
⑥クーポン保存(SQLite)
どのユーザーがどのサービスに
出したクーポンで来店して、い
くら分の購入につながったのか
を測定・分析
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
機能仕様書

フォーマットはなんでもよい
◦ WordやPowerPointなどで作成
要求機能
 システム構成図
 システムを構成する各モジュールにおける
詳細な機能記載

◦ インタフェース仕様
◦ データベース仕様
◦ 画面仕様・画面遷移
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
インタフェース仕様


Webサービスはサーバを利用してデータをやり取
りする際のプロトコル、形式、データフォーマッ
トなどのインタフェースを決める
HTTP通信(GET or POST)
◦ REST(主流), SOAP, XML-RPCなど
◦ やりとりするデータのフォーマット
 JSON(主流)
 XML

Socket通信
◦ アクセス先のサーバとのインターフェース整合
◦ IPアドレス、ポート番号
◦ やりとりするデータのフォーマット
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
XMLとは






Extensible Markup Language
データの開始と終了をタグで囲んで、意味づけを行うフォーマット
タグは入れ子にできるので階層構造を表現することはできるが、循
環構造はそのままでは表現できないため、属性で指定することにな
る
広く使われており文字コードも指定することが可能
タグ及びその中に属性があるため、冗長で可読性が悪いのが欠点
Androidではjavax.xml.parsersパッケージの DocumentBuilderと
DocumentBuilderFactoryクラスを利用して解析する
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
<status>
<created_at>Thu Oct 21 19:13:18 +000
<id>28052969836</id>
<user>
<id>20536157</id>
<name>A Googler</name>
・・・・
Copyright 2009, Open Embedded Software Foundation, All rights reserved
JSONとは






JavaScript Object Notation
元々はJavaScriptでのオブジェクトの記述方法であったが、そのま
まデータフォーマットの仕様とした
非常にシンプルで分かりやすい
文字コードは基本的にUTF-8のみ
機能が限定的(「数値」「文字列」「真偽値(true、false)」「配
列」「オブジェクト」「null」)であり表せるデータが限られるこ
とと、循環したデータは扱えないが欠点
Androidではorg.json パッケージの JSONObject と JSONArray
クラスを利用して解析する
[
{
"created_at": "Thu Oct 21 19:13:18 +0000 2010",
"id": 28052969836,
"user": {
"id": 20536157,
“name”: “A Googler”,・・・
データベース仕様

アプリケーション内にデータを永続化する場合は
保存するデータの保存形式などを決める
◦ SQLite
 データベース名、テーブル名、カラム、データ型
◦ ファイル出力
 ファイル名
 出力先フォルダ
 データ形式
◦ SharedPreference
 SharedPreference名
 セキュリティモード(通常はMODE_PRIVATE)
 キーとバリュー(boolean、float、int、long、String)
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
例:SQLiteテーブル仕様
データベース名:RSS_DATA
テーブル名:RSS_FEED
列名
型
データの説明
_id
INTEGER
GUID
TEXT
RSSフィードに割り当てられる識別子
TITLE
TEXT
タイトル
PUBLISH_DATE
TEXT
配信日時
DESCRIPTION
TEXT
詳細内容
LINK
TEXT
リンク
SENDER_NAME
TEXT
配信元の名前
プライマリキー
オートインクリメント
■SQLiteについて
http://www.sqlite.org/
http://ja.wikipedia.org/wiki/SQLite
■SQLiteDatabaseに関する詳細はAndroid Developersのリファレンスを参照
http://developer.android.com/intl/ja/reference/android/database/sqlite/SQLiteDatabase.html
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
例:画面仕様書
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
例:画面遷移表
プロジェクト
資料名
アプリ名
画面遷移図
作成日
メイン画面
android HOME
一覧画面
H/K[Home]
詳細画面
H/K[Home]
H/K[Home]
Memuアイコン
H/K[Back]
H/K[Back]
[RssReader]
登録データあり
一覧表示
登録データなし
H/K[Menu]
H/K[Back]
OK
H/K[Home]
H/K[Back]
H/K[Home]
RSS取得
H/K[Back]
H/K[Home]
状態遷移
以降の応答判定前に
一覧、詳細画面への遷移は可能。
(※非同期処理とする。)
通信完了
※アクティブ画面の上部に
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
通知メッセージを表示。
一覧表示
更新日
H/K[Back]
タイトル
更新者
実装

チームでの共同開発
◦ 実装箇所の役割分担を決める
◦ 構成管理ツールを使用してプロジェクト管理




コンフリクト、マージ漏れの防止
コードの共有でチーム内レビュー
バージョン管理
コードの保守
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
主な構成管理ツール
主な特徴
SVN
Git
Mercurial
最新バージョン
1.7.7
1.8.0
http://subversion. http://git-scm.com/
apache.org/
2.3.2
http://mercurial.selenic.com/
集中型/分散型
集中型
分散型
分散型
代表的な採用
プロジェクト
多数
Linuxカーネル、Ruby on Rails、
Android、Perl 5など
OpenJDK、Mozilla、
OpenSolaris、NetBeans
など
Windows対応
○
△
○
GUIツール
Mac
GUIツール
Windows
GUIツール
Linux
SCPlugin
svnX
TortoiseSVN、
RapidSVN
SourceTree
Murky、MacHG、MacMercual
Msysgit+TortoiseGit、
git-gui、gitk、qgit
TortoiseHG、Hgtk
qgit、git-gui、gitk
Hgtk、hgct
Eclipse
サポート
無料
リポジトリ
RapidSVN
Subversive
http://www.eclipse
.org/subversive/ EGIT
Subclipse
http://www.eclipse.org/egit/
http://subclipse.tig
ris.org/
Github(非公開の場合は有料)
多数
Bitbacket(無料で公開/非公開が可能)
GoogleCode(すべて公開)
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
MercurialEclipes
http://javaforge.com/project/H
GE
Bitbucket、Assembla、
ProjectKenai、FreeHg.org
Gitの基礎知識

はじめての人はまずはここで勉強してください。
◦ 「サルでもわかるGit入門」
http://www.backlog.jp/git-guide/intro/intro1_1.html
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
Gitの主なコマンド
コマンド
説明
リポジトリの作成およびメンテナンスに利用するコマンド:
git init
リポジトリを作成する
git clone
既存のリポジトリの複製を作る
作業ツリーやブランチを操作・管理するコマンド:
git status
変更が加えられたファイルを表示する
git diff
ファイルに加えられた変更点をdiff形式で表示する
git add
コミットするファイルを指定する
git commit
変更点をコミットする
git log
コミットログを閲覧する
git reset
直前のコミットを取り消す
git revert
作業ツリーを指定したコミット時点の状態にまで戻す
git branch
ブランチ情報の表示およびブランチの作成
git checkout
ブランチの切り替え
git show-branch
ブランチの作成/変更/マージ履歴を表示
git merge
ローカルブランチのマージを行う
git tag
コミットにタグを付ける
ほかのリポジトリとの連携を行うコマンド:
git pull
ほかのリポジトリの変更点をローカルリポジトリにマージする
git push
公開リポジトリに自分のリポジトリの内容を送信する
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
BitBucketの使用方法


公式 https://bitbucket.org/
日本語による解説
http://www.atlassian.com/ja/software/bitbucket/overview
新規アカウント作成
① https://bitbucket.org/ にアクセス
② 「Sign Up, Free」ボタン押下
③ アカウント取得
ユーザー名、メールアドレス、パスワードなどを入力
「Confirm your email address」メールが届くので承認する

Copyright 2012, CherryBit Co.,Ltd., All rights reserved
BitBucketの使用方法

リポジトリの作成方法
①
ログイン後メニューの[Repositories] - [Create Repository]を選択
②
リポジトリ名等、必要な情報を入力
このとき
Access level「This is a private repository」
にチェックを入れれば非公開リポジトリとなる
③
https://[アカウント名]@bitbucket.org/[アカウント名]/[リポジトリ名]
でアクセス
④
リポジトリメニューのメニューの[Invite]ボタンで、共同作業者を追加できる
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
デバッグ・テスト
低メモリ環境での動作(メモリリーク)
画面の縦→横
着信イベントによるsuspend→resume
電波条件
要件定義
Androidならでは!
MonkeyRunner
受け入れテスト
仕様検討
システムテスト
ユースケース
非機能要件
(異常系)
Activity遷移
基本設計
結合テスト
HTTP通信
ビジネスロジック
詳細設計
ユニットテスト
正常系
異常系
Android Junit
結合項目で確認したいチェック項目





端末
◦ インストール先の違いによって動作しない処理がないか
◦ SDカードのマウント・アンマウントで異常な処理が発生しないか
◦ カメラなどのハードウェアを利用する場合に正常に動作しない端末はないか
◦ ストレージ容量が不足しているときに動作するか
◦ バッテリーの消費が多くないか
操作
◦ 画面を回転させても問題が発生しないか
◦ ハードウェアキー操作による想定外の挙動はないか
◦ IMEアプリによって入力の動作に差異はないか
◦ Activityの破棄によって問題が発生しないか
レイアウト・デザイン
◦ 各画面解像度で正常に表示されるか
◦ 設定変更によるレイアウトの崩れはないか
ネットワーク
◦ ネットワークの違いによる挙動の差異はないか
◦ 圏外などのネットワークの瞬断によって問題が発生しないか
リリース
◦ デバッグ版アプリになっていないか
◦ アップデートは正常に行えるか
◦ 対象端末は想定通りになっているか
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
テストツール





Eclipseのデバッガ機能を用いてブレークポイントによるス
テップごとの処理の解析
JUnitを用いて作成したプログラムが、意図した挙動をする
のかを確認するテストコードを作成、自動実行
 ユーザー画面操作、ライフサイクルイベント(onCreate等)の発行な
どが可能
DDMSを用いたログやメモリ、スレッドのプロファイリング
Monkey
◦ エミュレータインスタンスやデバイスで動作するコマン
ドラインツール
◦ クリックやタッチなどのユーザーの操作イベントやシステ
ムのイベントをランダムに発生させてシステム内に送信
◦ ストレステストの一種として使用可能
monkeyrunner ツール
◦ API から特定のコマンドやイベントを送信することにより、
ワークステーションからデバイスやエミュレータを制御す
ることを可能にする
MATによるメモリリークの発見
MAT(Eclipse Memory Analyzar)はEclipse用メモリダンプ解析用
Pluginツール
 DDMSのメモリトラッキング機能よりも、よりメモリリークの発生箇所
を限定することを可能にする
 DDMSで取得したHPROFファイル(メモリdump)をMATで解析
 HPROFファイルをDalvik フォーマットから J2SE HPROF フォーマッ
トに変換する必要
◦ Android SDKのhprof-conv ツールを使用
◦ hprof-conv dump.hprof converted-dump.hprof


MATのHistogram Viewを用いて解析
◦ インスタンスの数でソートされたクラスリスト
◦ すべてのインスタンスで利用しているメモリの総合計(表層ヒー
プ:shallow heap)
◦ 他のオブジェクトへの参照をもっているオブジェクトを含めたすべ
てのインスタンスで生きているメモリの総合計(保持ヒープ:
retained heap)
◦ 参照しているオブジェクトを深くまで掘っていける
その他テストのTips


「Jenkins」
◦ CI(継続的インテグレーション)ツール
◦ Androidでは「monkeyrunner」「JUnit」
「robotium」などのテスト自動化ツールを
Jenkinsに組み込んでテストする
「Scirocco」
◦ AndroidUIテストの自動化ツール
◦ Apacheライセンス
◦ 日本語版チュートリアルあり
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
公開

広告モデル、宣伝モデル型アプリの場合
◦ GooglePlayで無料アプリとして公開
◦ GooglePlayで有料アプリとして公開
◦ 店頭や、自社のHPなどから直接apkをダウンロード
 URLやQRコードがダウンロード先への導線
◦ NFCでタッチでダウンロード

情報システム(業務専用)端末モデルの場合
◦ GooglePlayへは公開せずに自社サイトからapkをダ
ウンロード
 URLやQRコードなどがダウンロード先への導線
◦ 従来のパッケージソフトの販売方法
 ライセンス料を徴収してプロダクトコードを配布など
◦ インストール済みの端末を配る/販売
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
GooglePlayへの公開方法


公開するアプリケーションには自己署名が必要
◦ 一般的な電子署名とは異なる
◦ 署名に必要なキーストアをJDKのツールで作成する
◦ 作成したキーストアを用いてアプリに署名
Eclipseで上記の署名処理が可能
◦ アプリケーションプロジェクトを選択して右クリック
26
署名付きapkファイルの作成
C:¥work¥release¥my.keystore
Location: 生成したkeystoreの配置場所
Password: 暗号化キーとなるパスワード
Alias: 生成するkeystoreの名前
Password: 暗号化キーとなるパスワード
Validity: keystoreの有効期間(年)
署名付きファイルの作成
署名つきAPKファイル
Destination APK file: 生成した署名つきAPKファイルの配置場所
28
GooglePlayへの開発者登録
GooglePlayの登録サイト
https://accounts.google.com/ServiceLogin?service=androiddeveloper&
passive=true&nui=1&continue=https://play.google.com/apps/publish&
followup=https://play.google.com/apps/publish
• Googleアカウントが必要
• ディベロッパープロフィール
作成
• GoogleCheckOutで$25をク
レジットカードで支払う
• 販売/配布契約書に同意する
アプリの新規登録
新規アプリの公開
アプリケーション情報登録
Title
アプリケーションのタイトル
Description
アプリケーションの概要(300字程度)
Application Type
ApplicationまたはGame
Category
カテゴリ(Communication、Finance、Socialなど)
Price
値段(有料アプリにする場合)
Copy Protection
Onにした場合、携帯端末以外へのコピーが禁止される
Locations
アプリケーションを配布する地域
※他にも必要な設定項目が
あるので必要に応じて設定
する
GooglePlay公開手続き完了

サイトやGooglePlayアプリで自分が登録し
たアプリが表示されるか確認すること
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
GooglePlayを用いずに配布する方法
アプリケーションファイルを直接配布する
<配布例>




自前のサーバにアプリケーションファイルを配置
 ホームページでファイルを配布する
 QRコード作成サイトでQRコードを作成
 印刷・メールでの送付
 NFC WriterなどでNFCタグを作成し配布
CD、USBメモリ等でファイルを配布する
LAN環境等のネットワーク上でファイルを配布する
33
QRコード作成/NFCの活用

QRコード作成サイト(無料)
◦ http://www.cman.jp/QRcode/

NFC WriterなどでNFCタグを作成
◦ NFCの書き込み方法
 NFC端末を使用
 NFC Writeアプリをインストールする
 NFC Writerを使用
 ハードウェアとソフトを購入してPCにて書き込み
◦ NFCタグの購入方法
 Orange Tagsなどから購入
 http://www.orangetags.co.jp/nfcreaderwriter.html
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
野良アプリのインストール方法
①
Android端末でアプリケーションファイルをダウンロードして
インストールする方法
◦ 手順
1. Android端末のブラウザでアプリケーションファイルをダウン
ロードする
2. ダウンロード完了後、ダウンロード履歴からアプリケーション
ファイルをクリックする
3. インストール確認画面から”Install”を押す
ファイルをク
リックする
ダウンロード
ファイルをク
リックする
Installボタ
ンをクリッ
クする
手順1
手順2
手順3
35
野良アプリのインストール方法
②
パソコンとAndroid端末をUSB接続し、インストールコマンドを
使用してインストールする
◦ 手順
1.
2.
パソコンとAndroid端末をUSBケーブルで接続する
コマンドプロンプトを起動し、adb install コマンドを実行す
る
>adb install アプリケーションファイル名(.apk)
■コマンドプロンプトの入力( C:¥Simeji3.0.6.apk )をUSB経由でインストール
C:¥>adb install C:¥Simeji3.0.6.apk // ・・・ 手順1
596 KB/s (1413225 bytes in 2.312s)
pkg: /data/local/tmp/Simeji3.0.6.apk
Success
36
GooglePlayへの公開方法(有料)

DeveloperConsole https://play.google.com/apps/publish/ の「プロ
フィールの編集」にて販売アカウントを登録する
◦ 連絡先、公開連絡先、財務情報、規約の同意など

一度無料で登録したものは有料には変更できない
既存の登録済のアプリ
新規登録のアプリ
有料の場合は価格を設定する
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリ内課金について
In-app Billing公式
http://developer.android.com/guide/google/play/billing/index.html
◦ 決済はGoogle Playが代行してくれる
◦ 決済方法はGoogle Playでアプリを購入する方法と同じでユーザーフ
レンドリー
◦ 決済手数料はアプリ販売と同じ30%
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリ内課金のやり方
Android SDK Manager
「Google Market Billing package」コンポーネントをダウンロード
サンプルのアプリ内課金の実装方法を自分のアプリへ流用する
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリ内課金実装キーワード

Android Interface Definition Language(AIDL)
◦ GooglePlayアプリのサービスとやりとりを行うため


JSON
セキュリティを考慮した実装
◦ GET_PURCHASE_INFORMATIONリクエストと
RESTORE_TRANSACTIONSリクエストで一回限りの数値情報(ナ
ンス)をJSONに埋めて送る
◦ 受け取り側でナンスの検証をする
◦ 開発者アカウントの秘密鍵を使用


アカウントのプロファイルページで、このキーペアの公開鍵確認可能
Google Playライセンスで使用する公開鍵と同じ
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリ内課金登録

Developer Consoleでの設定
プロダクトID、タイトル、説
明、価格、公開/非公開など
In-app Products
Add In-app Products
Publish
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
月額課金(アプリ内購読)について
In-app Subscriptions公式
http://developer.android.com/guide/google/play/billing/billing_subscrip
tions.html
購読期間は1カ月と1年
月次、年次ともに最低99円に設定
Android SDK Manager
「Google Market Billing package」コンポーネントをダウンロード
アプリの実装としては、アプリ内課金を導入する方法とほぼ同じ
サンプルのアプリ内購読の実装方法を自分のアプリへ流用する
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリ内購読登録

Developer Consoleでの設定
Subscription
プロダクトID、タイトル、
説明、価格、購読期限など
Add Subscription
Publish
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
保守

Developer Consoleの見方
◦ ダウンロード情報
◦ 統計情報
 アプリの使用状況
◦
◦
◦
◦
評価とレビュー
バグレポート
有料アプリの売り上げ
その他
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
ダウンロード情報と統計情報
45
評価とレビュー
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
バグレポート
47
アプリの登録情報
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
有料アプリの売り上げ
Developer Consoleのユーザアカウント追加
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
広告連携

例)AdMob
◦
https://jp.admob.com/login/
◦
アカウント登録(AdMobアカウント or Google アカウント)
◦
アプリに AdMob SDK をインストールして、掲載する広告の種類や場所を指定
◦
収益の情報は、AdMob 管理画面のレポート機能
必須
◦
広告を掲載するモバイル アプリ。
◦
アプリに組み込む最新の Google AdMob SDK。
◦
収益の振り込みに使用する銀行口座

広告の設置方法は下記参照

https://developers.google.com/mobile-adssdk/docs/android/fundamentals?hl=ja
◦ GoogleAdMobAds.JARを外部ライブラリとして組み込む
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
アプリケーション情報登録
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
AdMob 管理画面
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
技術Tips
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
NFC
• NFC(Near Field Communication)とは、NXPセミコンダクター
ズ社とソニーが開発した13.56MHz帯の近距離無線通信規格で、
RFID技術の次世代標準規格
• AndroidでNFCタグの読み書きを行うアプリを作成する場合はNFC
APIを使用する(2.3以降)
• 標準NFC規格のハードウェアが対応していること
13.56MHz帯を使用する
全てのICカード規格
ICテレフォンカード、
たばこカードのほか、
欧州では広く普及
Suica、Edy、PASMO、
ICOCAなど
日本国内で広く普及
グローバル標準ではない
住民基本台帳カード、
社員証、学生証など
物流、小売などのIC
タグ
http://www.nfc-world.com/about/index.html
※ FeliCa™ はソニーの登録商標
※MIFARE®はNXPセミコンダクターズの登録商標
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
NFC

「カードエミュレーション」モード
◦ SuicaやFeliCaのようなパッシブな非接触ICカードのフリをして、NFCデバイスへ情
報を渡す
◦ Android 4.0のリファレンスでも未サポート

「リーダー/ライター」モード
◦ ポスターなどに仕込まれたICタグのようなパッシブなNFCタグの情報を、Android
スマートフォンが読み書きする

「PtoP」モード
◦ Androidスマートフォン同士、およびAndroidスマートフォンとNFC内蔵デバイスな
どで双方向通信をする
「Android Beam」は、
PtoPモードを活用して
Androidスマートフォン間
で情報やファイルを共有す
る仕組み(Android4.0以降
でサポート)
http://itpro.nikkeibp.co.j
p/article/COLUMN/2012
0720/410435/?ST=andr
oid-dev&P=1
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
GCM

Push型実装 = Push Notification
◦ サービス提供者が望むタイミングでメッセージを送り届ける

GCM(Google Cloud Messaging for Android)により実現可能
◦ 2012年6月26日よりC2DMは非推奨
◦ Android2.2以上
◦ Android SDK Manager から「Google Cloud Messaging for Android
Library」をDL(gcm.jar)
◦ project IDとAuthorization keyを作成する(「Google API Console」
https://code.google.com/apis/console/ にて取得)
■Google Cloud Messaging for Android(公式)のGetting started参照
http://developer.android.com/guide/google/gcm/index.html
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
Wi-Fi

Wi-Fiによる屋内位置情報
◦ GPSでは屋内位置情報が取れない
◦ フィンランド発のスタートアップで、Wifiベースのロケーション
技術を提供する「Walkbase」
◦ Android用のライブラリが配布されているのでアプリに組み込む
◦ アプリの開発にはサインアップが必要、APIへの50000アクセス
までは無料
◦ 地図座標ではなく、例えば西新宿グランドタワー17Fにいると
いった場所の情報が提供される

Wi-Fiダイレクト
◦ 近くのAndroid搭載端末のWi-Fiを発見して、Wi-Fi経由で直接接
続し端末間で通信するための機能
◦ Android4.0以降、機能を実装している機器のみ有効
◦ android.net.wifi.p2p パッケージを使用
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
AR
Augmented Reality


マーカー型のARライブラリ
◦ NyARToolKit for Android
◦ http://sourceforge.jp/projects/nyartoolkitand/releases/
◦ AndAR - Android Augmented Reality
◦ http://code.google.com/p/andar/
画像認識を用いるのでマーカーレス型AR
◦ OpenCV
◦ http://opencv.jp/
■「モバイルARアプリ開発“超”入門」@IT
http://www.atmarkit.co.jp/fsmart/index/armobile.html
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
対応センサー一覧
android.hardware.Sensorパッケージ
SensorクラスとSensorManagerクラスを使用
定数
概要
Sensor.TYPE_ACCELEROMETER
加速度センサ
Sensor.TYPE_MAGNETIC_FIELD
磁界(磁気)センサ
Sensor.TYPE_ORIENTATION
方位センサ
Sensor.TYPE_GYROSCOPE
ジャイロセンサ
Sensor.TYPE_LIGHT
輝度(照度)センサ
Sensor.TYPE_PRESSURE
圧力センサ
Sensor.TYPE_TEMPERATURE
温度センサ
Sensor.TYPE_PROXIMITY
近接センサ
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
屋内測位を可能にする工夫
屋内即位技術
の例
Wi-Fi AP
IMES
超音波
可視光
センサ統合
&自律航法
概要
メリット
屋内に設置された複数の
無線LANアクセスポイン 無線LANアクセスポイントは既に
設置されている商業施設も多く、
トのビーコン情報を基に、 機器設置のハードルが低い
位置を計測
GPSと同じ電波形式で
IMES送信機の位置情報が AndroidのGPSチップが対応すれ
ば、屋外・屋内を問わずシームレ
送信され、それを基に端 スに現在位置を取得できる
末の位置を計測
人が感じられない超音波 Androidのマイクが超音波を補足
を発信し、それを基に位 すれば、自動的に位置情報が得ら
れる
置を計測
LED電灯などを人が感じ
られない速度で点滅させ 電灯はどのような施設にもあるた
め設置がしやすく、目で見て分か
て位置情報を発信し、そ るため、到達範囲を限定しやすい
れを基に位置を計測
何らかの手段で出発点の
位置を確定した後、加速 Android端末のセンサのみで現在
度センサやジャイロセン 位置が計算でき、追加で機器を設
サなどを組み合わせて現 置する必要がない
在位置を計算
デメリット
屋内にはノイズ発生源が多く、電波の
周りこみや反射・吸収も起きやすいた
め、ピンポイントの精度が得にくい
Android側の対応が必要であり、IMES
送信機も設置しなければならない
超音波を発する装置を設置しなければ
ならない
発信源を撮影する必要があるため、外
から見える場所にカメラを付けなけれ
ばならない
誤差が蓄積してしまうため、他の手段
によるピンポイントな位置補正の併用
が必要
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
その他のTips
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
CPC広告モデルで成功するコツ
広告をはっきり表示
 ユーザの導線に広告を置く
 広告位置を繰り返しテスト

Copyright 2012, CherryBit Co.,Ltd., All rights reserved
GooglePlayからの自然流入を増やすコツ

アプリアイコンの見た目
◦ 黒・モノトーン系のアイコンでは低調
◦ 赤・黄色・緑・青の原色系アイコン、奇抜なデ
ザインのアイコンでは好調
◦ タイトルスプラッシュでも差が出る
◦ GooglePlayに掲載するスクリーンキャプチャが
ちゃんとアプリの内容がわかる迫力のあるもの
でも効果がある
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
Google Playでの失敗パターン






起動時にログイン、会員登録があるアプリ
アプリサイズは大きい(50MB以上もある
場合はWiFi環境でしかDLできない)
リリース直後、バグだらけでまともに動か
ない
外部SDカードに保存できない
対応OSのバージョンが2.x系が非対応
Developer Consoleのレビューを放置
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
研修にあたって
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
サンプルコードについて

サンプルコードはGoogle Codeで公開されていますので各自必要で
あればダウンロードしてお試しください。
http://code.google.com/p/aomoroid-sample-project/downloads/list
 各サンプルの説明はリストのアイテムをクリックすると確認でき
ます。
Copyright 2012, CherryBit Co.,Ltd., All rights reserved
MLの参加と使用について

次回の集合研修までの間の技術的質問、情報共有、およびサポートは
GoogleGroupsで行います。このグループには本研修の参加者以外は閲
覧、登録できないようにしますのでまずは、今後ご使用されるGoogle
アカウントを以下のフォームに登録してください。
http://goo.gl/c6T0X

登録終了後、各自自分のGoogleアカウントでグループに参加依頼をし
てください。こちらでアカウントが研修参加者であると確認が取れまし
たら参加を承認いたします。
グループ名「2012年度Androidアプリ事業化研修」
https://groups.google.com/d/forum/aomoroid2012
[email protected]
質問の際、以下のいずれかであるかを明記お願いします。
①アイディア抽出・ビジネスモデルに関すること
②Androidの技術に関すること
Copyright 2012, CherryBit Co.,Ltd., All rights reserved