Androidアプリ開発の特徴・稼ぐ方法・コツ


日々の生活にhappyをプラスする|ハピタス


ライフメディアへ登録


暮らしをおトクにかえていく|ポイントインカム

Androidアプリ開発の特徴

開発者登録(Google Play Developer)は初回25ドルのみ

Androidアプリ開発を行うにあたって必要な費用は、勉強のための書籍代やサーバー代(サーバーと通信する機能を持つアプリを開発するときのみ)を除けば、初めて開発者登録(Google Play Developer)を行う際の登録費用25ドルです。

しかも、開発者登録をしなくてもアプリそのものの開発と実機テストはできる(アプリを公開したり、ゲームのランキング機能などをアプリに組み込む予定がなければ開発者登録不要)ため、「とりあえずやってみよう」という軽い気持ちでアプリ開発に挑戦することが可能です。

iOS向けアプリを開発する場合、毎年10,000円近い費用を払って更新し続けなければ実機テストすらできない(シミュレータは利用できる)ことを考えると良心的な安さです。

開発言語はJava + Android API

Android向けのアプリ開発にはJavaというオブジェクト指向のプログラミング言語を用い、JavaをベースにしてAndroid端末の各機能(ボタン表示・ダイアログ表示など)を利用するためのAndroid APIというものを組み合わせてアプリ開発を行います。

Javaは1995年登場と比較的古い言語でシェアも多いためJava関連の書籍やサイトが豊富で勉強するのに困ることはほとんどありません。

開発ツール(統合開発環境)

Eclipse(イクリプス) + ADTで開発

Java利用してプログラミングを行う人なら誰でも知っている統合開発環境のEclipse(イクリプス)とAndroidアプリ開発用のツール(エミュレータなど)の集まりであるADT(Android Development Tools)を利用して開発を行うことができます。

Eclipseは利用者が多く使い方がわからなくても必要な情報はウェブ上ですぐに見つけられる点・様々な便利な機能をEclipseに追加することができるプラグインが豊富である点などからとても開発がしやすいです。

しかし、Google1による公式サポートは2015年内で終了することが決定しているため、今から初めてAndroidアプリ開発に着手するのであれば後述のAndroid Studioを利用することをお勧めします。

Androud Studio

GoogleがAndroidアプリ開発のためだけに開発している統合開発環境です。

2013年に初公開されたもののベータ版ということも会って不具合が多く利用者はあまり多くありませんでした(Eclipseを使う開発者が多かった)が、2014年12月に正式版となったこと・Eclipse + ADTのサポートが2105年内で終了することから、今後のAndroidアプリ開発の主流となります。

アプリの審査

公開後にアプリの審査が行われる

開発したアプリは専用サイト上で公開手続きを行ってから審査なしで数時間後にはGoogle Playに公開されます。最低でも1~2週間かかる事前審査に通過しなければ公開できないiOS向けアプリと比較すると、公開までとてつもなく早いということがわかると思います。

しかし、Google Playには事前審査がないだけではなく公開後に順次事後審査が行われますので、そこで引っかかると修正の指示や強制的な公開停止などの措置が行われます。公開が早いのは良いですが、後からケチが付くので公開後も安心できません。

スリーアウトでアカウント停止(らしい)

上記の通り事後審査に引っかかってアプリが公開停止になるということが3回繰り返されると、開発者登録したアカウントが強制停止となるようです。「なるようです」というのはネット上の情報(アカウント停止された人達のブログなど)を見る限りでは3回でアカウント停止になる人が多いように思えるからです。

ただし、Googleがアカウント停止の明確な基準を公開しているわけではないので、場合によっては2回でダメだったり1発退場だったりというケースもあるかもしれません。

意義申し立てはほぼ不可能

Googleの審査は目視によるものではなく審査用のシステムが自動的で審査を行っているらしく見当違いの理由でアプリの違反を指摘される(普通のアプリなのに「露骨な性表現を含むコンテンツ」として公開停止にされる等)ことがありますが、そのことについて意義申し立てを行っても「俺がルールだ」と言わんばかりの(実際そうなのですが)機械的な文面での回答が行われるだけで状況が改善することはありません。

稀に状況が改善されるケースもあるようですが、基本的には無理だと考えておいた方が良いでしょう。

ガベージコレクションで初心者も開発しやすい

スマホアプリを始めとするプログラム全般は「コンピュータのメモリ上にデータを展開して必要な動作を行い、不要になったデータはメモリ上から削除する」という動作を繰り返していますが、不要になったデータが削除されないままメモリを占領し続けるとメモリ上にデータを展開するための領域が徐々に減っていき、最終的にはプログラムがご作動を起こして停止してしまいます。このような現象はメモリリークと呼ばれ、プログラムのご動作を引き起こす厄介なバグとして知られています。

具体的な例としては、ゲームのマリオを思い浮かべて下さい。マリオの敵であるクリボーが画面上に現れるということはクリボーのデータがゲーム機のメモリ上に展開されていることを意味しますが、マリオがクリボーを倒して画面から消えたタイミングでクリボーのデータは不要になるのでメモリ上から削除されるようにプログラミングしておかなければなりません。そして、クリボーやその他の敵キャラは1匹だけでなくステージ中に何度も現れて倒されますので、その度にメモリ上への敵データの展開とメモリからの削除が行われる(削除されるようにプログラミングしておく)のが正常な動作です。

しかし、何らかのミスで敵キャラが倒されてもメモリ上のデータを削除するようにプログラミングされていなかったとしたら、メモリ上に既に倒された敵キャラのデータが沢山貯まり最終的にはゲームが停止してしまいます。

通常プログラミングを行うときは上記のようなメモリリークを避けるために「不要なデータをメモリ上から削除する処理」を必ず記述しなければなりませんが、プログラムの規模が大きくなってくるとデータが不要になるタイミングが分かりづらくなりメモリリークによる誤動作が発生しやすくなるため、非常に厄介です。

しかし、Javaにおいては、Javaの特徴の一つとして挙げられるガベージコレクション(ゴミ収集)という機能により不要になったデータはメモリ上から自動で解放されるため、不要なデータを削除するタイミングを開発者側で考える必要は一切ありません。データ削除のタイミングを自分で考えるのはプログラミングの熟練者でも難しいため初心者には敷居が非常に高いのですが、ガベージコレクションのおかげで初心者でも神経質にならずにプログラミングを行うことができます。

ちなみに、前述のマリオの例はわかりやすいと思って具体例として出しただけであり、実際に内部でどのようにしてメモリ管理をしているのかは知りません。

実機テストが簡単にできる

Androidアプリの開発では開発者登録をしなくても簡単に実機テストが行えます。

実機がなくても後述の開発ツールに最初から付属しているエミュレータを使用することで一応テストは可能ですが、動作が非常に遅いこと・カメラなどの一部機能のテストができないこと・実機とは挙動が異なる場合があることを考えると、テストは常に実機で行った方が良いです。

Google Play Game Services

Androidにてゲームアプリを開発するときにGoogle Play Game Serviceを利用することで、プレイヤーを飽きさせないようにすることができるリーターズボード(ランキング)機能とアチーブメント(実績)機能を利用できます。

各機能の実装は公式ドキュメントに従えば簡単に実装することができます。

リーターズボード(ランキング)機能

開発者登録を行うと、ゲームのスコアを他のプレイヤーと競うことができるリーダーズボード(ランキング)機能を自分で開発するアプリに簡単に組み込むことができます。プレイヤーの技量が順位で表示されるようになるため、対抗意識を燃やすプレイヤーはよりゲームにのめり込むようになることが期待できます。

現在Google Playで公開されているゲームのうち、ハイスコアを目指すようなゲームについては多くががこの機能を実装しています。

アチーブメント(実績)機能

ゲーム中の特定の条件を満たす(魔王を倒す、等)と解放されるアチーブメント(実績)を自分で開発するアプリに実装することができます。PlayStation3・4・Vitaのトロフィー機能と同じで、開発者が予めゲームをプレイする上での目標をいくつか定めておくことで、プレイヤーがゲームに熱中しやすくなります。

APIレベルにより使用できる機能が異なる

Androidのバージョンごとに利用できるAndroid APIのレベルが決まっているため、基本的に新しいAPIの機能は古いバージョンのAndroidでは利用することができません。そのため、新しい機能が必須のアプリを開発する場合は、一定バージョン以下のAndroidがインストールされている端末では利用できなくなってしまいます。

ただ、Androidアプリを開発する上で欠かせない主要な機能(Fragment・Action bar・Navigation Drawerなど)については、Support Libraryというものを導入することで古いバージョンのAndroid端末でも利用することができる他、(日本においては)2年縛りとそれに伴う実質ゼロ円プランの関係で2年毎に機種変更する人が多く古いバージョンのAndroid端末を使っている人はあまりいないので、ある程度より古いバージョンのAndroid端末は対象外としてアプリ開発を行ってもあまり問題ありません。

同じアプリでも機種によって挙動が異なる

iOSを搭載するiPhoneやiPadと異なり多くのメーカーがAndroid端末を開発しているのでAndroid端末には多くのバリエーションがあり、アプリを開発してもA端末ではきちんと動作するのにB端末では特定の場面で強制終了してしまう、ということが多々あります。特に、カメラや加速度センサーを使うアプリについてはそもそもメーカーによって各当該部品が異なるため複数の異なる端末で同じ動作を行うように制御するのが難しいようです。

この点は、Androidアプリを開発する際の最大のデメリット、と言うか面倒な点です。

そのため、

  • カメラや加速度センサーのように機種ごとに仕様・性能に大きな差がある機能を使うアプリは作らない
  • アプリ公開時に特定機種のユーザーしかダウンロードできないように設定する
  • アプリ公開時に誰でもダウンロードできるように設定するが、特定機種以外は動作保証しない旨をアプリ説明にて明言する

といった対応をすることが求められます。

ただし、特定機種以外からダウンロードできないようにするとアプリを使ってくれるユーザー数がかなり少なくなってしまいますし、かと言ってアプリ説明にて特定機種以外では動作保証をしない旨を明記していたとしても、アプリ説明をきちんと読むユーザーは少ないせいなのかレビュー欄に「いきなり落ちるクソアプリ」などのような罵詈雑言が書き込まれることが結構あるのが辛い所です。

余談ですが、Android端末でアプリが強制終了すると、ユーザーは「レポート送信」という機能を利用して開発者の元へアプリが停止した状況と任意のコメントを送信することができ(アプリが停止すると送信するかどうかを選択するためのダイアログが表示される)、また、開発者はDeveloper Console(開発者登録後に利用できる専用サイト)にてそれらを確認することができるのですが、管理人の元には同じユーザー(と思われる人)から「死ね。」とか「ぶち殺すぞ!」といった過激なコメントが何度も送られてきたことがあります。

話が逸れましたが、個人が副業としてアプリを開発する以上は手間・時間・金銭的な問題で全ての機種で完璧に動作するようなアプリの開発は不可能ですので、最低限自分が持っているAndroid端末で動作確認ができれば問題ないです。もしくは、前述の「レポート送信」やアプリにGoogle Analyticsを仕込むことでユーザーが利用している機種がわかるので、強制終了しやすい機種のみ別途購入してテストを行う、といった対応が個人ができる妥協点だと思います。


☆複数ポイントサイトのポイント数・還元率を比較検索できるサービスをはじめました。


比較検索サービス「調べ得(しらべとく)」を使ってみる!


  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です