FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・7並べ』を公開しました。
    Android/iOS https://goo.gl/zsFces

    カテゴリ: Android

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google Playの規約について以前記事を書きました。Androidアプリで見かける明らかな違反としてレビューについて説明します。(評価が★のことでレビューはコメントのことのようです。どちらも含めてレビューと呼ばれることが多い気がします。)
    企業のものでも見かけますし、意外と違反しているアプリは身近にあるように感じます。これらは当然通報(アプリの情報欄で不適切なアプリだとGoogleに報告することを指します。)することができますので、開発側としては大きなリスクを取ることになります。通報されて問題ないなら、なんでもありませんが違反ですのでGoogleとしても何かしらの対応をする可能性があります。基本的にはアプリの削除が行われるでしょう。

    評価やレビューを操作しようとしてはいけません。公式による説明はこちらです。
    星5をつけてくださいと書いたり、良い評価をしてくださいと言ったりすることは評価の操作にあたるので禁止されています。曖昧な表現だから許されるわけではありません――むしろ悪意が感じられるのではないでしょうか。
    書きたくなる気持ちはよくわかります。良い評価をされることでアプリをダウンロードする人を増やせるでしょうし、おそらくランキングにも良い影響があるのでしょう。しかしながら、これは評価を不当にゆがめることであり、結果ユーザーを騙すことになります。レビューが当てにならなくなると最終的にストア自体の価値も下がり、長期的には全ての開発者に不利益を与えることになるでしょう。
    違反する人がそんなことまで気を配るとは思えませんが、アプリが削除されるようなことになったら流石に気にするでしょうね。

    評価やレビューをしたら、何らかの報酬をあげることは禁止されています。公式による説明はこちらです。「ユーザーの評価の勧誘」という項目です。
    評価やレビューを求めるダイアログを出すこと自体は規約違反にはなりません。方法に限らず評価やレビューをすることに対して、何らかの報酬をあげてはいけないのです。
    報酬目的で行ったレビューに意味はありませんから、禁止されているのだと思います。

    この記事を読んで違反していることに気づいたらすぐに修正すべきでしょう。
    他にやっている人がいるから自分もやっても良いんだというような人は迷惑なだけです。小さな違反はいずれ大きな違反をもたらします。そして厳しいルールと監視の下で過ごしていくことになるのです。
    アプリの世界の自由さを自分勝手に振舞って良いと勘違いするようなことは、自身の品位を貶めるだけなのだと思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Android SDKのアップデートは、SDKをインストールしたフォルダにあるSDK Managerを実行してアップデートしたいものを選択していけば良いです。
    asdk-installmenu
     
     上の画像のようにアップデートがあるものについて選択されて開きます。基本的には全てアップデートすれば良いと思うので、右下のInstallボタンを押して進めます。

    ボタンを押すと、アップデートするものについての同意画面が開きます。同意しないと当然進めないので同意してInstallボタンを押します。後は待つだけで勝手にダウンロードとインストールを行ってくれます。
    うまく行く場合はこれで終了です。
    asdk-accept

    私がやったときはエラーが発生しました。アクセスが拒否されたといくつか表示されています。これを何とかしないとアップデートができません。
    asdk-deny

    エラーの原因は管理者として実行していないからでした。管理者として実行したいSDK Managerを選択した状態で右クリックのメニューにある管理者として実行を押します。
    これで実行したところエラーが発生せずパッケージの更新が完了できました。
    asdk-admin

    WindowsでAndroid SDKの更新を行う時は、管理者として実行しなければならないという教訓を得ました。


    【追記 】
    Twitterで原因について教えてもらったので、追記しておきます。 

    上で書いた内容はAndroid SDKがProgram Filesに入っていたから発生するようです。Program Files以下は特別な領域なので、編集するには管理者権限が必要だということです。
    Desktopやユーザーごとのフォルダ等の普通のフォルダにSDKがある場合は特に問題なく実行できると思います。(Desktopで試したところ問題は発生していませんでした。)

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google PlayにアップロードしたAPKファイルが実際に配布されているものと同じなのかと疑問に思ったので調べてみました。

    試した方法はAPKファイルをDeveloper ConsoleにAPKをアップロードした後、そのAPKがGoogle Playからダウンロード可能になった時点でそれを端末にインストールしました。インストールした端末からAPKファイルを取得したものとアップロードしたファイル(PC上に保存しておいたファイル)とバイナリ比較をします。

    結果は同じものでした。

    アップロードしたAPKに何らかの変更がされるかと思っていたのですが、そんなことはありませんでした。リリース用に作ったAPKを端末にインストールして実行すれば、それはリリースしたときの動きと全く同じだということです。

    テスト方法の詳細を書いておきます。
    バイナリ比較にはコマンドプロンプトでcompというコマンドで行いました。 
    端末からAPKファイルを取得するにはファイルのパスを見つけた後、adb pullコマンドを使用してPC上にファイルをコピーします。パスの見つけ方はadb shell pm list packages -fというようにすれば端末にインストールされているアプリが一覧で出力されるので、対象のパッケージ名を見つければ良いです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    タブレットを使っている人がGoogle Playを使っているとアプリが見つからないことがあります。

    タブレットを使っている場合、Google Playでは検索時にタブレット向けに設計というフィルターがかかっています。タブレット向けに設計というのは、その名の通りアプリがタブレット用にも作られているかです。このフィルターによりアプリがタブレット向けに作られていないものは検索に引っかからなくなります。
    tab-search

    タブレット向けに設計というところをクリックすれば、すべてのアプリという項目が選べて全部のアプリを表示することができます。この操作を知らない人や面倒な人はデフォルトのまま使うでしょうから、タブレットを使っている人はタブレット向けに設計されたアプリ以外のアプリを目にすることは少ないでしょう。

    アプリを作る側の都合で言うと、自分のアプリが多くの人に知られることは重要です。まず目につかなければアプリがダウンロードされることもありません。ダウンロードされなければランキングも上がらず、ますますダウンロードされにくくなります。
    タブレットからもダウンロードされるようこの検索に表示されるようにすることはしておきたいと思うわけです。単にアプリを作って公開しただけではタブレット向けに設計されたと判定されずGoogle Playでは携帯電話向けに設計とされてしまいます。 
    以下は私のアプリですがアイコンの下に携帯電話向けに設計と表示されています。もちろんこの表示はタブレットからしか表示されません。
    forcellphone


    どうやったらタブレット向けに設計されたアプリだと認定されるのかというのがずっと疑問に思っていました。確証があるわけではないのですが、今回原因と思われるものを突き止めたのでそれを備忘録として残しておこうと思います。

    Unityでアプリを作った場合はタブレット向けにも設計されているようです。ここでの意味はAPKファイルはタブレット向けになっているということです。
    実はこれだけでは駄目なのです。Developer ConsoleでアプリのAPKをアップロードして公開したときに以下のような警告が発生していました。
    tab-op

    レイアウトにはタブレットで利用可能なスペースを使用すること。
    と警告が出ています。
    Unityでアプリを作ると画面に合わせてUIが拡大されるなどの対応をすることができ、タブレットだからといってスペースができるわけではありません。つまり全画面を使用しています。それにもかかわらずスペースを使用せよとのことなのでわけがわからなかったのです。

    Google Japan Developer Relations Blogの「タブレット向けアプリ品質チェックリスト」という記事にタブレット向けに作るアプリはどのような条件を満たすべきなのかが解説されています。
    この中の「3. タブレット上の余っている画面領域を活用する」がどうやら満たされていないと判断されているようでした。

    ただどうやってこれを解決するかが具体的に載っていないのです。タブレット用のレイアウトを作れと言われてもUnityで解像度ごとのレイアウトを作るのは難しいのでやれませんし……
    また私のアプリの一部ではタブレット向けに設計せよとの警告が出ていないのもあり、どうすればいいのかわからず放置していました。

    最近気付いたのですが、スクリーンショットが問題なのではないかと思ったのです。タブレット向けに設計されていないアプリの登録情報を見るとスクリーンショットのところに問題があると表示されていたのです。
    アプリのスクリーンショットで問題が起きるのかどうかを検索したところ次のような記事を見つけました。この記事を書いた方はCocos2d-xでのタブレットの対応ということでしたが、問題としては全く同じでした。
    スクリーンショットに余白があると判断されると、タブレットでスペースを使ってないとみなされてしまうようです。参考のために携帯電話向けに設計になっているアプリのスクリーンショットを以下に載せておきます。基本的に黒い画面なのでスペースだらけです。このアプリはどうしようもありませんが、対策するなら背景を出したり、上下に適当なイラストでも載せるといったことをすれば良いと思います。
    tttitle ttresult ttmain

    結論としては、Unityで作ったアプリがタブレット向けに設計されていない場合はスクリーンショットに問題があるということです。
    7インチや10インチのタブレット用のスクリーンショットを余白が生まれないようにして撮り、アップロードすれば解決します。
    APKに問題があるような書き方で修正してと警告するのは誤解を生むのでやめてほしいと思いました。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    ごく最近のことです。Google PlayのDeveloper Consoleに入ってみたところ、アプリのサイズの上限を上げたとの通知が来ていました。

    公式での説明はここにありますが、APKが対象とするAPIレベルが14以上なら100MBまでアップロードできます。Android4.0以上で区切ったことになります。現在普及している多くの端末がAndroid4.0以上になりつつあり、今後は更に進むでしょう。スマホの進化に合わせてアプリの容量も増やしたということでしょうか。
    apksize

    APKが対象とするAPIレベルはAndroid Manifestファイルに記述されているので、最低のAPIレベルを14にしてしまえば、100MBまでのAPKファイルをアップロードできます。
    既に多くのユーザーがいるアプリではユーザーを切ることが難しいので、APIレベルを上げれず50MBの制限のままやっていくことになるでしょう。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google Playの色々な説明はこのリンクに載っています。

    Google Play デベロッパー コンソールの使い方が主な説明になります。アプリを開発した後にどのように公開すればいいかとか、アプリが満たすべき要件は何かとか、どれくらいアプリがインストールされているかといった統計情報の見方等が解説されています。
    一番最初のページには「Google Play デベロッパー アカウントへの登録」が説明されていて、AndroidのアプリをGoogle Play上で公開しようと思う人は必ず行うことが書いてあります。アカウントの作成に$25かかるといったことはここに書いてあるのです。



    アプリの内容について最も重要な規約は「Google Play デベロッパー プログラム ポリシー」というものです。多くのアプリが守れていなかったり、故意に破っているルールはほとんどこの規約に関することです。
    Androidアプリを作る上でこの規約を知らないということは非常に危険な状態です。この規約を違反していると、Googleはアカウントを停止させることができると明記されています。(重大な違反や違反を繰り返した場合と書いてありますがその判断はGoogleが行うのですから、これは大丈夫だろうといった判断は自己責任です。)アカウントが停止されれば、アプリを公開させることができなくなりますし、会社等がそのような状態に陥れば信用が傷つくことになるでしょう。アカウントが停止させられたときは永久に取り直すことができなくなります。詳細はここにあるので、確認してみてください。
    現状Google Play上のアプリで違反があるものが存在するというのは事実ですが、あくまで対処されていないというだけであり、いつアカウントを停止させられてもおかしくない状況なのです。アプリのポリシー違反を報告することが可能になっていて、やり方がここに載っています。一応説明すると、Google Playアプリで報告するアプリの詳細ページに行きます。ページの下の方にある「不適切なコンテンツを報告」という文字を押すと、何が問題かを選べるのでそれを選び報告することができます。

    開発者だけが規約を守らなければいけないかというとそんなことはありません。ユーザーも規約を守る必要があります。コメント欄に酷い言葉遣いのものが載っていることがありますが、攻撃的な表現は禁止されています。 こういったコメントに対して「スパム」として報告することができます。どのような効果があるかはわかりませんが、投稿したユーザーのGoogleアカウントが停止させられるのかもしれません。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前のビルド環境整備が終わっていれば、すぐにでもアプリを作りたいと思うでしょう。

    ビルドを行う前に適当なプロジェクトを用意する必要があります。どのようなものを使うのかは自由ですが、最低限必要なものがいくつかあります。 
    ビルドして端末でアプリを動かすことを今回の目標とするので、以下で用意するプロジェクトの中身は最低限のものにしています。

    新しくプロジェクトを作りましょう。作ったばかりのプロジェクトUnityで開くと、ヒエラルキーには次のように2つのゲームオブジェクトが存在しているはずです。適当に何かを配置しても構いませんが、最低限なのであればこれをそのまま保存してシーンを作成します。
    FileメニューのSave Sceneを押してシーンとして現在のヒエラルキーを保存してください。
    defhie

    上でのシーンをmainと名付けた結果、プロジェクトビューは以下のようになります。mainシーンだけが存在しています。このmainというシーンファイルにヒエラルキーにおいたゲームオブジェクトの情報などが含まれています。
    leastpro

    ゲーム自体の編集は以上です。本来であればシーンにいろいろなものを置いたり、スクリプトを書いてゲームの挙動を決めますがビルドには必須ではありません。
    FileメニューBuild Settings...を押して以下のウィンドウでビルドに含めるシーンと対象プラットフォーム(ここではAndroid)を決めます。
    プロジェクトビューにあるmainシーンをドラッグアンドドロップでScenes In Buildと書いてある領域に置くか、mainシーンを開いた状態で右下のAdd Currentを押してビルドするシーンにmainシーンを含めます。複数追加してしまった場合はDeleteキーで削除して、画像のようにひとつにしてください。
    左下のPlatformはAndroidを選択します。プロジェクトのデフォルト設定だとPCに設定されているので、Androidの項目を選びSwitch Platformというボタンを押してください。プロジェクトに含まれるリソースをプラットフォームに適した状態にコンバートされます。ほとんど何も入れていないプロジェクトの場合、変換はすぐに終わり画像のようにAndroidを選択した状態になります。
    bse

    最後にPlayerSettingsの設定をします。Build Settingsウィンドウの下部のPlayer Settings...ボタンを押すかEditメニューのProject Settings->Playerを押してPlayerSettingsを開きます。
    Androidのマーク(ドロイド君)を押して、Android用の設定を行います。Other SettingsのBundle Identifierははじめ「com.Company.ProductName」になっています。これを適当な文字列に変更しないとビルドが失敗します。とりあえずここでは「com.test.app」としてビルドを行いました。
    Bundle Identifierはアプリの固有の識別子です。他のアプリと同じであることは許されません。
    ps

    Android端末をつなぎ、Build And Runを押せば自動でアプリがインストールされ実行できます。Android端末は開発者向け(USBデバッグの有効化、USBからのアプリのインストールの許可など)の設定にし、PCにはドライバを入れる必要があったと思います。

    無事実行できたら、端末に「New Unity Project」という名前のアプリがインストールされています。 実行結果は次のような画像になるはずです。
    ss

    カメラがあるだけなので、何もなく空だけがあるような画面になります。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityを使ってAndroidアプリを作ることができます。公式ブログに記事があるのですが、2013年5月末にAndroid/iOSへのビルドが無償化されました。
    もちろん現在のUnity5においてもPersonal版(無償版)でAndroid/iOSアプリの出力が可能です。

    Androidアプリの作り方は、設定を一度行ってしまえば、その後は決まった作業をするだけなので簡単です。ただこの設定が曲者なのです。今回は設定についてのみ説明します。ビルドそのもののやり方については後ほど記事にしようと思います。

    必要なものは3つあります。
    • Unity
    • Android SDK
    • JDK
    が必要です。上位にあるものが下位にあるものを必要としています。UnityでAndroidアプリを作成するにはAndroid SDKが必要であり、Android SDKを動かすにはJDKが必要です。Unityはビルド時だけAndroid SDKを必要とするので、先にUnityだけインストールされている状態でも問題なく始められます。いずれかのインストールが住んでいる場合は以下手順の対応項目の部分を行わずに次に進んでいってください。
    Android SDKを使うにはJDKが必要なので、JDKをインストールしその次にAndroid SDKを入れるというのが良いと思います。

    JDKのインストール
    JDKはこちらのページからダウンロードしてインストールします。
    jdk

    上の画像の赤い枠で囲ったところがJDKのインストールページになります。クリックして次のページに進んでください。

    jsedk

    進んだ先のページにどのOS向けのJDKが必要かを選択するところがあります。Java SE Development Kitと表示されているところを見つけてください。8u45というのはバージョンのことだと思います。
    ライセンスに同意するチェックをしたら、自分のPCに合うバージョンを選択してインストーラをダウンロードします。ダウンロード後はインストーラの指示に従ってインストールを行ってください。

    Android SDKのインストールとセットアップ
    Android SDKはこちらのページからダウンロードしてインストールします。
    Android StudioというIDEに付属しているものを使っても良いし、SDK単体のものを使用してもかまいません。いずれにしろAndroid SDKが使えれば問題ありません。
    インストールが終わったらインストールしたフォルダに行き、SDK Manager.exeを実行してください。

    asdk

    ToolsといずれかのOSバージョンのAndroidをチェックしてインストールをしてください。非常に長い時間がかかります。(~1時間程度)
    Android SDKの設定については公式マニュアルでも解説されているのでリンクを貼っておきます。

    Unityの設定をする
    最後にUnityが必要です。Unityのインストールを行ってください。 インストール方法がわからない場合は以前やり方を記事にしていますのでそちらを参照してください。
    Unityを開いたら、メニューからEdit->Preferencesを選びます。ウィンドウが開くので、External Toolsタブを押します。

    asdkpath

     Android SDK LocationとJDK Locationに正しいパスを設定することでAndroid向けのビルドの準備は完了です。Android SDKのあるフォルダには次のようなフォルダが含まれていると思います。
    asdk
     
    JDKのあるフォルダはC:\Program Files\Javaの下にあるのが一般的だと思います。「jdkバージョン名」というフォルダがあるはずです。

    以上でビルドの環境整備ができました。結構面倒ではじめてUnityを触る人が準備するのは大変だと思います。

    ビルドについての説明は「Androidアプリのビルド」をご参照ください。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    DDMS(Dalvik Debug Monitor Server) を使うとログが見れます。
    端末での実行時に起こったことが見れるので、特にエラーが出ていないかを調べるときに重宝します。

    Android SDK をインストールしてSDK Manager からいくつかのツールが落とせますが、その中の一つです。たぶんAndroid SDK Tools を入れておけばDDMS が使えたと思います。

    Android SDK をインストールしたフォルダにtools というフォルダがあるはずです。その中のddms.bat をダブルクリックで実行するとDDMS が起動します。端末をUSBケーブルでつながないと情報は見れませんので、それだけ注意してください。

    実行画面は次のような見た目です。

    ddms-window
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Androidの端末の画面をキャプチャーする方法がいくつかあります。Android 4.4以上では端末をPCにつないでコマンドを実行すると、Androidの画面をmp4形式の動画で保存することができます。

    Android 4.4以上の端末をPCにUSBケーブルで接続します。USBデバッグを有効にしておく必要があります。
    Android開発用のSDKを入れていれば、ADBがインストール済みなはずです。

    コマンドプロンプトを開き、
    adb shell
    を実行します。これで端末の操作が可能になります。(イメージで言うと端末に入っていろいろいじれる感じでしょうか。実際は入ってませんが)
     
    screenrecord ファイル名
    を実行すると端末の画面のキャプチャーが開始されます。 録画開始後にCtrl + Cを押すか180秒過ぎれば終了になるようです。

    screenrecord
     上の画面はscreenrecord --helpを実行した画面です。コマンドの内容について説明されています。
    詳しい説明はここに載っているので、一度は目を通した方が良いと思います。

    screenrecordの出力先フォルダにファイルの書き込み権限がないとコマンドの実行に失敗します。
    /sdcardの下であれば、問題なくファイルが作れるかと思います。
    例としては、
    adb shell
    screenrecord /sdcard/test.mp4
    と実行すると、/sdcardにtest.mp4というファイルができているはずです。lsコマンドを使えば/sdcardにtest.mp4が追加されているのが見て取れます。ファイルが必要なくなったらrmコマンドで消しておきましょう。

    これで動画の撮影は完了しました。できたファイルをPCに転送してやれば、動画ファイルとして色々扱えます。
    adb shellを終了させ、adb pullコマンドを使ってファイルを転送します。
    先ほどの保存場所だと、
    adb pull /sdcard/test.mp4
    とすれば、カレントディレクトリにファイルのコピーが作られます。 移動ではなくコピーなので、端末にはファイルが残っています。容量が十分にない場合は端末からファイルを消しておく方が良いです。

    ファイルマネージャーアプリでファイルの読み取りができるなら、mp4を作った後それでファイルをPCに持って行った方が簡単です。Android 4.4ではできなかったと思うので、私はadbを利用しています。 


    Android端末の画面を回転させてしまうとキャプチャーはうまくいきません。
    横x縦と決まった大きさの画面を録画しているため、回転すると画面が見切れてしまいます。 

    このページのトップヘ